@hydra-acp/browser 0.1.47 → 0.1.48

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.
@@ -429,7 +429,14 @@ pre code { background: transparent; padding: 0; }
429
429
 
430
430
  .toolcard { background: var(--tool-bg); border: 1px solid var(--border); border-radius: 8px; padding: 0; align-self: stretch; }
431
431
  .toolcard .head { padding: 0.5rem 0.75rem; display: flex; gap: 0.5rem; align-items: center; cursor: pointer; }
432
- .toolcard .head .title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.9rem; }
432
+ .toolcard .head .title { flex: 1; min-width: 0; display: flex; gap: 0.4rem; align-items: baseline; overflow: hidden; font-size: 0.9rem; }
433
+ /* edit-name never shrinks so the filename survives at any width; the
434
+ directory after it absorbs all of the truncation. Deliberately the
435
+ LAST thing in the row: text-overflow draws its ellipsis where the
436
+ final whole character fit rather than at the box edge, so an
437
+ ellipsized span with a sibling after it always shows a ragged gap. */
438
+ .toolcard .head .title .edit-name { flex: 0 0 auto; white-space: nowrap; }
439
+ .toolcard .head .title .edit-dir { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); font-size: 0.85em; }
433
440
  .toolcard .head .kind { color: var(--muted); font-size: 0.8rem; }
434
441
  .toolcard .body { display: none; padding: 0 0.75rem 0.75rem; border-top: 1px solid var(--border); }
435
442
  .toolcard.open .body { display: block; }
@@ -678,26 +685,26 @@ html[data-theme="light"] .hljs{color:#24292e}html[data-theme="light"] .hljs-doct
678
685
  </head>
679
686
  <body>
680
687
  <div id="app"></div>
681
- <script nonce="__CSP_NONCE__">"use strict";(()=>{var Xa=Object.create;var er=Object.defineProperty;var Za=Object.getOwnPropertyDescriptor;var ja=Object.getOwnPropertyNames;var Ja=Object.getPrototypeOf,ec=Object.prototype.hasOwnProperty;var tc=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var nc=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ja(t))!ec.call(e,r)&&r!==n&&er(e,r,{get:()=>t[r],enumerable:!(s=Za(t,r))||s.enumerable});return e};var sc=(e,t,n)=>(n=e!=null?Xa(Ja(e)):{},nc(t||!e||!e.__esModule?er(n,"default",{value:e,enumerable:!0}):n,e));var Cr=tc((yf,xr)=>{function gr(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],s=typeof n;(s==="object"||s==="function")&&!Object.isFrozen(n)&&gr(n)}),e}var Ut=class{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function hr(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function Ie(e,...t){let n=Object.create(null);for(let s in e)n[s]=e[s];return t.forEach(function(s){for(let r in s)n[r]=s[r]}),n}var rc="</span>",lr=e=>!!e.scope,oc=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((s,r)=>`${s}${"_".repeat(r+1)}`)].join(" ")}return`${t}${e}`},Wn=class{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=hr(t)}openNode(t){if(!lr(t))return;let n=oc(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){lr(t)&&(this.buffer+=rc)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}},ur=(e={})=>{let t={children:[]};return Object.assign(t,e),t},Gn=class e{constructor(){this.rootNode=ur(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){let n=ur({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(s=>this._walk(t,s)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{e._collapse(n)}))}},Yn=class extends Gn{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let s=t.root;n&&(s.scope=`language:${n}`),this.add(s)}toHTML(){return new Wn(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function _t(e){return e?typeof e=="string"?e:e.source:null}function br(e){return Le("(?=",e,")")}function ic(e){return Le("(?:",e,")*")}function ac(e){return Le("(?:",e,")?")}function Le(...e){return e.map(n=>_t(n)).join("")}function cc(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function Vn(...e){return"("+(cc(e).capture?"":"?:")+e.map(s=>_t(s)).join("|")+")"}function Er(e){return new RegExp(e.toString()+"|").exec("").length-1}function lc(e,t){let n=e&&e.exec(t);return n&&n.index===0}var uc=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Xn(e,{joinWith:t}){let n=0;return e.map(s=>{n+=1;let r=n,i=_t(s),a="";for(;i.length>0;){let c=uc.exec(i);if(!c){a+=i;break}a+=i.substring(0,c.index),i=i.substring(c.index+c[0].length),c[0][0]==="\\"&&c[1]?a+="\\"+String(Number(c[1])+r):(a+=c[0],c[0]==="("&&n++)}return a}).map(s=>`(${s})`).join(t)}var dc=/\b\B/,yr="[a-zA-Z]\\w*",Zn="[a-zA-Z_]\\w*",_r="\\b\\d+(\\.\\d+)?",vr="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",wr="\\b(0b[01]+)",fc="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",pc=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=Le(t,/.*\b/,e.binary,/\b.*/)),Ie({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,s)=>{n.index!==0&&s.ignoreMatch()}},e)},vt={begin:"\\\\[\\s\\S]",relevance:0},mc={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[vt]},gc={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[vt]},hc={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},zt=function(e,t,n={}){let s=Ie({scope:"comment",begin:e,end:t,contains:[]},n);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let r=Vn("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:Le(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s},bc=zt("//","$"),Ec=zt("/\\*","\\*/"),yc=zt("#","$"),_c={scope:"number",begin:_r,relevance:0},vc={scope:"number",begin:vr,relevance:0},wc={scope:"number",begin:wr,relevance:0},Sc={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[vt,{begin:/\[/,end:/\]/,relevance:0,contains:[vt]}]},Tc={scope:"title",begin:yr,relevance:0},Ic={scope:"title",begin:Zn,relevance:0},Ac={begin:"\\.\\s*"+Zn,relevance:0},xc=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},$t=Object.freeze({__proto__:null,APOS_STRING_MODE:mc,BACKSLASH_ESCAPE:vt,BINARY_NUMBER_MODE:wc,BINARY_NUMBER_RE:wr,COMMENT:zt,C_BLOCK_COMMENT_MODE:Ec,C_LINE_COMMENT_MODE:bc,C_NUMBER_MODE:vc,C_NUMBER_RE:vr,END_SAME_AS_BEGIN:xc,HASH_COMMENT_MODE:yc,IDENT_RE:yr,MATCH_NOTHING_RE:dc,METHOD_GUARD:Ac,NUMBER_MODE:_c,NUMBER_RE:_r,PHRASAL_WORDS_MODE:hc,QUOTE_STRING_MODE:gc,REGEXP_MODE:Sc,RE_STARTERS_RE:fc,SHEBANG:pc,TITLE_MODE:Tc,UNDERSCORE_IDENT_RE:Zn,UNDERSCORE_TITLE_MODE:Ic});function Cc(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function kc(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Mc(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Cc,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Nc(e,t){Array.isArray(e.illegal)&&(e.illegal=Vn(...e.illegal))}function Rc(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Lc(e,t){e.relevance===void 0&&(e.relevance=1)}var Oc=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(s=>{delete e[s]}),e.keywords=n.keywords,e.begin=Le(n.beforeMatch,br(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Dc=["of","and","for","in","not","or","if","then","parent","list","value"],Pc="keyword";function Sr(e,t,n=Pc){let s=Object.create(null);return typeof e=="string"?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach(function(i){Object.assign(s,Sr(e[i],t,i))}),s;function r(i,a){t&&(a=a.map(c=>c.toLowerCase())),a.forEach(function(c){let u=c.split("|");s[u[0]]=[i,Bc(u[0],u[1])]})}}function Bc(e,t){return t?Number(t):Hc(e)?0:1}function Hc(e){return Dc.includes(e.toLowerCase())}var dr={},Re=e=>{console.error(e)},fr=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Xe=(e,t)=>{dr[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),dr[`${e}/${t}`]=!0)},qt=new Error;function Tr(e,t,{key:n}){let s=0,r=e[n],i={},a={};for(let c=1;c<=t.length;c++)a[c+s]=r[c],i[c+s]=!0,s+=Er(t[c-1]);e[n]=a,e[n]._emit=i,e[n]._multi=!0}function Fc(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Re("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),qt;if(typeof e.beginScope!="object"||e.beginScope===null)throw Re("beginScope must be object"),qt;Tr(e,e.begin,{key:"beginScope"}),e.begin=Xn(e.begin,{joinWith:""})}}function $c(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Re("skip, excludeEnd, returnEnd not compatible with endScope: {}"),qt;if(typeof e.endScope!="object"||e.endScope===null)throw Re("endScope must be object"),qt;Tr(e,e.end,{key:"endScope"}),e.end=Xn(e.end,{joinWith:""})}}function Uc(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function qc(e){Uc(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Fc(e),$c(e)}function zc(e){function t(a,c){return new RegExp(_t(a),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(c?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(c,u){u.position=this.position++,this.matchIndexes[this.matchAt]=u,this.regexes.push([u,c]),this.matchAt+=Er(c)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let c=this.regexes.map(u=>u[1]);this.matcherRe=t(Xn(c,{joinWith:"|"}),!0),this.lastIndex=0}exec(c){this.matcherRe.lastIndex=this.lastIndex;let u=this.matcherRe.exec(c);if(!u)return null;let d=u.findIndex((m,p)=>p>0&&m!==void 0),f=this.matchIndexes[d];return u.splice(0,d),Object.assign(u,f)}}class s{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(c){if(this.multiRegexes[c])return this.multiRegexes[c];let u=new n;return this.rules.slice(c).forEach(([d,f])=>u.addRule(d,f)),u.compile(),this.multiRegexes[c]=u,u}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(c,u){this.rules.push([c,u]),u.type==="begin"&&this.count++}exec(c){let u=this.getMatcher(this.regexIndex);u.lastIndex=this.lastIndex;let d=u.exec(c);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){let f=this.getMatcher(0);f.lastIndex=this.lastIndex+1,d=f.exec(c)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function r(a){let c=new s;return a.contains.forEach(u=>c.addRule(u.begin,{rule:u,type:"begin"})),a.terminatorEnd&&c.addRule(a.terminatorEnd,{type:"end"}),a.illegal&&c.addRule(a.illegal,{type:"illegal"}),c}function i(a,c){let u=a;if(a.isCompiled)return u;[kc,Rc,qc,Oc].forEach(f=>f(a,c)),e.compilerExtensions.forEach(f=>f(a,c)),a.__beforeBegin=null,[Mc,Nc,Lc].forEach(f=>f(a,c)),a.isCompiled=!0;let d=null;return typeof a.keywords=="object"&&a.keywords.$pattern&&(a.keywords=Object.assign({},a.keywords),d=a.keywords.$pattern,delete a.keywords.$pattern),d=d||/\w+/,a.keywords&&(a.keywords=Sr(a.keywords,e.case_insensitive)),u.keywordPatternRe=t(d,!0),c&&(a.begin||(a.begin=/\B|\b/),u.beginRe=t(u.begin),!a.end&&!a.endsWithParent&&(a.end=/\B|\b/),a.end&&(u.endRe=t(u.end)),u.terminatorEnd=_t(u.end)||"",a.endsWithParent&&c.terminatorEnd&&(u.terminatorEnd+=(a.end?"|":"")+c.terminatorEnd)),a.illegal&&(u.illegalRe=t(a.illegal)),a.contains||(a.contains=[]),a.contains=[].concat(...a.contains.map(function(f){return Kc(f==="self"?a:f)})),a.contains.forEach(function(f){i(f,u)}),a.starts&&i(a.starts,c),u.matcher=r(u),u}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=Ie(e.classNameAliases||{}),i(e)}function Ir(e){return e?e.endsWithParent||Ir(e.starts):!1}function Kc(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return Ie(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:Ir(e)?Ie(e,{starts:e.starts?Ie(e.starts):null}):Object.isFrozen(e)?Ie(e):e}var Wc="11.11.1",Qn=class extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}},Kn=hr,pr=Ie,mr=Symbol("nomatch"),Gc=7,Ar=function(e){let t=Object.create(null),n=Object.create(null),s=[],r=!0,i="Could not find the language '{}', did you forget to load/include a language module?",a={disableAutodetect:!0,name:"Plain text",contains:[]},c={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Yn};function u(h){return c.noHighlightRe.test(h)}function d(h){let C=h.className+" ";C+=h.parentNode?h.parentNode.className:"";let x=c.languageDetectRe.exec(C);if(x){let O=B(x[1]);return O||(fr(i.replace("{}",x[1])),fr("Falling back to no-highlight mode for this block.",h)),O?x[1]:"no-highlight"}return C.split(/\s+/).find(O=>u(O)||B(O))}function f(h,C,x){let O="",P="";typeof C=="object"?(O=h,x=C.ignoreIllegals,P=C.language):(Xe("10.7.0","highlight(lang, code, ...args) has been deprecated."),Xe("10.7.0",`Please use highlight(code, options) instead.
682
- https://github.com/highlightjs/highlight.js/issues/2277`),P=h,O=C),x===void 0&&(x=!0);let q={code:O,language:P};Q("before:highlight",q);let K=q.result?q.result:m(q.language,q.code,x);return K.code=q.code,Q("after:highlight",K),K}function m(h,C,x,O){let P=Object.create(null);function q(w,k){return w.keywords[k]}function K(){if(!L.keywords){J.addText(z);return}let w=0;L.keywordPatternRe.lastIndex=0;let k=L.keywordPatternRe.exec(z),D="";for(;k;){D+=z.substring(w,k.index);let F=ce.case_insensitive?k[0].toLowerCase():k[0],te=q(L,F);if(te){let[ye,Qa]=te;if(J.addText(D),D="",P[F]=(P[F]||0)+1,P[F]<=Gc&&(Ht+=Qa),ye.startsWith("_"))D+=k[0];else{let Va=ce.classNameAliases[ye]||ye;oe(k[0],Va)}}else D+=k[0];w=L.keywordPatternRe.lastIndex,k=L.keywordPatternRe.exec(z)}D+=z.substring(w),J.addText(D)}function ae(){if(z==="")return;let w=null;if(typeof L.subLanguage=="string"){if(!t[L.subLanguage]){J.addText(z);return}w=m(L.subLanguage,z,!0,Bt[L.subLanguage]),Bt[L.subLanguage]=w._top}else w=g(z,L.subLanguage.length?L.subLanguage:null);L.relevance>0&&(Ht+=w.relevance),J.__addSublanguage(w._emitter,w.language)}function ne(){L.subLanguage!=null?ae():K(),z=""}function oe(w,k){w!==""&&(J.startScope(k),J.addText(w),J.endScope())}function We(w,k){let D=1,F=k.length-1;for(;D<=F;){if(!w._emit[D]){D++;continue}let te=ce.classNameAliases[w[D]]||w[D],ye=k[D];te?oe(ye,te):(z=ye,K(),z=""),D++}}function Dt(w,k){return w.scope&&typeof w.scope=="string"&&J.openNode(ce.classNameAliases[w.scope]||w.scope),w.beginScope&&(w.beginScope._wrap?(oe(z,ce.classNameAliases[w.beginScope._wrap]||w.beginScope._wrap),z=""):w.beginScope._multi&&(We(w.beginScope,k),z="")),L=Object.create(w,{parent:{value:L}}),L}function yt(w,k,D){let F=lc(w.endRe,D);if(F){if(w["on:end"]){let te=new Ut(w);w["on:end"](k,te),te.isMatchIgnored&&(F=!1)}if(F){for(;w.endsParent&&w.parent;)w=w.parent;return w}}if(w.endsWithParent)return yt(w.parent,k,D)}function Bn(w){return L.matcher.regexIndex===0?(z+=w[0],1):(qn=!0,0)}function Hn(w){let k=w[0],D=w.rule,F=new Ut(D),te=[D.__beforeBegin,D["on:begin"]];for(let ye of te)if(ye&&(ye(w,F),F.isMatchIgnored))return Bn(k);return D.skip?z+=k:(D.excludeBegin&&(z+=k),ne(),!D.returnBegin&&!D.excludeBegin&&(z=k)),Dt(D,w),D.returnBegin?0:k.length}function Fn(w){let k=w[0],D=C.substring(w.index),F=yt(L,w,D);if(!F)return mr;let te=L;L.endScope&&L.endScope._wrap?(ne(),oe(k,L.endScope._wrap)):L.endScope&&L.endScope._multi?(ne(),We(L.endScope,w)):te.skip?z+=k:(te.returnEnd||te.excludeEnd||(z+=k),ne(),te.excludeEnd&&(z=k));do L.scope&&J.closeNode(),!L.skip&&!L.subLanguage&&(Ht+=L.relevance),L=L.parent;while(L!==F.parent);return F.starts&&Dt(F.starts,w),te.returnEnd?0:k.length}function $n(){let w=[];for(let k=L;k!==ce;k=k.parent)k.scope&&w.unshift(k.scope);w.forEach(k=>J.openNode(k))}let Ge={};function Pt(w,k){let D=k&&k[0];if(z+=w,D==null)return ne(),0;if(Ge.type==="begin"&&k.type==="end"&&Ge.index===k.index&&D===""){if(z+=C.slice(k.index,k.index+1),!r){let F=new Error(`0 width match regex (${h})`);throw F.languageName=h,F.badRule=Ge.rule,F}return 1}if(Ge=k,k.type==="begin")return Hn(k);if(k.type==="illegal"&&!x){let F=new Error('Illegal lexeme "'+D+'" for mode "'+(L.scope||"<unnamed>")+'"');throw F.mode=L,F}else if(k.type==="end"){let F=Fn(k);if(F!==mr)return F}if(k.type==="illegal"&&D==="")return z+=`
683
- `,1;if(Un>1e5&&Un>k.index*3)throw new Error("potential infinite loop, way more iterations than matches");return z+=D,D.length}let ce=B(h);if(!ce)throw Re(i.replace("{}",h)),new Error('Unknown language: "'+h+'"');let $=zc(ce),we="",L=O||$,Bt={},J=new c.__emitter(c);$n();let z="",Ht=0,Ne=0,Un=0,qn=!1;try{if(ce.__emitTokens)ce.__emitTokens(C,J);else{for(L.matcher.considerAll();;){Un++,qn?qn=!1:L.matcher.considerAll(),L.matcher.lastIndex=Ne;let w=L.matcher.exec(C);if(!w)break;let k=C.substring(Ne,w.index),D=Pt(k,w);Ne=w.index+D}Pt(C.substring(Ne))}return J.finalize(),we=J.toHTML(),{language:h,value:we,relevance:Ht,illegal:!1,_emitter:J,_top:L}}catch(w){if(w.message&&w.message.includes("Illegal"))return{language:h,value:Kn(C),illegal:!0,relevance:0,_illegalBy:{message:w.message,index:Ne,context:C.slice(Ne-100,Ne+100),mode:w.mode,resultSoFar:we},_emitter:J};if(r)return{language:h,value:Kn(C),illegal:!1,relevance:0,errorRaised:w,_emitter:J,_top:L};throw w}}function p(h){let C={value:Kn(h),illegal:!1,relevance:0,_top:a,_emitter:new c.__emitter(c)};return C._emitter.addText(h),C}function g(h,C){C=C||c.languages||Object.keys(t);let x=p(h),O=C.filter(B).filter(Y).map(ne=>m(ne,h,!1));O.unshift(x);let P=O.sort((ne,oe)=>{if(ne.relevance!==oe.relevance)return oe.relevance-ne.relevance;if(ne.language&&oe.language){if(B(ne.language).supersetOf===oe.language)return 1;if(B(oe.language).supersetOf===ne.language)return-1}return 0}),[q,K]=P,ae=q;return ae.secondBest=K,ae}function v(h,C,x){let O=C&&n[C]||x;h.classList.add("hljs"),h.classList.add(`language-${O}`)}function E(h){let C=null,x=d(h);if(u(x))return;if(Q("before:highlightElement",{el:h,language:x}),h.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",h);return}if(h.children.length>0&&(c.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(h)),c.throwUnescapedHTML))throw new Qn("One of your code blocks includes unescaped HTML.",h.innerHTML);C=h;let O=C.textContent,P=x?f(O,{language:x,ignoreIllegals:!0}):g(O);h.innerHTML=P.value,h.dataset.highlighted="yes",v(h,x,P.language),h.result={language:P.language,re:P.relevance,relevance:P.relevance},P.secondBest&&(h.secondBest={language:P.secondBest.language,relevance:P.secondBest.relevance}),Q("after:highlightElement",{el:h,result:P,text:O})}function S(h){c=pr(c,h)}let A=()=>{T(),Xe("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function b(){T(),Xe("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let y=!1;function T(){function h(){T()}if(document.readyState==="loading"){y||window.addEventListener("DOMContentLoaded",h,!1),y=!0;return}document.querySelectorAll(c.cssSelector).forEach(E)}function N(h,C){let x=null;try{x=C(e)}catch(O){if(Re("Language definition for '{}' could not be registered.".replace("{}",h)),r)Re(O);else throw O;x=a}x.name||(x.name=h),t[h]=x,x.rawDefinition=C.bind(null,e),x.aliases&&H(x.aliases,{languageName:h})}function R(h){delete t[h];for(let C of Object.keys(n))n[C]===h&&delete n[C]}function G(){return Object.keys(t)}function B(h){return h=(h||"").toLowerCase(),t[h]||t[n[h]]}function H(h,{languageName:C}){typeof h=="string"&&(h=[h]),h.forEach(x=>{n[x.toLowerCase()]=C})}function Y(h){let C=B(h);return C&&!C.disableAutodetect}function Z(h){h["before:highlightBlock"]&&!h["before:highlightElement"]&&(h["before:highlightElement"]=C=>{h["before:highlightBlock"](Object.assign({block:C.el},C))}),h["after:highlightBlock"]&&!h["after:highlightElement"]&&(h["after:highlightElement"]=C=>{h["after:highlightBlock"](Object.assign({block:C.el},C))})}function j(h){Z(h),s.push(h)}function ue(h){let C=s.indexOf(h);C!==-1&&s.splice(C,1)}function Q(h,C){let x=h;s.forEach(function(O){O[x]&&O[x](C)})}function V(h){return Xe("10.7.0","highlightBlock will be removed entirely in v12.0"),Xe("10.7.0","Please use highlightElement now."),E(h)}Object.assign(e,{highlight:f,highlightAuto:g,highlightAll:T,highlightElement:E,highlightBlock:V,configure:S,initHighlighting:A,initHighlightingOnLoad:b,registerLanguage:N,unregisterLanguage:R,listLanguages:G,getLanguage:B,registerAliases:H,autoDetection:Y,inherit:pr,addPlugin:j,removePlugin:ue}),e.debugMode=function(){r=!1},e.safeMode=function(){r=!0},e.versionString=Wc,e.regex={concat:Le,lookahead:br,either:Vn,optional:ac,anyNumberOfTimes:ic};for(let h in $t)typeof $t[h]=="object"&&gr($t[h]);return Object.assign(e,$t),e},Ze=Ar({});Ze.newInstance=()=>Ar({});xr.exports=Ze;Ze.HighlightJS=Ze;Ze.default=Ze});var Ye=[];function tr(e,t){t<120||(Ye.push({label:e,ms:t,at:Date.now()}),Ye.sort((n,s)=>s.ms-n.ms),Ye.length>6&&(Ye.length=6))}function Se(e,t){let n=performance.now();try{return t()}finally{tr(e,performance.now()-n)}}function nr(){if(!(typeof PerformanceObserver>"u"))try{new PerformanceObserver(e=>{for(let t of e.getEntries())tr(`longtask/${t.name??"?"}`,t.duration)}).observe({entryTypes:["longtask"]})}catch{}}var Ft=new Map;function Qe(e){Ft.set(e,(Ft.get(e)??0)+1)}function sr(){return Ft.size===0?"none":[...Ft.entries()].map(([e,t])=>`${e}:${t}`).join(" ")}function rr(){return Ye.length===0?"none >120ms":Ye.map(e=>`${e.label} ${Math.round(e.ms)}ms`).join(" | ")}function l(e,t,...n){let s=document.createElement(e);if(t)for(let[r,i]of Object.entries(t))i==null||i===!1||(r==="class"?s.className=i:r.startsWith("on")&&typeof i=="function"?s.addEventListener(r.slice(2).toLowerCase(),i):r==="html"?s.innerHTML=i:s.setAttribute(r,String(i)));for(let r of n)if(!(r==null||r===!1))if(Array.isArray(r))for(let i of r)or(s,i);else or(s,r);return s}var zn=10;function Ve(){let e=window.getSelection();return!!e&&!e.isCollapsed&&e.toString().length>0}function Te(e){return e instanceof HTMLElement?e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT"||e.isContentEditable:!1}function ir(){return window.matchMedia("(hover: hover) and (pointer: fine)").matches}var ar="(min-width: 1000px)";function ee(){return window.matchMedia(ar).matches}function cr(e){window.matchMedia(ar).addEventListener("change",e)}function I(e){let t=!1,n=0,s=0;return{onpointerdown:r=>{if(Te(r.target))return;let i=r;i.pointerType==="mouse"&&i.button!==0||(n=i.clientX,s=i.clientY,r.preventDefault(),r.stopPropagation())},onpointerup:r=>{if(Te(r.target))return;let i=r;i.pointerType==="mouse"&&i.button!==0||(r.stopPropagation(),!(Math.hypot(i.clientX-n,i.clientY-s)>zn)&&(Ve()||(t=!0,e(r))))},onclick:r=>{if(!Te(r.target)){if(r.stopPropagation(),t){t=!1;return}r.detail===0&&(Ve()||e(r))}}}}function or(e,t){t==null||t===!1||(t instanceof Node?e.appendChild(t):e.appendChild(document.createTextNode(String(t))))}var kr=sc(Cr(),1);var W=kr.default;function Mr(e){let t=e.regex,n={},s={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},s]});let r={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),a={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,r]};r.contains.push(c);let u={match:/\\"/},d={className:"string",begin:/'/,end:/'/},f={match:/\\'/},m={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},p=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],g=e.SHEBANG({binary:`(${p.join("|")})`,relevance:10}),v={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},E=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],S=["true","false"],A={match:/(\/[a-z._-]+)+/},b=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],y=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],T=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],N=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:E,literal:S,built_in:[...b,...y,"set","shopt",...T,...N]},contains:[g,e.SHEBANG(),v,m,i,a,A,c,u,d,f,n]}}function Nr(e){let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="("+s+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},f={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},m={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},p={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},g=t.optional(r)+e.IDENT_RE+"\\s*\\(",S={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},A=[m,c,n,e.C_BLOCK_COMMENT_MODE,f,d],b={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:S,contains:A.concat([{begin:/\(/,end:/\)/,keywords:S,contains:A.concat(["self"]),relevance:0}]),relevance:0},y={begin:"("+a+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:S,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:S,relevance:0},{begin:g,returnBegin:!0,contains:[e.inherit(p,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,d,f,c,{begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,d,f,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,m]};return{name:"C",aliases:["h"],keywords:S,disableAutodetect:!0,illegal:"</",contains:[].concat(b,y,A,[m,{begin:e.IDENT_RE+"::",keywords:S},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:m,strings:d,keywords:S}}}function Rr(e){let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="(?!struct)("+s+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},f={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},m={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},p={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},g=t.optional(r)+e.IDENT_RE+"\\s*\\(",v=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],E=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],S=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],A=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],T={type:E,keyword:v,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:S},N={className:"function.dispatch",relevance:0,keywords:{_hint:A},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},R=[N,m,c,n,e.C_BLOCK_COMMENT_MODE,f,d],G={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:T,contains:R.concat([{begin:/\(/,end:/\)/,keywords:T,contains:R.concat(["self"]),relevance:0}]),relevance:0},B={className:"function",begin:"("+a+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:T,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:T,relevance:0},{begin:g,returnBegin:!0,contains:[p],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[d,f]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:T,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,d,f,c,{begin:/\(/,end:/\)/,keywords:T,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,d,f,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,m]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:T,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(G,B,N,R,[m,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:T,contains:["self",c]},{begin:e.IDENT_RE+"::",keywords:T},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}var Yc=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Qc=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Vc=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],Xc=[...Qc,...Vc],Zc=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),jc=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),Jc=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),el=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function Lr(e){let t=e.regex,n=Yc(e),s={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},r="and or not only",i=/@-?\w[\w]*(-\w+)*/,a="[a-zA-Z-][a-zA-Z0-9_-]*",c=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,s,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+a,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+jc.join("|")+")"},{begin:":(:)?("+Jc.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+el.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...c,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...c,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:i},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:r,attribute:Zc.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...c,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+Xc.join("|")+")\\b"}]}}function Or(e){return{name:"Dockerfile",aliases:["docker"],case_insensitive:!0,keywords:["from","maintainer","expose","env","arg","user","onbuild","stopsignal"],contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}function Dr(e){let i={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:i,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:i,illegal:/["']/}]}]}}function Pr(e){let t=e.regex,n={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let r={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},i={className:"literal",begin:/\bon|off|true|false|yes|no\b/},a={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[s,i,r,a,n,"self"],relevance:0},u=/[A-Za-z0-9_-]+/,d=/"(\\"|[^"])*"/,f=/'[^']*'/,m=t.either(u,d,f),p=t.concat(m,"(\\s*\\.\\s*",m,")*",t.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{begin:p,className:"attr",starts:{end:/$/,contains:[s,c,i,r,a,n]}}]}}var je="[0-9](_*[0-9])*",Kt=`\\.(${je})`,Wt="[0-9a-fA-F](_*[0-9a-fA-F])*",Br={className:"number",variants:[{begin:`(\\b(${je})((${Kt})|\\.)?|(${Kt}))[eE][+-]?(${je})[fFdD]?\\b`},{begin:`\\b(${je})((${Kt})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Kt})[fFdD]?\\b`},{begin:`\\b(${je})[fFdD]\\b`},{begin:`\\b0[xX]((${Wt})\\.?|(${Wt})?\\.(${Wt}))[pP][+-]?(${je})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Wt})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Hr(e,t,n){return n===-1?"":e.replace(t,s=>Hr(e,t,n-1))}function Fr(e){let t=e.regex,n="[\xC0-\u02B8a-zA-Z_$][\xC0-\u02B8a-zA-Z_$0-9]*",s=n+Hr("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),u={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},d={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},f={className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:u,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[t.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[f,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+s+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:u,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[d,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,Br,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},Br,d]}}var $r="[A-Za-z$_][0-9A-Za-z$_]*",tl=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],nl=["true","false","null","undefined","NaN","Infinity"],Ur=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],qr=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],zr=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],sl=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],rl=[].concat(zr,Ur,qr);function Kr(e){let t=e.regex,n=(x,{after:O})=>{let P="</"+x[0].slice(1);return x.input.indexOf(P,O)!==-1},s=$r,r={begin:"<>",end:"</>"},i=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(x,O)=>{let P=x[0].length+x.index,q=x.input[P];if(q==="<"||q===","){O.ignoreMatch();return}q===">"&&(n(x,{after:P})||O.ignoreMatch());let K,ae=x.input.substring(P);if(K=ae.match(/^\s*=/)){O.ignoreMatch();return}if((K=ae.match(/^\s+extends\s+/))&&K.index===0){O.ignoreMatch();return}}},c={$pattern:$r,keyword:tl,literal:nl,built_in:rl,"variable.language":sl},u="[0-9](_?[0-9])*",d=`\\.(${u})`,f="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:`(\\b(${f})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${f})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},p={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},g={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,p],subLanguage:"xml"}},v={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,p],subLanguage:"css"}},E={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,p],subLanguage:"graphql"}},S={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,p]},b={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},y=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,v,E,S,{match:/\$\d+/},m];p.contains=y.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(y)});let T=[].concat(b,p.contains),N=T.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(T)}]),R={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:N},G={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},B={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Ur,...qr]}},H={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},Y={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R],illegal:/%/},Z={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function j(x){return t.concat("(?!",x.join("|"),")")}let ue={match:t.concat(/\b/,j([...zr,"super","import"].map(x=>`${x}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},Q={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},V={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},R]},h="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",C={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(h)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[R]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:N,CLASS_REFERENCE:B},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),H,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,v,E,S,b,{match:/\$\d+/},m,B,{scope:"attr",match:s+t.lookahead(":"),relevance:0},C,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[b,e.REGEXP_MODE,{className:"function",begin:h,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:N}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:i},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},Y,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[R,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},Q,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[R]},ue,Z,G,V,{match:/\$[(.]/}]}}function Wr(e){let t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},s=["true","false","null"],r={scope:"literal",beginKeywords:s.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:s},contains:[t,n,e.QUOTE_STRING_MODE,r,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var Je="[0-9](_*[0-9])*",Gt=`\\.(${Je})`,Yt="[0-9a-fA-F](_*[0-9a-fA-F])*",ol={className:"number",variants:[{begin:`(\\b(${Je})((${Gt})|\\.)?|(${Gt}))[eE][+-]?(${Je})[fFdD]?\\b`},{begin:`\\b(${Je})((${Gt})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Gt})[fFdD]?\\b`},{begin:`\\b(${Je})[fFdD]\\b`},{begin:`\\b0[xX]((${Yt})\\.?|(${Yt})?\\.(${Yt}))[pP][+-]?(${Je})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Yt})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Gr(e){let t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},s={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},a={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,i,r]}]};r.contains.push(a);let c={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},u={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(a,{className:"string"}),"self"]}]},d=ol,f=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),m={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},p=m;return p.variants[1].contains=[m],m.variants[1].contains=[p],{name:"Kotlin",aliases:["kt","kts"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,f,n,s,c,u,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[m,e.C_LINE_COMMENT_MODE,f],relevance:0},e.C_LINE_COMMENT_MODE,f,c,u,a,e.C_NUMBER_MODE]},f]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},c,u]},a,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
684
- `},d]}}function Yr(e){let t=e.regex,n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},s={begin:"^[-\\*]{3,}",end:"$"},r={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},i={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},a={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},c=/[A-Za-z][A-Za-z0-9+.-]*/,u={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:t.concat(/\[.+?\]\(/,c,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},d={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},f={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},m=e.inherit(d,{contains:[]}),p=e.inherit(f,{contains:[]});d.contains.push(p),f.contains.push(m);let g=[n,u];return[d,f,m,p].forEach(A=>{A.contains=A.contains.concat(g)}),g=g.concat(d,f),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:g},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:g}]}]},n,i,d,f,{className:"quote",begin:"^>\\s+",contains:g,end:"$"},r,s,u,a,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function Qr(e){let t=e.regex,n=/(?![A-Za-z0-9])(?![$])/,s=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),r=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),i=t.concat(/[A-Z]+/,n),a={scope:"variable",match:"\\$+"+s},c={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},u={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},d=e.inherit(e.APOS_STRING_MODE,{illegal:null}),f=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(u)}),m={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(u),"on:begin":(Q,V)=>{V.data._beginMatch=Q[1]||Q[2]},"on:end":(Q,V)=>{V.data._beginMatch!==Q[1]&&V.ignoreMatch()}},p=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),g=`[
685
- ]`,v={scope:"string",variants:[f,d,m,p]},E={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},S=["false","null","true"],A=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],b=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],T={keyword:A,literal:(Q=>{let V=[];return Q.forEach(h=>{V.push(h),h.toLowerCase()===h?V.push(h.toUpperCase()):V.push(h.toLowerCase())}),V})(S),built_in:b},N=Q=>Q.map(V=>V.replace(/\|\d+$/,"")),R={variants:[{match:[/new/,t.concat(g,"+"),t.concat("(?!",N(b).join("\\b|"),"\\b)"),r],scope:{1:"keyword",4:"title.class"}}]},G=t.concat(s,"\\b(?!\\()"),B={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),G],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[r,t.concat(/::/,t.lookahead(/(?!class\b)/)),G],scope:{1:"title.class",3:"variable.constant"}},{match:[r,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[r,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},H={scope:"attr",match:t.concat(s,t.lookahead(":"),t.lookahead(/(?!::)/))},Y={relevance:0,begin:/\(/,end:/\)/,keywords:T,contains:[H,a,B,e.C_BLOCK_COMMENT_MODE,v,E,R]},Z={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",N(A).join("\\b|"),"|",N(b).join("\\b|"),"\\b)"),s,t.concat(g,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[Y]};Y.contains.push(Z);let j=[H,B,e.C_BLOCK_COMMENT_MODE,v,E,R],ue={begin:t.concat(/#\[\s*\\?/,t.either(r,i)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:S,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:S,keyword:["new","array"]},contains:["self",...j]},...j,{scope:"meta",variants:[{match:r},{match:i}]}]};return{case_insensitive:!1,keywords:T,contains:[ue,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},c,{scope:"variable.language",match:/\$this\b/},a,Z,B,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},R,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:T,contains:["self",ue,a,B,e.C_BLOCK_COMMENT_MODE,v,E]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},v,E]}}function Vr(e){let t=e.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],c={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},u={className:"meta",begin:/^(>>>|\.\.\.) /},d={className:"subst",begin:/\{/,end:/\}/,keywords:c,illegal:/#/},f={begin:/\{\{/,relevance:0},m={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,u],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,u],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,u,f,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,u,f,d]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,f,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,f,d]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},p="[0-9](_?[0-9])*",g=`(\\b(${p}))?\\.(${p})|\\b(${p})\\.`,v=`\\b|${s.join("|")}`,E={className:"number",relevance:0,variants:[{begin:`(\\b(${p})|(${g}))[eE][+-]?(${p})[jJ]?(?=${v})`},{begin:`(${g})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${v})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${v})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${v})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${v})`},{begin:`\\b(${p})[jJ](?=${v})`}]},S={className:"comment",begin:t.lookahead(/# type:/),end:/$/,keywords:c,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},A={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:["self",u,E,m,e.HASH_COMMENT_MODE]}]};return d.contains=[m,E,u],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:c,illegal:/(<\/|\?)|=>/,contains:[u,E,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},m,S,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[A]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[E,A,m]}]}}function Xr(e){let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),r=t.concat(s,/(::\w+)*/),a={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},c={className:"doctag",begin:"@[A-Za-z]+"},u={begin:"#<",end:">"},d=[e.COMMENT("#","$",{contains:[c]}),e.COMMENT("^=begin","^=end",{contains:[c],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],f={className:"subst",begin:/#\{/,end:/\}/,keywords:a},m={className:"string",contains:[e.BACKSLASH_ESCAPE,f],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,f]})]}]},p="[1-9](_?[0-9])*|0",g="[0-9](_?[0-9])*",v={className:"number",relevance:0,variants:[{begin:`\\b(${p})(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},E={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:a}]},R=[m,{variants:[{match:[/class\s+/,r,/\s+<\s+/,r]},{match:[/\b(class|module)\s+/,r]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:a},{match:[/(include|extend)\s+/,r],scope:{2:"title.class"},keywords:a},{relevance:0,match:[r,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:s,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[E]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[m,{begin:n}],relevance:0},v,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,f],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(u,d),relevance:0}].concat(u,d);f.contains=R,E.contains=R;let Y=[{begin:/^\s*=>/,starts:{end:"$",contains:R}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:a,contains:R}}];return d.unshift(u),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(Y).concat(d).concat(R)}}function Zr(e){let t=e.regex,n=/(r#)?/,s=t.concat(n,e.UNDERSCORE_IDENT_RE),r=t.concat(n,e.IDENT_RE),i={className:"title.function.invoke",relevance:0,begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,r,t.lookahead(/\s*\(/))},a="([ui](8|16|32|64|128|size)|f(32|64))?",c=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],u=["true","false","Some","None","Ok","Err"],d=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],f=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:f,keyword:c,literal:u,built_in:d},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+a},{begin:"\\b0o([0-7_]+)"+a},{begin:"\\b0x([A-Fa-f0-9_]+)"+a},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+a}],relevance:0},{begin:[/fn/,/\s+/,s],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,s],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,s,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:d,type:f}},{className:"punctuation",begin:"->"},i]}}function jr(e){let t=e.regex,n=e.COMMENT("--","$"),s={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},r={begin:/"/,end:/"/,contains:[{match:/""/}]},i=["true","false","unknown"],a=["double precision","large object","with timezone","without timezone"],c=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],u=["add","asc","collation","desc","final","first","last","view"],d=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],f=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],m=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],p=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],g=f,v=[...d,...u].filter(N=>!f.includes(N)),E={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},S={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},A={match:t.concat(/\b/,t.either(...g),/\s*\(/),relevance:0,keywords:{built_in:g}};function b(N){return t.concat(/\b/,t.either(...N.map(R=>R.replace(/\s+/,"\\s+"))),/\b/)}let y={scope:"keyword",match:b(p),relevance:0};function T(N,{exceptions:R,when:G}={}){let B=G;return R=R||[],N.map(H=>H.match(/\|\d+$/)||R.includes(H)?H:B(H)?`${H}|0`:H)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:T(v,{when:N=>N.length<3}),literal:i,type:c,built_in:m},contains:[{scope:"type",match:b(a)},y,A,E,s,r,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,S]}}function no(e){return e?typeof e=="string"?e:e.source:null}function wt(e){return U("(?=",e,")")}function U(...e){return e.map(n=>no(n)).join("")}function il(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function se(...e){return"("+(il(e).capture?"":"?:")+e.map(s=>no(s)).join("|")+")"}var es=e=>U(/\b/,e,/\w$/.test(e)?/\b/:/\B/),al=["Protocol","Type"].map(es),Jr=["init","self"].map(es),cl=["Any","Self"],jn=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],eo=["false","nil","true"],ll=["assignment","associativity","higherThan","left","lowerThan","none","right"],ul=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],to=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],so=se(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),ro=se(so,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),Jn=U(so,ro,"*"),oo=se(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Vt=se(oo,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),ge=U(oo,Vt,"*"),Qt=U(/[A-Z]/,Vt,"*"),dl=["attached","autoclosure",U(/convention\(/,se("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",U(/objc\(/,ge,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],fl=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function io(e){let t={match:/\s+/,relevance:0},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,n],r={match:[/\./,se(...al,...Jr)],className:{2:"keyword"}},i={match:U(/\./,se(...jn)),relevance:0},a=jn.filter($=>typeof $=="string").concat(["_|0"]),c=jn.filter($=>typeof $!="string").concat(cl).map(es),u={variants:[{className:"keyword",match:se(...c,...Jr)}]},d={$pattern:se(/\b\w+/,/#\w+/),keyword:a.concat(ul),literal:eo},f=[r,i,u],m={match:U(/\./,se(...to)),relevance:0},p={className:"built_in",match:U(/\b/,se(...to),/(?=\()/)},g=[m,p],v={match:/->/,relevance:0},E={className:"operator",relevance:0,variants:[{match:Jn},{match:`\\.(\\.|${ro})+`}]},S=[v,E],A="([0-9]_*)+",b="([0-9a-fA-F]_*)+",y={className:"number",relevance:0,variants:[{match:`\\b(${A})(\\.(${A}))?([eE][+-]?(${A}))?\\b`},{match:`\\b0x(${b})(\\.(${b}))?([pP][+-]?(${A}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},T=($="")=>({className:"subst",variants:[{match:U(/\\/,$,/[0\\tnr"']/)},{match:U(/\\/,$,/u\{[0-9a-fA-F]{1,8}\}/)}]}),N=($="")=>({className:"subst",match:U(/\\/,$,/[\t ]*(?:[\r\n]|\r\n)/)}),R=($="")=>({className:"subst",label:"interpol",begin:U(/\\/,$,/\(/),end:/\)/}),G=($="")=>({begin:U($,/"""/),end:U(/"""/,$),contains:[T($),N($),R($)]}),B=($="")=>({begin:U($,/"/),end:U(/"/,$),contains:[T($),R($)]}),H={className:"string",variants:[G(),G("#"),G("##"),G("###"),B(),B("#"),B("##"),B("###")]},Y=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],Z={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:Y},j=$=>{let we=U($,/\//),L=U(/\//,$);return{begin:we,end:L,contains:[...Y,{scope:"comment",begin:`#(?!.*${L})`,end:/$/}]}},ue={scope:"regexp",variants:[j("###"),j("##"),j("#"),Z]},Q={match:U(/`/,ge,/`/)},V={className:"variable",match:/\$\d+/},h={className:"variable",match:`\\$${Vt}+`},C=[Q,V,h],x={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:fl,contains:[...S,y,H]}]}},O={scope:"keyword",match:U(/@/,se(...dl),wt(se(/\(/,/\s+/)))},P={scope:"meta",match:U(/@/,ge)},q=[x,O,P],K={match:wt(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:U(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Vt,"+")},{className:"type",match:Qt,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:U(/\s+&\s+/,wt(Qt)),relevance:0}]},ae={begin:/</,end:/>/,keywords:d,contains:[...s,...f,...q,v,K]};K.contains.push(ae);let ne={match:U(ge,/\s*:/),keywords:"_|0",relevance:0},oe={begin:/\(/,end:/\)/,relevance:0,keywords:d,contains:["self",ne,...s,ue,...f,...g,...S,y,H,...C,...q,K]},We={begin:/</,end:/>/,keywords:"repeat each",contains:[...s,K]},Dt={begin:se(wt(U(ge,/\s*:/)),wt(U(ge,/\s+/,ge,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:ge}]},yt={begin:/\(/,end:/\)/,keywords:d,contains:[Dt,...s,...f,...S,y,H,...q,K,oe],endsParent:!0,illegal:/["']/},Bn={match:[/(func|macro)/,/\s+/,se(Q.match,ge,Jn)],className:{1:"keyword",3:"title.function"},contains:[We,yt,t],illegal:[/\[/,/%/]},Hn={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[We,yt,t],illegal:/\[|%/},Fn={match:[/operator/,/\s+/,Jn],className:{1:"keyword",3:"title"}},$n={begin:[/precedencegroup/,/\s+/,Qt],className:{1:"keyword",3:"title"},contains:[K],keywords:[...ll,...eo],end:/}/},Ge={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},Pt={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},ce={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,ge,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:d,contains:[We,...f,{begin:/:/,end:/\{/,keywords:d,contains:[{scope:"title.class.inherited",match:Qt},...f],relevance:0}]};for(let $ of H.variants){let we=$.contains.find(Bt=>Bt.label==="interpol");we.keywords=d;let L=[...f,...g,...S,y,H,...C];we.contains=[...L,{begin:/\(/,end:/\)/,contains:["self",...L]}]}return{name:"Swift",keywords:d,contains:[...s,Bn,Hn,Ge,Pt,ce,Fn,$n,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},ue,...f,...g,...S,y,H,...C,...q,K,oe]}}var Xt="[A-Za-z$_][0-9A-Za-z$_]*",ao=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],co=["true","false","null","undefined","NaN","Infinity"],lo=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],uo=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],fo=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],po=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],mo=[].concat(fo,lo,uo);function pl(e){let t=e.regex,n=(x,{after:O})=>{let P="</"+x[0].slice(1);return x.input.indexOf(P,O)!==-1},s=Xt,r={begin:"<>",end:"</>"},i=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(x,O)=>{let P=x[0].length+x.index,q=x.input[P];if(q==="<"||q===","){O.ignoreMatch();return}q===">"&&(n(x,{after:P})||O.ignoreMatch());let K,ae=x.input.substring(P);if(K=ae.match(/^\s*=/)){O.ignoreMatch();return}if((K=ae.match(/^\s+extends\s+/))&&K.index===0){O.ignoreMatch();return}}},c={$pattern:Xt,keyword:ao,literal:co,built_in:mo,"variable.language":po},u="[0-9](_?[0-9])*",d=`\\.(${u})`,f="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:`(\\b(${f})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${f})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},p={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},g={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,p],subLanguage:"xml"}},v={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,p],subLanguage:"css"}},E={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,p],subLanguage:"graphql"}},S={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,p]},b={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},y=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,v,E,S,{match:/\$\d+/},m];p.contains=y.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(y)});let T=[].concat(b,p.contains),N=T.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(T)}]),R={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:N},G={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},B={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...lo,...uo]}},H={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},Y={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R],illegal:/%/},Z={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function j(x){return t.concat("(?!",x.join("|"),")")}let ue={match:t.concat(/\b/,j([...fo,"super","import"].map(x=>`${x}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},Q={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},V={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},R]},h="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",C={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(h)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[R]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:N,CLASS_REFERENCE:B},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),H,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,v,E,S,b,{match:/\$\d+/},m,B,{scope:"attr",match:s+t.lookahead(":"),relevance:0},C,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[b,e.REGEXP_MODE,{className:"function",begin:h,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:N}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:i},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},Y,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[R,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},Q,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[R]},ue,Z,G,V,{match:/\$[(.]/}]}}function go(e){let t=e.regex,n=pl(e),s=Xt,r=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],i={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},a={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},contains:[n.exports.CLASS_REFERENCE]},c={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},u=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],d={$pattern:Xt,keyword:ao.concat(u),literal:co,built_in:mo.concat(r),"variable.language":po},f={className:"meta",begin:"@"+s},m=(E,S,A)=>{let b=E.contains.findIndex(y=>y.label===S);if(b===-1)throw new Error("can not find mode to replace");E.contains.splice(b,1,A)};Object.assign(n.keywords,d),n.exports.PARAMS_CONTAINS.push(f);let p=n.contains.find(E=>E.scope==="attr"),g=Object.assign({},p,{match:t.concat(s,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,p,g]),n.contains=n.contains.concat([f,i,a,g]),m(n,"shebang",e.SHEBANG()),m(n,"use_strict",c);let v=n.contains.find(E=>E.label==="func.def");return v.relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}function ho(e){let t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s=/[\p{L}0-9._:-]+/u,r={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},a=e.inherit(i,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{className:"string"}),u=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),d={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:s,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[r]},{begin:/'/,end:/'/,contains:[r]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[i,u,c,a,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[i,a,u,c]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},r,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[u]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[d],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[d],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:d}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function bo(e){let t="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},r={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},i={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},a={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,r]},c=e.inherit(a,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),p={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},g={end:",",endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},v={begin:/\{/,end:/\}/,contains:[g],illegal:"\\n",relevance:0},E={begin:"\\[",end:"\\]",contains:[g],illegal:"\\n",relevance:0},S=[s,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},p,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},v,E,i,a],A=[...S];return A.pop(),A.push(c),g.contains=A,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:S}}W.registerLanguage("bash",Mr);W.registerLanguage("c",Nr);W.registerLanguage("cpp",Rr);W.registerLanguage("css",Lr);W.registerLanguage("dockerfile",Or);W.registerLanguage("go",Dr);W.registerLanguage("ini",Pr);W.registerLanguage("java",Fr);W.registerLanguage("javascript",Kr);W.registerLanguage("json",Wr);W.registerLanguage("kotlin",Gr);W.registerLanguage("markdown",Yr);W.registerLanguage("php",Qr);W.registerLanguage("python",Vr);W.registerLanguage("ruby",Xr);W.registerLanguage("rust",Zr);W.registerLanguage("sql",jr);W.registerLanguage("swift",io);W.registerLanguage("typescript",go);W.registerLanguage("xml",ho);W.registerLanguage("yaml",bo);var Eo={bash:"bash",sh:"bash",zsh:"bash",c:"c",h:"c",cc:"cpp",cpp:"cpp",cxx:"cpp",hpp:"cpp",hxx:"cpp",css:"css",dockerfile:"dockerfile",go:"go",ini:"ini",toml:"ini",java:"java",cjs:"javascript",js:"javascript",jsx:"javascript",mjs:"javascript",json:"json",jsonc:"json",kt:"kotlin",kts:"kotlin",md:"markdown",markdown:"markdown",php:"php",py:"python",rb:"ruby",rs:"rust",sql:"sql",swift:"swift",cts:"typescript",mts:"typescript",ts:"typescript",tsx:"typescript",htm:"xml",html:"xml",svg:"xml",xml:"xml",yaml:"yaml",yml:"yaml"};function yo(e,t){let n=t.split(".").pop()?.toLowerCase()??"",s=Eo[n]??(t.toLowerCase()==="dockerfile"?"dockerfile":null);return s?W.highlight(e,{language:s}).value:null}var ml=new Set(["bash","c","cpp","css","dockerfile","go","ini","java","javascript","json","kotlin","markdown","php","python","ruby","rust","sql","swift","typescript","xml","yaml"]),gl={"c++":"cpp",shell:"bash",console:"bash"};function _o(e,t){let n=t.trim().toLowerCase();if(!n)return null;let s=ml.has(n)?n:gl[n]??Eo[n];return s?W.highlight(e,{language:s}).value:null}function ie(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function ts(e){return e.replace(/\bhttps?:\/\/[^\s<]+/g,t=>{let n=t,s="";for(;;){let r=n.match(/(&quot;|&#39;|&gt;|[.,;:!?'\]}"])$/);if(!r)break;s=r[0]+s,n=n.slice(0,-r[0].length)}for(;n.endsWith(")");){let r=(n.match(/\(/g)??[]).length,i=(n.match(/\)/g)??[]).length;if(r>=i)break;s=")"+s,n=n.slice(0,-1)}return n?`<a href="${n}" target="_blank" rel="noopener noreferrer">${n}</a>${s}`:t})}function hl(e){let t=/<code>([\s\S]*?)<\/code>|<a\b[^>]*>[\s\S]*?<\/a>/g,n="",s=0,r;for(;(r=t.exec(e))!==null;){n+=ts(e.slice(s,r.index));let i=r[1];i!==void 0&&/^https?:\/\/[^\s<]+$/.test(i.trim())?n+=`<code>${ts(i)}</code>`:n+=r[0],s=r.index+r[0].length}return n+ts(e.slice(s))}function St(e){return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,"<strong>$1</strong>"),e=e.replace(/(^|[^*])\*([^*\n]+)\*/g,"$1<em>$2</em>"),e=e.replace(/__([^_\n]+)__/g,"<strong>$1</strong>"),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,s)=>{let r=s.match(/^hydra:\/\/(?:[^/\s]+\/)?sessions\/([A-Za-z0-9_-]+)(?:#turn-\d+)?$/);if(r){let i=r[1];return`<a href="#/session/${ie(i)}">${n}</a>`}return/^(https?:\/\/|\/|\.)/i.test(s)?`<a href="${ie(s)}" target="_blank" rel="noopener noreferrer">${n}</a>`:`[${n}](${s})`}),hl(e)}function ns(e){let t=e.trim();if(!t.includes("|"))return null;let n=t;return n.startsWith("|")&&(n=n.slice(1)),n.endsWith("|")&&(n=n.slice(0,-1)),n.split("|").map(s=>s.trim())}function bl(e){let t=ns(e);if(!t||t.length===0)return null;let n=[];for(let s of t){if(!/^:?-+:?$/.test(s))return null;let r=s.startsWith(":"),i=s.endsWith(":");r&&i?n.push("center"):i?n.push("right"):r?n.push("left"):n.push(null)}return n}function vo(e,t){let n=_o(e,t),s=ie(t),r=n!==null?` class="hljs" data-lang="${s}"`:` data-lang="${s}"`,i=n??ie(e);return`<pre><code${r}>${i}</code></pre>`}function wo(e,t,n){let s="<tr>";for(let r=0;r<e.length;r++){let i=t[r]??null,a=i?` style="text-align:${i}"`:"";s+=`<${n}${a}>${St(ie(e[r]))}</${n}>`}return s+="</tr>",s}function ss(e){typeof e!="string"&&(e=String(e??""));let t=e.split(`
686
- `),n="",s=!1,r="",i=[],a=null,c=[],u=[];function d(){u.length!==0&&(n+=`<p>${St(u.join(" "))}</p>`,u=[])}function f(){c.length!==0&&(n+=`<li>${St(c.join(" "))}</li>`,c=[])}function m(){a&&(f(),n+=`</${a}>`,a=null)}let p=0;for(;p<t.length;){let g=t[p];if(s){if(/^```/.test(g)){n+=vo(i.join(`
687
- `),r),s=!1,i=[],r="",p++;continue}i.push(g),p++;continue}if(/^```/.test(g)){d(),m(),s=!0,r=g.slice(3).trim(),p++;continue}if(p+1<t.length&&g.includes("|")){let E=ns(g),S=bl(t[p+1]);if(E&&S&&E.length>0&&S.length>0){d(),m();let A=Math.max(E.length,S.length),b=[];for(let T=0;T<A;T++)b.push(S[T]??null);n+="<table><thead>",n+=wo(E,b,"th"),n+="</thead><tbody>";let y=p+2;for(;y<t.length;){let T=ns(t[y]);if(!T)break;n+=wo(T,b,"td"),y++}n+="</tbody></table>",p=y;continue}}if(/^\s*$/.test(g)){d(),m(),p++;continue}let v;if(v=g.match(/^(#{1,3})\s+(.+)$/)){d(),m();let E=v[1].length;n+=`<h${E}>${St(ie(v[2]))}</h${E}>`,p++;continue}if(v=g.match(/^\s*[-*]\s+(.*)$/)){d(),a!=="ul"?(m(),n+="<ul>",a="ul"):f(),c.push(ie(v[1])),p++;continue}if(v=g.match(/^\s*\d+\.\s+(.*)$/)){d(),a!=="ol"?(m(),n+="<ol>",a="ol"):f(),c.push(ie(v[1])),p++;continue}if(v=g.match(/^\s*>\s?(.*)$/)){d(),m(),n+=`<blockquote>${St(ie(v[1]))}</blockquote>`,p++;continue}if(a!==null){c.push(ie(g.trim())),p++;continue}u.push(ie(g)),p++}return s&&(n+=vo(i.join(`
688
- `),r)),d(),m(),n}function Tt(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(Tt).join("");if(e&&typeof e=="object"){let t=e;if(typeof t.text=="string")return t.text;if(typeof t.content=="string")return t.content}return""}function So(e){let t=e.content;if(Array.isArray(t))for(let s of t){if(!s||typeof s!="object")continue;let r=s;if(r.type!=="diff")continue;let i=typeof r.oldText=="string"?r.oldText:void 0,a=typeof r.newText=="string"?r.newText:void 0;if(i===void 0&&a===void 0)continue;let c=typeof r.path=="string"?r.path:void 0;return{...c!==void 0?{path:c}:{},oldText:i??"",newText:a??""}}let n=e.rawInput;if(n&&typeof n=="object"&&!Array.isArray(n)){let s=n,r=typeof s.file_path=="string"?s.file_path:typeof s.path=="string"?s.path:void 0;if(typeof s.old_string=="string"&&typeof s.new_string=="string")return{...r!==void 0?{path:r}:{},oldText:s.old_string,newText:s.new_string};if(typeof s.content=="string")return{...r!==void 0?{path:r}:{},oldText:"",newText:s.content}}return null}function To(e){let t=e.oldText.split(`
688
+ <script nonce="__CSP_NONCE__">"use strict";(()=>{var ja=Object.create;var er=Object.defineProperty;var Ja=Object.getOwnPropertyDescriptor;var ec=Object.getOwnPropertyNames;var tc=Object.getPrototypeOf,nc=Object.prototype.hasOwnProperty;var sc=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var rc=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ec(t))!nc.call(e,r)&&r!==n&&er(e,r,{get:()=>t[r],enumerable:!(s=Ja(t,r))||s.enumerable});return e};var oc=(e,t,n)=>(n=e!=null?ja(tc(e)):{},rc(t||!e||!e.__esModule?er(n,"default",{value:e,enumerable:!0}):n,e));var kr=sc((Tf,xr)=>{function gr(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],s=typeof n;(s==="object"||s==="function")&&!Object.isFrozen(n)&&gr(n)}),e}var Ut=class{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function hr(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function Ie(e,...t){let n=Object.create(null);for(let s in e)n[s]=e[s];return t.forEach(function(s){for(let r in s)n[r]=s[r]}),n}var ic="</span>",lr=e=>!!e.scope,ac=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((s,r)=>`${s}${"_".repeat(r+1)}`)].join(" ")}return`${t}${e}`},Wn=class{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=hr(t)}openNode(t){if(!lr(t))return;let n=ac(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){lr(t)&&(this.buffer+=ic)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}},ur=(e={})=>{let t={children:[]};return Object.assign(t,e),t},Gn=class e{constructor(){this.rootNode=ur(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){let n=ur({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(s=>this._walk(t,s)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{e._collapse(n)}))}},Yn=class extends Gn{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let s=t.root;n&&(s.scope=`language:${n}`),this.add(s)}toHTML(){return new Wn(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function _t(e){return e?typeof e=="string"?e:e.source:null}function br(e){return Oe("(?=",e,")")}function cc(e){return Oe("(?:",e,")*")}function lc(e){return Oe("(?:",e,")?")}function Oe(...e){return e.map(n=>_t(n)).join("")}function uc(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function Vn(...e){return"("+(uc(e).capture?"":"?:")+e.map(s=>_t(s)).join("|")+")"}function Er(e){return new RegExp(e.toString()+"|").exec("").length-1}function dc(e,t){let n=e&&e.exec(t);return n&&n.index===0}var fc=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Xn(e,{joinWith:t}){let n=0;return e.map(s=>{n+=1;let r=n,i=_t(s),a="";for(;i.length>0;){let c=fc.exec(i);if(!c){a+=i;break}a+=i.substring(0,c.index),i=i.substring(c.index+c[0].length),c[0][0]==="\\"&&c[1]?a+="\\"+String(Number(c[1])+r):(a+=c[0],c[0]==="("&&n++)}return a}).map(s=>`(${s})`).join(t)}var pc=/\b\B/,yr="[a-zA-Z]\\w*",Zn="[a-zA-Z_]\\w*",_r="\\b\\d+(\\.\\d+)?",vr="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",wr="\\b(0b[01]+)",mc="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",gc=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=Oe(t,/.*\b/,e.binary,/\b.*/)),Ie({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,s)=>{n.index!==0&&s.ignoreMatch()}},e)},vt={begin:"\\\\[\\s\\S]",relevance:0},hc={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[vt]},bc={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[vt]},Ec={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},zt=function(e,t,n={}){let s=Ie({scope:"comment",begin:e,end:t,contains:[]},n);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let r=Vn("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:Oe(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s},yc=zt("//","$"),_c=zt("/\\*","\\*/"),vc=zt("#","$"),wc={scope:"number",begin:_r,relevance:0},Sc={scope:"number",begin:vr,relevance:0},Tc={scope:"number",begin:wr,relevance:0},Ic={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[vt,{begin:/\[/,end:/\]/,relevance:0,contains:[vt]}]},Ac={scope:"title",begin:yr,relevance:0},xc={scope:"title",begin:Zn,relevance:0},kc={begin:"\\.\\s*"+Zn,relevance:0},Cc=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},$t=Object.freeze({__proto__:null,APOS_STRING_MODE:hc,BACKSLASH_ESCAPE:vt,BINARY_NUMBER_MODE:Tc,BINARY_NUMBER_RE:wr,COMMENT:zt,C_BLOCK_COMMENT_MODE:_c,C_LINE_COMMENT_MODE:yc,C_NUMBER_MODE:Sc,C_NUMBER_RE:vr,END_SAME_AS_BEGIN:Cc,HASH_COMMENT_MODE:vc,IDENT_RE:yr,MATCH_NOTHING_RE:pc,METHOD_GUARD:kc,NUMBER_MODE:wc,NUMBER_RE:_r,PHRASAL_WORDS_MODE:Ec,QUOTE_STRING_MODE:bc,REGEXP_MODE:Ic,RE_STARTERS_RE:mc,SHEBANG:gc,TITLE_MODE:Ac,UNDERSCORE_IDENT_RE:Zn,UNDERSCORE_TITLE_MODE:xc});function Mc(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function Nc(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Rc(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Mc,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Lc(e,t){Array.isArray(e.illegal)&&(e.illegal=Vn(...e.illegal))}function Oc(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Dc(e,t){e.relevance===void 0&&(e.relevance=1)}var Pc=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(s=>{delete e[s]}),e.keywords=n.keywords,e.begin=Oe(n.beforeMatch,br(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Bc=["of","and","for","in","not","or","if","then","parent","list","value"],Hc="keyword";function Sr(e,t,n=Hc){let s=Object.create(null);return typeof e=="string"?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach(function(i){Object.assign(s,Sr(e[i],t,i))}),s;function r(i,a){t&&(a=a.map(c=>c.toLowerCase())),a.forEach(function(c){let u=c.split("|");s[u[0]]=[i,Fc(u[0],u[1])]})}}function Fc(e,t){return t?Number(t):$c(e)?0:1}function $c(e){return Bc.includes(e.toLowerCase())}var dr={},Le=e=>{console.error(e)},fr=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Xe=(e,t)=>{dr[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),dr[`${e}/${t}`]=!0)},qt=new Error;function Tr(e,t,{key:n}){let s=0,r=e[n],i={},a={};for(let c=1;c<=t.length;c++)a[c+s]=r[c],i[c+s]=!0,s+=Er(t[c-1]);e[n]=a,e[n]._emit=i,e[n]._multi=!0}function Uc(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Le("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),qt;if(typeof e.beginScope!="object"||e.beginScope===null)throw Le("beginScope must be object"),qt;Tr(e,e.begin,{key:"beginScope"}),e.begin=Xn(e.begin,{joinWith:""})}}function qc(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Le("skip, excludeEnd, returnEnd not compatible with endScope: {}"),qt;if(typeof e.endScope!="object"||e.endScope===null)throw Le("endScope must be object"),qt;Tr(e,e.end,{key:"endScope"}),e.end=Xn(e.end,{joinWith:""})}}function zc(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Kc(e){zc(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Uc(e),qc(e)}function Wc(e){function t(a,c){return new RegExp(_t(a),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(c?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(c,u){u.position=this.position++,this.matchIndexes[this.matchAt]=u,this.regexes.push([u,c]),this.matchAt+=Er(c)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let c=this.regexes.map(u=>u[1]);this.matcherRe=t(Xn(c,{joinWith:"|"}),!0),this.lastIndex=0}exec(c){this.matcherRe.lastIndex=this.lastIndex;let u=this.matcherRe.exec(c);if(!u)return null;let d=u.findIndex((p,m)=>m>0&&p!==void 0),f=this.matchIndexes[d];return u.splice(0,d),Object.assign(u,f)}}class s{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(c){if(this.multiRegexes[c])return this.multiRegexes[c];let u=new n;return this.rules.slice(c).forEach(([d,f])=>u.addRule(d,f)),u.compile(),this.multiRegexes[c]=u,u}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(c,u){this.rules.push([c,u]),u.type==="begin"&&this.count++}exec(c){let u=this.getMatcher(this.regexIndex);u.lastIndex=this.lastIndex;let d=u.exec(c);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){let f=this.getMatcher(0);f.lastIndex=this.lastIndex+1,d=f.exec(c)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function r(a){let c=new s;return a.contains.forEach(u=>c.addRule(u.begin,{rule:u,type:"begin"})),a.terminatorEnd&&c.addRule(a.terminatorEnd,{type:"end"}),a.illegal&&c.addRule(a.illegal,{type:"illegal"}),c}function i(a,c){let u=a;if(a.isCompiled)return u;[Nc,Oc,Kc,Pc].forEach(f=>f(a,c)),e.compilerExtensions.forEach(f=>f(a,c)),a.__beforeBegin=null,[Rc,Lc,Dc].forEach(f=>f(a,c)),a.isCompiled=!0;let d=null;return typeof a.keywords=="object"&&a.keywords.$pattern&&(a.keywords=Object.assign({},a.keywords),d=a.keywords.$pattern,delete a.keywords.$pattern),d=d||/\w+/,a.keywords&&(a.keywords=Sr(a.keywords,e.case_insensitive)),u.keywordPatternRe=t(d,!0),c&&(a.begin||(a.begin=/\B|\b/),u.beginRe=t(u.begin),!a.end&&!a.endsWithParent&&(a.end=/\B|\b/),a.end&&(u.endRe=t(u.end)),u.terminatorEnd=_t(u.end)||"",a.endsWithParent&&c.terminatorEnd&&(u.terminatorEnd+=(a.end?"|":"")+c.terminatorEnd)),a.illegal&&(u.illegalRe=t(a.illegal)),a.contains||(a.contains=[]),a.contains=[].concat(...a.contains.map(function(f){return Gc(f==="self"?a:f)})),a.contains.forEach(function(f){i(f,u)}),a.starts&&i(a.starts,c),u.matcher=r(u),u}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=Ie(e.classNameAliases||{}),i(e)}function Ir(e){return e?e.endsWithParent||Ir(e.starts):!1}function Gc(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return Ie(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:Ir(e)?Ie(e,{starts:e.starts?Ie(e.starts):null}):Object.isFrozen(e)?Ie(e):e}var Yc="11.11.1",Qn=class extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}},Kn=hr,pr=Ie,mr=Symbol("nomatch"),Qc=7,Ar=function(e){let t=Object.create(null),n=Object.create(null),s=[],r=!0,i="Could not find the language '{}', did you forget to load/include a language module?",a={disableAutodetect:!0,name:"Plain text",contains:[]},c={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Yn};function u(h){return c.noHighlightRe.test(h)}function d(h){let k=h.className+" ";k+=h.parentNode?h.parentNode.className:"";let x=c.languageDetectRe.exec(k);if(x){let O=B(x[1]);return O||(fr(i.replace("{}",x[1])),fr("Falling back to no-highlight mode for this block.",h)),O?x[1]:"no-highlight"}return k.split(/\s+/).find(O=>u(O)||B(O))}function f(h,k,x){let O="",P="";typeof k=="object"?(O=h,x=k.ignoreIllegals,P=k.language):(Xe("10.7.0","highlight(lang, code, ...args) has been deprecated."),Xe("10.7.0",`Please use highlight(code, options) instead.
689
+ https://github.com/highlightjs/highlight.js/issues/2277`),P=h,O=k),x===void 0&&(x=!0);let q={code:O,language:P};Q("before:highlight",q);let K=q.result?q.result:p(q.language,q.code,x);return K.code=q.code,Q("after:highlight",K),K}function p(h,k,x,O){let P=Object.create(null);function q(w,C){return w.keywords[C]}function K(){if(!L.keywords){J.addText(z);return}let w=0;L.keywordPatternRe.lastIndex=0;let C=L.keywordPatternRe.exec(z),D="";for(;C;){D+=z.substring(w,C.index);let F=ce.case_insensitive?C[0].toLowerCase():C[0],te=q(L,F);if(te){let[ye,Xa]=te;if(J.addText(D),D="",P[F]=(P[F]||0)+1,P[F]<=Qc&&(Ht+=Xa),ye.startsWith("_"))D+=C[0];else{let Za=ce.classNameAliases[ye]||ye;oe(C[0],Za)}}else D+=C[0];w=L.keywordPatternRe.lastIndex,C=L.keywordPatternRe.exec(z)}D+=z.substring(w),J.addText(D)}function ae(){if(z==="")return;let w=null;if(typeof L.subLanguage=="string"){if(!t[L.subLanguage]){J.addText(z);return}w=p(L.subLanguage,z,!0,Bt[L.subLanguage]),Bt[L.subLanguage]=w._top}else w=g(z,L.subLanguage.length?L.subLanguage:null);L.relevance>0&&(Ht+=w.relevance),J.__addSublanguage(w._emitter,w.language)}function ne(){L.subLanguage!=null?ae():K(),z=""}function oe(w,C){w!==""&&(J.startScope(C),J.addText(w),J.endScope())}function We(w,C){let D=1,F=C.length-1;for(;D<=F;){if(!w._emit[D]){D++;continue}let te=ce.classNameAliases[w[D]]||w[D],ye=C[D];te?oe(ye,te):(z=ye,K(),z=""),D++}}function Dt(w,C){return w.scope&&typeof w.scope=="string"&&J.openNode(ce.classNameAliases[w.scope]||w.scope),w.beginScope&&(w.beginScope._wrap?(oe(z,ce.classNameAliases[w.beginScope._wrap]||w.beginScope._wrap),z=""):w.beginScope._multi&&(We(w.beginScope,C),z="")),L=Object.create(w,{parent:{value:L}}),L}function yt(w,C,D){let F=dc(w.endRe,D);if(F){if(w["on:end"]){let te=new Ut(w);w["on:end"](C,te),te.isMatchIgnored&&(F=!1)}if(F){for(;w.endsParent&&w.parent;)w=w.parent;return w}}if(w.endsWithParent)return yt(w.parent,C,D)}function Bn(w){return L.matcher.regexIndex===0?(z+=w[0],1):(qn=!0,0)}function Hn(w){let C=w[0],D=w.rule,F=new Ut(D),te=[D.__beforeBegin,D["on:begin"]];for(let ye of te)if(ye&&(ye(w,F),F.isMatchIgnored))return Bn(C);return D.skip?z+=C:(D.excludeBegin&&(z+=C),ne(),!D.returnBegin&&!D.excludeBegin&&(z=C)),Dt(D,w),D.returnBegin?0:C.length}function Fn(w){let C=w[0],D=k.substring(w.index),F=yt(L,w,D);if(!F)return mr;let te=L;L.endScope&&L.endScope._wrap?(ne(),oe(C,L.endScope._wrap)):L.endScope&&L.endScope._multi?(ne(),We(L.endScope,w)):te.skip?z+=C:(te.returnEnd||te.excludeEnd||(z+=C),ne(),te.excludeEnd&&(z=C));do L.scope&&J.closeNode(),!L.skip&&!L.subLanguage&&(Ht+=L.relevance),L=L.parent;while(L!==F.parent);return F.starts&&Dt(F.starts,w),te.returnEnd?0:C.length}function $n(){let w=[];for(let C=L;C!==ce;C=C.parent)C.scope&&w.unshift(C.scope);w.forEach(C=>J.openNode(C))}let Ge={};function Pt(w,C){let D=C&&C[0];if(z+=w,D==null)return ne(),0;if(Ge.type==="begin"&&C.type==="end"&&Ge.index===C.index&&D===""){if(z+=k.slice(C.index,C.index+1),!r){let F=new Error(`0 width match regex (${h})`);throw F.languageName=h,F.badRule=Ge.rule,F}return 1}if(Ge=C,C.type==="begin")return Hn(C);if(C.type==="illegal"&&!x){let F=new Error('Illegal lexeme "'+D+'" for mode "'+(L.scope||"<unnamed>")+'"');throw F.mode=L,F}else if(C.type==="end"){let F=Fn(C);if(F!==mr)return F}if(C.type==="illegal"&&D==="")return z+=`
690
+ `,1;if(Un>1e5&&Un>C.index*3)throw new Error("potential infinite loop, way more iterations than matches");return z+=D,D.length}let ce=B(h);if(!ce)throw Le(i.replace("{}",h)),new Error('Unknown language: "'+h+'"');let $=Wc(ce),we="",L=O||$,Bt={},J=new c.__emitter(c);$n();let z="",Ht=0,Re=0,Un=0,qn=!1;try{if(ce.__emitTokens)ce.__emitTokens(k,J);else{for(L.matcher.considerAll();;){Un++,qn?qn=!1:L.matcher.considerAll(),L.matcher.lastIndex=Re;let w=L.matcher.exec(k);if(!w)break;let C=k.substring(Re,w.index),D=Pt(C,w);Re=w.index+D}Pt(k.substring(Re))}return J.finalize(),we=J.toHTML(),{language:h,value:we,relevance:Ht,illegal:!1,_emitter:J,_top:L}}catch(w){if(w.message&&w.message.includes("Illegal"))return{language:h,value:Kn(k),illegal:!0,relevance:0,_illegalBy:{message:w.message,index:Re,context:k.slice(Re-100,Re+100),mode:w.mode,resultSoFar:we},_emitter:J};if(r)return{language:h,value:Kn(k),illegal:!1,relevance:0,errorRaised:w,_emitter:J,_top:L};throw w}}function m(h){let k={value:Kn(h),illegal:!1,relevance:0,_top:a,_emitter:new c.__emitter(c)};return k._emitter.addText(h),k}function g(h,k){k=k||c.languages||Object.keys(t);let x=m(h),O=k.filter(B).filter(Y).map(ne=>p(ne,h,!1));O.unshift(x);let P=O.sort((ne,oe)=>{if(ne.relevance!==oe.relevance)return oe.relevance-ne.relevance;if(ne.language&&oe.language){if(B(ne.language).supersetOf===oe.language)return 1;if(B(oe.language).supersetOf===ne.language)return-1}return 0}),[q,K]=P,ae=q;return ae.secondBest=K,ae}function E(h,k,x){let O=k&&n[k]||x;h.classList.add("hljs"),h.classList.add(`language-${O}`)}function y(h){let k=null,x=d(h);if(u(x))return;if(Q("before:highlightElement",{el:h,language:x}),h.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",h);return}if(h.children.length>0&&(c.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(h)),c.throwUnescapedHTML))throw new Qn("One of your code blocks includes unescaped HTML.",h.innerHTML);k=h;let O=k.textContent,P=x?f(O,{language:x,ignoreIllegals:!0}):g(O);h.innerHTML=P.value,h.dataset.highlighted="yes",E(h,x,P.language),h.result={language:P.language,re:P.relevance,relevance:P.relevance},P.secondBest&&(h.secondBest={language:P.secondBest.language,relevance:P.secondBest.relevance}),Q("after:highlightElement",{el:h,result:P,text:O})}function S(h){c=pr(c,h)}let A=()=>{T(),Xe("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function b(){T(),Xe("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let _=!1;function T(){function h(){T()}if(document.readyState==="loading"){_||window.addEventListener("DOMContentLoaded",h,!1),_=!0;return}document.querySelectorAll(c.cssSelector).forEach(y)}function N(h,k){let x=null;try{x=k(e)}catch(O){if(Le("Language definition for '{}' could not be registered.".replace("{}",h)),r)Le(O);else throw O;x=a}x.name||(x.name=h),t[h]=x,x.rawDefinition=k.bind(null,e),x.aliases&&H(x.aliases,{languageName:h})}function R(h){delete t[h];for(let k of Object.keys(n))n[k]===h&&delete n[k]}function G(){return Object.keys(t)}function B(h){return h=(h||"").toLowerCase(),t[h]||t[n[h]]}function H(h,{languageName:k}){typeof h=="string"&&(h=[h]),h.forEach(x=>{n[x.toLowerCase()]=k})}function Y(h){let k=B(h);return k&&!k.disableAutodetect}function Z(h){h["before:highlightBlock"]&&!h["before:highlightElement"]&&(h["before:highlightElement"]=k=>{h["before:highlightBlock"](Object.assign({block:k.el},k))}),h["after:highlightBlock"]&&!h["after:highlightElement"]&&(h["after:highlightElement"]=k=>{h["after:highlightBlock"](Object.assign({block:k.el},k))})}function j(h){Z(h),s.push(h)}function ue(h){let k=s.indexOf(h);k!==-1&&s.splice(k,1)}function Q(h,k){let x=h;s.forEach(function(O){O[x]&&O[x](k)})}function V(h){return Xe("10.7.0","highlightBlock will be removed entirely in v12.0"),Xe("10.7.0","Please use highlightElement now."),y(h)}Object.assign(e,{highlight:f,highlightAuto:g,highlightAll:T,highlightElement:y,highlightBlock:V,configure:S,initHighlighting:A,initHighlightingOnLoad:b,registerLanguage:N,unregisterLanguage:R,listLanguages:G,getLanguage:B,registerAliases:H,autoDetection:Y,inherit:pr,addPlugin:j,removePlugin:ue}),e.debugMode=function(){r=!1},e.safeMode=function(){r=!0},e.versionString=Yc,e.regex={concat:Oe,lookahead:br,either:Vn,optional:lc,anyNumberOfTimes:cc};for(let h in $t)typeof $t[h]=="object"&&gr($t[h]);return Object.assign(e,$t),e},Ze=Ar({});Ze.newInstance=()=>Ar({});xr.exports=Ze;Ze.HighlightJS=Ze;Ze.default=Ze});var Ye=[];function tr(e,t){t<120||(Ye.push({label:e,ms:t,at:Date.now()}),Ye.sort((n,s)=>s.ms-n.ms),Ye.length>6&&(Ye.length=6))}function Se(e,t){let n=performance.now();try{return t()}finally{tr(e,performance.now()-n)}}function nr(){if(!(typeof PerformanceObserver>"u"))try{new PerformanceObserver(e=>{for(let t of e.getEntries())tr(`longtask/${t.name??"?"}`,t.duration)}).observe({entryTypes:["longtask"]})}catch{}}var Ft=new Map;function Qe(e){Ft.set(e,(Ft.get(e)??0)+1)}function sr(){return Ft.size===0?"none":[...Ft.entries()].map(([e,t])=>`${e}:${t}`).join(" ")}function rr(){return Ye.length===0?"none >120ms":Ye.map(e=>`${e.label} ${Math.round(e.ms)}ms`).join(" | ")}function l(e,t,...n){let s=document.createElement(e);if(t)for(let[r,i]of Object.entries(t))i==null||i===!1||(r==="class"?s.className=i:r.startsWith("on")&&typeof i=="function"?s.addEventListener(r.slice(2).toLowerCase(),i):r==="html"?s.innerHTML=i:s.setAttribute(r,String(i)));for(let r of n)if(!(r==null||r===!1))if(Array.isArray(r))for(let i of r)or(s,i);else or(s,r);return s}var zn=10;function Ve(){let e=window.getSelection();return!!e&&!e.isCollapsed&&e.toString().length>0}function Te(e){return e instanceof HTMLElement?e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT"||e.isContentEditable:!1}function ir(){return window.matchMedia("(hover: hover) and (pointer: fine)").matches}var ar="(min-width: 1000px)";function ee(){return window.matchMedia(ar).matches}function cr(e){window.matchMedia(ar).addEventListener("change",e)}function I(e){let t=!1,n=0,s=0;return{onpointerdown:r=>{if(Te(r.target))return;let i=r;i.pointerType==="mouse"&&i.button!==0||(n=i.clientX,s=i.clientY,r.preventDefault(),r.stopPropagation())},onpointerup:r=>{if(Te(r.target))return;let i=r;i.pointerType==="mouse"&&i.button!==0||(r.stopPropagation(),!(Math.hypot(i.clientX-n,i.clientY-s)>zn)&&(Ve()||(t=!0,e(r))))},onclick:r=>{if(!Te(r.target)){if(r.stopPropagation(),t){t=!1;return}r.detail===0&&(Ve()||e(r))}}}}function or(e,t){t==null||t===!1||(t instanceof Node?e.appendChild(t):e.appendChild(document.createTextNode(String(t))))}var Cr=oc(kr(),1);var W=Cr.default;function Mr(e){let t=e.regex,n={},s={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},s]});let r={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),a={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,r]};r.contains.push(c);let u={match:/\\"/},d={className:"string",begin:/'/,end:/'/},f={match:/\\'/},p={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},m=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],g=e.SHEBANG({binary:`(${m.join("|")})`,relevance:10}),E={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},y=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],S=["true","false"],A={match:/(\/[a-z._-]+)+/},b=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],_=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],T=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],N=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:y,literal:S,built_in:[...b,..._,"set","shopt",...T,...N]},contains:[g,e.SHEBANG(),E,p,i,a,A,c,u,d,f,n]}}function Nr(e){let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="("+s+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},f={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},p={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},m={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},g=t.optional(r)+e.IDENT_RE+"\\s*\\(",S={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},A=[p,c,n,e.C_BLOCK_COMMENT_MODE,f,d],b={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:S,contains:A.concat([{begin:/\(/,end:/\)/,keywords:S,contains:A.concat(["self"]),relevance:0}]),relevance:0},_={begin:"("+a+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:S,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:S,relevance:0},{begin:g,returnBegin:!0,contains:[e.inherit(m,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,d,f,c,{begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,d,f,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,p]};return{name:"C",aliases:["h"],keywords:S,disableAutodetect:!0,illegal:"</",contains:[].concat(b,_,A,[p,{begin:e.IDENT_RE+"::",keywords:S},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:p,strings:d,keywords:S}}}function Rr(e){let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",a="(?!struct)("+s+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",c={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},f={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},p={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},m={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},g=t.optional(r)+e.IDENT_RE+"\\s*\\(",E=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],y=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],S=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],A=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],T={type:y,keyword:E,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:S},N={className:"function.dispatch",relevance:0,keywords:{_hint:A},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},R=[N,p,c,n,e.C_BLOCK_COMMENT_MODE,f,d],G={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:T,contains:R.concat([{begin:/\(/,end:/\)/,keywords:T,contains:R.concat(["self"]),relevance:0}]),relevance:0},B={className:"function",begin:"("+a+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:T,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:T,relevance:0},{begin:g,returnBegin:!0,contains:[m],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[d,f]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:T,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,d,f,c,{begin:/\(/,end:/\)/,keywords:T,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,d,f,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,p]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:T,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(G,B,N,R,[p,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:T,contains:["self",c]},{begin:e.IDENT_RE+"::",keywords:T},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}var Vc=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Xc=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Zc=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],jc=[...Xc,...Zc],Jc=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),el=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),tl=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),nl=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function Lr(e){let t=e.regex,n=Vc(e),s={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},r="and or not only",i=/@-?\w[\w]*(-\w+)*/,a="[a-zA-Z-][a-zA-Z0-9_-]*",c=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,s,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+a,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+el.join("|")+")"},{begin:":(:)?("+tl.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+nl.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...c,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...c,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:i},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:r,attribute:Jc.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...c,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+jc.join("|")+")\\b"}]}}function Or(e){return{name:"Dockerfile",aliases:["docker"],case_insensitive:!0,keywords:["from","maintainer","expose","env","arg","user","onbuild","stopsignal"],contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}function Dr(e){let i={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:i,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:i,illegal:/["']/}]}]}}function Pr(e){let t=e.regex,n={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let r={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},i={className:"literal",begin:/\bon|off|true|false|yes|no\b/},a={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[s,i,r,a,n,"self"],relevance:0},u=/[A-Za-z0-9_-]+/,d=/"(\\"|[^"])*"/,f=/'[^']*'/,p=t.either(u,d,f),m=t.concat(p,"(\\s*\\.\\s*",p,")*",t.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{begin:m,className:"attr",starts:{end:/$/,contains:[s,c,i,r,a,n]}}]}}var je="[0-9](_*[0-9])*",Kt=`\\.(${je})`,Wt="[0-9a-fA-F](_*[0-9a-fA-F])*",Br={className:"number",variants:[{begin:`(\\b(${je})((${Kt})|\\.)?|(${Kt}))[eE][+-]?(${je})[fFdD]?\\b`},{begin:`\\b(${je})((${Kt})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Kt})[fFdD]?\\b`},{begin:`\\b(${je})[fFdD]\\b`},{begin:`\\b0[xX]((${Wt})\\.?|(${Wt})?\\.(${Wt}))[pP][+-]?(${je})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Wt})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Hr(e,t,n){return n===-1?"":e.replace(t,s=>Hr(e,t,n-1))}function Fr(e){let t=e.regex,n="[\xC0-\u02B8a-zA-Z_$][\xC0-\u02B8a-zA-Z_$0-9]*",s=n+Hr("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),u={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},d={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},f={className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:u,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[t.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[f,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+s+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:u,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[d,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,Br,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},Br,d]}}var $r="[A-Za-z$_][0-9A-Za-z$_]*",sl=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],rl=["true","false","null","undefined","NaN","Infinity"],Ur=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],qr=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],zr=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],ol=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],il=[].concat(zr,Ur,qr);function Kr(e){let t=e.regex,n=(x,{after:O})=>{let P="</"+x[0].slice(1);return x.input.indexOf(P,O)!==-1},s=$r,r={begin:"<>",end:"</>"},i=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(x,O)=>{let P=x[0].length+x.index,q=x.input[P];if(q==="<"||q===","){O.ignoreMatch();return}q===">"&&(n(x,{after:P})||O.ignoreMatch());let K,ae=x.input.substring(P);if(K=ae.match(/^\s*=/)){O.ignoreMatch();return}if((K=ae.match(/^\s+extends\s+/))&&K.index===0){O.ignoreMatch();return}}},c={$pattern:$r,keyword:sl,literal:rl,built_in:il,"variable.language":ol},u="[0-9](_?[0-9])*",d=`\\.(${u})`,f="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${f})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${f})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},m={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},g={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"xml"}},E={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"graphql"}},S={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,m]},b={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},_=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,E,y,S,{match:/\$\d+/},p];m.contains=_.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(_)});let T=[].concat(b,m.contains),N=T.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(T)}]),R={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:N},G={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},B={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Ur,...qr]}},H={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},Y={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R],illegal:/%/},Z={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function j(x){return t.concat("(?!",x.join("|"),")")}let ue={match:t.concat(/\b/,j([...zr,"super","import"].map(x=>`${x}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},Q={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},V={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},R]},h="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",k={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(h)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[R]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:N,CLASS_REFERENCE:B},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),H,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,E,y,S,b,{match:/\$\d+/},p,B,{scope:"attr",match:s+t.lookahead(":"),relevance:0},k,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[b,e.REGEXP_MODE,{className:"function",begin:h,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:N}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:i},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},Y,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[R,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},Q,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[R]},ue,Z,G,V,{match:/\$[(.]/}]}}function Wr(e){let t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},s=["true","false","null"],r={scope:"literal",beginKeywords:s.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:s},contains:[t,n,e.QUOTE_STRING_MODE,r,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var Je="[0-9](_*[0-9])*",Gt=`\\.(${Je})`,Yt="[0-9a-fA-F](_*[0-9a-fA-F])*",al={className:"number",variants:[{begin:`(\\b(${Je})((${Gt})|\\.)?|(${Gt}))[eE][+-]?(${Je})[fFdD]?\\b`},{begin:`\\b(${Je})((${Gt})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Gt})[fFdD]?\\b`},{begin:`\\b(${Je})[fFdD]\\b`},{begin:`\\b0[xX]((${Yt})\\.?|(${Yt})?\\.(${Yt}))[pP][+-]?(${Je})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Yt})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Gr(e){let t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},s={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},a={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,i,r]}]};r.contains.push(a);let c={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},u={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(a,{className:"string"}),"self"]}]},d=al,f=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),p={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},m=p;return m.variants[1].contains=[p],p.variants[1].contains=[m],{name:"Kotlin",aliases:["kt","kts"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,f,n,s,c,u,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[p,e.C_LINE_COMMENT_MODE,f],relevance:0},e.C_LINE_COMMENT_MODE,f,c,u,a,e.C_NUMBER_MODE]},f]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},c,u]},a,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
691
+ `},d]}}function Yr(e){let t=e.regex,n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},s={begin:"^[-\\*]{3,}",end:"$"},r={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},i={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},a={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},c=/[A-Za-z][A-Za-z0-9+.-]*/,u={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:t.concat(/\[.+?\]\(/,c,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},d={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},f={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},p=e.inherit(d,{contains:[]}),m=e.inherit(f,{contains:[]});d.contains.push(m),f.contains.push(p);let g=[n,u];return[d,f,p,m].forEach(A=>{A.contains=A.contains.concat(g)}),g=g.concat(d,f),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:g},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:g}]}]},n,i,d,f,{className:"quote",begin:"^>\\s+",contains:g,end:"$"},r,s,u,a,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function Qr(e){let t=e.regex,n=/(?![A-Za-z0-9])(?![$])/,s=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),r=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),i=t.concat(/[A-Z]+/,n),a={scope:"variable",match:"\\$+"+s},c={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},u={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},d=e.inherit(e.APOS_STRING_MODE,{illegal:null}),f=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(u)}),p={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(u),"on:begin":(Q,V)=>{V.data._beginMatch=Q[1]||Q[2]},"on:end":(Q,V)=>{V.data._beginMatch!==Q[1]&&V.ignoreMatch()}},m=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),g=`[
692
+ ]`,E={scope:"string",variants:[f,d,p,m]},y={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},S=["false","null","true"],A=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],b=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],T={keyword:A,literal:(Q=>{let V=[];return Q.forEach(h=>{V.push(h),h.toLowerCase()===h?V.push(h.toUpperCase()):V.push(h.toLowerCase())}),V})(S),built_in:b},N=Q=>Q.map(V=>V.replace(/\|\d+$/,"")),R={variants:[{match:[/new/,t.concat(g,"+"),t.concat("(?!",N(b).join("\\b|"),"\\b)"),r],scope:{1:"keyword",4:"title.class"}}]},G=t.concat(s,"\\b(?!\\()"),B={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),G],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[r,t.concat(/::/,t.lookahead(/(?!class\b)/)),G],scope:{1:"title.class",3:"variable.constant"}},{match:[r,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[r,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},H={scope:"attr",match:t.concat(s,t.lookahead(":"),t.lookahead(/(?!::)/))},Y={relevance:0,begin:/\(/,end:/\)/,keywords:T,contains:[H,a,B,e.C_BLOCK_COMMENT_MODE,E,y,R]},Z={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",N(A).join("\\b|"),"|",N(b).join("\\b|"),"\\b)"),s,t.concat(g,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[Y]};Y.contains.push(Z);let j=[H,B,e.C_BLOCK_COMMENT_MODE,E,y,R],ue={begin:t.concat(/#\[\s*\\?/,t.either(r,i)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:S,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:S,keyword:["new","array"]},contains:["self",...j]},...j,{scope:"meta",variants:[{match:r},{match:i}]}]};return{case_insensitive:!1,keywords:T,contains:[ue,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},c,{scope:"variable.language",match:/\$this\b/},a,Z,B,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},R,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:T,contains:["self",ue,a,B,e.C_BLOCK_COMMENT_MODE,E,y]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},E,y]}}function Vr(e){let t=e.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],c={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},u={className:"meta",begin:/^(>>>|\.\.\.) /},d={className:"subst",begin:/\{/,end:/\}/,keywords:c,illegal:/#/},f={begin:/\{\{/,relevance:0},p={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,u],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,u],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,u,f,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,u,f,d]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,f,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,f,d]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},m="[0-9](_?[0-9])*",g=`(\\b(${m}))?\\.(${m})|\\b(${m})\\.`,E=`\\b|${s.join("|")}`,y={className:"number",relevance:0,variants:[{begin:`(\\b(${m})|(${g}))[eE][+-]?(${m})[jJ]?(?=${E})`},{begin:`(${g})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${E})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${E})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${E})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${E})`},{begin:`\\b(${m})[jJ](?=${E})`}]},S={className:"comment",begin:t.lookahead(/# type:/),end:/$/,keywords:c,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},A={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:["self",u,y,p,e.HASH_COMMENT_MODE]}]};return d.contains=[p,y,u],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:c,illegal:/(<\/|\?)|=>/,contains:[u,y,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},p,S,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[A]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[y,A,p]}]}}function Xr(e){let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),r=t.concat(s,/(::\w+)*/),a={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},c={className:"doctag",begin:"@[A-Za-z]+"},u={begin:"#<",end:">"},d=[e.COMMENT("#","$",{contains:[c]}),e.COMMENT("^=begin","^=end",{contains:[c],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],f={className:"subst",begin:/#\{/,end:/\}/,keywords:a},p={className:"string",contains:[e.BACKSLASH_ESCAPE,f],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,f]})]}]},m="[1-9](_?[0-9])*|0",g="[0-9](_?[0-9])*",E={className:"number",relevance:0,variants:[{begin:`\\b(${m})(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},y={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:a}]},R=[p,{variants:[{match:[/class\s+/,r,/\s+<\s+/,r]},{match:[/\b(class|module)\s+/,r]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:a},{match:[/(include|extend)\s+/,r],scope:{2:"title.class"},keywords:a},{relevance:0,match:[r,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:s,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[y]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[p,{begin:n}],relevance:0},E,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,f],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(u,d),relevance:0}].concat(u,d);f.contains=R,y.contains=R;let Y=[{begin:/^\s*=>/,starts:{end:"$",contains:R}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:a,contains:R}}];return d.unshift(u),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(Y).concat(d).concat(R)}}function Zr(e){let t=e.regex,n=/(r#)?/,s=t.concat(n,e.UNDERSCORE_IDENT_RE),r=t.concat(n,e.IDENT_RE),i={className:"title.function.invoke",relevance:0,begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,r,t.lookahead(/\s*\(/))},a="([ui](8|16|32|64|128|size)|f(32|64))?",c=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],u=["true","false","Some","None","Ok","Err"],d=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],f=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:f,keyword:c,literal:u,built_in:d},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+a},{begin:"\\b0o([0-7_]+)"+a},{begin:"\\b0x([A-Fa-f0-9_]+)"+a},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+a}],relevance:0},{begin:[/fn/,/\s+/,s],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,s],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,s,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:d,type:f}},{className:"punctuation",begin:"->"},i]}}function jr(e){let t=e.regex,n=e.COMMENT("--","$"),s={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},r={begin:/"/,end:/"/,contains:[{match:/""/}]},i=["true","false","unknown"],a=["double precision","large object","with timezone","without timezone"],c=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],u=["add","asc","collation","desc","final","first","last","view"],d=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],f=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],p=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],m=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],g=f,E=[...d,...u].filter(N=>!f.includes(N)),y={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},S={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},A={match:t.concat(/\b/,t.either(...g),/\s*\(/),relevance:0,keywords:{built_in:g}};function b(N){return t.concat(/\b/,t.either(...N.map(R=>R.replace(/\s+/,"\\s+"))),/\b/)}let _={scope:"keyword",match:b(m),relevance:0};function T(N,{exceptions:R,when:G}={}){let B=G;return R=R||[],N.map(H=>H.match(/\|\d+$/)||R.includes(H)?H:B(H)?`${H}|0`:H)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:T(E,{when:N=>N.length<3}),literal:i,type:c,built_in:p},contains:[{scope:"type",match:b(a)},_,A,y,s,r,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,S]}}function no(e){return e?typeof e=="string"?e:e.source:null}function wt(e){return U("(?=",e,")")}function U(...e){return e.map(n=>no(n)).join("")}function cl(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function se(...e){return"("+(cl(e).capture?"":"?:")+e.map(s=>no(s)).join("|")+")"}var es=e=>U(/\b/,e,/\w$/.test(e)?/\b/:/\B/),ll=["Protocol","Type"].map(es),Jr=["init","self"].map(es),ul=["Any","Self"],jn=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],eo=["false","nil","true"],dl=["assignment","associativity","higherThan","left","lowerThan","none","right"],fl=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],to=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],so=se(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),ro=se(so,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),Jn=U(so,ro,"*"),oo=se(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Vt=se(oo,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),ge=U(oo,Vt,"*"),Qt=U(/[A-Z]/,Vt,"*"),pl=["attached","autoclosure",U(/convention\(/,se("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",U(/objc\(/,ge,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],ml=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function io(e){let t={match:/\s+/,relevance:0},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,n],r={match:[/\./,se(...ll,...Jr)],className:{2:"keyword"}},i={match:U(/\./,se(...jn)),relevance:0},a=jn.filter($=>typeof $=="string").concat(["_|0"]),c=jn.filter($=>typeof $!="string").concat(ul).map(es),u={variants:[{className:"keyword",match:se(...c,...Jr)}]},d={$pattern:se(/\b\w+/,/#\w+/),keyword:a.concat(fl),literal:eo},f=[r,i,u],p={match:U(/\./,se(...to)),relevance:0},m={className:"built_in",match:U(/\b/,se(...to),/(?=\()/)},g=[p,m],E={match:/->/,relevance:0},y={className:"operator",relevance:0,variants:[{match:Jn},{match:`\\.(\\.|${ro})+`}]},S=[E,y],A="([0-9]_*)+",b="([0-9a-fA-F]_*)+",_={className:"number",relevance:0,variants:[{match:`\\b(${A})(\\.(${A}))?([eE][+-]?(${A}))?\\b`},{match:`\\b0x(${b})(\\.(${b}))?([pP][+-]?(${A}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},T=($="")=>({className:"subst",variants:[{match:U(/\\/,$,/[0\\tnr"']/)},{match:U(/\\/,$,/u\{[0-9a-fA-F]{1,8}\}/)}]}),N=($="")=>({className:"subst",match:U(/\\/,$,/[\t ]*(?:[\r\n]|\r\n)/)}),R=($="")=>({className:"subst",label:"interpol",begin:U(/\\/,$,/\(/),end:/\)/}),G=($="")=>({begin:U($,/"""/),end:U(/"""/,$),contains:[T($),N($),R($)]}),B=($="")=>({begin:U($,/"/),end:U(/"/,$),contains:[T($),R($)]}),H={className:"string",variants:[G(),G("#"),G("##"),G("###"),B(),B("#"),B("##"),B("###")]},Y=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],Z={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:Y},j=$=>{let we=U($,/\//),L=U(/\//,$);return{begin:we,end:L,contains:[...Y,{scope:"comment",begin:`#(?!.*${L})`,end:/$/}]}},ue={scope:"regexp",variants:[j("###"),j("##"),j("#"),Z]},Q={match:U(/`/,ge,/`/)},V={className:"variable",match:/\$\d+/},h={className:"variable",match:`\\$${Vt}+`},k=[Q,V,h],x={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:ml,contains:[...S,_,H]}]}},O={scope:"keyword",match:U(/@/,se(...pl),wt(se(/\(/,/\s+/)))},P={scope:"meta",match:U(/@/,ge)},q=[x,O,P],K={match:wt(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:U(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Vt,"+")},{className:"type",match:Qt,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:U(/\s+&\s+/,wt(Qt)),relevance:0}]},ae={begin:/</,end:/>/,keywords:d,contains:[...s,...f,...q,E,K]};K.contains.push(ae);let ne={match:U(ge,/\s*:/),keywords:"_|0",relevance:0},oe={begin:/\(/,end:/\)/,relevance:0,keywords:d,contains:["self",ne,...s,ue,...f,...g,...S,_,H,...k,...q,K]},We={begin:/</,end:/>/,keywords:"repeat each",contains:[...s,K]},Dt={begin:se(wt(U(ge,/\s*:/)),wt(U(ge,/\s+/,ge,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:ge}]},yt={begin:/\(/,end:/\)/,keywords:d,contains:[Dt,...s,...f,...S,_,H,...q,K,oe],endsParent:!0,illegal:/["']/},Bn={match:[/(func|macro)/,/\s+/,se(Q.match,ge,Jn)],className:{1:"keyword",3:"title.function"},contains:[We,yt,t],illegal:[/\[/,/%/]},Hn={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[We,yt,t],illegal:/\[|%/},Fn={match:[/operator/,/\s+/,Jn],className:{1:"keyword",3:"title"}},$n={begin:[/precedencegroup/,/\s+/,Qt],className:{1:"keyword",3:"title"},contains:[K],keywords:[...dl,...eo],end:/}/},Ge={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},Pt={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},ce={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,ge,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:d,contains:[We,...f,{begin:/:/,end:/\{/,keywords:d,contains:[{scope:"title.class.inherited",match:Qt},...f],relevance:0}]};for(let $ of H.variants){let we=$.contains.find(Bt=>Bt.label==="interpol");we.keywords=d;let L=[...f,...g,...S,_,H,...k];we.contains=[...L,{begin:/\(/,end:/\)/,contains:["self",...L]}]}return{name:"Swift",keywords:d,contains:[...s,Bn,Hn,Ge,Pt,ce,Fn,$n,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},ue,...f,...g,...S,_,H,...k,...q,K,oe]}}var Xt="[A-Za-z$_][0-9A-Za-z$_]*",ao=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],co=["true","false","null","undefined","NaN","Infinity"],lo=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],uo=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],fo=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],po=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],mo=[].concat(fo,lo,uo);function gl(e){let t=e.regex,n=(x,{after:O})=>{let P="</"+x[0].slice(1);return x.input.indexOf(P,O)!==-1},s=Xt,r={begin:"<>",end:"</>"},i=/<[A-Za-z0-9\\._:-]+\s*\/>/,a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(x,O)=>{let P=x[0].length+x.index,q=x.input[P];if(q==="<"||q===","){O.ignoreMatch();return}q===">"&&(n(x,{after:P})||O.ignoreMatch());let K,ae=x.input.substring(P);if(K=ae.match(/^\s*=/)){O.ignoreMatch();return}if((K=ae.match(/^\s+extends\s+/))&&K.index===0){O.ignoreMatch();return}}},c={$pattern:Xt,keyword:ao,literal:co,built_in:mo,"variable.language":po},u="[0-9](_?[0-9])*",d=`\\.(${u})`,f="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${f})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${f})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},m={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},g={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"xml"}},E={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:"graphql"}},S={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,m]},b={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},_=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,E,y,S,{match:/\$\d+/},p];m.contains=_.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(_)});let T=[].concat(b,m.contains),N=T.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(T)}]),R={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:N},G={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},B={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...lo,...uo]}},H={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},Y={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R],illegal:/%/},Z={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function j(x){return t.concat("(?!",x.join("|"),")")}let ue={match:t.concat(/\b/,j([...fo,"super","import"].map(x=>`${x}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},Q={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},V={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},R]},h="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",k={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(h)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[R]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:N,CLASS_REFERENCE:B},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),H,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,E,y,S,b,{match:/\$\d+/},p,B,{scope:"attr",match:s+t.lookahead(":"),relevance:0},k,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[b,e.REGEXP_MODE,{className:"function",begin:h,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:N}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:i},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},Y,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[R,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},Q,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[R]},ue,Z,G,V,{match:/\$[(.]/}]}}function go(e){let t=e.regex,n=gl(e),s=Xt,r=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],i={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},a={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},contains:[n.exports.CLASS_REFERENCE]},c={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},u=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],d={$pattern:Xt,keyword:ao.concat(u),literal:co,built_in:mo.concat(r),"variable.language":po},f={className:"meta",begin:"@"+s},p=(y,S,A)=>{let b=y.contains.findIndex(_=>_.label===S);if(b===-1)throw new Error("can not find mode to replace");y.contains.splice(b,1,A)};Object.assign(n.keywords,d),n.exports.PARAMS_CONTAINS.push(f);let m=n.contains.find(y=>y.scope==="attr"),g=Object.assign({},m,{match:t.concat(s,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,m,g]),n.contains=n.contains.concat([f,i,a,g]),p(n,"shebang",e.SHEBANG()),p(n,"use_strict",c);let E=n.contains.find(y=>y.label==="func.def");return E.relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}function ho(e){let t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s=/[\p{L}0-9._:-]+/u,r={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},a=e.inherit(i,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{className:"string"}),u=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),d={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:s,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[r]},{begin:/'/,end:/'/,contains:[r]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[i,u,c,a,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[i,a,u,c]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},r,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[u]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[d],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[d],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:d}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function bo(e){let t="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},r={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},i={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},a={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,r]},c=e.inherit(a,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),m={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},g={end:",",endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},E={begin:/\{/,end:/\}/,contains:[g],illegal:"\\n",relevance:0},y={begin:"\\[",end:"\\]",contains:[g],illegal:"\\n",relevance:0},S=[s,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},m,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},E,y,i,a],A=[...S];return A.pop(),A.push(c),g.contains=A,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:S}}W.registerLanguage("bash",Mr);W.registerLanguage("c",Nr);W.registerLanguage("cpp",Rr);W.registerLanguage("css",Lr);W.registerLanguage("dockerfile",Or);W.registerLanguage("go",Dr);W.registerLanguage("ini",Pr);W.registerLanguage("java",Fr);W.registerLanguage("javascript",Kr);W.registerLanguage("json",Wr);W.registerLanguage("kotlin",Gr);W.registerLanguage("markdown",Yr);W.registerLanguage("php",Qr);W.registerLanguage("python",Vr);W.registerLanguage("ruby",Xr);W.registerLanguage("rust",Zr);W.registerLanguage("sql",jr);W.registerLanguage("swift",io);W.registerLanguage("typescript",go);W.registerLanguage("xml",ho);W.registerLanguage("yaml",bo);var Eo={bash:"bash",sh:"bash",zsh:"bash",c:"c",h:"c",cc:"cpp",cpp:"cpp",cxx:"cpp",hpp:"cpp",hxx:"cpp",css:"css",dockerfile:"dockerfile",go:"go",ini:"ini",toml:"ini",java:"java",cjs:"javascript",js:"javascript",jsx:"javascript",mjs:"javascript",json:"json",jsonc:"json",kt:"kotlin",kts:"kotlin",md:"markdown",markdown:"markdown",php:"php",py:"python",rb:"ruby",rs:"rust",sql:"sql",swift:"swift",cts:"typescript",mts:"typescript",ts:"typescript",tsx:"typescript",htm:"xml",html:"xml",svg:"xml",xml:"xml",yaml:"yaml",yml:"yaml"};function yo(e,t){let n=t.split(".").pop()?.toLowerCase()??"",s=Eo[n]??(t.toLowerCase()==="dockerfile"?"dockerfile":null);return s?W.highlight(e,{language:s}).value:null}var hl=new Set(["bash","c","cpp","css","dockerfile","go","ini","java","javascript","json","kotlin","markdown","php","python","ruby","rust","sql","swift","typescript","xml","yaml"]),bl={"c++":"cpp",shell:"bash",console:"bash"};function _o(e,t){let n=t.trim().toLowerCase();if(!n)return null;let s=hl.has(n)?n:bl[n]??Eo[n];return s?W.highlight(e,{language:s}).value:null}function ie(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function ts(e){return e.replace(/\bhttps?:\/\/[^\s<]+/g,t=>{let n=t,s="";for(;;){let r=n.match(/(&quot;|&#39;|&gt;|[.,;:!?'\]}"])$/);if(!r)break;s=r[0]+s,n=n.slice(0,-r[0].length)}for(;n.endsWith(")");){let r=(n.match(/\(/g)??[]).length,i=(n.match(/\)/g)??[]).length;if(r>=i)break;s=")"+s,n=n.slice(0,-1)}return n?`<a href="${n}" target="_blank" rel="noopener noreferrer">${n}</a>${s}`:t})}function El(e){let t=/<code>([\s\S]*?)<\/code>|<a\b[^>]*>[\s\S]*?<\/a>/g,n="",s=0,r;for(;(r=t.exec(e))!==null;){n+=ts(e.slice(s,r.index));let i=r[1];i!==void 0&&/^https?:\/\/[^\s<]+$/.test(i.trim())?n+=`<code>${ts(i)}</code>`:n+=r[0],s=r.index+r[0].length}return n+ts(e.slice(s))}function St(e){return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,"<strong>$1</strong>"),e=e.replace(/(^|[^*])\*([^*\n]+)\*/g,"$1<em>$2</em>"),e=e.replace(/__([^_\n]+)__/g,"<strong>$1</strong>"),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,s)=>{let r=s.match(/^hydra:\/\/(?:[^/\s]+\/)?sessions\/([A-Za-z0-9_-]+)(?:#turn-\d+)?$/);if(r){let i=r[1];return`<a href="#/session/${ie(i)}">${n}</a>`}return/^(https?:\/\/|\/|\.)/i.test(s)?`<a href="${ie(s)}" target="_blank" rel="noopener noreferrer">${n}</a>`:`[${n}](${s})`}),El(e)}function ns(e){let t=e.trim();if(!t.includes("|"))return null;let n=t;return n.startsWith("|")&&(n=n.slice(1)),n.endsWith("|")&&(n=n.slice(0,-1)),n.split("|").map(s=>s.trim())}function yl(e){let t=ns(e);if(!t||t.length===0)return null;let n=[];for(let s of t){if(!/^:?-+:?$/.test(s))return null;let r=s.startsWith(":"),i=s.endsWith(":");r&&i?n.push("center"):i?n.push("right"):r?n.push("left"):n.push(null)}return n}function vo(e,t){let n=_o(e,t),s=ie(t),r=n!==null?` class="hljs" data-lang="${s}"`:` data-lang="${s}"`,i=n??ie(e);return`<pre><code${r}>${i}</code></pre>`}function wo(e,t,n){let s="<tr>";for(let r=0;r<e.length;r++){let i=t[r]??null,a=i?` style="text-align:${i}"`:"";s+=`<${n}${a}>${St(ie(e[r]))}</${n}>`}return s+="</tr>",s}function ss(e){typeof e!="string"&&(e=String(e??""));let t=e.split(`
693
+ `),n="",s=!1,r="",i=[],a=null,c=[],u=[];function d(){u.length!==0&&(n+=`<p>${St(u.join(" "))}</p>`,u=[])}function f(){c.length!==0&&(n+=`<li>${St(c.join(" "))}</li>`,c=[])}function p(){a&&(f(),n+=`</${a}>`,a=null)}let m=0;for(;m<t.length;){let g=t[m];if(s){if(/^```/.test(g)){n+=vo(i.join(`
694
+ `),r),s=!1,i=[],r="",m++;continue}i.push(g),m++;continue}if(/^```/.test(g)){d(),p(),s=!0,r=g.slice(3).trim(),m++;continue}if(m+1<t.length&&g.includes("|")){let y=ns(g),S=yl(t[m+1]);if(y&&S&&y.length>0&&S.length>0){d(),p();let A=Math.max(y.length,S.length),b=[];for(let T=0;T<A;T++)b.push(S[T]??null);n+="<table><thead>",n+=wo(y,b,"th"),n+="</thead><tbody>";let _=m+2;for(;_<t.length;){let T=ns(t[_]);if(!T)break;n+=wo(T,b,"td"),_++}n+="</tbody></table>",m=_;continue}}if(/^\s*$/.test(g)){d(),p(),m++;continue}let E;if(E=g.match(/^(#{1,3})\s+(.+)$/)){d(),p();let y=E[1].length;n+=`<h${y}>${St(ie(E[2]))}</h${y}>`,m++;continue}if(E=g.match(/^\s*[-*]\s+(.*)$/)){d(),a!=="ul"?(p(),n+="<ul>",a="ul"):f(),c.push(ie(E[1])),m++;continue}if(E=g.match(/^\s*\d+\.\s+(.*)$/)){d(),a!=="ol"?(p(),n+="<ol>",a="ol"):f(),c.push(ie(E[1])),m++;continue}if(E=g.match(/^\s*>\s?(.*)$/)){d(),p(),n+=`<blockquote>${St(ie(E[1]))}</blockquote>`,m++;continue}if(a!==null){c.push(ie(g.trim())),m++;continue}u.push(ie(g)),m++}return s&&(n+=vo(i.join(`
695
+ `),r)),d(),p(),n}function Tt(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(Tt).join("");if(e&&typeof e=="object"){let t=e;if(typeof t.text=="string")return t.text;if(typeof t.content=="string")return t.content}return""}function So(e){let t=e.content;if(Array.isArray(t))for(let s of t){if(!s||typeof s!="object")continue;let r=s;if(r.type!=="diff")continue;let i=typeof r.oldText=="string"?r.oldText:void 0,a=typeof r.newText=="string"?r.newText:void 0;if(i===void 0&&a===void 0)continue;let c=typeof r.path=="string"?r.path:void 0;return{...c!==void 0?{path:c}:{},oldText:i??"",newText:a??""}}let n=e.rawInput;if(n&&typeof n=="object"&&!Array.isArray(n)){let s=n,r=typeof s.file_path=="string"?s.file_path:typeof s.path=="string"?s.path:void 0;if(typeof s.old_string=="string"&&typeof s.new_string=="string")return{...r!==void 0?{path:r}:{},oldText:s.old_string,newText:s.new_string};if(typeof s.content=="string")return{...r!==void 0?{path:r}:{},oldText:"",newText:s.content}}return null}function To(e){let t=e.oldText.split(`
689
696
  `),n=e.newText.split(`
690
- `);return t.length>0&&t[t.length-1]===""&&t.pop(),n.length>0&&n[n.length-1]===""&&n.pop(),{oldLines:t,newLines:n}}var El=1e6;function yl(e,t){let n=e.length,s=t.length;if(n===0||s===0||n*s>El){let u=[];for(let d of e)u.push({op:"-",text:d});for(let d of t)u.push({op:"+",text:d});return u}let r=Array.from({length:n+1},()=>new Array(s+1).fill(0));for(let u=n-1;u>=0;u--)for(let d=s-1;d>=0;d--)e[u]===t[d]?r[u][d]=r[u+1][d+1]+1:r[u][d]=Math.max(r[u+1][d],r[u][d+1]);let i=[],a=0,c=0;for(;a<n&&c<s;)e[a]===t[c]?(i.push({op:"=",text:e[a]}),a++,c++):r[a+1][c]>=r[a][c+1]?(i.push({op:"-",text:e[a]}),a++):(i.push({op:"+",text:t[c]}),c++);for(;a<n;)i.push({op:"-",text:e[a]}),a++;for(;c<s;)i.push({op:"+",text:t[c]}),c++;return i}function Io(e,t){let n=0,s=Math.min(e.length,t.length);for(;n<s&&e[n]===t[n];)n++;let r=e.length,i=t.length;for(;r>n&&i>n&&e[r-1]===t[i-1];)r--,i--;let a=[];for(let c=0;c<n;c++)a.push({op:"=",text:e[c]});a.push(...yl(e.slice(n,r),t.slice(n,i)));for(let c=r;c<e.length;c++)a.push({op:"=",text:e[c]});return a}function Ao(e){let{oldLines:t,newLines:n}=To(e),s=0,r=0;for(let i of Io(t,n))i.op==="+"?s++:i.op==="-"&&r++;return{added:s,removed:r}}function xo(e,t={}){let n=t.maxLines??40,s=t.contextLines??3,{oldLines:r,newLines:i}=To(e),a=Io(r,i),c=[];if(Number.isFinite(s)){if(!a.some(p=>p.op!=="="))return[];let f=new Array(a.length).fill(!1);for(let p=0;p<a.length;p++)if(a[p].op!=="="){let g=Math.max(0,p-s),v=Math.min(a.length-1,p+s);for(let E=g;E<=v;E++)f[E]=!0}let m=0;for(;m<a.length;){if(f[m]){c.push({op:a[m].op,text:a[m].text}),m++;continue}let p=m;for(;p<a.length&&!f[p];)p++;let g=p-m;c.push({op:"gap",text:`\u22EF ${g} unchanged line${g===1?"":"s"}`}),m=p}}else for(let d of a)c.push({op:d.op,text:d.text});let u=[];for(let d=0;d<c.length;d++){if(u.length>=n-1&&d<c.length-1){let m=c.length-d;u.push({op:"gap",text:`\u2026 ${m} more line${m===1?"":"s"}`});break}u.push(c[d])}return u}var _l="hydra-acp-history-cache",vl=4,de="sessions",wl=6e6,Co=10,Sl=2e3,Zt=null;function rs(){return Zt||(Zt=new Promise(e=>{if(!("indexedDB"in window)){e(null);return}let t;try{t=indexedDB.open(_l,vl)}catch{e(null);return}t.onupgradeneeded=()=>{t.result.objectStoreNames.contains(de)&&t.result.deleteObjectStore(de),t.result.createObjectStore(de,{keyPath:"sessionId"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}),Zt)}function Tl(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}async function No(e){let t=await rs();return t?new Promise(n=>{let s;try{s=t.transaction(de,"readwrite")}catch{n(null);return}let r=s.objectStore(de),i=r.get(e);i.onsuccess=()=>{let a=i.result;if(!a){n(null);return}a.lastAccessed=Date.now(),r.put(a),n({frames:Se("cache-read-map",()=>a.frames.map(c=>c.frame))})},i.onerror=()=>n(null)}):null}async function Ro(e){let t=await rs();return t?new Promise(n=>{let s;try{s=t.transaction(de,"readonly")}catch{n("unreadable");return}let r=s.objectStore(de).get(e);r.onsuccess=()=>{let i=r.result;if(!i){n("empty");return}let a=new Map;for(let u of i.frames){let d=u.frame.params?.update,f=typeof d?.sessionUpdate=="string"?d.sessionUpdate:"?";a.set(f,(a.get(f)??0)+1)}let c=[...a.entries()].sort((u,d)=>d[1]-u[1]).map(([u,d])=>`${u.replace(/_chunk$/,"")}:${d}`).join(" ");n(`${i.frames.length}f ${(i.totalBytes/1e6).toFixed(1)}MB \u2014 ${c}`)},r.onerror=()=>n("unreadable")}):"unavailable"}var Oe=new Map,et;function jt(e,t){let n=Oe.get(e)??[];n.push(t),Oe.set(e,n),et===void 0&&(et=setTimeout(()=>{et=void 0,Lo()},Sl))}var ko=Promise.resolve();function Lo(){ko=ko.then(Il).catch(()=>{})}function Mo(){et!==void 0&&(clearTimeout(et),et=void 0),Lo()}async function Il(){if(Oe.size===0)return;let e=Array.from(Oe.keys()),t=await rs();if(!t){Oe.clear();return}for(let n of e){let s=Oe.get(n);Oe.delete(n),s&&await Al(t,n,s)}await xl(t)}function Al(e,t,n){return new Promise(s=>{let r;try{r=e.transaction(de,"readwrite")}catch{s();return}let i=r.objectStore(de),a=i.get(t);a.onsuccess=()=>{let c=a.result,u=Se("cache-size",()=>n.map(g=>({frame:g,bytes:Tl(g)}))),d=[...c?.frames??[],...u],f=(c?.totalBytes??0)+u.reduce((g,v)=>g+v.bytes,0);for(;d.length>1&&f>wl;){let g=d.shift();g&&(f-=g.bytes)}let m=d.findIndex(g=>g.frame.params?.update?.sessionUpdate==="prompt_received");if(m>0)for(let g of d.splice(0,m))f-=g.bytes;let p={sessionId:t,frames:d,totalBytes:f,lastAccessed:Date.now()};Se("cache-put",()=>i.put(p)),s()},a.onerror=()=>s()})}function xl(e){return new Promise(t=>{let n;try{n=e.transaction(de,"readwrite")}catch{t();return}let s=n.objectStore(de),r=s.getAll();r.onsuccess=()=>{let i=r.result??[];if(i.length<=Co){t();return}i.sort((c,u)=>c.lastAccessed-u.lastAccessed);let a=i.slice(0,i.length-Co);for(let c of a)s.delete(c.sessionId);t()},r.onerror=()=>t()})}typeof window<"u"&&typeof document<"u"&&(window.addEventListener("pagehide",Mo),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Mo()}));typeof navigator<"u"&&navigator.storage?.persist&&navigator.storage.persist();function tn(e){o.current&&o.current.log.push(e)}var Cl=new Set(["session_info_update","_hydra_current_model_update","current_mode_update","available_commands_update","_hydra_available_modes_update","usage_update","config_option_update","_hydra_compaction","_hydra_workspace","clarifier_question_asked","clarifier_question_answered","clarifier_question_dismissed"]);function nn(e){e.log=[],e.toolCalls=new Map,e.pendingPermissions=new Map,e.spinner=null,e.plan=null,e.mode=null,e.model=null,e.modes=[],e.models=[],e.contextUsed=null,e.contextSize=null,e.cost=null,e.busy=!1,e.recentOwnPrompts=[],e.promptQueue=[],e.queueByMessageId=new Map,e.ownPromptIds=new Map,e.inTurn=!1,e.unsolicitedTurnOpen=new Set,e.currentPlanEntry=null,e.daemonSupportsAmend=!1,e.ownClientId=void 0,e.currentHeadMessageId=void 0,e.lastSeenMessageId=void 0,e.pendingCursorMessageId=void 0,e.lastSeenSeq=void 0,e.spinnerOwner=void 0}function kl(e){if(!e||typeof e!="object")return;let t=e._meta;if(!t||typeof t!="object")return;let n=t["hydra-acp"];if(!n||typeof n!="object")return;let s=n.seq;return typeof s=="number"&&Number.isFinite(s)?s:void 0}function Ml(e){if(!e||typeof e!="object")return;let t=e._meta;if(!t||typeof t!="object")return;let n=t["hydra-acp"];if(!n||typeof n!="object")return;let s=n.recordedAt;return typeof s=="number"&&Number.isFinite(s)?s:void 0}function Nl(e){if(e.kind!=="stream"||e.role!=="user"||!e.queueEntry)return!1;let t=e.queueEntry.status;return t==="queued"||t==="editing"}function sn(){if(!o.current)return 0;let e=o.current.log;for(let t=0;t<e.length;t++)if(Nl(e[t]))return t;return e.length}function _e(e){o.current&&o.current.log.splice(sn(),0,e)}function is(e,t){if(!(!o.current||e.messageId===void 0)){for(let n of o.current.log)if(n.kind==="stream"&&n.queueEntry===e){n.messageId=e.messageId,t!==void 0&&(n.sentAt=t),Ll(e);return}}}function Rl(e,t){let n=o.current?.spinnerOwner;!o.current||n===void 0||jt(o.current.sessionId,{method:"session/update",params:{sessionId:o.current.sessionId,update:{sessionUpdate:"turn_complete",messageId:`${n}:turn_complete`,...e!==void 0?{stopReason:e}:{}},_meta:{"hydra-acp":{recordedAt:t??Date.now()}}}})}function Ll(e){!o.current||e.messageId===void 0||jt(o.current.sessionId,{method:"session/update",params:{sessionId:o.current.sessionId,update:{sessionUpdate:"prompt_received",messageId:e.messageId,prompt:[{type:"text",text:e.text},...(e.attachments??[]).map(t=>({type:"image",mimeType:t.mimeType,data:t.data}))]},_meta:{"hydra-acp":{recordedAt:Date.now()}}}})}function fe(){o.current&&(o.current.inTurn=!0)}function Ol(){if(!o.current)return;o.current.inTurn=!1;let e=o.current.idleListeners;o.current.idleListeners=[];for(let t of e)try{t()}catch{}}function os(e,t,n=!1,s){if(!o.current)return;let r=Tt(t);if(!r)return;let i=o.current.log,a=sn(),c;for(let u=a-1;u>=0;u--){let d=i[u];if(d.kind!=="spinner"){c=d;break}}if(c&&c.kind==="stream"&&c.role===e&&!c.closed&&!!c.synthetic===n&&(c.messageId===void 0||s===void 0||c.messageId===s)){c.text+=r,s!==void 0&&(c.messageId=s);return}i.splice(a,0,{kind:"stream",role:e,text:r,synthetic:n||void 0,messageId:s})}function nt(){if(o.current)for(let e=o.current.log.length-1;e>=0;e--){let t=o.current.log[e];if(t.kind==="stream"&&!t.closed){t.closed=!0;return}}}function Oo(){if(!o.current)return;let e=o.current,t=e.pendingCursorMessageId;t===void 0||t===e.lastSeenMessageId||(e.log=e.log.filter(n=>!(n.kind==="stream"&&n.role!=="user"&&n.messageId===t)),e.pendingCursorMessageId=e.lastSeenMessageId)}function Do(e){if(!o.current)return!1;let t=Tt(e);if(!t)return!1;let n=o.current.recentOwnPrompts;for(let s=0;s<n.length;s++)if(n[s].text===t)return n.splice(s,1),!0;return!1}function Jt(e){if(!e)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(Jt).join("");if(typeof e=="object"){let t=e;if(t.text)return String(t.text);if(t.content)return Jt(t.content);if(t.diff)return String(t.diff);try{return JSON.stringify(e,null,2)}catch{return String(e)}}return""}function ve(e){if(!o.current)return;let t=o.current;if(t.spinner){t.log.some(n=>n.kind==="spinner")||_e({kind:"spinner",spinner:t.spinner});return}t.spinner={toolCallIds:[],expanded:!1,startedAt:e??Date.now(),sending:!1},t.spinnerOwner=void 0,_e({kind:"spinner",spinner:t.spinner})}function Po(e,t){if(!o.current)return;let n=o.current,s=n.spinner;if(s){let r=n.log.findIndex(i=>i.kind==="spinner");if(r>=0){let i=e??Date.now();n.log[r]={kind:"turn-stamp",elapsedMs:Math.max(0,i-s.startedAt),toolCount:s.toolCallIds.length,stopReason:t,endedAt:i}}}n.spinner=null,n.spinnerOwner=void 0,n.log=n.log.filter(r=>r.kind!=="spinner")}function st(e,t,n=!1){if(!o.current)return;let s=o.current;Po(e),s.spinner={toolCallIds:[],expanded:!1,startedAt:e??Date.now(),sending:n},s.spinnerOwner=t,_e({kind:"spinner",spinner:s.spinner})}function Dl(e){return typeof e!="string"||!e?!1:e.toLowerCase().replace(/[_\s-]/g,"")==="exitplanmode"}function Pl(e){let t=e.rawInput;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t.plan;return typeof n!="string"||n.length===0?null:n}function Bl(e){if(!o.current)return null;let t=o.current.log;for(let n=0;n<t.length;n++){let s=t[n];if(s.kind==="exit-plan-mode"&&s.toolCallId===e)return{idx:n,item:s}}return null}function Bo(e){if(!o.current)return!1;let t=String(e.toolCallId??"");if(!t)return!1;let n=e.name??e.title,s=Bl(t);if(!Dl(n)&&!s)return!1;let r=Pl(e),i=typeof e.status=="string"?e.status:void 0;if(s)return r!==null&&(s.item.plan=r),i!==void 0&&(s.item.status=i),!0;if(r===null)return!1;nt();let a={kind:"exit-plan-mode",toolCallId:t,plan:r};return i!==void 0&&(a.status=i),_e(a),!0}function Hl(e){if(!o.current)return null;let t=o.current.log;for(let n=0;n<t.length;n++){let s=t[n];if(s.kind==="edit-diff"&&s.toolCallId===e)return{idx:n,item:s}}return null}function Ho(e){if(!o.current)return!1;let t=String(e.toolCallId??"");if(!t)return!1;let n=Hl(t),s=So(e),r=typeof e.status=="string"?e.status:void 0;if(n)return s!==null&&(n.item.diff=s),r!==void 0&&(n.item.status=r),!0;if(s===null)return!1;nt();let i={kind:"edit-diff",toolCallId:t,diff:s,expanded:!1};return r!==void 0&&(i.status=r),_e(i),!0}function Fl(e){let t=e._meta;if(!t||typeof t!="object")return;let n=t.claudeCode;if(!n||typeof n!="object")return;let s=n.parentToolUseId;return typeof s=="string"?s:void 0}function $l(e){if(!o.current)return;if(Fl(e)===void 0&&nt(),Bo(e)){tt(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}if(Ho(e)){tt(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}let t={toolCallId:String(e.toolCallId),title:String(e.title??e.kind??"tool"),kind:String(e.kind??""),status:String(e.status??"in_progress"),content:Jt(e.content)};o.current.toolCalls.set(t.toolCallId,t),ve(),o.current.spinner?.toolCallIds.push(t.toolCallId),tt(t.toolCallId,t.status)}function Ul(e){if(!o.current)return;if(Bo(e)){typeof e.status=="string"&&tt(String(e.toolCallId),e.status);return}if(Ho(e)){typeof e.status=="string"&&tt(String(e.toolCallId),e.status);return}let t=o.current.toolCalls.get(String(e.toolCallId));t&&(typeof e.status=="string"&&(t.status=e.status,tt(t.toolCallId,e.status)),typeof e.title=="string"&&(t.title=e.title),e.content!==void 0&&(t.content=(t.content||"")+Jt(e.content)))}function De(e,t,n=!1){if(o.current){n&&Rl(e,t),Po(t,e),nt();for(let s of o.current.promptQueue)s.status==="processing"&&(s.status=e==="cancelled"?"cancelled":"done");for(let s of o.current.promptQueue)s.reseatAfterCurrentTurn&&s.status!=="done"&&s.status!=="cancelled"&&(s.reseatAfterCurrentTurn=void 0,cs(o.current,s));o.current.currentPlanEntry=null,o.current.currentHeadMessageId=void 0,Ol()}}function ql(e,t){if(!o.current)return;let s=(Array.isArray(e.prompt)?e.prompt:[]).map(a=>Tt(a)).join("");if(!s)return;let r=typeof e.messageId=="string"?e.messageId:void 0;if(r&&o.current.queueByMessageId.has(r)||r&&o.current.log.some(a=>a.kind==="stream"&&a.role==="user"&&a.messageId===r)||Do({text:s}))return;let i=o.current.promptQueue.find(a=>a.text===s&&(a.status==="pending"||a.status==="queued"||a.status==="processing"));if(i){r!==void 0&&i.messageId===void 0&&(i.messageId=r,o.current.queueByMessageId.set(r,i),is(i),o.current.spinnerOwner===i.id&&(o.current.spinnerOwner=r));return}nt(),_e({kind:"stream",role:"user",text:s,closed:!0,messageId:r,sentAt:t,attachments:as(e.prompt)}),st(t,r),fe()}function Fo(e){if(o.current)for(let t of e){if(!t||typeof t!="object")continue;let n=t,s=typeof n.messageId=="string"?n.messageId:"";if(!s)continue;let r=typeof n.position=="number"?n.position:0,i=o.current.queueByMessageId.get(s);if(i){r===0?(o.current.currentHeadMessageId=s,(i.status==="queued"||i.status==="pending")&&(i.status="processing")):i.status==="pending"&&(i.status="queued");continue}let a=$o(n.prompt);if(!a)continue;let c=o.current.promptQueue.find(d=>d.messageId===void 0&&d.text===a&&(d.status==="pending"||d.status==="queued"||d.status==="cancelled"));if(c){c.messageId=s,o.current.queueByMessageId.set(s,c),is(c),c.aheadAtEnqueue=Math.max(0,r),c.status=r===0?"processing":"queued",r===0&&(o.current.currentHeadMessageId=s);continue}let u={id:"snap_"+Math.random().toString(36).slice(2,10),text:a,status:r===0?"processing":"queued",aheadAtEnqueue:Math.max(0,r),messageId:s};if(o.current.queueByMessageId.set(s,u),r===0){o.current.currentHeadMessageId=s;let d=zl(a);if(d){d.queueEntry=u;continue}}o.current.log.push({kind:"stream",role:"user",text:a,closed:!0,queueEntry:u,attachments:as(n.prompt)})}}function zl(e){if(!o.current)return null;let t=o.current.log;for(let n=t.length-1;n>=0;n--){let s=t[n];if(s.kind==="stream"&&s.role==="user"&&!s.queueEntry&&s.text===e)return s}return null}function $o(e){let t=Array.isArray(e)?e:[],n="";for(let s of t)if(s&&typeof s=="object"){let r=s;r.type==="text"&&typeof r.text=="string"&&(n+=r.text)}return n}function as(e){let t=Array.isArray(e)?e:[],n=[];for(let s of t){if(!s||typeof s!="object")continue;let r=s;r.type!=="image"||typeof r.data!="string"||n.push({mimeType:typeof r.mimeType=="string"?r.mimeType:"image/png",data:r.data,sizeBytes:Math.round(r.data.length*3/4)})}return n.length>0?n:void 0}function Kl(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let s=(e._meta??{})["hydra-acp"]??{},r=typeof s.amending=="string"?s.amending:void 0,i=e.originator??{},a=typeof i.clientId=="string"?i.clientId:"",c=!!o.current.ownClientId&&a===o.current.ownClientId,u=$o(e.prompt),d=typeof e.enqueuedAt=="number"?e.enqueuedAt:void 0;if(c){let E=o.current.promptQueue.filter(y=>y.messageId===void 0&&(y.status==="pending"||y.status==="queued"||y.status==="editing")),A=(u.length>0?E.find(y=>y.text===u):void 0)??E[0]??o.current.promptQueue.find(y=>y.messageId===void 0&&y.status==="cancelled"&&y.text===u);if(!A)return;A.messageId=t,o.current.queueByMessageId.set(t,A),is(A,d),o.current.spinnerOwner===A.id&&(o.current.spinnerOwner=t),r!==void 0&&(A.amendsMessageId=r,en(r,t));let b=typeof e.position=="number"?e.position:1;if(A.aheadAtEnqueue=Math.max(0,b),b===0)A.status="processing";else if(A.status==="pending"||A.status==="cancelled"){A.status="queued",o.current.spinnerOwner!==void 0&&o.current.spinnerOwner===A.id&&o.current.spinner&&(o.current.spinner=null,o.current.spinnerOwner=void 0,o.current.log=o.current.log.filter(N=>N.kind!=="spinner"));let y=o.current.log,T=y.findIndex(N=>N.kind==="stream"&&N.queueEntry===A);if(T>=0){let[N]=y.splice(T,1),R=sn();R>T?y.splice(R,0,N):y.splice(T,0,N)}}return}let f=u;if(!f)return;let m=typeof e.position=="number"?e.position:0,p=typeof e.queueDepth=="number"?e.queueDepth:1,g={id:"peer_"+Math.random().toString(36).slice(2,10),text:f,status:m===0?"processing":"queued",aheadAtEnqueue:Math.max(0,m),messageId:t};r!==void 0&&(g.amendsMessageId=r,en(r,t)),o.current.queueByMessageId.set(t,g),nt();let v={kind:"stream",role:"user",text:f,closed:!0,queueEntry:g,messageId:t,sentAt:d,attachments:as(e.prompt)};m===0?_e(v):o.current.log.push(v)}function Wl(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=o.current.queueByMessageId.get(t);if(!n)return;let s=Array.isArray(e.prompt)?e.prompt:[],r="";for(let i of s)if(i&&typeof i=="object"){let a=i;a.type==="text"&&typeof a.text=="string"&&(r+=a.text)}if(r){n.text=r;for(let i of o.current.log)if(i.kind==="stream"&&i.role==="user"&&i.queueEntry===n){i.text=r;break}}}function cs(e,t){let n=e.log.findIndex(r=>r.kind==="stream"&&r.queueEntry===t);if(n<0||n===e.log.length-1)return;let[s]=e.log.splice(n,1);s&&e.log.push(s)}function Uo(e,t){let n=e.log.findIndex(r=>r.kind==="stream"&&r.queueEntry===t);if(n<0)return;let[s]=e.log.splice(n,1);s&&e.log.splice(sn(),0,s)}function Gl(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=typeof e.reason=="string"?e.reason:"";n==="started"&&(o.current.currentHeadMessageId=t);let s=o.current.queueByMessageId.get(t);s&&(n==="started"?(s.status="processing",s.reseatAfterCurrentTurn=void 0,o.current.spinnerOwner!==void 0&&(o.current.spinnerOwner===s.id||o.current.spinnerOwner===t)?(o.current.spinnerOwner=t,o.current.spinner&&(o.current.spinner.sending=!1)):st(void 0,t),fe()):(n==="cancelled"||n==="abandoned")&&(s.amendedByMessageId!==void 0?s.status="amended":s.status="cancelled",o.current.queueByMessageId.delete(t)))}function Yl(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=o.current.queueByMessageId.get(t);n&&(n.held=!0)}function Ql(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=o.current.queueByMessageId.get(t);n&&(n.held=!1)}function Vl(e){o.current&&typeof e.count=="number"&&(o.current.armedTasks=e.count,o.current.armedSince=e.count>0&&typeof e.since=="number"?e.since:void 0,o.current.armedTaskList=ls(e.tasks))}function ls(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!n||typeof n!="object")continue;let s=n;typeof s.label!="string"||typeof s.since!="number"||t.push({label:s.label,since:s.since,taskId:typeof s.taskId=="string"?s.taskId:void 0,taskType:typeof s.taskType=="string"?s.taskType:void 0,toolCallId:typeof s.toolCallId=="string"?s.toolCallId:void 0})}return t}function Xl(e){if(!o.current)return;switch(typeof e.phase=="string"?e.phase:""){case"started":case"iteration":o.current.compactionPhase="running";break;case"deferred":o.current.compactionPhase="deferred";break;case"swapped":o.current.compactionPhase=void 0,M({banner:{kind:"good",text:"Context compacted."}});break;case"failed":o.current.compactionPhase=void 0,M({banner:{kind:"bad",text:"Context compaction failed."}});break;case"rolled_back":o.current.compactionPhase=void 0,M({banner:{kind:"warn",text:"Compaction rolled back."}});break;default:break}}function Zl(e){if(!o.current)return;let t=typeof e.cancelledMessageId=="string"?e.cancelledMessageId:"",n=typeof e.newMessageId=="string"?e.newMessageId:"";if(!t||!n)return;en(t,n);let s=o.current.queueByMessageId.get(n);s&&s.amendsMessageId===void 0&&(s.amendsMessageId=t)}function en(e,t){if(!o.current)return;let n=o.current.queueByMessageId.get(e)??o.current.promptQueue.find(s=>s.messageId===e);n&&(n.amendedByMessageId=t,n.status==="cancelled"&&(n.status="amended"))}function jl(e){if(!o.current)return;let t=e.entries??e.plan??null;if(o.current.plan=t,o.current.currentPlanEntry){o.current.currentPlanEntry.entries=t;return}let n={kind:"plan",entries:t};_e(n),o.current.currentPlanEntry=n}function Jl(e){if(!o.current)return;let t=typeof e?.toolCallId=="string"?e.toolCallId:void 0;t&&qo(t)}function qo(e){o.current&&(o.current.pendingPermissions.delete(e),o.current.log=o.current.log.filter(t=>!(t.kind==="perm"&&t.toolCallId===e)))}function tt(e,t){!o.current||!e||!t||t==="pending"||o.current.pendingPermissions.has(e)&&qo(e)}function rn(e,t=!1){if(o.current?.cold&&(o.current.cold=!1,o.current.ready=!0),e.method==="hydra-acp/prompt_queue/added"){Kl(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/updated"){Wl(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/removed"){Gl(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/held"){Yl(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/released"){Ql(e.params??{});return}if(e.method==="hydra-acp/session/armed_tasks_updated"){Vl(e.params??{});return}if(e.method==="hydra-acp/prompt/amended"){Zl(e.params??{});return}if(e.method!=="session/update")return;let n=e.params?.update??null;if(!n||typeof n!="object")return;let s=String(n.sessionUpdate??"");if(o.current&&!t&&s&&!Cl.has(s)&&typeof n.messageId=="string"){n.messageId!==o.current.pendingCursorMessageId&&(o.current.pendingCursorMessageId!==void 0&&(o.current.lastSeenMessageId=o.current.pendingCursorMessageId),o.current.pendingCursorMessageId=n.messageId);let d=kl(e.params);d!==void 0&&(o.current.lastSeenSeq=d),jt(o.current.sessionId,e)}if(s==="permission_resolved"){Jl(n);return}let i=(n._meta??{})["hydra-acp"]??{},a=s==="agent_message_chunk"&&i.synthetic===!0,c=typeof n.messageId=="string"?n.messageId:void 0,u=Ml(e.params);switch(s){case"prompt_received":case"user_message_chunk":case"agent_message_chunk":case"agent_thought_chunk":case"tool_call":case"tool_call_update":case"plan":a||(fe(),o.current?.spinner&&(o.current.spinner.sending=!1));break;default:break}switch(s){case"user_message_chunk":{if(i.compatFor==="prompt_received")break;Do(n.content)||os("user",n.content,!1,c);break}case"agent_message_chunk":os("agent",n.content,a,c);break;case"agent_thought_chunk":os("thought",n.content,!1,c);break;case"tool_call":$l(n);break;case"tool_call_update":Ul(n);break;case"current_mode_update":o.current&&(o.current.mode=n.modeId??n.currentModeId??null,Array.isArray(n.availableModes)&&(o.current.modes=n.availableModes),_());break;case"_hydra_available_modes_update":o.current&&Array.isArray(n.availableModes)&&(o.current.modes=n.availableModes,_());break;case"_hydra_current_model_update":o.current&&(o.current.model=n.modelId??n.currentModelId??null,Array.isArray(n.availableModels)&&(o.current.models=n.availableModels),_());break;case"config_option_update":o.current&&Array.isArray(n.configOptions)&&(o.current.configOptions=n.configOptions,_());break;case"usage_update":if(o.current){let d=n.used??n.contextUsed,f=n.size??n.contextSize;typeof d=="number"&&(o.current.contextUsed=d),typeof f=="number"&&(o.current.contextSize=f),n.cost&&(o.current.cost=n.cost)}break;case"plan":jl(n);break;case"prompt_received":ql(n,u);break;case"stop":case"turn_complete":{let m=((n._meta??{})["hydra-acp"]??{}).amended;if(m){let g=typeof m.cancelledMessageId=="string"?m.cancelledMessageId:"",v=typeof m.newMessageId=="string"?m.newMessageId:"";g&&v&&en(g,v)}let p=typeof n.stopReason=="string"?n.stopReason:void 0;De(p,u);break}case"_hydra_turn_started":{if(!o.current)break;let f=(n._meta??{})["hydra-acp"]??{};if(f.unsolicited!==!0)break;let m=typeof n.messageId=="string"?n.messageId:void 0;if(!m||o.current.unsolicitedTurnOpen.has(m))break;o.current.unsolicitedTurnOpen.add(m),fe();let p=f.cause??{},g=typeof p.label=="string"?p.label:void 0;_e({kind:"system",text:g?`agent resumed on its own: background task finished (${g})`:"agent resumed on its own",at:u});break}case"_hydra_turn_ended":{if(!o.current)break;let f=(n._meta??{})["hydra-acp"]??{};if(f.unsolicited!==!0)break;let m=typeof n.startedMessageId=="string"?n.startedMessageId:void 0;if(!m||!o.current.unsolicitedTurnOpen.has(m)||(o.current.unsolicitedTurnOpen.delete(m),f.reason==="superseded")||o.current.unsolicitedTurnOpen.size>0)break;De(void 0,u);break}case"session_info_update":o.current&&typeof n.title=="string"&&(o.current.title=n.title);break;case"_hydra_compaction":Xl(n);break;default:break}o.current?.inTurn&&ve(u)}function zo(e){if(o.current){if(e.method==="session/request_permission"){let t=e.params??{},n=t.toolCall??{},s=typeof n.toolCallId=="string"?n.toolCallId:"";if(!s){o.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32602,message:"missing toolCall.toolCallId"}}));return}o.current.pendingPermissions.set(s,{requestId:e.id,toolCallId:s,toolCall:n,options:t.options??[]}),tn({kind:"perm",toolCallId:s});return}o.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32601,message:`method not handled: ${String(e.method)}`}}))}}var eu="hydra-acp-draft:";function on(e){return eu+e}function Wo(e){try{return localStorage.getItem(on(e))??""}catch{return""}}var an=new Map,Pe;function rt(e,t){an.set(e,t),Pe!==void 0&&clearTimeout(Pe),Pe=setTimeout(()=>{Pe=void 0,Go()},400)}function cn(e){an.delete(e);try{localStorage.removeItem(on(e))}catch{}}function Go(){for(let[e,t]of an)try{t?localStorage.setItem(on(e),t):localStorage.removeItem(on(e))}catch{}an.clear()}function Ko(){Pe!==void 0&&(clearTimeout(Pe),Pe=void 0),Go()}typeof window<"u"&&typeof document<"u"&&(window.addEventListener("pagehide",Ko),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Ko()}));var tu="hydra-acp-offline-queue";var Be="sessions",ln=null;function us(){return ln||(ln=new Promise(e=>{if(!("indexedDB"in window)){e(null);return}let t;try{t=indexedDB.open(tu,1)}catch{e(null);return}t.onupgradeneeded=()=>{t.result.createObjectStore(Be,{keyPath:"sessionId"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}),ln)}async function Yo(e){let t=await us();return t?new Promise(n=>{let s;try{s=t.transaction(Be,"readonly")}catch{n([]);return}let r=s.objectStore(Be).get(e);r.onsuccess=()=>{let i=r.result;n(i?.entries??[])},r.onerror=()=>n([])}):[]}async function ds(e,t){let n=await us();if(n)return new Promise(s=>{let r;try{r=n.transaction(Be,"readwrite")}catch{s();return}let i=r.objectStore(Be),a=i.get(e);a.onsuccess=()=>{let c=a.result??{sessionId:e,entries:[]},u=c.entries.findIndex(d=>d.id===t.id);u>=0?c.entries[u]=t:c.entries.push(t),i.put(c),s()},a.onerror=()=>s()})}async function un(e,t){let n=await us();if(n)return new Promise(s=>{let r;try{r=n.transaction(Be,"readwrite")}catch{s();return}let i=r.objectStore(Be),a=i.get(e);a.onsuccess=()=>{let c=a.result;if(!c){s();return}c.entries=c.entries.filter(u=>u.id!==t),c.entries.length===0?i.delete(e):i.put(c),s()},a.onerror=()=>s()})}function At(e,t){let n=[];e&&n.push({type:"text",text:e});for(let s of t)n.push({type:"image",data:s.data,mimeType:s.mimeType});return n}function xt(){let e=o.current;if(!e)return;let t=e.composerValue.trim(),n=e.attachments;!t&&n.length===0||(ps(e,t,{attachments:n})&&(e.composerValue="",e.attachments=[],cn(e.sessionId)),_())}function Vo(e){let t=o.current;t&&(ps(t,`/hydra workspace ${e}`,{addToHistory:!1}),_())}function Xo(){let e=o.current;e&&(ps(e,"/hydra compact",{addToHistory:!1}),_())}function ps(e,t,n={}){let s=n.attachments??[],r=!e.connectionHealthy||!navigator.onLine||!e.ws||e.ws.readyState!==WebSocket.OPEN,i=e.promptQueue.filter(m=>m.status==="queued"||m.status==="pending"||m.status==="processing").length,a=e.inTurn&&!e.promptQueue.some(m=>m.status==="processing"),c=r?0:i+(a?1:0),u={id:"p_"+Math.random().toString(36).slice(2,10),text:t,status:r?"offline":c>0?"queued":"pending",aheadAtEnqueue:c,attachments:s.length>0?s:void 0};e.promptQueue.push(u),e.log.push({kind:"stream",role:"user",text:t,closed:!0,queueEntry:u,sentAt:Date.now(),attachments:u.attachments}),e.recentOwnPrompts.push({text:t,at:Date.now()});let d=Date.now()-6e4;if(e.recentOwnPrompts=e.recentOwnPrompts.filter(m=>m.at>=d).slice(-16),r)return ds(e.sessionId,{id:u.id,text:t,attachments:u.attachments}),st(void 0,u.id,!0),fe(),It(e),(n.addToHistory??!0)&&fs(e,t),!0;let f=pe("session/prompt",{sessionId:e.sessionId,prompt:At(t,s)});return f!==void 0&&e.ownPromptIds.set(String(f),u),u.status==="pending"?st(void 0,u.id,!0):ve(),fe(),It(e),(n.addToHistory??!0)&&fs(e,t),!0}function Zo(e){let t=!1,n=null;for(let s of e.promptQueue){if(s.status!=="offline")continue;if(!e.ws||e.ws.readyState!==WebSocket.OPEN)break;t=!0;let r=e.promptQueue.filter(u=>u.status==="queued"||u.status==="pending"||u.status==="processing").length,i=e.inTurn&&!e.promptQueue.some(u=>u.status==="processing"),a=r+(i?1:0);s.aheadAtEnqueue=a,s.status=a>0?"queued":"pending",!n&&s.status==="pending"&&(n=s);let c=pe("session/prompt",{sessionId:e.sessionId,prompt:At(s.text,s.attachments??[])});c!==void 0&&e.ownPromptIds.set(String(c),s),un(e.sessionId,s.id),cs(e,s),e.inTurn&&(s.reseatAfterCurrentTurn=!0)}t&&(n?st(void 0,n.id,!0):ve(),fe())}var Qo=100;function fs(e,t){e.history[0]!==t&&(e.history.unshift(t),e.history.length>Qo&&(e.history.length=Qo)),e.historyIndex=null,e.historyDraft=null}function fn(e){let t=o.current;if(t){if(e.messageId!==void 0){pe("hydra-acp/prompt/cancel",{sessionId:t.sessionId,messageId:e.messageId});return}e.status==="offline"&&un(t.sessionId,e.id),e.status="cancelled",_()}}function jo(e){let t=o.current;if(!t||!t.daemonSupportsAmend||t.currentHeadMessageId===void 0||e.messageId===void 0||e.status!=="queued")return;if(!t.connectionHealthy||!navigator.onLine||!t.ws||t.ws.readyState!==WebSocket.OPEN){M({banner:{kind:"warn",text:"Not connected \u2014 still queued, try again in a moment."}});return}let n=t.currentHeadMessageId,s=e.messageId;t.queueByMessageId.delete(s),e.messageId=void 0,e.status="pending",e.amendsMessageId=n,e.aheadAtEnqueue=0,Uo(t,e),pe("hydra-acp/prompt/cancel",{sessionId:t.sessionId,messageId:s}),ti(e,e.text,n,e.text),It(t),_()}function Jo(e,t){let n=o.current;if(!n)return;let s=t.trim();if(s){if(e.status==="offline"){e.text=s,ds(n.sessionId,{id:e.id,text:s,attachments:e.attachments}),_();return}if(e.messageId===void 0){e.text=s,_();return}pe("hydra-acp/prompt/update",{sessionId:n.sessionId,messageId:e.messageId,prompt:At(s,e.attachments??[])})}}function ei(){let e=o.current;if(!e)return;let t=e.composerValue.trim(),n=e.attachments;if(!t&&n.length===0)return;if(!e.connectionHealthy||!navigator.onLine||!e.ws||e.ws.readyState!==WebSocket.OPEN){e.log.push({kind:"error",text:"Not connected to session \u2014 prompt not sent."}),e.composerValue="",e.attachments=[],cn(e.sessionId),_();return}if(!e.daemonSupportsAmend||e.currentHeadMessageId===void 0){xt();return}let s=e.currentHeadMessageId,r=e.composerValue;e.composerValue="",e.attachments=[],cn(e.sessionId),fs(e,t);let i={id:"p_"+Math.random().toString(36).slice(2,10),text:t,status:"pending",aheadAtEnqueue:0,amendsMessageId:s,attachments:n.length>0?n:void 0};e.promptQueue.push(i),e.log.push({kind:"stream",role:"user",text:t,closed:!0,queueEntry:i,sentAt:Date.now(),attachments:i.attachments}),e.recentOwnPrompts.push({text:t,at:Date.now()});let a=Date.now()-6e4;e.recentOwnPrompts=e.recentOwnPrompts.filter(c=>c.at>=a).slice(-16),ve(),fe(),It(e),ti(i,r,s,t),_()}function ti(e,t,n,s){let r=o.current;if(!r)return;let i=pe("_session/steering",{sessionId:r.sessionId,prompt:At(s,e.attachments??[])});i!==void 0&&r.responseHandlers.set(String(i),a=>{nu(e,t,n,s,a)})}function nu(e,t,n,s,r){let i=o.current;if(!i)return;if(r.error){if(r.error?.code===-32601){su(e,t,n,s);return}dn(i,e,t),M({banner:{kind:"bad",text:`steering failed: ${ni(r.error)}`}});return}let a=r.result??{};if(a.outcome==="injected"){e.status="processing",_();return}a.outcome!=="startedNewTurn"&&(dn(i,e,t),M({banner:{kind:"warn",text:"steering failed"}}))}function su(e,t,n,s){let r=o.current;if(!r)return;let i=pe("hydra-acp/prompt/amend",{sessionId:r.sessionId,targetMessageId:n,prompt:At(s,e.attachments??[])});i!==void 0&&r.responseHandlers.set(String(i),a=>{ru(e,t,a)})}function ru(e,t,n){let s=o.current;if(!s)return;if(n.error){dn(s,e,t),M({banner:{kind:"bad",text:`amend failed: ${ni(n.error)}`}});return}let r=n.result??{};if(r.amended&&r.reason==="ok")return;dn(s,e,t);let i="amend rejected";r.reason==="target_completed"?i="previous response finished \u2014 press Send to send as a new turn":r.reason==="target_cancelled"?i="amend skipped \u2014 previous turn was cancelled":r.reason==="target_not_found"&&(i="amend skipped \u2014 no matching prompt"),M({banner:{kind:"warn",text:i}})}function dn(e,t,n){let s=e.promptQueue.indexOf(t);s>=0&&e.promptQueue.splice(s,1),e.log=e.log.filter(r=>!(r.kind==="stream"&&r.role==="user"&&r.queueEntry===t)),e.composerValue=n,e.attachments=t.attachments??[],rt(e.sessionId,n),_()}function ni(e){if(e&&typeof e=="object"&&"message"in e){let t=e.message;if(typeof t=="string")return t}return"unknown error"}function si(){let e=o.current;!e||!e.inTurn||ot("session/cancel",{sessionId:e.sessionId})}function ri(){let e=o.current;if(!e)return;let t=!1;for(let n of e.promptQueue)(n.status==="queued"||n.status==="pending")&&(fn(n),t=!0);e.inTurn&&ot("session/cancel",{sessionId:e.sessionId}),t&&_()}function oi(e){o.current&&pe("session/set_mode",{sessionId:o.current.sessionId,modeId:e})}function ii(e){o.current&&pe("session/set_model",{sessionId:o.current.sessionId,modelId:e})}function ai(e,t){let n=o.current;if(!n)return;let s=pe("session/set_config_option",{sessionId:n.sessionId,configId:e,value:t});s!==void 0&&n.responseHandlers.set(String(s),r=>{let i=r.result?.configOptions;Array.isArray(i)&&o.current===n&&(n.configOptions=i,_())})}function ci(e){for(let t of e.promptQueue)t.status!=="done"&&t.status!=="cancelled"&&(t.status==="offline"&&un(e.sessionId,t.id),t.status="cancelled",t.messageId!==void 0&&e.queueByMessageId.delete(t.messageId))}function li(e){for(let t of e.promptQueue)t.messageId===void 0&&t.status!=="done"&&t.status!=="cancelled"&&t.status!=="offline"&&t.status!=="processing"&&(t.status="cancelled")}var pn=null;async function it(){if(pn)return pn;if(!("serviceWorker"in navigator))return null;try{return pn=await navigator.serviceWorker.register("/sw.js"),pn}catch{return null}}async function ui(){return typeof Notification>"u"||!await it()?!1:Notification.permission==="granted"?!0:Notification.permission==="denied"?!1:await Notification.requestPermission()==="granted"}function di(){return document.visibilityState!=="visible"||!document.hasFocus()}async function fi(){let e=await it();return!e||!("pushManager"in e)?void 0:(await e.pushManager.getSubscription())?.endpoint}function ou(e){let t="=".repeat((4-e.length%4)%4),n=(e+t).replace(/-/g,"+").replace(/_/g,"/"),s=atob(n);return Uint8Array.from(s,r=>r.charCodeAt(0))}async function mn(){let e=await it();if(!(!e||!("pushManager"in e)))try{let{publicKey:t}=await X("/api/push/vapid-public-key"),n=await e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:ou(t)});await X("/api/push/subscribe",{method:"POST",body:JSON.stringify(n.toJSON())})}catch(t){console.warn("push subscribe failed:",t)}}async function pi(){let e=await it();if(!(!e||!("pushManager"in e)))try{let t=await e.pushManager.getSubscription();if(!t)return;let n=t.endpoint;await t.unsubscribe(),await X("/api/push/unsubscribe",{method:"POST",body:JSON.stringify({endpoint:n})})}catch(t){console.warn("push unsubscribe failed:",t)}}function pe(e,t){let n=o.current;if(!n||!n.ws||n.ws.readyState!==WebSocket.OPEN)return;let s=n.nextId=n.nextId??1;return n.nextId=s+1,n.ws.send(JSON.stringify({jsonrpc:"2.0",id:s,method:e,params:t})),s}function ot(e,t){let n=o.current;!n||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({jsonrpc:"2.0",method:e,params:t}))}function Ct(){ot("bridge/visibility",{visible:!di()})}function at(){fi().then(e=>{ot("bridge/push-endpoint",{endpoint:e??null})})}var iu=1e4,au=5e3;function mi(e){e.heartbeatTimer=setTimeout(()=>cu(e),iu)}function cu(e){o.current!==e||!e.ws||e.ws.readyState!==WebSocket.OPEN||(ot("bridge/ping",{}),e.heartbeatDeadline=setTimeout(()=>{e.connectionHealthy=!1,_();try{e.ws?.close()}catch{}},au))}function lu(e){e.connectionHealthy=!0,e.heartbeatDeadline!==void 0&&(clearTimeout(e.heartbeatDeadline),e.heartbeatDeadline=void 0),mi(e)}function uu(e){gn(e),e.connectionHealthy=!0,mi(e)}function gn(e){e.heartbeatTimer!==void 0&&(clearTimeout(e.heartbeatTimer),e.heartbeatTimer=void 0),e.heartbeatDeadline!==void 0&&(clearTimeout(e.heartbeatDeadline),e.heartbeatDeadline=void 0)}function du(e,t){let n=o.current;!n||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({jsonrpc:"2.0",id:e,result:t}))}function gi(e){if(o.current){if(e.method==="bridge/replay_policy"){e.params?.policy!=="after_message"?(o.current.log.length>0&&hi(),o.current.pinAfterReplaySwap=!0,nn(o.current)):o.current.resumedByMessageId&&Oo();return}if(e.method==="bridge/ready"){o.current.ready=!0,o.current.cold=!1,o.banner=null,o.current.reconnectAttempt=0;let t=e.params??{};typeof t.clientId=="string"&&(o.current.ownClientId=t.clientId),Array.isArray(t.configOptions)&&(o.current.configOptions=t.configOptions);let s=t._meta?.["hydra-acp"];if(s?.busy===!1&&o.current.inTurn&&De(),s?.busy===!0){fe(),o.current.spinner&&(o.current.spinner.sending=!1);let c=s.turnStartedAt;typeof c=="number"&&Number.isFinite(c)?(o.current.spinner||ve(),o.current.spinner&&o.current.spinnerOwner===void 0&&(o.current.spinner.startedAt=c)):o.current.spinner||ve()}let r=s?.queue;Array.isArray(r)&&Fo(r),s?.prompt?.amending===!0&&(o.current.daemonSupportsAmend=!0),typeof s?.armedTasks=="number"&&(o.current.armedTasks=s.armedTasks,o.current.armedSince=s.armedTasks>0&&typeof s.armedSince=="number"?s.armedSince:void 0,o.current.armedTaskList=ls(s.armedTaskList));let a=o.current.readyListeners;o.current.readyListeners=[];for(let c of a)try{c()}catch{}Ct(),at(),uu(o.current),Zo(o.current),gs(),_();return}if(e.method==="bridge/pong"){o.current&&lu(o.current);return}if(e.method==="bridge/error"){tn({kind:"error",text:`Bridge error: ${e.params?.message??"?"}`}),_();return}if(e.method==="hydra-acp/session/closed"){o.current&&(o.current.ready=!1,o.current.cold=!0,ci(o.current),De()),_();return}if(e.method&&"id"in e){zo(e),o.current.ready&&_();return}if(e.method){rn(e),o.current.ready&&_();return}if("id"in e&&e.id!==void 0&&o.current.ownPromptIds.has(String(e.id))){let t=o.current.ownPromptIds.get(String(e.id));if(o.current.ownPromptIds.delete(String(e.id)),o.current.cold&&(o.current.cold=!1,o.current.ready=!0),e.error){let a=e.error;tn({kind:"error",text:`Prompt failed: ${a.message??"unknown error"}`}),De(),_();return}let n=e.result,s=typeof n?.stopReason=="string"?n.stopReason:void 0,r=o.current.spinnerOwner;t===void 0||r===void 0||r===t.id||t.messageId!==void 0&&r===t.messageId?De(s,void 0,!0):s==="cancelled"&&t.status!=="amended"&&(t.status="cancelled"),_();return}if("id"in e&&e.id!==void 0){let t=o.current.responseHandlers.get(String(e.id));t&&(o.current.responseHandlers.delete(String(e.id)),t({result:e.result,error:e.error}))}}}function ms(e,t){if(!o.current)return;let n=o.current.pendingPermissions.get(e);n&&(o.current.pendingPermissions.delete(e),o.current.log=o.current.log.filter(s=>!(s.kind==="perm"&&s.toolCallId===e)),du(n.requestId,{outcome:t==="__cancel__"?{outcome:"cancelled"}:{outcome:"selected",optionId:t}}),_())}var bi=[1e3,2e3,4e3,8e3,16e3,3e4],fu=5;function Es(e,t){let n=encodeURIComponent(e);return t?`#/session/${n}?load=true`:`#/session/${n}`}function Ei(){let t=new URLSearchParams(window.location.search).get("protocol_launch");if(!t)return;history.replaceState(null,"",window.location.pathname+window.location.hash);let n;try{n=new URL(t)}catch{return}if(n.protocol!=="web+hydra:"||n.hostname!=="sessions")return;let s=decodeURIComponent(n.pathname.replace(/^\/+/,""));s&&(window.location.hash=Es(s,!0))}var hs=!1,bs=!1;function pu(){try{return window.matchMedia?.("(display-mode: standalone)").matches===!0||navigator.standalone===!0}catch{return!1}}function ys(e){if(window.location.hash===e)return;hs=!0;let t=bs||pu()?history.replaceState:history.pushState;bs=!1;try{t.call(history,null,"",e||window.location.pathname+window.location.search)}finally{queueMicrotask(()=>{hs=!1})}}function _s(){if(hs)return;let t=window.location.hash.match(/^#\/session\/([^?]+)(?:\?(.*))?$/);if(t){let n=decodeURIComponent(t[1]),r=new URLSearchParams(t[2]??"").get("load")==="true";if(o.view==="chat"&&o.current?.sessionId===n)return;He(n,r);return}o.view!=="list"&&Fe()}function He(e,t){ys(Es(e,t)),ws();let n=o.sessions.find(r=>r.sessionId===e),s={sessionId:e,title:n?.title??"",cwd:n?.cwd||"",agentId:n?.agentId||"",ws:null,ready:!1,log:[],toolCalls:new Map,pendingPermissions:new Map,pendingRequestById:new Map,responseHandlers:new Map,spinner:null,plan:null,mode:null,model:null,modes:[],models:[],contextUsed:null,contextSize:null,cost:null,fileOverlay:null,savedFileView:null,composerValue:Wo(e),attachments:[],busy:!1,recentOwnPrompts:[],history:[],historyIndex:null,historyDraft:null,_lastMetaFp:n?`${n.title}|${n.cwd}|${n.agentId}`:"",promptQueue:[],queueByMessageId:new Map,ownPromptIds:new Map,inTurn:!1,idleListeners:[],readyListeners:[],currentPlanEntry:null,daemonSupportsAmend:!1,loadOnConnect:t,reconnectAttempt:0,headerExpanded:!1,unsolicitedTurnOpen:new Set,configOptions:[],connectionHealthy:!0};o.current=s,M({view:"chat",listHighlightedSessionId:e,lastSessionId:e}),mu(s)}async function mu(e){let t=await No(e.sessionId);if(o.current!==e)return;t&&(Se("cache-replay",()=>{for(let s of t.frames)try{rn(s,!0)}catch(r){console.error("[hydra] cached frame failed to replay",r,s)}}),e.historyIsPartial=!0);let n=await Yo(e.sessionId);if(o.current===e){for(let s of n){let r={id:s.id,text:s.text,status:"offline",aheadAtEnqueue:0,attachments:s.attachments};e.promptQueue.push(r),e.log.push({kind:"stream",role:"user",text:s.text,closed:!0,queueEntry:r,attachments:r.attachments})}(t||n.length>0)&&_(),bn(e)}}function yi(e){if(o.current!==e)return;let t=document.querySelector(".chat-body");if(t){let n=t.getBoundingClientRect().top;for(let s of t.querySelectorAll("[data-message-id]"))if(s.getBoundingClientRect().bottom>n){e.scrollRestoreMessageId=s.dataset.messageId;break}}ws(),vs(e),nn(e),e.historyIsPartial=!1,e.wantFullHistory=!0,_(),bn(e)}function bn(e){let t=new URL("/ws",location.href);t.protocol=location.protocol==="https:"?"wss:":"ws:",t.searchParams.set("session",e.sessionId),e.loadOnConnect&&t.searchParams.set("load","true"),e.wantFullHistory&&(t.searchParams.set("fullHistory","true"),e.wantFullHistory=!1),e.lastSeenMessageId!==void 0&&t.searchParams.set("afterMessageId",e.lastSeenMessageId),e.lastSeenSeq!==void 0&&t.searchParams.set("afterSeq",String(e.lastSeenSeq)),e.resumedByMessageId=e.lastSeenSeq===void 0&&e.lastSeenMessageId!==void 0;let n=new WebSocket(t.toString());e.ws=n,n.addEventListener("open",()=>{}),n.addEventListener("message",s=>{if(!o.current||o.current.ws!==n)return;let r;try{r=JSON.parse(String(s.data))}catch{return}gi(r)}),n.addEventListener("close",()=>{!o.current||o.current.ws!==n||gu(o.current)}),n.addEventListener("error",()=>{})}function gu(e){e.ready=!1,li(e);let t=e.reconnectAttempt??0,n=bi[Math.min(t,bi.length-1)],s=t>=fu;M({banner:s?{kind:"bad",text:"Still disconnected \u2014 retrying\u2026"}:{kind:"warn",text:"Reconnecting\u2026"}}),e.reconnectTimer=setTimeout(()=>{!o.current||o.current!==e||(e.reconnectTimer=void 0,e.reconnectAttempt=t+1,vs(e),_(),bn(e))},n)}function vs(e){e.ws=null,e.ready=!1,e.pendingRequestById=new Map,e.responseHandlers=new Map,e.ownPromptIds=new Map,e.idleListeners=[],e.readyListeners=[],e.nextId=void 0,gn(e)}function _i(){if(o.view==="chat")return;let e=o.lastSessionId;if(!e||(M({listHighlightedSessionId:e}),!ee()))return;let t=n=>{if(o.view==="chat")return;let s=o.sessions.find(r=>r.sessionId===e);if(s){s.status!=="cold"&&(bs=!0,He(e,!1));return}n<20&&setTimeout(()=>t(n+1),250)};t(0)}var hn=null;function vi(){return hn}var wi=0;function Si(){return wi}function Ti(e){return hn!==e?!1:(hn=null,ys(Es(e.sessionId,!1)),vs(e),e.reconnectAttempt=0,o.current=e,M({view:"chat",listHighlightedSessionId:e.sessionId,lastSessionId:e.sessionId}),bn(e),!0)}function Fe(){ys(""),ws();let e=o.current?.sessionId??o.lastSessionId;hn=o.current,wi=o.current?Ii(o.current):0,M({view:"list",current:null,lastSessionId:e,listHighlightedSessionId:e??o.listHighlightedSessionId}),ct()}function En(){if(o.current?.ws)try{o.current.ws.close()}catch{}}function ws(){if(o.current&&(o.current.reconnectTimer&&(clearTimeout(o.current.reconnectTimer),o.current.reconnectTimer=void 0),gn(o.current),o.current.ws)){try{o.current.ws.close()}catch{}o.current.ws=null}}var Ai="(prefers-color-scheme: dark)";function hu(){return o.theme==="system"?window.matchMedia(Ai).matches?"dark":"light":o.theme}function _n(){document.documentElement.style.fontSize=`${16*o.fontScale}px`}function yn(){let e=hu();document.documentElement.setAttribute("data-theme",e),document.querySelector('meta[name="theme-color"]')?.setAttribute("content",e==="light"?"#ffffff":"#0e1116")}function xi(){yn(),window.matchMedia(Ai).addEventListener("change",()=>{o.theme==="system"&&yn()})}var Ci=10*1024*1024,kt=new WeakSet;function Cs(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)}MB`:e>=1024?`${(e/1024).toFixed(0)}KB`:`${e}B`}function bu(e,t){for(let n of t){if(n.size>Ci){M({banner:{kind:"warn",text:`pasted image is ${Cs(n.size)}, max ${Cs(Ci)}`}});continue}let s=new FileReader;s.onload=()=>{let r=s.result;if(typeof r!="string")return;let i=r.indexOf(",");i<0||(e.attachments.push({mimeType:n.type||"image/png",data:r.slice(i+1),sizeBytes:n.size}),_())},s.readAsDataURL(n)}}function Fi(e){return`data:${e.mimeType};base64,${e.data}`}function Eu(e){return e.attachments.length===0?null:l("div",{class:"attachment-chips"},...e.attachments.map((t,n)=>l("span",{class:"attachment-chip",title:Cs(t.sizeBytes)},l("img",{class:"attachment-thumb",src:Fi(t)}),l("button",{class:"attachment-remove",title:"Remove image",...I(()=>{e.attachments.splice(n,1),_()})},"\xD7"))))}function Ls(e){return"untitled"}function he(e){let t=e.indexOf(":");return(t===-1?e:e.slice(t+1)).replace(/^hydra_session_/,"")}function yu(e){if(!e)return;let t=e.lastIndexOf("/");return t===-1?e:e.slice(t+1)}function $i(e,t){let n=e||"?",s=yu(t);return s?`${n}\u2022${s}`:n}function Ui(e){let t=Math.floor(Math.max(0,e)/1e3);if(t<60)return"<1m";let n=Math.floor(t/60);if(n<60)return`${n}m`;let s=Math.floor(n/60);if(s<24)return`${s}h`;let r=Math.floor(s/24);if(r<14)return`${r}d`;let i=Math.floor(r/7);if(i<9)return`${i}w`;let a=Math.floor(r/30);return a<12?`${a}mo`:`${Math.floor(r/365)}y`}function _u(e,t=Date.now()){if(!e)return"?";let n=Date.parse(e);return Number.isNaN(n)?"?":Ui(t-n)}function ki(e){return Number.isFinite(e)?e<1e3?String(e):e<1e6?(e/1e3).toFixed(e<1e4?1:0).replace(/\.0$/,"")+"k":(e/1e6).toFixed(2).replace(/\.?0+$/,"")+"M":"?"}function Mi(e){let t=null,n="USD";if(typeof e=="number")t=e;else if(e&&typeof e=="object"){let r=e;if(typeof r.amount=="number")t=r.amount;else if(typeof r.total=="number")t=r.total;else if(r.total&&typeof r.total=="object"){let i=r.total;typeof i.amount=="number"&&(t=i.amount),typeof i.currency=="string"&&(n=i.currency)}typeof r.currency=="string"&&(n=r.currency)}if(t===null)return null;let s=t<.01?4:t<1?3:2;return n==="USD"?`$${t.toFixed(s)}`:`${t.toFixed(s)} ${n}`}function qi(e,t){t.banner&&e.appendChild(l("div",{class:"banner "+t.banner.kind},t.banner.text)),ee()?e.appendChild(Tu(t)):t.view==="list"?(e.appendChild(Gi()),e.appendChild(Wi()),e.appendChild(Zi())):t.view==="chat"&&t.current&&(e.appendChild(In(t.current)),t.current.fileOverlay&&e.appendChild(da(t.current))),t.modal&&(t.modal.kind==="session"?e.appendChild(nd(t.modal)):t.modal.kind==="modes"&&t.current?e.appendChild(Ri("Mode",t.current.modes,t.current.mode,n=>oi(n.id))):t.modal.kind==="models"&&t.current?e.appendChild(Ri("Model",t.current.models,t.current.model,n=>ii(n.id))):t.modal.kind==="options"&&e.appendChild(Ku()))}function Os(){return[Gi(),Wi(),Zi()]}function zi(){return l("div",{class:"swipe-preview-list"},...Os())}function Ki(e){let t=e.title||Ls(e.sessionId),n=[he(e.sessionId),$i(e.agentId,e.currentModel)].join(" \xB7 ");return l("div",{class:"swipe-preview-chat"},l("div",{class:"chat-header"},l("div",{class:"chat-title-row"},l("div",{class:"chat-title"},t)),l("div",{class:"chat-header-row"},l("div",{class:"info"},l("div",{class:"row2"},n)))),l("div",{class:"chat-body swipe-preview-chat-body"},l("div",{class:"swipe-preview-loading"},l("span",{class:"dot"}),"opening\u2026")))}function vu(){let e=l("div",{class:"rail",tabindex:"-1","data-focus-key":"list-rail"},...Os());return o.railWidth!==null&&(e.style.flex=`0 0 ${ks(o.railWidth)}px`),Fs(),e}function wu(e){if(!pa())return;let t=e.querySelector(".list"),n=t?t.scrollTop:null,s=t?Ps(t):null,r=document.activeElement,i=r&&e.contains(r)?r.dataset.focusKey??null:null,a=i?r.selectionStart:null,c=i?r.selectionEnd:null;if(e.replaceChildren(...Os()),Fs(),i){let d=e.querySelector(`[data-focus-key="${CSS.escape(i)}"]`);if(d){d.focus();let f=d;if(a!==null&&typeof f.setSelectionRange=="function")try{f.setSelectionRange(a,c)}catch{}}}let u=e.querySelector(".list");u&&(s?Bs(u,s):n!==null&&(u.scrollTop=n))}function ks(e){let t=Math.max(280,Math.min(window.innerWidth*.6,window.innerWidth-360));return Math.round(Math.max(240,Math.min(e,t)))}function Su(){let e=l("div",{class:"splitter",title:"Drag to resize (double-click to reset)"});return e.addEventListener("dblclick",()=>{let t=e.previousElementSibling;t&&(t.style.flex=""),M({railWidth:null})}),e.addEventListener("pointerdown",t=>{let n=e.previousElementSibling;if(!n)return;t.preventDefault();let s=t.clientX,r=n.getBoundingClientRect().width;e.setPointerCapture(t.pointerId),e.classList.add("dragging");let i=c=>{n.style.flex=`0 0 ${ks(r+(c.clientX-s))}px`},a=()=>{e.releasePointerCapture(t.pointerId),e.classList.remove("dragging"),e.removeEventListener("pointermove",i),e.removeEventListener("pointerup",a),e.removeEventListener("pointercancel",a),M({railWidth:ks(n.getBoundingClientRect().width)})};e.addEventListener("pointermove",i),e.addEventListener("pointerup",a),e.addEventListener("pointercancel",a)}),e}function Tu(e){let t=l("div",{class:"split-detail"});return e.current?(t.appendChild(In(e.current)),e.current.fileOverlay&&t.appendChild(da(e.current))):t.appendChild(l("div",{class:"split-detail-empty"},"Select a session from the list")),l("div",{class:"split"},vu(),Su(),t)}function Ds(){let e=document.querySelector('[data-focus-key="list-rail"]');e&&(o.current&&M({listHighlightedSessionId:o.current.sessionId}),e.focus())}function Wi(){let e=o.sessionSearch.length>0?l("button",{class:"session-search-clear",title:"Clear filter",...I(()=>M({sessionSearch:""}))},"\xD7"):null;return l("div",{class:"session-search-row"},l("input",{class:"session-search",type:"text",placeholder:"Filter sessions\u2026",value:o.sessionSearch,"data-focus-key":"session-search",autocomplete:"off",autocapitalize:"off",autocorrect:"off",spellcheck:"false",oninput:t=>{M({sessionSearch:t.target.value})},onkeydown:t=>{t.key==="Escape"&&(t.preventDefault(),t.stopPropagation(),o.sessionSearch.length>0?M({sessionSearch:""}):t.target.blur())}}),e)}function Gi(){return l("div",{class:"topbar"},l("span",{class:"pill clickable",title:"Click to toggle grouping by project/recent",...I(()=>M({groupBy:o.groupBy==="project"?"recent":"project"}))},o.groupBy),l("span",{class:"pill clickable",title:"Click to toggle showing disk-only sessions",...I(()=>{M({showCold:!o.showCold})})},o.showCold?"all":"warm"),xu(),l("span",{class:"spacer"}),l("button",{...I(ji),title:"Options"},"\u2699"),l("button",{...I(ju),title:"Import a *.hydra bundle from disk"},"\u{1F4E5}"),l("button",{...I(ra),title:"New Session"},"\uFF0B"))}var $e="remote:",Ue="host:";function Yi(e){return!!e.importedFromMachine&&!e.upstreamSessionId}function Iu(e){return o.hostFilter===`${Ue}${e}`||o.hostFilter===e}function Au(e){return e.startsWith($e)?`remote "${e.slice($e.length)}"`:e.startsWith(Ue)?`host "${e.slice(Ue.length)}"`:`host "${e}"`}function xu(){let e=new Set,t=new Set;for(let i of o.sessions){if(i.remote){Yi(i)||e.add(i.remote);continue}i.importedFromMachine&&!i.upstreamSessionId&&t.add(i.importedFromMachine)}let n=l("select",{class:"host-select",title:"Filter sessions by origin host",onchange:i=>{let a=i.target.value;M({hostFilter:a})}}),s=(i,a,c)=>{let u=document.createElement("option");u.value=a,u.textContent=c,o.hostFilter===a&&(u.selected=!0),i.appendChild(u)};s(n,"__local","local");for(let i of[...e].sort())s(n,`${$e}${i}`,i);if(t.size>0){let i=document.createElement("optgroup");i.label="imported";for(let a of[...t].sort())s(i,`${Ue}${a}`,a);n.appendChild(i)}s(n,"__all","all");let r=new Set(["__local","__all"]);for(let i of e)r.add(`${$e}${i}`);for(let i of t)r.add(`${Ue}${i}`);return r.has(o.hostFilter)||(n.value=o.hostFilter),n}function Cu(e,t){if(t.length===0)return!0;let n=t.toLowerCase();return[he(e.sessionId),e.upstreamSessionId??"",e.agentId??"",e.title??"",e.cwd,e.cwd.replace(/^\/(?:home|Users)\/[^/]+/,"~")].some(r=>r.toLowerCase().includes(n))}function Qi(){let e=o.showCold?o.sessions:o.sessions.filter(n=>n.status!=="cold");if(o.hostFilter==="__local")e=e.filter(n=>!n.remote&&(!n.importedFromMachine||!!n.upstreamSessionId));else if(o.hostFilter.startsWith($e)){let n=o.hostFilter.slice($e.length);e=e.filter(s=>s.remote===n&&!Yi(s))}else if(o.hostFilter!=="__all"){let n=o.hostFilter.startsWith(Ue)?o.hostFilter.slice(Ue.length):o.hostFilter;e=e.filter(s=>s.importedFromMachine===n&&!s.upstreamSessionId)}let t=o.sessionSearch.trim();return t.length>0&&(e=e.filter(n=>Cu(n,t))),e}function ku(){return ea(Qi(),o.groupBy).flatMap(e=>e.sessions.map(t=>t.sessionId))}function Vi(){document.querySelector('[data-focus-key="composer"]')?.focus()}function Ms(e,t){if(ee()&&o.current?.sessionId===e){Vi();return}He(e,t)}function Xi(e){let t=document.activeElement?.dataset.focusKey==="list-rail";if(o.view!=="list"&&!(ee()&&t)||Te(document.activeElement))return;if(e.key==="Escape"){if(ee()&&o.current){e.preventDefault(),M({listHighlightedSessionId:o.current.sessionId}),Vi();return}let u=o.lastSessionId,d=u?o.sessions.find(f=>f.sessionId===u):void 0;if(!d)return;e.preventDefault(),Ms(d.sessionId,d.status==="cold");return}if(e.key.toLowerCase()==="c"&&!e.shiftKey&&!e.altKey&&!e.ctrlKey&&!e.metaKey){e.preventDefault(),ra();return}let n=!e.shiftKey&&!e.altKey&&!e.ctrlKey&&!e.metaKey,s=e.key==="ArrowDown"||e.key==="n"&&n,r=e.key==="ArrowUp"||e.key==="p"&&n;if(!s&&!r&&e.key!=="Enter")return;let i=ku();if(i.length===0)return;if(e.key==="Enter"){let u=o.listHighlightedSessionId;if(!u||!i.includes(u))return;let d=o.sessions.find(f=>f.sessionId===u);if(!d)return;e.preventDefault(),Ms(d.sessionId,d.status==="cold");return}e.preventDefault();let a=o.listHighlightedSessionId?i.indexOf(o.listHighlightedSessionId):-1,c=a===-1?0:s?Math.min(i.length-1,a+1):Math.max(0,a-1);M({listHighlightedSessionId:i[c]})}var Ss=null;function Zi(){let e=Qi(),t=o.showCold?0:o.sessions.filter(r=>r.status==="cold").length,n=ea(e,o.groupBy),s=l("div",{class:"list"});if(o.listHighlightedSessionId&&o.listHighlightedSessionId!==Ss?(Ss=o.listHighlightedSessionId,queueMicrotask(()=>{document.querySelector(".card.highlighted")?.scrollIntoView({block:"nearest"})})):o.listHighlightedSessionId||(Ss=null),e.length===0){let r;o.sessionSearch.trim().length>0?r=`No sessions match \u201C${o.sessionSearch.trim()}\u201D.`:o.sessions.length===0?r="No sessions. Use + to create one, or run `hydra-acp launch <agent>` from your editor.":o.hostFilter==="__local"?r="No local sessions. Switch the host filter to see imported sessions.":o.hostFilter!=="__all"?r=`No sessions from ${Au(o.hostFilter)}. Try a different host.`:r=`No warm sessions. ${t} cold session${t===1?"":"s"} hidden \u2014 click "warm" to switch to "all".`,s.appendChild(l("div",{class:"empty"},r))}for(let r of n){let i=l("div",{class:"group"});r.label&&i.appendChild(l("h2",null,r.label));for(let a of r.sessions)i.appendChild(Qu(a,r.label===null));s.appendChild(i)}return s}function Mu(e,t){let n=a=>a.priority&&a.priority>0?a.priority:0,s=a=>{let c=a.status==="warm",u=n(a)>0;return c&&a.busy&&a.awaitingInput?6:c&&a.busy?5:c&&a.awaitingInput?4:c&&u?3:c?2:u?1:0},r=s(t)-s(e);if(r!==0)return r;let i=n(t)-n(e);return i!==0?i:String(t.updatedAt||"").slice(0,16).localeCompare(String(e.updatedAt||"").slice(0,16))}function An(e){return e.replace(/^\/(home|Users)\/[^/]+/,"~")}function Ts(e,t){return l("div",{class:"detail"},l("span",{class:"k"},e),l("code",null,t))}function Nu(e,t){let n=l("input",{type:"checkbox",title:"Float this session to the top of the list",onchange:s=>{Ru(e,s.target.checked?1:null)}});return n.checked=(t??0)>0,l("div",{class:"detail"},l("span",{class:"k"},"high priority"),n)}async function Ru(e,t){try{await X(`/api/sessions/${encodeURIComponent(e)}/priority`,{method:"PATCH",body:JSON.stringify({priority:t})}),xe()}catch(n){M({banner:{kind:"bad",text:"priority update failed: "+n.message}})}}function Lu(e){let t=(n,s)=>l("button",{class:"ghost",...I(()=>Vo(n))},s);return e?l("div",{class:"detail"},l("span",{class:"k"},"workspace"),l("code",null,`${e.label}${e.clean===!1?" \xB7 dirty":""}`),t("sync","Sync"),t("stop","Stop"),t("apply","Apply")):l("div",{class:"detail"},l("span",{class:"k"},"workspace"),t("start","Start workspace"))}function Ou(){return l("div",{class:"detail"},l("span",{class:"k"},"hide thoughts"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:o.hideThoughts?"":void 0,onchange:e=>{M({hideThoughts:e.target.checked})}})))}function Du(){return l("div",{class:"detail"},l("span",{class:"k"},"notify"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:o.notifyOnTurnEnd?"":void 0,onchange:e=>{if(!e.target.checked){M({notifyOnTurnEnd:!1}),pi().then(()=>at());return}ui().then(n=>{if(!n){M({banner:{kind:"warn",text:"Notifications blocked \u2014 enable them for this site in your browser settings."}});return}M({notifyOnTurnEnd:!0}),mn().then(()=>at())})}})))}function ji(){let e=o.current?.sessionId;o.cacheInfo=e?"\u2026":"no session open",e&&Ro(e).then(t=>{o.cacheInfo=t,_()}),o.daemonVersion="\u2026",X("/api/health").then(t=>{o.daemonVersion=t.upstream?.version??"unknown",_()}).catch(()=>{o.daemonVersion="unreachable",_()}),M({modal:{kind:"options"}})}var Pu=[{value:"system",label:"system"},{value:"dark",label:"dark"},{value:"light",label:"light"}],Bu=[{value:.85,label:"smaller"},{value:.95,label:"small"},{value:1,label:"normal"},{value:1.15,label:"large"},{value:1.3,label:"larger"},{value:1.5,label:"largest"}];function Hu(){let e=l("select",{onchange:t=>{M({fontScale:Number(t.target.value)}),_n()}},...Bu.map(t=>l("option",{value:String(t.value)},t.label)));return e.value=String(o.fontScale),l("div",{class:"detail"},l("span",{class:"k"},"text size"),e)}function lt(e,t){let n=l("span",{class:"diag-value"},t);return l("div",{class:"detail diag-copy",title:"Tap to copy",...I(()=>{let r=()=>{let a=n.textContent;n.textContent="copied",setTimeout(()=>{n.textContent=a},1200)},i=`${e}: ${t}`;navigator.clipboard?.writeText?navigator.clipboard.writeText(i).then(r,()=>Ni(n)):Ni(n)})},l("span",{class:"k"},e),n)}function Ni(e){let t=document.createRange();t.selectNodeContents(e);let n=window.getSelection();n?.removeAllRanges(),n?.addRange(t)}function Fu(){return lt("cache",o.cacheInfo??"\u2026")}function $u(){return lt("build","2026-09-05 19:06Z")}function Uu(){return lt("browser","0.1.47")}function qu(){return lt("daemon",o.daemonVersion??"\u2026")}function zu(){let e=l("select",{onchange:t=>{M({theme:t.target.value}),yn()}},...Pu.map(t=>{let n=l("option",{value:t.value},t.label);return t.value===o.theme&&n.setAttribute("selected",""),n}));return e.value=o.theme,l("div",{class:"detail"},l("span",{class:"k"},"theme"),e)}function Ku(){return l("div",{class:"modal-bg",...I(e=>{e.target.classList.contains("modal-bg")&&be()})},l("div",{class:"modal"},l("h2",null,"Options"),zu(),Hu(),Ou(),Du(),l("div",{class:"diagnostics"},Uu(),qu(),$u(),Fu(),lt("slow",rr()),lt("paths",sr())),l("div",{class:"actions"},l("button",{class:"primary",...I(be)},"Close"))))}function Wu(e){let t=l("select",{onchange:n=>{ai(e.id,n.target.value)}},...e.options.map(n=>{let s=l("option",{value:n.value},n.name||n.value);return n.value===e.currentValue&&s.setAttribute("selected",""),s}));return t.value=e.currentValue,l("div",{class:"detail"},l("span",{class:"k",title:e.description??""},e.name||e.id),t)}var Gu=500,Ji=0;document.addEventListener("pointermove",e=>{e.target?.closest?.(".list")&&(Ji=performance.now())});var Is=null;function Yu(e){let t=e.slice().sort(Mu);if(performance.now()-Ji>Gu||!Is)return Is=t.map(r=>r.sessionId),t;let s=new Map(Is.map((r,i)=>[r,i]));return t.map((r,i)=>({s:r,i})).sort((r,i)=>{let a=s.get(r.s.sessionId),c=s.get(i.s.sessionId);return a!==void 0&&c!==void 0?a-c:a!==void 0?-1:c!==void 0?1:r.i-i.i}).map(r=>r.s)}function ea(e,t){let n=Yu(e);if(t==="recent")return[{label:null,sessions:n}];let s=new Map;for(let i of n){let a=i.cwd||"(unknown)";s.has(a)||s.set(a,[]),s.get(a).push(i)}let r=[];for(let[i,a]of[...s.entries()].sort((c,u)=>c[0].localeCompare(u[0])))r.push({label:An(i),sessions:a});return r}function Ps(e){if(e.scrollTop<=0)return null;let t=e.getBoundingClientRect().top;for(let n of e.querySelectorAll(".card")){let s=n.getBoundingClientRect();if(s.bottom<=t)continue;let r=n.dataset.sessionId;return r?{sessionId:r,offset:s.top-t}:null}return null}function Bs(e,t){if(!t)return;let n=e.querySelector(`.card[data-session-id="${CSS.escape(t.sessionId)}"]`);if(!n)return;let s=n.getBoundingClientRect().top-e.getBoundingClientRect().top-t.offset;e.scrollTop+=s}function Qu(e,t){let n=e.title||Ls(e.sessionId),s=[he(e.sessionId),$i(e.agentId,e.currentModel),`age ${_u(e.updatedAt)}`].join(" \xB7 "),r=!e.busy&&(e.armedTasks??0)>0;return l("div",{class:e.sessionId===o.listHighlightedSessionId?"card highlighted":"card","data-session-id":e.sessionId,...I(i=>{i.target.closest("button")||Ms(e.sessionId,e.status==="cold")})},l("div",{class:"row1"},n),l("div",{class:"card-body"},l("div",{class:"meta"},l("div",{class:"row2"},s)),l("div",{class:"badges"},e.status==="cold"||!(e.busy||e.awaitingInput||r)?l("span",{class:`badge ${e.status==="cold"?"cold":"warm"}`,title:e.status==="cold"?"Disk-only \u2014 opening will resurrect the session":"Live in-memory session"},e.status==="cold"?"cold":"warm"):null,e.busy||r?l("span",{class:"badge busy",title:e.busy?"Agent is working":"Agent has a background task running. It may resume on its own."},"busy"):null,e.awaitingInput?l("span",{class:"badge blocked",title:"Waiting on you \u2014 a permission request or other prompt is pending"},"blocked"):null,...e.importedFromMachine&&!e.upstreamSessionId&&!e.remote&&!Iu(e.importedFromMachine)?[l("span",{class:"badge imported",title:`Passive mirror imported from ${e.importedFromMachine} \u2014 attach to start working on it here.`},`\u2190 ${e.importedFromMachine}`)]:[],...e.remote&&o.hostFilter!==`${$e}${e.remote}`?[l("span",{class:"badge remote",title:`Live on remote "${e.remote}" \u2014 attaching forwards through, nothing is copied here.`},`\u21C4 ${e.remote}`)]:[])),t?l("div",{class:"row3"},e.cwd?An(e.cwd):"?"):null,e.status!=="cold"?l("button",{class:"card-kill",title:"Kill this session",...I(()=>{Vu(e)})},"\xD7"):null)}async function Vu(e){if(confirm(`Kill session ${e.title?`"${e.title}" (${he(e.sessionId)})`:he(e.sessionId)}?`))try{await X("/api/kill",{method:"POST",body:JSON.stringify({sessionId:e.sessionId})}),xe()}catch(t){M({banner:{kind:"bad",text:"kill failed: "+t.message}})}}function Xu(e){e.compactionPhase||confirm("Compact this session's context now? The agent will summarize history and continue from the summary.")&&Xo()}function Zu(e){let t=document.createElement("a");t.href=`/api/sessions/${encodeURIComponent(e)}/export`,t.download="",t.rel="noopener",document.body.appendChild(t),t.click(),t.remove()}function ju(){let e=document.createElement("input");e.type="file",e.accept=".hydra,application/json",e.style.display="none",e.onchange=()=>{let t=e.files&&e.files[0];document.body.removeChild(e),t&&Ju(t)},document.body.appendChild(e),e.click()}async function Ju(e){let t;try{let s=await e.text();t=JSON.parse(s)}catch(s){M({banner:{kind:"bad",text:"import: bundle is not valid JSON: "+s.message}});return}let n=await ga(t);if(n.ok){let s=n.result;M({banner:{kind:"good",text:s.replaced?`Replaced ${he(s.sessionId)} from bundle`:`Imported as ${he(s.sessionId)}`}}),xe();return}if(n.status===409&&n.existingSessionId){let s=n.existingSessionId;if(!confirm(`This session is already imported locally as ${he(s)}.
697
+ `);return t.length>0&&t[t.length-1]===""&&t.pop(),n.length>0&&n[n.length-1]===""&&n.pop(),{oldLines:t,newLines:n}}var _l=1e6;function vl(e,t){let n=e.length,s=t.length;if(n===0||s===0||n*s>_l){let u=[];for(let d of e)u.push({op:"-",text:d});for(let d of t)u.push({op:"+",text:d});return u}let r=Array.from({length:n+1},()=>new Array(s+1).fill(0));for(let u=n-1;u>=0;u--)for(let d=s-1;d>=0;d--)e[u]===t[d]?r[u][d]=r[u+1][d+1]+1:r[u][d]=Math.max(r[u+1][d],r[u][d+1]);let i=[],a=0,c=0;for(;a<n&&c<s;)e[a]===t[c]?(i.push({op:"=",text:e[a]}),a++,c++):r[a+1][c]>=r[a][c+1]?(i.push({op:"-",text:e[a]}),a++):(i.push({op:"+",text:t[c]}),c++);for(;a<n;)i.push({op:"-",text:e[a]}),a++;for(;c<s;)i.push({op:"+",text:t[c]}),c++;return i}function Io(e,t){let n=0,s=Math.min(e.length,t.length);for(;n<s&&e[n]===t[n];)n++;let r=e.length,i=t.length;for(;r>n&&i>n&&e[r-1]===t[i-1];)r--,i--;let a=[];for(let c=0;c<n;c++)a.push({op:"=",text:e[c]});a.push(...vl(e.slice(n,r),t.slice(n,i)));for(let c=r;c<e.length;c++)a.push({op:"=",text:e[c]});return a}function Ao(e){let{oldLines:t,newLines:n}=To(e),s=0,r=0;for(let i of Io(t,n))i.op==="+"?s++:i.op==="-"&&r++;return{added:s,removed:r}}function xo(e,t={}){let n=t.maxLines??40,s=t.contextLines??3,{oldLines:r,newLines:i}=To(e),a=Io(r,i),c=[];if(Number.isFinite(s)){if(!a.some(m=>m.op!=="="))return[];let f=new Array(a.length).fill(!1);for(let m=0;m<a.length;m++)if(a[m].op!=="="){let g=Math.max(0,m-s),E=Math.min(a.length-1,m+s);for(let y=g;y<=E;y++)f[y]=!0}let p=0;for(;p<a.length;){if(f[p]){c.push({op:a[p].op,text:a[p].text}),p++;continue}let m=p;for(;m<a.length&&!f[m];)m++;let g=m-p;c.push({op:"gap",text:`\u22EF ${g} unchanged line${g===1?"":"s"}`}),p=m}}else for(let d of a)c.push({op:d.op,text:d.text});let u=[];for(let d=0;d<c.length;d++){if(u.length>=n-1&&d<c.length-1){let p=c.length-d;u.push({op:"gap",text:`\u2026 ${p} more line${p===1?"":"s"}`});break}u.push(c[d])}return u}var wl="hydra-acp-history-cache",Sl=4,de="sessions",Tl=6e6,ko=10,Il=2e3,Zt=null;function rs(){return Zt||(Zt=new Promise(e=>{if(!("indexedDB"in window)){e(null);return}let t;try{t=indexedDB.open(wl,Sl)}catch{e(null);return}t.onupgradeneeded=()=>{t.result.objectStoreNames.contains(de)&&t.result.deleteObjectStore(de),t.result.createObjectStore(de,{keyPath:"sessionId"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}),Zt)}function Al(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}async function No(e){let t=await rs();return t?new Promise(n=>{let s;try{s=t.transaction(de,"readwrite")}catch{n(null);return}let r=s.objectStore(de),i=r.get(e);i.onsuccess=()=>{let a=i.result;if(!a){n(null);return}a.lastAccessed=Date.now();try{r.put(a)}catch(c){console.error("[hydra] history-cache LRU bump failed",c)}n({frames:Se("cache-read-map",()=>a.frames.map(c=>c.frame))})},i.onerror=()=>n(null)}):null}function xl(e){let t=e.params?._meta;if(!t||typeof t!="object")return;let n=t["hydra-acp"];if(!n||typeof n!="object")return;let s=n.recordedAt;return typeof s=="number"&&Number.isFinite(s)?s:void 0}function kl(e){let t=Math.round(e/1e3);if(t<90)return`${t}s ago`;let n=Math.round(t/60);return n<90?`${n}m ago`:`${Math.round(n/60)}h ago`}async function Ro(e){let t=await rs();return t?new Promise(n=>{let s;try{s=t.transaction(de,"readonly")}catch{n("unreadable");return}let r=s.objectStore(de).get(e);r.onsuccess=()=>{let i=r.result;if(!i){n("empty");return}let a=new Map;for(let f of i.frames){let p=f.frame.params?.update,m=typeof p?.sessionUpdate=="string"?p.sessionUpdate:"?";a.set(m,(a.get(m)??0)+1)}let c=[...a.entries()].sort((f,p)=>p[1]-f[1]).map(([f,p])=>`${f.replace(/_chunk$/,"")}:${p}`).join(" "),u;for(let f of i.frames){let p=xl(f.frame);p!==void 0&&(u===void 0||p>u)&&(u=p)}let d=u!==void 0?kl(Date.now()-u):"unknown";n(`${i.frames.length}f ${(i.totalBytes/1e6).toFixed(1)}MB newest:${d} \u2014 ${c}`)},r.onerror=()=>n("unreadable")}):"unavailable"}var Ae=new Map,et,Lo=new Set;function Oo(e){Ae.delete(e),Lo.add(e)}function jt(e,t){let n=Ae.get(e)??[];n.push(t),Ae.set(e,n),et===void 0&&(et=setTimeout(()=>{et=void 0,Do()},Il))}var Co=Promise.resolve();function Do(){Co=Co.then(Cl).catch(()=>{})}function Mo(){et!==void 0&&(clearTimeout(et),et=void 0),Do()}async function Cl(){if(Ae.size===0)return;let e=Array.from(Ae.keys()),t=await rs();if(!t){Ae.clear();return}for(let n of e){let s=Ae.get(n);Ae.delete(n),s&&await Ml(t,n,s)}await Nl(t)}function Ml(e,t,n){return new Promise(s=>{let r;try{r=e.transaction(de,"readwrite")}catch{s();return}let i=r.objectStore(de),a=i.get(t);a.onsuccess=()=>{let u=Lo.delete(t)?void 0:a.result,d=Se("cache-size",()=>n.map(E=>({frame:E,bytes:Al(E)}))),f=[...u?.frames??[],...d],p=(u?.totalBytes??0)+d.reduce((E,y)=>E+y.bytes,0);for(;f.length>1&&p>Tl;){let E=f.shift();E&&(p-=E.bytes)}let m=f.findIndex(E=>E.frame.params?.update?.sessionUpdate==="prompt_received");if(m>0)for(let E of f.splice(0,m))p-=E.bytes;let g={sessionId:t,frames:f,totalBytes:p,lastAccessed:Date.now()};try{Se("cache-put",()=>i.put(g))}catch(E){console.error("[hydra] history-cache write failed",E,{sessionId:t})}s()},a.onerror=()=>s()})}function Nl(e){return new Promise(t=>{let n;try{n=e.transaction(de,"readwrite")}catch{t();return}let s=n.objectStore(de),r=s.getAll();r.onsuccess=()=>{let i=r.result??[];if(i.length<=ko){t();return}i.sort((c,u)=>c.lastAccessed-u.lastAccessed);let a=i.slice(0,i.length-ko);try{for(let c of a)s.delete(c.sessionId)}catch(c){console.error("[hydra] history-cache LRU eviction failed",c)}t()},r.onerror=()=>t()})}typeof window<"u"&&typeof document<"u"&&(window.addEventListener("pagehide",Mo),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Mo()}));typeof navigator<"u"&&navigator.storage?.persist&&navigator.storage.persist();function tn(e){o.current&&o.current.log.push(e)}var Rl=new Set(["session_info_update","_hydra_current_model_update","current_mode_update","available_commands_update","_hydra_available_modes_update","usage_update","config_option_update","_hydra_compaction","_hydra_workspace","clarifier_question_asked","clarifier_question_answered","clarifier_question_dismissed"]);function nn(e){let t=e.promptQueue.filter(n=>n.status==="offline");e.log=e.log.filter(n=>n.kind==="stream"&&n.queueEntry!==void 0&&t.includes(n.queueEntry)),e.toolCalls=new Map,e.pendingPermissions=new Map,e.spinner=null,e.plan=null,e.mode=null,e.model=null,e.modes=[],e.models=[],e.contextUsed=null,e.contextSize=null,e.cost=null,e.busy=!1,e.recentOwnPrompts=[],e.promptQueue=t,e.queueByMessageId=new Map,e.ownPromptIds=new Map,e.inTurn=!1,e.unsolicitedTurnOpen=new Set,e.currentPlanEntry=null,e.daemonSupportsAmend=!1,e.ownClientId=void 0,e.currentHeadMessageId=void 0,e.lastSeenMessageId=void 0,e.pendingCursorMessageId=void 0,e.lastSeenSeq=void 0,e.spinnerOwner=void 0}function Ll(e){if(!e||typeof e!="object")return;let t=e._meta;if(!t||typeof t!="object")return;let n=t["hydra-acp"];if(!n||typeof n!="object")return;let s=n.seq;return typeof s=="number"&&Number.isFinite(s)?s:void 0}function Ol(e){if(!e||typeof e!="object")return;let t=e._meta;if(!t||typeof t!="object")return;let n=t["hydra-acp"];if(!n||typeof n!="object")return;let s=n.recordedAt;return typeof s=="number"&&Number.isFinite(s)?s:void 0}function Dl(e){if(e.kind!=="stream"||e.role!=="user"||!e.queueEntry)return!1;let t=e.queueEntry.status;return t==="queued"||t==="editing"}function sn(){if(!o.current)return 0;let e=o.current.log;for(let t=0;t<e.length;t++)if(Dl(e[t]))return t;return e.length}function _e(e){o.current&&o.current.log.splice(sn(),0,e)}function is(e,t){if(!(!o.current||e.messageId===void 0)){for(let n of o.current.log)if(n.kind==="stream"&&n.queueEntry===e){n.messageId=e.messageId,t!==void 0&&(n.sentAt=t),Bl(e);return}}}function Pl(e,t){let n=o.current?.spinnerOwner;!o.current||n===void 0||jt(o.current.sessionId,{method:"session/update",params:{sessionId:o.current.sessionId,update:{sessionUpdate:"turn_complete",messageId:`${n}:turn_complete`,...e!==void 0?{stopReason:e}:{}},_meta:{"hydra-acp":{recordedAt:t??Date.now()}}}})}function Bl(e){!o.current||e.messageId===void 0||jt(o.current.sessionId,{method:"session/update",params:{sessionId:o.current.sessionId,update:{sessionUpdate:"prompt_received",messageId:e.messageId,prompt:[{type:"text",text:e.text},...(e.attachments??[]).map(t=>({type:"image",mimeType:t.mimeType,data:t.data}))]},_meta:{"hydra-acp":{recordedAt:Date.now()}}}})}function fe(){o.current&&(o.current.inTurn=!0)}function Hl(){if(!o.current)return;o.current.inTurn=!1;let e=o.current.idleListeners;o.current.idleListeners=[];for(let t of e)try{t()}catch{}}function os(e,t,n=!1,s){if(!o.current)return;let r=Tt(t);if(!r)return;let i=o.current.log,a=sn(),c;for(let u=a-1;u>=0;u--){let d=i[u];if(d.kind!=="spinner"){c=d;break}}if(c&&c.kind==="stream"&&c.role===e&&!c.closed&&!!c.synthetic===n&&(c.messageId===void 0||s===void 0||c.messageId===s)){c.text+=r,s!==void 0&&(c.messageId=s);return}i.splice(a,0,{kind:"stream",role:e,text:r,synthetic:n||void 0,messageId:s})}function nt(){if(o.current)for(let e=o.current.log.length-1;e>=0;e--){let t=o.current.log[e];if(t.kind==="stream"&&!t.closed){t.closed=!0;return}}}function Po(){if(!o.current)return;let e=o.current,t=e.pendingCursorMessageId;t===void 0||t===e.lastSeenMessageId||(e.log=e.log.filter(n=>!(n.kind==="stream"&&n.role!=="user"&&n.messageId===t)),e.pendingCursorMessageId=e.lastSeenMessageId)}function Bo(e){if(!o.current)return!1;let t=Tt(e);if(!t)return!1;let n=o.current.recentOwnPrompts;for(let s=0;s<n.length;s++)if(n[s].text===t)return n.splice(s,1),!0;return!1}function Jt(e){if(!e)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(Jt).join("");if(typeof e=="object"){let t=e;if(t.text)return String(t.text);if(t.content)return Jt(t.content);if(t.diff)return String(t.diff);try{return JSON.stringify(e,null,2)}catch{return String(e)}}return""}function ve(e){if(!o.current)return;let t=o.current;if(t.spinner){t.log.some(n=>n.kind==="spinner")||_e({kind:"spinner",spinner:t.spinner});return}t.spinner={toolCallIds:[],expanded:!1,startedAt:e??Date.now(),sending:!1},t.spinnerOwner=void 0,_e({kind:"spinner",spinner:t.spinner})}function Ho(e,t){if(!o.current)return;let n=o.current,s=n.spinner;if(s){let r=n.log.findIndex(i=>i.kind==="spinner");if(r>=0){let i=e??Date.now();n.log[r]={kind:"turn-stamp",elapsedMs:Math.max(0,i-s.startedAt),toolCount:s.toolCallIds.length,stopReason:t,endedAt:i}}}n.spinner=null,n.spinnerOwner=void 0,n.log=n.log.filter(r=>r.kind!=="spinner")}function st(e,t,n=!1){if(!o.current)return;let s=o.current;Ho(e),s.spinner={toolCallIds:[],expanded:!1,startedAt:e??Date.now(),sending:n},s.spinnerOwner=t,_e({kind:"spinner",spinner:s.spinner})}function Fl(e){return typeof e!="string"||!e?!1:e.toLowerCase().replace(/[_\s-]/g,"")==="exitplanmode"}function $l(e){let t=e.rawInput;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t.plan;return typeof n!="string"||n.length===0?null:n}function Ul(e){if(!o.current)return null;let t=o.current.log;for(let n=0;n<t.length;n++){let s=t[n];if(s.kind==="exit-plan-mode"&&s.toolCallId===e)return{idx:n,item:s}}return null}function Fo(e){if(!o.current)return!1;let t=String(e.toolCallId??"");if(!t)return!1;let n=e.name??e.title,s=Ul(t);if(!Fl(n)&&!s)return!1;let r=$l(e),i=typeof e.status=="string"?e.status:void 0;if(s)return r!==null&&(s.item.plan=r),i!==void 0&&(s.item.status=i),!0;if(r===null)return!1;nt();let a={kind:"exit-plan-mode",toolCallId:t,plan:r};return i!==void 0&&(a.status=i),_e(a),!0}function ql(e){if(!o.current)return null;let t=o.current.log;for(let n=0;n<t.length;n++){let s=t[n];if(s.kind==="edit-diff"&&s.toolCallId===e)return{idx:n,item:s}}return null}function $o(e){if(!o.current)return!1;let t=String(e.toolCallId??"");if(!t)return!1;let n=ql(t),s=So(e),r=typeof e.status=="string"?e.status:void 0;if(n)return s!==null&&(n.item.diff=s),r!==void 0&&(n.item.status=r),!0;if(s===null)return!1;nt();let i={kind:"edit-diff",toolCallId:t,diff:s,expanded:!1};return r!==void 0&&(i.status=r),_e(i),!0}function zl(e){let t=e._meta;if(!t||typeof t!="object")return;let n=t.claudeCode;if(!n||typeof n!="object")return;let s=n.parentToolUseId;return typeof s=="string"?s:void 0}function Kl(e){if(!o.current)return;if(zl(e)===void 0&&nt(),Fo(e)){tt(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}if($o(e)){tt(String(e.toolCallId),typeof e.status=="string"?e.status:void 0);return}let t={toolCallId:String(e.toolCallId),title:String(e.title??e.kind??"tool"),kind:String(e.kind??""),status:String(e.status??"in_progress"),content:Jt(e.content)};o.current.toolCalls.set(t.toolCallId,t),ve(),o.current.spinner?.toolCallIds.push(t.toolCallId),tt(t.toolCallId,t.status)}function Wl(e){if(!o.current)return;if(Fo(e)){typeof e.status=="string"&&tt(String(e.toolCallId),e.status);return}if($o(e)){typeof e.status=="string"&&tt(String(e.toolCallId),e.status);return}let t=o.current.toolCalls.get(String(e.toolCallId));t&&(typeof e.status=="string"&&(t.status=e.status,tt(t.toolCallId,e.status)),typeof e.title=="string"&&(t.title=e.title),e.content!==void 0&&(t.content=(t.content||"")+Jt(e.content)))}function De(e,t,n=!1){if(o.current){n&&Pl(e,t),Ho(t,e),nt();for(let s of o.current.promptQueue)s.status==="processing"&&(s.status=e==="cancelled"?"cancelled":"done");for(let s of o.current.promptQueue)s.reseatAfterCurrentTurn&&s.status!=="done"&&s.status!=="cancelled"&&(s.reseatAfterCurrentTurn=void 0,cs(o.current,s));o.current.currentPlanEntry=null,o.current.currentHeadMessageId=void 0,Hl()}}function Gl(e,t){if(!o.current)return;let s=(Array.isArray(e.prompt)?e.prompt:[]).map(a=>Tt(a)).join("");if(!s)return;let r=typeof e.messageId=="string"?e.messageId:void 0;if(r&&o.current.queueByMessageId.has(r)||r&&o.current.log.some(a=>a.kind==="stream"&&a.role==="user"&&a.messageId===r)||Bo({text:s}))return;let i=o.current.promptQueue.find(a=>a.text===s&&(a.status==="pending"||a.status==="queued"||a.status==="processing"));if(i){r!==void 0&&i.messageId===void 0&&(i.messageId=r,o.current.queueByMessageId.set(r,i),is(i),o.current.spinnerOwner===i.id&&(o.current.spinnerOwner=r));return}nt(),_e({kind:"stream",role:"user",text:s,closed:!0,messageId:r,sentAt:t,attachments:as(e.prompt)}),st(t,r),fe()}function Uo(e){if(o.current)for(let t of e){if(!t||typeof t!="object")continue;let n=t,s=typeof n.messageId=="string"?n.messageId:"";if(!s)continue;let r=typeof n.position=="number"?n.position:0,i=o.current.queueByMessageId.get(s);if(i){r===0?(o.current.currentHeadMessageId=s,(i.status==="queued"||i.status==="pending")&&(i.status="processing")):i.status==="pending"&&(i.status="queued");continue}let a=qo(n.prompt);if(!a)continue;let c=o.current.promptQueue.find(d=>d.messageId===void 0&&d.text===a&&(d.status==="pending"||d.status==="queued"||d.status==="cancelled"));if(c){c.messageId=s,o.current.queueByMessageId.set(s,c),is(c),c.aheadAtEnqueue=Math.max(0,r),c.status=r===0?"processing":"queued",r===0&&(o.current.currentHeadMessageId=s);continue}let u={id:"snap_"+Math.random().toString(36).slice(2,10),text:a,status:r===0?"processing":"queued",aheadAtEnqueue:Math.max(0,r),messageId:s};if(o.current.queueByMessageId.set(s,u),r===0){o.current.currentHeadMessageId=s;let d=Yl(a);if(d){d.queueEntry=u;continue}}o.current.log.push({kind:"stream",role:"user",text:a,closed:!0,queueEntry:u,attachments:as(n.prompt)})}}function Yl(e){if(!o.current)return null;let t=o.current.log;for(let n=t.length-1;n>=0;n--){let s=t[n];if(s.kind==="stream"&&s.role==="user"&&!s.queueEntry&&s.text===e)return s}return null}function qo(e){let t=Array.isArray(e)?e:[],n="";for(let s of t)if(s&&typeof s=="object"){let r=s;r.type==="text"&&typeof r.text=="string"&&(n+=r.text)}return n}function as(e){let t=Array.isArray(e)?e:[],n=[];for(let s of t){if(!s||typeof s!="object")continue;let r=s;r.type!=="image"||typeof r.data!="string"||n.push({mimeType:typeof r.mimeType=="string"?r.mimeType:"image/png",data:r.data,sizeBytes:Math.round(r.data.length*3/4)})}return n.length>0?n:void 0}function Ql(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let s=(e._meta??{})["hydra-acp"]??{},r=typeof s.amending=="string"?s.amending:void 0,i=e.originator??{},a=typeof i.clientId=="string"?i.clientId:"",c=!!o.current.ownClientId&&a===o.current.ownClientId,u=qo(e.prompt),d=typeof e.enqueuedAt=="number"?e.enqueuedAt:void 0;if(c){let y=o.current.promptQueue.filter(_=>_.messageId===void 0&&(_.status==="pending"||_.status==="queued"||_.status==="editing")),A=(u.length>0?y.find(_=>_.text===u):void 0)??y[0]??o.current.promptQueue.find(_=>_.messageId===void 0&&_.status==="cancelled"&&_.text===u);if(!A)return;A.messageId=t,o.current.queueByMessageId.set(t,A),is(A,d),o.current.spinnerOwner===A.id&&(o.current.spinnerOwner=t),r!==void 0&&(A.amendsMessageId=r,en(r,t));let b=typeof e.position=="number"?e.position:1;if(A.aheadAtEnqueue=Math.max(0,b),b===0)A.status="processing";else if(A.status==="pending"||A.status==="cancelled"){A.status="queued",o.current.spinnerOwner!==void 0&&o.current.spinnerOwner===A.id&&o.current.spinner&&(o.current.spinner=null,o.current.spinnerOwner=void 0,o.current.log=o.current.log.filter(N=>N.kind!=="spinner"));let _=o.current.log,T=_.findIndex(N=>N.kind==="stream"&&N.queueEntry===A);if(T>=0){let[N]=_.splice(T,1),R=sn();R>T?_.splice(R,0,N):_.splice(T,0,N)}}return}let f=u;if(!f)return;let p=typeof e.position=="number"?e.position:0,m=typeof e.queueDepth=="number"?e.queueDepth:1,g={id:"peer_"+Math.random().toString(36).slice(2,10),text:f,status:p===0?"processing":"queued",aheadAtEnqueue:Math.max(0,p),messageId:t};r!==void 0&&(g.amendsMessageId=r,en(r,t)),o.current.queueByMessageId.set(t,g),nt();let E={kind:"stream",role:"user",text:f,closed:!0,queueEntry:g,messageId:t,sentAt:d,attachments:as(e.prompt)};p===0?_e(E):o.current.log.push(E)}function Vl(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=o.current.queueByMessageId.get(t);if(!n)return;let s=Array.isArray(e.prompt)?e.prompt:[],r="";for(let i of s)if(i&&typeof i=="object"){let a=i;a.type==="text"&&typeof a.text=="string"&&(r+=a.text)}if(r){n.text=r;for(let i of o.current.log)if(i.kind==="stream"&&i.role==="user"&&i.queueEntry===n){i.text=r;break}}}function cs(e,t){let n=e.log.findIndex(r=>r.kind==="stream"&&r.queueEntry===t);if(n<0||n===e.log.length-1)return;let[s]=e.log.splice(n,1);s&&e.log.push(s)}function zo(e,t){let n=e.log.findIndex(r=>r.kind==="stream"&&r.queueEntry===t);if(n<0)return;let[s]=e.log.splice(n,1);s&&e.log.splice(sn(),0,s)}function Xl(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=typeof e.reason=="string"?e.reason:"";n==="started"&&(o.current.currentHeadMessageId=t);let s=o.current.queueByMessageId.get(t);s&&(n==="started"?(s.status="processing",s.reseatAfterCurrentTurn=void 0,o.current.spinnerOwner!==void 0&&(o.current.spinnerOwner===s.id||o.current.spinnerOwner===t)?(o.current.spinnerOwner=t,o.current.spinner&&(o.current.spinner.sending=!1)):st(void 0,t),fe()):(n==="cancelled"||n==="abandoned")&&(s.amendedByMessageId!==void 0?s.status="amended":s.status="cancelled",o.current.queueByMessageId.delete(t)))}function Zl(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=o.current.queueByMessageId.get(t);n&&(n.held=!0)}function jl(e){if(!o.current)return;let t=typeof e.messageId=="string"?e.messageId:"";if(!t)return;let n=o.current.queueByMessageId.get(t);n&&(n.held=!1)}function Jl(e){o.current&&typeof e.count=="number"&&(o.current.armedTasks=e.count,o.current.armedSince=e.count>0&&typeof e.since=="number"?e.since:void 0,o.current.armedTaskList=ls(e.tasks))}function ls(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!n||typeof n!="object")continue;let s=n;typeof s.label!="string"||typeof s.since!="number"||t.push({label:s.label,since:s.since,taskId:typeof s.taskId=="string"?s.taskId:void 0,taskType:typeof s.taskType=="string"?s.taskType:void 0,toolCallId:typeof s.toolCallId=="string"?s.toolCallId:void 0})}return t}function eu(e){if(!o.current)return;switch(typeof e.phase=="string"?e.phase:""){case"started":case"iteration":o.current.compactionPhase="running";break;case"deferred":o.current.compactionPhase="deferred";break;case"swapped":o.current.compactionPhase=void 0,M({banner:{kind:"good",text:"Context compacted."}});break;case"failed":o.current.compactionPhase=void 0,M({banner:{kind:"bad",text:"Context compaction failed."}});break;case"rolled_back":o.current.compactionPhase=void 0,M({banner:{kind:"warn",text:"Compaction rolled back."}});break;default:break}}function tu(e){if(!o.current)return;let t=typeof e.cancelledMessageId=="string"?e.cancelledMessageId:"",n=typeof e.newMessageId=="string"?e.newMessageId:"";if(!t||!n)return;en(t,n);let s=o.current.queueByMessageId.get(n);s&&s.amendsMessageId===void 0&&(s.amendsMessageId=t)}function en(e,t){if(!o.current)return;let n=o.current.queueByMessageId.get(e)??o.current.promptQueue.find(s=>s.messageId===e);n&&(n.amendedByMessageId=t,n.status==="cancelled"&&(n.status="amended"))}function nu(e){if(!o.current)return;let t=e.entries??e.plan??null;if(o.current.plan=t,o.current.currentPlanEntry){o.current.currentPlanEntry.entries=t;return}let n={kind:"plan",entries:t};_e(n),o.current.currentPlanEntry=n}function su(e){if(!o.current)return;let t=typeof e?.toolCallId=="string"?e.toolCallId:void 0;t&&Ko(t)}function Ko(e){o.current&&(o.current.pendingPermissions.delete(e),o.current.log=o.current.log.filter(t=>!(t.kind==="perm"&&t.toolCallId===e)))}function tt(e,t){!o.current||!e||!t||t==="pending"||o.current.pendingPermissions.has(e)&&Ko(e)}function rn(e,t=!1){if(o.current?.cold&&(o.current.cold=!1,o.current.ready=!0),e.method==="hydra-acp/prompt_queue/added"){Ql(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/updated"){Vl(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/removed"){Xl(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/held"){Zl(e.params??{});return}if(e.method==="hydra-acp/prompt_queue/released"){jl(e.params??{});return}if(e.method==="hydra-acp/session/armed_tasks_updated"){Jl(e.params??{});return}if(e.method==="hydra-acp/prompt/amended"){tu(e.params??{});return}if(e.method!=="session/update")return;let n=e.params?.update??null;if(!n||typeof n!="object")return;let s=String(n.sessionUpdate??"");if(o.current&&!t&&s&&!Rl.has(s)&&typeof n.messageId=="string"){n.messageId!==o.current.pendingCursorMessageId&&(o.current.pendingCursorMessageId!==void 0&&(o.current.lastSeenMessageId=o.current.pendingCursorMessageId),o.current.pendingCursorMessageId=n.messageId);let d=Ll(e.params);d!==void 0&&(o.current.lastSeenSeq=d),jt(o.current.sessionId,e)}if(s==="permission_resolved"){su(n);return}let i=(n._meta??{})["hydra-acp"]??{},a=s==="agent_message_chunk"&&i.synthetic===!0,c=typeof n.messageId=="string"?n.messageId:void 0,u=Ol(e.params);switch(s){case"prompt_received":case"user_message_chunk":case"agent_message_chunk":case"agent_thought_chunk":case"tool_call":case"tool_call_update":case"plan":a||(fe(),o.current?.spinner&&(o.current.spinner.sending=!1));break;default:break}switch(s){case"user_message_chunk":{if(i.compatFor==="prompt_received")break;Bo(n.content)||os("user",n.content,!1,c);break}case"agent_message_chunk":os("agent",n.content,a,c);break;case"agent_thought_chunk":os("thought",n.content,!1,c);break;case"tool_call":Kl(n);break;case"tool_call_update":Wl(n);break;case"current_mode_update":o.current&&(o.current.mode=n.modeId??n.currentModeId??null,Array.isArray(n.availableModes)&&(o.current.modes=n.availableModes),v());break;case"_hydra_available_modes_update":o.current&&Array.isArray(n.availableModes)&&(o.current.modes=n.availableModes,v());break;case"_hydra_current_model_update":o.current&&(o.current.model=n.modelId??n.currentModelId??null,Array.isArray(n.availableModels)&&(o.current.models=n.availableModels),v());break;case"config_option_update":o.current&&Array.isArray(n.configOptions)&&(o.current.configOptions=n.configOptions,v());break;case"usage_update":if(o.current){let d=n.used??n.contextUsed,f=n.size??n.contextSize;typeof d=="number"&&(o.current.contextUsed=d),typeof f=="number"&&(o.current.contextSize=f),n.cost&&(o.current.cost=n.cost)}break;case"plan":nu(n);break;case"prompt_received":Gl(n,u);break;case"stop":case"turn_complete":{let p=((n._meta??{})["hydra-acp"]??{}).amended;if(p){let g=typeof p.cancelledMessageId=="string"?p.cancelledMessageId:"",E=typeof p.newMessageId=="string"?p.newMessageId:"";g&&E&&en(g,E)}let m=typeof n.stopReason=="string"?n.stopReason:void 0;De(m,u);break}case"_hydra_turn_started":{if(!o.current)break;let f=(n._meta??{})["hydra-acp"]??{};if(f.unsolicited!==!0)break;let p=typeof n.messageId=="string"?n.messageId:void 0;if(!p||o.current.unsolicitedTurnOpen.has(p))break;o.current.unsolicitedTurnOpen.add(p),fe();let m=f.cause??{},g=typeof m.label=="string"?m.label:void 0;_e({kind:"system",text:g?`agent resumed on its own: background task finished (${g})`:"agent resumed on its own",at:u});break}case"_hydra_turn_ended":{if(!o.current)break;let f=(n._meta??{})["hydra-acp"]??{};if(f.unsolicited!==!0)break;let p=typeof n.startedMessageId=="string"?n.startedMessageId:void 0;if(!p||!o.current.unsolicitedTurnOpen.has(p)||(o.current.unsolicitedTurnOpen.delete(p),f.reason==="superseded")||o.current.unsolicitedTurnOpen.size>0)break;De(void 0,u);break}case"session_info_update":o.current&&typeof n.title=="string"&&(o.current.title=n.title);break;case"_hydra_compaction":eu(n);break;default:break}o.current?.inTurn&&ve(u)}function Wo(e){if(o.current){if(e.method==="session/request_permission"){let t=e.params??{},n=t.toolCall??{},s=typeof n.toolCallId=="string"?n.toolCallId:"";if(!s){o.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32602,message:"missing toolCall.toolCallId"}}));return}o.current.pendingPermissions.set(s,{requestId:e.id,toolCallId:s,toolCall:n,options:t.options??[]}),tn({kind:"perm",toolCallId:s});return}o.current.ws?.send(JSON.stringify({jsonrpc:"2.0",id:e.id,error:{code:-32601,message:`method not handled: ${String(e.method)}`}}))}}var ru="hydra-acp-draft:";function on(e){return ru+e}function Yo(e){try{return localStorage.getItem(on(e))??""}catch{return""}}var an=new Map,Pe;function rt(e,t){an.set(e,t),Pe!==void 0&&clearTimeout(Pe),Pe=setTimeout(()=>{Pe=void 0,Qo()},400)}function cn(e){an.delete(e);try{localStorage.removeItem(on(e))}catch{}}function Qo(){for(let[e,t]of an)try{t?localStorage.setItem(on(e),t):localStorage.removeItem(on(e))}catch{}an.clear()}function Go(){Pe!==void 0&&(clearTimeout(Pe),Pe=void 0),Qo()}typeof window<"u"&&typeof document<"u"&&(window.addEventListener("pagehide",Go),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Go()}));var ou="hydra-acp-offline-queue";var Be="sessions",ln=null;function us(){return ln||(ln=new Promise(e=>{if(!("indexedDB"in window)){e(null);return}let t;try{t=indexedDB.open(ou,1)}catch{e(null);return}t.onupgradeneeded=()=>{t.result.createObjectStore(Be,{keyPath:"sessionId"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}),ln)}async function Vo(e){let t=await us();return t?new Promise(n=>{let s;try{s=t.transaction(Be,"readonly")}catch{n([]);return}let r=s.objectStore(Be).get(e);r.onsuccess=()=>{let i=r.result;n(i?.entries??[])},r.onerror=()=>n([])}):[]}async function ds(e,t){let n=await us();if(n)return new Promise(s=>{let r;try{r=n.transaction(Be,"readwrite")}catch{s();return}let i=r.objectStore(Be),a=i.get(e);a.onsuccess=()=>{let c=a.result??{sessionId:e,entries:[]},u=c.entries.findIndex(d=>d.id===t.id);u>=0?c.entries[u]=t:c.entries.push(t),i.put(c),s()},a.onerror=()=>s()})}async function un(e,t){let n=await us();if(n)return new Promise(s=>{let r;try{r=n.transaction(Be,"readwrite")}catch{s();return}let i=r.objectStore(Be),a=i.get(e);a.onsuccess=()=>{let c=a.result;if(!c){s();return}c.entries=c.entries.filter(u=>u.id!==t),c.entries.length===0?i.delete(e):i.put(c),s()},a.onerror=()=>s()})}function At(e,t){let n=[];e&&n.push({type:"text",text:e});for(let s of t)n.push({type:"image",data:s.data,mimeType:s.mimeType});return n}function xt(){let e=o.current;if(!e)return;let t=e.composerValue.trim(),n=e.attachments;!t&&n.length===0||(ps(e,t,{attachments:n})&&(e.composerValue="",e.attachments=[],cn(e.sessionId)),v())}function Zo(e){let t=o.current;t&&(ps(t,`/hydra workspace ${e}`,{addToHistory:!1}),v())}function jo(){let e=o.current;e&&(ps(e,"/hydra compact",{addToHistory:!1}),v())}function ps(e,t,n={}){let s=n.attachments??[],r=!e.connectionHealthy||!navigator.onLine||!e.ws||e.ws.readyState!==WebSocket.OPEN,i=e.promptQueue.filter(p=>p.status==="queued"||p.status==="pending"||p.status==="processing").length,a=e.inTurn&&!e.promptQueue.some(p=>p.status==="processing"),c=r?0:i+(a?1:0),u={id:"p_"+Math.random().toString(36).slice(2,10),text:t,status:r?"offline":c>0?"queued":"pending",aheadAtEnqueue:c,attachments:s.length>0?s:void 0};e.promptQueue.push(u),e.log.push({kind:"stream",role:"user",text:t,closed:!0,queueEntry:u,sentAt:Date.now(),attachments:u.attachments}),e.recentOwnPrompts.push({text:t,at:Date.now()});let d=Date.now()-6e4;if(e.recentOwnPrompts=e.recentOwnPrompts.filter(p=>p.at>=d).slice(-16),r)return ds(e.sessionId,{id:u.id,text:t,attachments:u.attachments}),st(void 0,u.id,!0),fe(),It(e),(n.addToHistory??!0)&&fs(e,t),!0;let f=pe("session/prompt",{sessionId:e.sessionId,prompt:At(t,s)});return f!==void 0&&e.ownPromptIds.set(String(f),u),u.status==="pending"?st(void 0,u.id,!0):ve(),fe(),It(e),(n.addToHistory??!0)&&fs(e,t),!0}function Jo(e){let t=!1,n=null;for(let s of e.promptQueue){if(s.status!=="offline")continue;if(!e.ws||e.ws.readyState!==WebSocket.OPEN)break;t=!0;let r=e.promptQueue.filter(u=>u.status==="queued"||u.status==="pending"||u.status==="processing").length,i=e.inTurn&&!e.promptQueue.some(u=>u.status==="processing"),a=r+(i?1:0);s.aheadAtEnqueue=a,s.status=a>0?"queued":"pending",!n&&s.status==="pending"&&(n=s);let c=pe("session/prompt",{sessionId:e.sessionId,prompt:At(s.text,s.attachments??[])});c!==void 0&&e.ownPromptIds.set(String(c),s),un(e.sessionId,s.id),cs(e,s),e.inTurn&&(s.reseatAfterCurrentTurn=!0)}t&&(n?st(void 0,n.id,!0):ve(),fe())}var Xo=100;function fs(e,t){e.history[0]!==t&&(e.history.unshift(t),e.history.length>Xo&&(e.history.length=Xo)),e.historyIndex=null,e.historyDraft=null}function fn(e){let t=o.current;if(t){if(e.messageId!==void 0){pe("hydra-acp/prompt/cancel",{sessionId:t.sessionId,messageId:e.messageId});return}e.status==="offline"&&un(t.sessionId,e.id),e.status="cancelled",v()}}function ei(e){let t=o.current;if(!t||!t.daemonSupportsAmend||t.currentHeadMessageId===void 0||e.messageId===void 0||e.status!=="queued")return;if(!t.connectionHealthy||!navigator.onLine||!t.ws||t.ws.readyState!==WebSocket.OPEN){M({banner:{kind:"warn",text:"Not connected \u2014 still queued, try again in a moment."}});return}let n=t.currentHeadMessageId,s=e.messageId;t.queueByMessageId.delete(s),e.messageId=void 0,e.status="pending",e.amendsMessageId=n,e.aheadAtEnqueue=0,zo(t,e),pe("hydra-acp/prompt/cancel",{sessionId:t.sessionId,messageId:s}),si(e,e.text,n,e.text),It(t),v()}function ti(e,t){let n=o.current;if(!n)return;let s=t.trim();if(s){if(e.status==="offline"){e.text=s,ds(n.sessionId,{id:e.id,text:s,attachments:e.attachments}),v();return}if(e.messageId===void 0){e.text=s,v();return}pe("hydra-acp/prompt/update",{sessionId:n.sessionId,messageId:e.messageId,prompt:At(s,e.attachments??[])})}}function ni(){let e=o.current;if(!e)return;let t=e.composerValue.trim(),n=e.attachments;if(!t&&n.length===0)return;if(!e.connectionHealthy||!navigator.onLine||!e.ws||e.ws.readyState!==WebSocket.OPEN){e.log.push({kind:"error",text:"Not connected to session \u2014 prompt not sent."}),e.composerValue="",e.attachments=[],cn(e.sessionId),v();return}if(!e.daemonSupportsAmend||e.currentHeadMessageId===void 0){xt();return}let s=e.currentHeadMessageId,r=e.composerValue;e.composerValue="",e.attachments=[],cn(e.sessionId),fs(e,t);let i={id:"p_"+Math.random().toString(36).slice(2,10),text:t,status:"pending",aheadAtEnqueue:0,amendsMessageId:s,attachments:n.length>0?n:void 0};e.promptQueue.push(i),e.log.push({kind:"stream",role:"user",text:t,closed:!0,queueEntry:i,sentAt:Date.now(),attachments:i.attachments}),e.recentOwnPrompts.push({text:t,at:Date.now()});let a=Date.now()-6e4;e.recentOwnPrompts=e.recentOwnPrompts.filter(c=>c.at>=a).slice(-16),ve(),fe(),It(e),si(i,r,s,t),v()}function si(e,t,n,s){let r=o.current;if(!r)return;let i=pe("_session/steering",{sessionId:r.sessionId,prompt:At(s,e.attachments??[])});i!==void 0&&r.responseHandlers.set(String(i),a=>{iu(e,t,n,s,a)})}function iu(e,t,n,s,r){let i=o.current;if(!i)return;if(r.error){if(r.error?.code===-32601){au(e,t,n,s);return}dn(i,e,t),M({banner:{kind:"bad",text:`steering failed: ${ri(r.error)}`}});return}let a=r.result??{};if(a.outcome==="injected"){e.status="processing",v();return}a.outcome!=="startedNewTurn"&&(dn(i,e,t),M({banner:{kind:"warn",text:"steering failed"}}))}function au(e,t,n,s){let r=o.current;if(!r)return;let i=pe("hydra-acp/prompt/amend",{sessionId:r.sessionId,targetMessageId:n,prompt:At(s,e.attachments??[])});i!==void 0&&r.responseHandlers.set(String(i),a=>{cu(e,t,a)})}function cu(e,t,n){let s=o.current;if(!s)return;if(n.error){dn(s,e,t),M({banner:{kind:"bad",text:`amend failed: ${ri(n.error)}`}});return}let r=n.result??{};if(r.amended&&r.reason==="ok")return;dn(s,e,t);let i="amend rejected";r.reason==="target_completed"?i="previous response finished \u2014 press Send to send as a new turn":r.reason==="target_cancelled"?i="amend skipped \u2014 previous turn was cancelled":r.reason==="target_not_found"&&(i="amend skipped \u2014 no matching prompt"),M({banner:{kind:"warn",text:i}})}function dn(e,t,n){let s=e.promptQueue.indexOf(t);s>=0&&e.promptQueue.splice(s,1),e.log=e.log.filter(r=>!(r.kind==="stream"&&r.role==="user"&&r.queueEntry===t)),e.composerValue=n,e.attachments=t.attachments??[],rt(e.sessionId,n),v()}function ri(e){if(e&&typeof e=="object"&&"message"in e){let t=e.message;if(typeof t=="string")return t}return"unknown error"}function oi(){let e=o.current;!e||!e.inTurn||ot("session/cancel",{sessionId:e.sessionId})}function ii(){let e=o.current;if(!e)return;let t=!1;for(let n of e.promptQueue)(n.status==="queued"||n.status==="pending")&&(fn(n),t=!0);e.inTurn&&ot("session/cancel",{sessionId:e.sessionId}),t&&v()}function ai(e){o.current&&pe("session/set_mode",{sessionId:o.current.sessionId,modeId:e})}function ci(e){o.current&&pe("session/set_model",{sessionId:o.current.sessionId,modelId:e})}function li(e,t){let n=o.current;if(!n)return;let s=pe("session/set_config_option",{sessionId:n.sessionId,configId:e,value:t});s!==void 0&&n.responseHandlers.set(String(s),r=>{let i=r.result?.configOptions;Array.isArray(i)&&o.current===n&&(n.configOptions=i,v())})}function ui(e){for(let t of e.promptQueue)t.status!=="done"&&t.status!=="cancelled"&&(t.status==="offline"&&un(e.sessionId,t.id),t.status="cancelled",t.messageId!==void 0&&e.queueByMessageId.delete(t.messageId))}function di(e){for(let t of e.promptQueue)t.messageId===void 0&&t.status!=="done"&&t.status!=="cancelled"&&t.status!=="offline"&&t.status!=="processing"&&(t.status="cancelled")}var pn=null;async function it(){if(pn)return pn;if(!("serviceWorker"in navigator))return null;try{return pn=await navigator.serviceWorker.register("/sw.js"),pn}catch{return null}}async function fi(){return typeof Notification>"u"||!await it()?!1:Notification.permission==="granted"?!0:Notification.permission==="denied"?!1:await Notification.requestPermission()==="granted"}function pi(){return document.visibilityState!=="visible"||!document.hasFocus()}async function mi(){let e=await it();return!e||!("pushManager"in e)?void 0:(await e.pushManager.getSubscription())?.endpoint}function lu(e){let t="=".repeat((4-e.length%4)%4),n=(e+t).replace(/-/g,"+").replace(/_/g,"/"),s=atob(n);return Uint8Array.from(s,r=>r.charCodeAt(0))}async function mn(){let e=await it();if(!(!e||!("pushManager"in e)))try{let{publicKey:t}=await X("/api/push/vapid-public-key"),n=await e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:lu(t)});await X("/api/push/subscribe",{method:"POST",body:JSON.stringify(n.toJSON())})}catch(t){console.warn("push subscribe failed:",t)}}async function gi(){let e=await it();if(!(!e||!("pushManager"in e)))try{let t=await e.pushManager.getSubscription();if(!t)return;let n=t.endpoint;await t.unsubscribe(),await X("/api/push/unsubscribe",{method:"POST",body:JSON.stringify({endpoint:n})})}catch(t){console.warn("push unsubscribe failed:",t)}}function pe(e,t){let n=o.current;if(!n||!n.ws||n.ws.readyState!==WebSocket.OPEN)return;let s=n.nextId=n.nextId??1;return n.nextId=s+1,n.ws.send(JSON.stringify({jsonrpc:"2.0",id:s,method:e,params:t})),s}function ot(e,t){let n=o.current;!n||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({jsonrpc:"2.0",method:e,params:t}))}function kt(){ot("bridge/visibility",{visible:!pi()})}function at(){mi().then(e=>{ot("bridge/push-endpoint",{endpoint:e??null})})}var uu=1e4,du=5e3;function hi(e){e.heartbeatTimer=setTimeout(()=>fu(e),uu)}function fu(e){o.current!==e||!e.ws||e.ws.readyState!==WebSocket.OPEN||(ot("bridge/ping",{}),e.heartbeatDeadline=setTimeout(()=>{e.connectionHealthy=!1,v();try{e.ws?.close()}catch{}},du))}function pu(e){e.connectionHealthy=!0,e.heartbeatDeadline!==void 0&&(clearTimeout(e.heartbeatDeadline),e.heartbeatDeadline=void 0),hi(e)}function mu(e){gn(e),e.connectionHealthy=!0,hi(e)}function gn(e){e.heartbeatTimer!==void 0&&(clearTimeout(e.heartbeatTimer),e.heartbeatTimer=void 0),e.heartbeatDeadline!==void 0&&(clearTimeout(e.heartbeatDeadline),e.heartbeatDeadline=void 0)}function gu(e,t){let n=o.current;!n||!n.ws||n.ws.readyState!==WebSocket.OPEN||n.ws.send(JSON.stringify({jsonrpc:"2.0",id:e,result:t}))}function bi(e){if(o.current){if(e.method==="bridge/replay_policy"){e.params?.policy!=="after_message"?(o.current.log.length>0&&Ei(),o.current.pinAfterReplaySwap=!0,nn(o.current),Oo(o.current.sessionId)):o.current.resumedByMessageId&&Po();return}if(e.method==="bridge/ready"){o.current.ready=!0,o.current.cold=!1,o.current.loadOnConnect=!1,o.banner=null,o.current.reconnectAttempt=0;let t=e.params??{};typeof t.clientId=="string"&&(o.current.ownClientId=t.clientId),Array.isArray(t.configOptions)&&(o.current.configOptions=t.configOptions);let s=t._meta?.["hydra-acp"];if(s?.busy===!1&&o.current.inTurn&&De(),s?.busy===!0){fe(),o.current.spinner&&(o.current.spinner.sending=!1);let c=s.turnStartedAt;typeof c=="number"&&Number.isFinite(c)?(o.current.spinner||ve(),o.current.spinner&&o.current.spinnerOwner===void 0&&(o.current.spinner.startedAt=c)):o.current.spinner||ve()}let r=s?.queue;Array.isArray(r)&&Uo(r),s?.prompt?.amending===!0&&(o.current.daemonSupportsAmend=!0),typeof s?.armedTasks=="number"&&(o.current.armedTasks=s.armedTasks,o.current.armedSince=s.armedTasks>0&&typeof s.armedSince=="number"?s.armedSince:void 0,o.current.armedTaskList=ls(s.armedTaskList));let a=o.current.readyListeners;o.current.readyListeners=[];for(let c of a)try{c()}catch{}kt(),at(),mu(o.current),Jo(o.current),gs(),v();return}if(e.method==="bridge/pong"){o.current&&pu(o.current);return}if(e.method==="bridge/error"){tn({kind:"error",text:`Bridge error: ${e.params?.message??"?"}`}),v();return}if(e.method==="hydra-acp/session/closed"){o.current&&(o.current.ready=!1,o.current.cold=!0,ui(o.current),De()),v();return}if(e.method&&"id"in e){Wo(e),o.current.ready&&v();return}if(e.method){rn(e),o.current.ready&&v();return}if("id"in e&&e.id!==void 0&&o.current.ownPromptIds.has(String(e.id))){let t=o.current.ownPromptIds.get(String(e.id));if(o.current.ownPromptIds.delete(String(e.id)),o.current.cold&&(o.current.cold=!1,o.current.ready=!0),e.error){let a=e.error;tn({kind:"error",text:`Prompt failed: ${a.message??"unknown error"}`}),De(),v();return}let n=e.result,s=typeof n?.stopReason=="string"?n.stopReason:void 0,r=o.current.spinnerOwner;t===void 0||r===void 0||r===t.id||t.messageId!==void 0&&r===t.messageId?De(s,void 0,!0):s==="cancelled"&&t.status!=="amended"&&(t.status="cancelled"),v();return}if("id"in e&&e.id!==void 0){let t=o.current.responseHandlers.get(String(e.id));t&&(o.current.responseHandlers.delete(String(e.id)),t({result:e.result,error:e.error}))}}}function ms(e,t){if(!o.current)return;let n=o.current.pendingPermissions.get(e);n&&(o.current.pendingPermissions.delete(e),o.current.log=o.current.log.filter(s=>!(s.kind==="perm"&&s.toolCallId===e)),gu(n.requestId,{outcome:t==="__cancel__"?{outcome:"cancelled"}:{outcome:"selected",optionId:t}}),v())}var yi=[1e3,2e3,4e3,8e3,16e3,3e4],hu=5;function Es(e,t){let n=encodeURIComponent(e);return t?`#/session/${n}?load=true`:`#/session/${n}`}function _i(){let t=new URLSearchParams(window.location.search).get("protocol_launch");if(!t)return;history.replaceState(null,"",window.location.pathname+window.location.hash);let n;try{n=new URL(t)}catch{return}if(n.protocol!=="web+hydra:"||n.hostname!=="sessions")return;let s=decodeURIComponent(n.pathname.replace(/^\/+/,""));s&&(window.location.hash=Es(s,!0))}var hs=!1,bs=!1;function bu(){try{return window.matchMedia?.("(display-mode: standalone)").matches===!0||navigator.standalone===!0}catch{return!1}}function ys(e){if(window.location.hash===e)return;hs=!0;let t=bs||bu()?history.replaceState:history.pushState;bs=!1;try{t.call(history,null,"",e||window.location.pathname+window.location.search)}finally{queueMicrotask(()=>{hs=!1})}}function _s(){if(hs)return;let t=window.location.hash.match(/^#\/session\/([^?]+)(?:\?(.*))?$/);if(t){let n=decodeURIComponent(t[1]),r=new URLSearchParams(t[2]??"").get("load")==="true";if(o.view==="chat"&&o.current?.sessionId===n)return;He(n,r);return}o.view!=="list"&&Fe()}function He(e,t){ys(Es(e,t)),ws();let n=o.sessions.find(r=>r.sessionId===e),s={sessionId:e,title:n?.title??"",cwd:n?.cwd||"",agentId:n?.agentId||"",ws:null,ready:!1,log:[],toolCalls:new Map,pendingPermissions:new Map,pendingRequestById:new Map,responseHandlers:new Map,spinner:null,plan:null,mode:null,model:null,modes:[],models:[],contextUsed:null,contextSize:null,cost:null,fileOverlay:null,savedFileView:null,composerValue:Yo(e),attachments:[],busy:!1,recentOwnPrompts:[],history:[],historyIndex:null,historyDraft:null,_lastMetaFp:n?`${n.title}|${n.cwd}|${n.agentId}`:"",promptQueue:[],queueByMessageId:new Map,ownPromptIds:new Map,inTurn:!1,idleListeners:[],readyListeners:[],currentPlanEntry:null,daemonSupportsAmend:!1,loadOnConnect:t,reconnectAttempt:0,headerExpanded:!1,unsolicitedTurnOpen:new Set,configOptions:[],connectionHealthy:!0};o.current=s,M({view:"chat",listHighlightedSessionId:e,lastSessionId:e}),Eu(s)}async function Eu(e){let t=await No(e.sessionId);if(o.current!==e)return;t&&(Se("cache-replay",()=>{for(let s of t.frames)try{rn(s,!0)}catch(r){console.error("[hydra] cached frame failed to replay",r,s)}}),e.historyIsPartial=!0);let n=await Vo(e.sessionId);if(o.current===e){for(let s of n){let r={id:s.id,text:s.text,status:"offline",aheadAtEnqueue:0,attachments:s.attachments};e.promptQueue.push(r),e.log.push({kind:"stream",role:"user",text:s.text,closed:!0,queueEntry:r,attachments:r.attachments})}(t||n.length>0)&&v(),bn(e)}}function vi(e){if(o.current!==e)return;let t=document.querySelector(".chat-body");if(t){let n=t.getBoundingClientRect().top;for(let s of t.querySelectorAll("[data-message-id]"))if(s.getBoundingClientRect().bottom>n){e.scrollRestoreMessageId=s.dataset.messageId;break}}ws(),vs(e),nn(e),e.historyIsPartial=!1,e.wantFullHistory=!0,v(),bn(e)}function bn(e){let t=new URL("/ws",location.href);t.protocol=location.protocol==="https:"?"wss:":"ws:",t.searchParams.set("session",e.sessionId),e.loadOnConnect&&t.searchParams.set("load","true");let n=e.wantFullHistory===!0;e.wantFullHistory&&(t.searchParams.set("fullHistory","true"),e.wantFullHistory=!1),e.lastSeenMessageId!==void 0&&t.searchParams.set("afterMessageId",e.lastSeenMessageId),e.lastSeenSeq!==void 0&&t.searchParams.set("afterSeq",String(e.lastSeenSeq)),!n&&e.lastSeenMessageId===void 0&&e.lastSeenSeq===void 0&&(e.historyIsPartial=!0),e.resumedByMessageId=e.lastSeenSeq===void 0&&e.lastSeenMessageId!==void 0;let s=new WebSocket(t.toString());e.ws=s,s.addEventListener("open",()=>{}),s.addEventListener("message",r=>{if(!o.current||o.current.ws!==s)return;let i;try{i=JSON.parse(String(r.data))}catch{return}bi(i)}),s.addEventListener("close",()=>{!o.current||o.current.ws!==s||yu(o.current)}),s.addEventListener("error",()=>{})}function yu(e){e.ready=!1,di(e);let t=e.reconnectAttempt??0,n=yi[Math.min(t,yi.length-1)],s=t>=hu;M({banner:s?{kind:"bad",text:"Still disconnected \u2014 retrying\u2026"}:{kind:"warn",text:"Reconnecting\u2026"}}),e.reconnectTimer=setTimeout(()=>{!o.current||o.current!==e||(e.reconnectTimer=void 0,e.reconnectAttempt=t+1,vs(e),v(),bn(e))},n)}function vs(e){e.ws=null,e.ready=!1,e.pendingRequestById=new Map,e.responseHandlers=new Map,e.ownPromptIds=new Map,e.idleListeners=[],e.readyListeners=[],e.nextId=void 0,gn(e)}function wi(){if(o.view==="chat")return;let e=o.lastSessionId;if(!e||(M({listHighlightedSessionId:e}),!ee()))return;let t=n=>{if(o.view==="chat")return;let s=o.sessions.find(r=>r.sessionId===e);if(s){s.status!=="cold"&&(bs=!0,He(e,!1));return}n<20&&setTimeout(()=>t(n+1),250)};t(0)}var hn=null;function Si(){return hn}var Ti=0;function Ii(){return Ti}function Ai(e){return hn!==e?!1:(hn=null,ys(Es(e.sessionId,!1)),vs(e),e.reconnectAttempt=0,o.current=e,M({view:"chat",listHighlightedSessionId:e.sessionId,lastSessionId:e.sessionId}),bn(e),!0)}function Fe(){ys(""),ws();let e=o.current?.sessionId??o.lastSessionId;hn=o.current,Ti=o.current?xi(o.current):0,M({view:"list",current:null,lastSessionId:e,listHighlightedSessionId:e??o.listHighlightedSessionId}),ct()}function En(){if(o.current?.ws)try{o.current.ws.close()}catch{}}function ws(){if(o.current&&(o.current.reconnectTimer&&(clearTimeout(o.current.reconnectTimer),o.current.reconnectTimer=void 0),gn(o.current),o.current.ws)){try{o.current.ws.close()}catch{}o.current.ws=null}}var ki="(prefers-color-scheme: dark)";function _u(){return o.theme==="system"?window.matchMedia(ki).matches?"dark":"light":o.theme}function _n(){document.documentElement.style.fontSize=`${16*o.fontScale}px`}function yn(){let e=_u();document.documentElement.setAttribute("data-theme",e),document.querySelector('meta[name="theme-color"]')?.setAttribute("content",e==="light"?"#ffffff":"#0e1116")}function Ci(){yn(),window.matchMedia(ki).addEventListener("change",()=>{o.theme==="system"&&yn()})}var Mi=10*1024*1024,Ct=new WeakSet;function ks(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)}MB`:e>=1024?`${(e/1024).toFixed(0)}KB`:`${e}B`}function vu(e,t){for(let n of t){if(n.size>Mi){M({banner:{kind:"warn",text:`pasted image is ${ks(n.size)}, max ${ks(Mi)}`}});continue}let s=new FileReader;s.onload=()=>{let r=s.result;if(typeof r!="string")return;let i=r.indexOf(",");i<0||(e.attachments.push({mimeType:n.type||"image/png",data:r.slice(i+1),sizeBytes:n.size}),v())},s.readAsDataURL(n)}}function Ui(e){return`data:${e.mimeType};base64,${e.data}`}function wu(e){return e.attachments.length===0?null:l("div",{class:"attachment-chips"},...e.attachments.map((t,n)=>l("span",{class:"attachment-chip",title:ks(t.sizeBytes)},l("img",{class:"attachment-thumb",src:Ui(t)}),l("button",{class:"attachment-remove",title:"Remove image",...I(()=>{e.attachments.splice(n,1),v()})},"\xD7"))))}function Ls(e){return"untitled"}function he(e){let t=e.indexOf(":");return(t===-1?e:e.slice(t+1)).replace(/^hydra_session_/,"")}function Su(e){if(!e)return;let t=e.lastIndexOf("/");return t===-1?e:e.slice(t+1)}function qi(e,t){let n=e||"?",s=Su(t);return s?`${n}\u2022${s}`:n}function zi(e){let t=Math.floor(Math.max(0,e)/1e3);if(t<60)return"<1m";let n=Math.floor(t/60);if(n<60)return`${n}m`;let s=Math.floor(n/60);if(s<24)return`${s}h`;let r=Math.floor(s/24);if(r<14)return`${r}d`;let i=Math.floor(r/7);if(i<9)return`${i}w`;let a=Math.floor(r/30);return a<12?`${a}mo`:`${Math.floor(r/365)}y`}function Tu(e,t=Date.now()){if(!e)return"?";let n=Date.parse(e);return Number.isNaN(n)?"?":zi(t-n)}function Ni(e){return Number.isFinite(e)?e<1e3?String(e):e<1e6?(e/1e3).toFixed(e<1e4?1:0).replace(/\.0$/,"")+"k":(e/1e6).toFixed(2).replace(/\.?0+$/,"")+"M":"?"}function Ri(e){let t=null,n="USD";if(typeof e=="number")t=e;else if(e&&typeof e=="object"){let r=e;if(typeof r.amount=="number")t=r.amount;else if(typeof r.total=="number")t=r.total;else if(r.total&&typeof r.total=="object"){let i=r.total;typeof i.amount=="number"&&(t=i.amount),typeof i.currency=="string"&&(n=i.currency)}typeof r.currency=="string"&&(n=r.currency)}if(t===null)return null;let s=t<.01?4:t<1?3:2;return n==="USD"?`$${t.toFixed(s)}`:`${t.toFixed(s)} ${n}`}function Ki(e,t){t.banner&&e.appendChild(l("div",{class:"banner "+t.banner.kind},t.banner.text)),ee()?e.appendChild(ku(t)):t.view==="list"?(e.appendChild(Qi()),e.appendChild(Yi()),e.appendChild(Ji())):t.view==="chat"&&t.current&&(e.appendChild(In(t.current)),t.current.fileOverlay&&e.appendChild(pa(t.current))),t.modal&&(t.modal.kind==="session"?e.appendChild(id(t.modal)):t.modal.kind==="modes"&&t.current?e.appendChild(Oi("Mode",t.current.modes,t.current.mode,n=>ai(n.id))):t.modal.kind==="models"&&t.current?e.appendChild(Oi("Model",t.current.models,t.current.model,n=>ci(n.id))):t.modal.kind==="options"&&e.appendChild(Qu()))}function Os(){return[Qi(),Yi(),Ji()]}function Wi(){return l("div",{class:"swipe-preview-list"},...Os())}function Gi(e){let t=e.title||Ls(e.sessionId),n=[he(e.sessionId),qi(e.agentId,e.currentModel)].join(" \xB7 ");return l("div",{class:"swipe-preview-chat"},l("div",{class:"chat-header"},l("div",{class:"chat-title-row"},l("div",{class:"chat-title"},t)),l("div",{class:"chat-header-row"},l("div",{class:"info"},l("div",{class:"row2"},n)))),l("div",{class:"chat-body swipe-preview-chat-body"},l("div",{class:"swipe-preview-loading"},l("span",{class:"dot"}),"opening\u2026")))}function Iu(){let e=l("div",{class:"rail",tabindex:"-1","data-focus-key":"list-rail"},...Os());return o.railWidth!==null&&(e.style.flex=`0 0 ${Cs(o.railWidth)}px`),Fs(),e}function Au(e){if(!ga())return;let t=e.querySelector(".list"),n=t?t.scrollTop:null,s=t?Ps(t):null,r=document.activeElement,i=r&&e.contains(r)?r.dataset.focusKey??null:null,a=i?r.selectionStart:null,c=i?r.selectionEnd:null;if(e.replaceChildren(...Os()),Fs(),i){let d=e.querySelector(`[data-focus-key="${CSS.escape(i)}"]`);if(d){d.focus();let f=d;if(a!==null&&typeof f.setSelectionRange=="function")try{f.setSelectionRange(a,c)}catch{}}}let u=e.querySelector(".list");u&&(s?Bs(u,s):n!==null&&(u.scrollTop=n))}function Cs(e){let t=Math.max(280,Math.min(window.innerWidth*.6,window.innerWidth-360));return Math.round(Math.max(240,Math.min(e,t)))}function xu(){let e=l("div",{class:"splitter",title:"Drag to resize (double-click to reset)"});return e.addEventListener("dblclick",()=>{let t=e.previousElementSibling;t&&(t.style.flex=""),M({railWidth:null})}),e.addEventListener("pointerdown",t=>{let n=e.previousElementSibling;if(!n)return;t.preventDefault();let s=t.clientX,r=n.getBoundingClientRect().width;e.setPointerCapture(t.pointerId),e.classList.add("dragging");let i=c=>{n.style.flex=`0 0 ${Cs(r+(c.clientX-s))}px`},a=()=>{e.releasePointerCapture(t.pointerId),e.classList.remove("dragging"),e.removeEventListener("pointermove",i),e.removeEventListener("pointerup",a),e.removeEventListener("pointercancel",a),M({railWidth:Cs(n.getBoundingClientRect().width)})};e.addEventListener("pointermove",i),e.addEventListener("pointerup",a),e.addEventListener("pointercancel",a)}),e}function ku(e){let t=l("div",{class:"split-detail"});return e.current?(t.appendChild(In(e.current)),e.current.fileOverlay&&t.appendChild(pa(e.current))):t.appendChild(l("div",{class:"split-detail-empty"},"Select a session from the list")),l("div",{class:"split"},Iu(),xu(),t)}function Ds(){let e=document.querySelector('[data-focus-key="list-rail"]');e&&(o.current&&M({listHighlightedSessionId:o.current.sessionId}),e.focus())}function Yi(){let e=o.sessionSearch.length>0?l("button",{class:"session-search-clear",title:"Clear filter",...I(()=>M({sessionSearch:""}))},"\xD7"):null;return l("div",{class:"session-search-row"},l("input",{class:"session-search",type:"text",placeholder:"Filter sessions\u2026",value:o.sessionSearch,"data-focus-key":"session-search",autocomplete:"off",autocapitalize:"off",autocorrect:"off",spellcheck:"false",oninput:t=>{M({sessionSearch:t.target.value})},onkeydown:t=>{t.key==="Escape"&&(t.preventDefault(),t.stopPropagation(),o.sessionSearch.length>0?M({sessionSearch:""}):t.target.blur())}}),e)}function Qi(){return l("div",{class:"topbar"},l("span",{class:"pill clickable",title:"Click to toggle grouping by project/recent",...I(()=>M({groupBy:o.groupBy==="project"?"recent":"project"}))},o.groupBy),l("span",{class:"pill clickable",title:"Click to toggle showing disk-only sessions",...I(()=>{M({showCold:!o.showCold})})},o.showCold?"all":"warm"),Nu(),l("span",{class:"spacer"}),l("button",{...I(ea),title:"Options"},"\u2699"),l("button",{...I(nd),title:"Import a *.hydra bundle from disk"},"\u{1F4E5}"),l("button",{...I(ia),title:"New Session"},"\uFF0B"))}var $e="remote:",Ue="host:";function Vi(e){return!!e.importedFromMachine&&!e.upstreamSessionId}function Cu(e){return o.hostFilter===`${Ue}${e}`||o.hostFilter===e}function Mu(e){return e.startsWith($e)?`remote "${e.slice($e.length)}"`:e.startsWith(Ue)?`host "${e.slice(Ue.length)}"`:`host "${e}"`}function Nu(){let e=new Set,t=new Set;for(let i of o.sessions){if(i.remote){Vi(i)||e.add(i.remote);continue}i.importedFromMachine&&!i.upstreamSessionId&&t.add(i.importedFromMachine)}let n=l("select",{class:"host-select",title:"Filter sessions by origin host",onchange:i=>{let a=i.target.value;M({hostFilter:a})}}),s=(i,a,c)=>{let u=document.createElement("option");u.value=a,u.textContent=c,o.hostFilter===a&&(u.selected=!0),i.appendChild(u)};s(n,"__local","local");for(let i of[...e].sort())s(n,`${$e}${i}`,i);if(t.size>0){let i=document.createElement("optgroup");i.label="imported";for(let a of[...t].sort())s(i,`${Ue}${a}`,a);n.appendChild(i)}s(n,"__all","all");let r=new Set(["__local","__all"]);for(let i of e)r.add(`${$e}${i}`);for(let i of t)r.add(`${Ue}${i}`);return r.has(o.hostFilter)||(n.value=o.hostFilter),n}function Ru(e,t){if(t.length===0)return!0;let n=t.toLowerCase();return[he(e.sessionId),e.upstreamSessionId??"",e.agentId??"",e.title??"",e.cwd,e.cwd.replace(/^\/(?:home|Users)\/[^/]+/,"~")].some(r=>r.toLowerCase().includes(n))}function Xi(){let e=o.showCold?o.sessions:o.sessions.filter(n=>n.status!=="cold");if(o.hostFilter==="__local")e=e.filter(n=>!n.remote&&(!n.importedFromMachine||!!n.upstreamSessionId));else if(o.hostFilter.startsWith($e)){let n=o.hostFilter.slice($e.length);e=e.filter(s=>s.remote===n&&!Vi(s))}else if(o.hostFilter!=="__all"){let n=o.hostFilter.startsWith(Ue)?o.hostFilter.slice(Ue.length):o.hostFilter;e=e.filter(s=>s.importedFromMachine===n&&!s.upstreamSessionId)}let t=o.sessionSearch.trim();return t.length>0&&(e=e.filter(n=>Ru(n,t))),e}function Lu(){return na(Xi(),o.groupBy).flatMap(e=>e.sessions.map(t=>t.sessionId))}function Zi(){document.querySelector('[data-focus-key="composer"]')?.focus()}function Ms(e,t){if(ee()&&o.current?.sessionId===e){Zi();return}He(e,t)}function ji(e){let t=document.activeElement?.dataset.focusKey==="list-rail";if(o.view!=="list"&&!(ee()&&t)||Te(document.activeElement))return;if(e.key==="Escape"){if(ee()&&o.current){e.preventDefault(),M({listHighlightedSessionId:o.current.sessionId}),Zi();return}let u=o.lastSessionId,d=u?o.sessions.find(f=>f.sessionId===u):void 0;if(!d)return;e.preventDefault(),Ms(d.sessionId,d.status==="cold");return}if(e.key.toLowerCase()==="c"&&!e.shiftKey&&!e.altKey&&!e.ctrlKey&&!e.metaKey){e.preventDefault(),ia();return}let n=!e.shiftKey&&!e.altKey&&!e.ctrlKey&&!e.metaKey,s=e.key==="ArrowDown"||e.key==="n"&&n,r=e.key==="ArrowUp"||e.key==="p"&&n;if(!s&&!r&&e.key!=="Enter")return;let i=Lu();if(i.length===0)return;if(e.key==="Enter"){let u=o.listHighlightedSessionId;if(!u||!i.includes(u))return;let d=o.sessions.find(f=>f.sessionId===u);if(!d)return;e.preventDefault(),Ms(d.sessionId,d.status==="cold");return}e.preventDefault();let a=o.listHighlightedSessionId?i.indexOf(o.listHighlightedSessionId):-1,c=a===-1?0:s?Math.min(i.length-1,a+1):Math.max(0,a-1);M({listHighlightedSessionId:i[c]})}var Ss=null;function Ji(){let e=Xi(),t=o.showCold?0:o.sessions.filter(r=>r.status==="cold").length,n=na(e,o.groupBy),s=l("div",{class:"list"});if(o.listHighlightedSessionId&&o.listHighlightedSessionId!==Ss?(Ss=o.listHighlightedSessionId,queueMicrotask(()=>{document.querySelector(".card.highlighted")?.scrollIntoView({block:"nearest"})})):o.listHighlightedSessionId||(Ss=null),e.length===0){let r;o.sessionSearch.trim().length>0?r=`No sessions match \u201C${o.sessionSearch.trim()}\u201D.`:o.sessions.length===0?r="No sessions. Use + to create one, or run `hydra-acp launch <agent>` from your editor.":o.hostFilter==="__local"?r="No local sessions. Switch the host filter to see imported sessions.":o.hostFilter!=="__all"?r=`No sessions from ${Mu(o.hostFilter)}. Try a different host.`:r=`No warm sessions. ${t} cold session${t===1?"":"s"} hidden \u2014 click "warm" to switch to "all".`,s.appendChild(l("div",{class:"empty"},r))}for(let r of n){let i=l("div",{class:"group"});r.label&&i.appendChild(l("h2",null,r.label));for(let a of r.sessions)i.appendChild(ju(a,r.label===null));s.appendChild(i)}return s}function Ou(e,t){let n=a=>a.priority&&a.priority>0?a.priority:0,s=a=>{let c=a.status==="warm",u=n(a)>0;return c&&a.busy&&a.awaitingInput?6:c&&a.busy?5:c&&a.awaitingInput?4:c&&u?3:c?2:u?1:0},r=s(t)-s(e);if(r!==0)return r;let i=n(t)-n(e);return i!==0?i:String(t.updatedAt||"").slice(0,16).localeCompare(String(e.updatedAt||"").slice(0,16))}function An(e){return e.replace(/^\/(home|Users)\/[^/]+/,"~")}function Ts(e,t){return l("div",{class:"detail"},l("span",{class:"k"},e),l("code",null,t))}function Du(e,t){let n=l("input",{type:"checkbox",title:"Float this session to the top of the list",onchange:s=>{Pu(e,s.target.checked?1:null)}});return n.checked=(t??0)>0,l("div",{class:"detail"},l("span",{class:"k"},"high priority"),n)}async function Pu(e,t){try{await X(`/api/sessions/${encodeURIComponent(e)}/priority`,{method:"PATCH",body:JSON.stringify({priority:t})}),ke()}catch(n){M({banner:{kind:"bad",text:"priority update failed: "+n.message}})}}function Bu(e){let t=(n,s)=>l("button",{class:"ghost",...I(()=>Zo(n))},s);return e?l("div",{class:"detail"},l("span",{class:"k"},"workspace"),l("code",null,`${e.label}${e.clean===!1?" \xB7 dirty":""}`),t("sync","Sync"),t("stop","Stop"),t("apply","Apply")):l("div",{class:"detail"},l("span",{class:"k"},"workspace"),t("start","Start workspace"))}function Hu(){return l("div",{class:"detail"},l("span",{class:"k"},"hide thoughts"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:o.hideThoughts?"":void 0,onchange:e=>{M({hideThoughts:e.target.checked})}})))}function Fu(){return l("div",{class:"detail"},l("span",{class:"k"},"notify"),l("label",{class:"checkbox-label"},l("input",{type:"checkbox",checked:o.notifyOnTurnEnd?"":void 0,onchange:e=>{if(!e.target.checked){M({notifyOnTurnEnd:!1}),gi().then(()=>at());return}fi().then(n=>{if(!n){M({banner:{kind:"warn",text:"Notifications blocked \u2014 enable them for this site in your browser settings."}});return}M({notifyOnTurnEnd:!0}),mn().then(()=>at())})}})))}function ea(){let e=o.current?.sessionId;o.cacheInfo=e?"\u2026":"no session open",e&&Ro(e).then(t=>{o.cacheInfo=t,v()}),o.daemonVersion="\u2026",X("/api/health").then(t=>{o.daemonVersion=t.upstream?.version??"unknown",v()}).catch(()=>{o.daemonVersion="unreachable",v()}),M({modal:{kind:"options"}})}var $u=[{value:"system",label:"system"},{value:"dark",label:"dark"},{value:"light",label:"light"}],Uu=[{value:.85,label:"smaller"},{value:.95,label:"small"},{value:1,label:"normal"},{value:1.15,label:"large"},{value:1.3,label:"larger"},{value:1.5,label:"largest"}];function qu(){let e=l("select",{onchange:t=>{M({fontScale:Number(t.target.value)}),_n()}},...Uu.map(t=>l("option",{value:String(t.value)},t.label)));return e.value=String(o.fontScale),l("div",{class:"detail"},l("span",{class:"k"},"text size"),e)}function lt(e,t){let n=l("span",{class:"diag-value"},t);return l("div",{class:"detail diag-copy",title:"Tap to copy",...I(()=>{let r=()=>{let a=n.textContent;n.textContent="copied",setTimeout(()=>{n.textContent=a},1200)},i=`${e}: ${t}`;navigator.clipboard?.writeText?navigator.clipboard.writeText(i).then(r,()=>Li(n)):Li(n)})},l("span",{class:"k"},e),n)}function Li(e){let t=document.createRange();t.selectNodeContents(e);let n=window.getSelection();n?.removeAllRanges(),n?.addRange(t)}function zu(){return lt("cache",o.cacheInfo??"\u2026")}function Ku(){return lt("build","2026-09-07 04:14Z")}function Wu(){return lt("browser","0.1.48")}function Gu(){return lt("daemon",o.daemonVersion??"\u2026")}function Yu(){let e=l("select",{onchange:t=>{M({theme:t.target.value}),yn()}},...$u.map(t=>{let n=l("option",{value:t.value},t.label);return t.value===o.theme&&n.setAttribute("selected",""),n}));return e.value=o.theme,l("div",{class:"detail"},l("span",{class:"k"},"theme"),e)}function Qu(){return l("div",{class:"modal-bg",...I(e=>{e.target.classList.contains("modal-bg")&&be()})},l("div",{class:"modal"},l("h2",null,"Options"),Yu(),qu(),Hu(),Fu(),l("div",{class:"diagnostics"},Wu(),Gu(),Ku(),zu(),lt("slow",rr()),lt("paths",sr())),l("div",{class:"actions"},l("button",{class:"primary",...I(be)},"Close"))))}function Vu(e){let t=l("select",{onchange:n=>{li(e.id,n.target.value)}},...e.options.map(n=>{let s=l("option",{value:n.value},n.name||n.value);return n.value===e.currentValue&&s.setAttribute("selected",""),s}));return t.value=e.currentValue,l("div",{class:"detail"},l("span",{class:"k",title:e.description??""},e.name||e.id),t)}var Xu=500,ta=0;document.addEventListener("pointermove",e=>{e.target?.closest?.(".list")&&(ta=performance.now())});var Is=null;function Zu(e){let t=e.slice().sort(Ou);if(performance.now()-ta>Xu||!Is)return Is=t.map(r=>r.sessionId),t;let s=new Map(Is.map((r,i)=>[r,i]));return t.map((r,i)=>({s:r,i})).sort((r,i)=>{let a=s.get(r.s.sessionId),c=s.get(i.s.sessionId);return a!==void 0&&c!==void 0?a-c:a!==void 0?-1:c!==void 0?1:r.i-i.i}).map(r=>r.s)}function na(e,t){let n=Zu(e);if(t==="recent")return[{label:null,sessions:n}];let s=new Map;for(let i of n){let a=i.cwd||"(unknown)";s.has(a)||s.set(a,[]),s.get(a).push(i)}let r=[];for(let[i,a]of[...s.entries()].sort((c,u)=>c[0].localeCompare(u[0])))r.push({label:An(i),sessions:a});return r}function Ps(e){if(e.scrollTop<=0)return null;let t=e.getBoundingClientRect().top;for(let n of e.querySelectorAll(".card")){let s=n.getBoundingClientRect();if(s.bottom<=t)continue;let r=n.dataset.sessionId;return r?{sessionId:r,offset:s.top-t}:null}return null}function Bs(e,t){if(!t)return;let n=e.querySelector(`.card[data-session-id="${CSS.escape(t.sessionId)}"]`);if(!n)return;let s=n.getBoundingClientRect().top-e.getBoundingClientRect().top-t.offset;e.scrollTop+=s}function ju(e,t){let n=e.title||Ls(e.sessionId),s=[he(e.sessionId),qi(e.agentId,e.currentModel),`age ${Tu(e.updatedAt)}`].join(" \xB7 "),r=!e.busy&&(e.armedTasks??0)>0;return l("div",{class:e.sessionId===o.listHighlightedSessionId?"card highlighted":"card","data-session-id":e.sessionId,...I(i=>{i.target.closest("button")||Ms(e.sessionId,e.status==="cold")})},l("div",{class:"row1"},n),l("div",{class:"card-body"},l("div",{class:"meta"},l("div",{class:"row2"},s)),l("div",{class:"badges"},e.status==="cold"||!(e.busy||e.awaitingInput||r)?l("span",{class:`badge ${e.status==="cold"?"cold":"warm"}`,title:e.status==="cold"?"Disk-only \u2014 opening will resurrect the session":"Live in-memory session"},e.status==="cold"?"cold":"warm"):null,e.busy||r?l("span",{class:"badge busy",title:e.busy?"Agent is working":"Agent has a background task running. It may resume on its own."},"busy"):null,e.awaitingInput?l("span",{class:"badge blocked",title:"Waiting on you \u2014 a permission request or other prompt is pending"},"blocked"):null,...e.importedFromMachine&&!e.upstreamSessionId&&!e.remote&&!Cu(e.importedFromMachine)?[l("span",{class:"badge imported",title:`Passive mirror imported from ${e.importedFromMachine} \u2014 attach to start working on it here.`},`\u2190 ${e.importedFromMachine}`)]:[],...e.remote&&o.hostFilter!==`${$e}${e.remote}`?[l("span",{class:"badge remote",title:`Live on remote "${e.remote}" \u2014 attaching forwards through, nothing is copied here.`},`\u21C4 ${e.remote}`)]:[])),t?l("div",{class:"row3"},e.cwd?An(e.cwd):"?"):null,e.status!=="cold"?l("button",{class:"card-kill",title:"Kill this session",...I(()=>{Ju(e)})},"\xD7"):null)}async function Ju(e){if(confirm(`Kill session ${e.title?`"${e.title}" (${he(e.sessionId)})`:he(e.sessionId)}?`))try{await X("/api/kill",{method:"POST",body:JSON.stringify({sessionId:e.sessionId})}),ke()}catch(t){M({banner:{kind:"bad",text:"kill failed: "+t.message}})}}function ed(e){e.compactionPhase||confirm("Compact this session's context now? The agent will summarize history and continue from the summary.")&&jo()}function td(e){let t=document.createElement("a");t.href=`/api/sessions/${encodeURIComponent(e)}/export`,t.download="",t.rel="noopener",document.body.appendChild(t),t.click(),t.remove()}function nd(){let e=document.createElement("input");e.type="file",e.accept=".hydra,application/json",e.style.display="none",e.onchange=()=>{let t=e.files&&e.files[0];document.body.removeChild(e),t&&sd(t)},document.body.appendChild(e),e.click()}async function sd(e){let t;try{let s=await e.text();t=JSON.parse(s)}catch(s){M({banner:{kind:"bad",text:"import: bundle is not valid JSON: "+s.message}});return}let n=await ba(t);if(n.ok){let s=n.result;M({banner:{kind:"good",text:s.replaced?`Replaced ${he(s.sessionId)} from bundle`:`Imported as ${he(s.sessionId)}`}}),ke();return}if(n.status===409&&n.existingSessionId){let s=n.existingSessionId;if(!confirm(`This session is already imported locally as ${he(s)}.
691
698
 
692
- Replace it? (Any live attach will be closed.)`)){M({banner:{kind:"warn",text:"Import cancelled."}});return}try{let i=await ma(t,{replace:!0});M({banner:{kind:"good",text:`Replaced ${he(i.sessionId)} from bundle`}}),xe()}catch(i){M({banner:{kind:"bad",text:"import failed: "+i.message}})}return}M({banner:{kind:"bad",text:"import failed: "+n.message}})}var ta="hydra-acp-browser:lastCwd",na="hydra-acp-browser:cwdHistory",ed=20;function Hs(){try{let e=localStorage.getItem(na);if(e){let n=JSON.parse(e);if(Array.isArray(n))return n.filter(s=>typeof s=="string")}let t=localStorage.getItem(ta);return t?[t]:[]}catch{return[]}}function sa(){return Hs()[0]??null}function td(e){try{let t=Hs().filter(n=>n!==e);t.unshift(e),localStorage.setItem(na,JSON.stringify(t.slice(0,ed))),localStorage.removeItem(ta)}catch{}}function ra(){M({modal:{kind:"session",cwd:sa()??o.defaultCwd??"",agentId:"",name:"",prompt:"",err:null,busy:!1,remote:""}})}function nd(e){return l("div",{class:"modal-bg",...I(t=>{t.target.classList.contains("modal-bg")&&be()})},l("div",{class:"modal"},l("h2",null,"New session"),...o.remotes.length>0?[l("div",{class:"field"},l("label",{for:"f-remote"},"create on"),sd(e))]:[],l("div",{class:"field"},l("label",{for:"f-cwd"},e.remote?"cwd (optional)":"cwd"),l("input",{id:"f-cwd","data-focus-key":"session-modal-cwd",value:e.cwd,placeholder:e.remote?"leave blank to use the remote's default":"/home/you/dev/project",...e.remote?{}:{list:"f-cwd-history"},autocomplete:"off",oninput:t=>{e.cwd=t.target.value}}),e.remote?null:l("datalist",{id:"f-cwd-history"},...Hs().map(t=>l("option",{value:t})))),e.remote?null:l("div",{class:"field"},l("label",{for:"f-agent"},"agent"),rd(e)),l("div",{class:"field"},l("label",{for:"f-name"},"name (optional)"),l("input",{id:"f-name","data-focus-key":"session-modal-name",value:e.name,placeholder:"feature-x",oninput:t=>{e.name=t.target.value}})),l("div",{class:"field"},l("label",{for:"f-prompt"},"first prompt (optional)"),l("textarea",{id:"f-prompt","data-focus-key":"session-modal-prompt",rows:"4",placeholder:"What should the agent do first?",autocapitalize:"off",oninput:t=>{e.prompt=t.target.value}},e.prompt)),e.err?l("div",{class:"err"},e.err):null,l("div",{class:"actions"},l("button",{...I(be)},"Cancel"),l("button",{class:"primary",...I(od),disabled:e.busy},e.busy?"Creating\u2026":"Create"))))}function sd(e){let t=l("select",{id:"f-remote","data-focus-key":"session-modal-remote",onchange:s=>{let r=s.target.value;r&&!e.remote?e.cwd="":!r&&e.remote&&(e.cwd=sa()??o.defaultCwd??""),e.remote=r,_()}}),n=l("option",{value:""},"local");e.remote===""&&n.setAttribute("selected",""),t.appendChild(n);for(let s of o.remotes){let r=l("option",{value:s.name},s.status&&s.status!=="ok"?`${s.name} (${s.status})`:s.name);s.name===e.remote&&r.setAttribute("selected",""),t.appendChild(r)}return t}function rd(e){let t=l("select",{id:"f-agent","data-focus-key":"session-modal-agent",onchange:s=>{e.agentId=s.target.value}}),n=l("option",{value:""},"<default>");e.agentId===""&&n.setAttribute("selected",""),t.appendChild(n);for(let s of o.agents){let r=l("option",{value:s.id},s.id);s.id===e.agentId&&r.setAttribute("selected",""),t.appendChild(r)}return t}async function od(){let e=o.modal;if(!(!e||e.kind!=="session")){if(!e.remote&&!e.cwd){e.err="cwd is required",_();return}e.busy=!0,e.err=null,_();try{let t={};e.cwd&&(t.cwd=e.cwd),e.remote?t.remote=e.remote:e.agentId&&(t.agentId=e.agentId),e.name&&(t.name=e.name),e.prompt&&(t.prompt=e.prompt);let n=await X("/api/sessions",{method:"POST",body:JSON.stringify(t),timeoutMs:6e4});if(!e.remote&&e.cwd&&td(e.cwd),xe(),o.modal!==e)return;be(),n&&n.sessionId&&He(n.sessionId,!1)}catch(t){if(o.modal!==e)return;e.err=t.message,e.busy=!1,_()}}}function be(){M({modal:null})}function id(){!o.current?.models||o.current.models.length===0||M({modal:{kind:"models"}})}function Ri(e,t,n,s){return l("div",{class:"modal-bg",...I(r=>{r.target.classList.contains("modal-bg")&&be()})},l("div",{class:"modal"},l("h2",null,e),...t.map(r=>l("div",{class:"card",...I(()=>{s(r),be()})},l("div",{class:"meta"},l("div",{class:"row1"},r.name||r.id),l("div",{class:"row2"},r.id)),r.id===n?l("span",{class:"badge warm"},"current"):null)),l("div",{class:"actions"},l("button",{...I(be)},"Cancel"))))}var As=5;function ad(e){let t=e.armedTaskList;if(!t||t.length===0)return document.createTextNode("");let n=t.slice(0,As),s=Date.now();return l("div",{class:"armed-tasks"},...n.map(r=>l("div",{class:"armed-task"},l("span",{class:"dot"},"\u25D0"),l("span",{class:"label"},r.label.length>0?r.label:r.taskType??"background task"),l("span",{class:"elapsed"},Ui(s-r.since)))),t.length>As?l("div",{class:"armed-tasks-more"},`+${t.length-As} more`):null)}var xs=200,Ns=450,cd=250;function vn(e){let t=e.body;Math.abs(t.scrollTop-(t.scrollHeight-t.clientHeight))>1&&(t.scrollTop=t.scrollHeight)}function ld(e){e.stickToBottom=!0,e.reflowUntil=performance.now()+700,vn(e),requestAnimationFrame(()=>vn(e)),setTimeout(()=>vn(e),120),setTimeout(()=>{vn(e),e.reflowUntil=0;let t=e.body,n=t.scrollHeight-t.scrollTop-t.clientHeight<50;e.jump.classList.toggle("visible",!n),xn(t,e.turnToast)},450)}function Mt(e){if(!e.stickToBottom||e.touchActive)return;let t=performance.now();if(t-e.lastTouchEndAt<Ns||t-e.lastScrollAt<cd)return;let n=e.body,s=n.scrollHeight-n.clientHeight;Math.abs(n.scrollTop-s)>1&&(n.scrollTop=n.scrollHeight)}var Ae=new WeakMap;function oa(e){return Ae.get(e)?.root??null}function Ii(e){return Ae.get(e)?.body.scrollTop??0}function ud(e){let t=Ae.get(e);if(t)return t;let n=l("div",{class:"chat-body"}),s=l("button",{class:"jump-to-latest-btn",...I(()=>{n.scrollTop=n.scrollHeight,c.classList.remove("visible")})},"\u2193 Bottom"),r=l("button",{class:"jump-to-latest-btn icon",...I(()=>Tn("prev")),title:"Previous turn (Cmd/Ctrl+PageUp)"},"\u25B2"),i=l("button",{class:"jump-to-latest-btn icon",...I(()=>Tn("next")),title:"Next turn (Cmd/Ctrl+PageDown)"},"\u25BC"),a=l("div",{class:"turn-toast"}),c=l("div",{class:"jump-to-latest"},r,a,i,s),u=0;n.addEventListener("scroll",()=>{t.lastScrollAt=performance.now();let b=n.scrollHeight-n.scrollTop-n.clientHeight<50;performance.now()>=t.reflowUntil&&(t.stickToBottom=b),u&&cancelAnimationFrame(u),u=requestAnimationFrame(()=>{u=0,!(performance.now()<t.reflowUntil)&&(c.classList.toggle("visible",!b),xn(n,a))})},{passive:!0});let d=0;n.addEventListener("touchstart",()=>{t.touchActive=!0,d=n.scrollHeight},{passive:!0});let f=b=>{b.touches.length>0||(t.touchActive=!1,t.lastTouchEndAt=performance.now(),n.scrollHeight!==d&&(setTimeout(()=>Mt(t),Ns+50),setTimeout(()=>Mt(t),Ns+900)))};n.addEventListener("touchend",f,{passive:!0}),n.addEventListener("touchcancel",f,{passive:!0});let m=0,p=0;n.addEventListener("pointerdown",b=>{m=b.clientX,p=b.clientY},{passive:!0}),n.addEventListener("pointerup",b=>{if(Te(b.target)||Math.hypot(b.clientX-m,b.clientY-p)>zn)return;let y=document.activeElement;(y instanceof HTMLTextAreaElement||y instanceof HTMLInputElement)&&y.blur()},{passive:!0});let g=l("div",{class:"chat-slot"}),v=l("div",{class:"chat-slot"}),E=l("div",{class:"chat-slot"}),S=l("div",{class:"chat-slot"});{let T=null,N=null,R=!1,G=!1,B=()=>{let H=document.activeElement;G&&(H instanceof HTMLTextAreaElement||H instanceof HTMLInputElement)&&H.blur(),T=null,N=null,R=!1,G=!1};S.addEventListener("touchstart",H=>{T=null,N=null,R=!1,G=!1;let Y=document.activeElement;if(!(Y instanceof HTMLTextAreaElement||Y instanceof HTMLInputElement))return;let Z=H.touches[0];Z&&(T=Z.clientX,N=Z.clientY)},{passive:!0}),S.addEventListener("touchmove",H=>{if(T===null||N===null)return;let Y=H.touches[0];if(!Y)return;let Z=Y.clientX-T,j=Y.clientY-N;if(!R){if(Math.abs(Z)<10&&Math.abs(j)<10)return;if(Math.abs(Z)>Math.abs(j)||j<0){T=null,N=null;return}R=!0}G=j>=50},{passive:!0}),S.addEventListener("touchend",B,{passive:!0}),S.addEventListener("touchcancel",B,{passive:!0})}return t={root:l("div",{class:"chat"},g,v,E,n,S),body:n,jump:c,headerSlot:g,detailsSlot:v,armedSlot:E,composerSlot:S,stickToBottom:!0,touchActive:!1,lastTouchEndAt:0,lastScrollAt:0,reflowUntil:0,turnToast:a},Ae.set(e,t),t}var Li=new WeakMap;function dd(e){if(e.kind==="stream"){let t=e.queueEntry;return[e.text,e.role,e.synthetic??!1,e.closed??!1,kt.has(e),t?.status,t?.amendedByMessageId,t?.amendsMessageId,e.attachments?.length??0]}return e.kind==="system"||e.kind==="error"?[e.text]:e.kind==="edit-diff"?[e.diff,e.expanded,e.status]:e.kind==="exit-plan-mode"?[e.plan,e.status]:e.kind==="turn-stamp"?[e.elapsedMs,e.toolCount,e.stopReason]:null}var Oi="pre, table";function fd(e,t){if(!(e instanceof HTMLElement)||!(t instanceof HTMLElement))return;let n=e.querySelectorAll(Oi);if(n.length===0)return;let s=[];n.forEach((r,i)=>{(r.scrollLeft!==0||r.scrollTop!==0)&&s.push([i,r.scrollLeft])}),s.length!==0&&queueMicrotask(()=>{let r=t.querySelectorAll(Oi);for(let[i,a]of s){let c=r[i];c&&(c.scrollLeft=a)}})}function pd(e){let t=dd(e);if(t===null)return Pi(e);let n=Li.get(e);if(n&&n.sig.length===t.length&&n.sig.every((r,i)=>r===t[i]))return Qe("node-hit"),n.node;Qe(n?"node-resig":"node-new");let s=Pi(e);return n&&fd(n.node,s),Li.set(e,{node:s,sig:t}),s}function md(e,t){let n=new Set(t);for(let s=e.childNodes.length-1;s>=0;s--){let r=e.childNodes[s];n.has(r)||e.removeChild(r)}for(let s=0;s<t.length;s++){let r=t[s],i=e.childNodes[s]??null;i!==r&&e.insertBefore(r,i)}for(;e.childNodes.length>t.length;)e.removeChild(e.lastChild)}function gd(e,t){let n=t.body,s=!e.renderAllHistory&&e.log.length>xs,r=s?e.log.length-xs:0;if(s){let c=Math.max(0,e.log.length-xs*2);for(let u=r;u>=c;u--){let d=e.log[u];if(d&&d.kind==="stream"&&d.role==="user"){r=u;break}}}let i=s?e.log.slice(r):e.log,a=[];if(e.historyIsPartial&&!s&&a.push(l("button",{class:"show-earlier",...I(()=>yi(e))},"Load full history")),s){let c=r;a.push(l("button",{class:"show-earlier",...I(()=>{e.renderAllHistory=!0,_()})},`Show ${c} earlier message${c===1?"":"s"}`))}for(let c of i)o.hideThoughts&&c.kind==="stream"&&c.role==="thought"||a.push(pd(c));if(a.push(t.jump),md(n,a),e.pinAfterReplaySwap){e.pinAfterReplaySwap=!1,ld(t);return}Mt(t)}function Sn(e){let t=o.current?.scrollRestoreMessageId;if(!t)return!1;let n=e.querySelector(`[data-message-id="${CSS.escape(t)}"]`);return n?(n.scrollIntoView({block:"start"}),o.current.scrollRestoreMessageId=void 0,!0):!1}function ia(e,t){if(t.view!=="chat"||!t.current||t.banner||t.modal||t.current.fileOverlay)return!1;let n=Ae.get(t.current);if(!n)return!1;if(ee()){if(e.childNodes.length!==1)return!1;let s=e.firstElementChild;if(!s||!s.classList.contains("split"))return!1;let r=s.querySelector(":scope > .rail"),i=s.querySelector(":scope > .split-detail");return!r||!i||i.childNodes.length!==1||i.firstChild!==n.root?!1:(wu(r),In(t.current),Sn(n.body),!0)}return e.childNodes.length!==1||e.firstChild!==n.root?!1:(In(t.current),Sn(n.body),!0)}function aa(e){let t=Ae.get(e);t&&Mt(t)}function It(e){let t=Ae.get(e);t&&(t.stickToBottom=!0,Mt(t))}function xn(e,t){let n=Array.from(e.querySelectorAll(".msg.user"));if(n.length===0){t.textContent="";return}let s=e.getBoundingClientRect().top,r=1,i=-1;for(let a=n.length-1;a>=0;a--)if(n[a].getBoundingClientRect().top<s+r){i=a;break}t.textContent=i===-1?"Start":`Turn ${i+1} of ${n.length}`}function Tn(e){let t=document.querySelector(".chat-body");if(!t)return;let n=Array.from(t.querySelectorAll(".msg.user"));if(n.length===0){let u=t.clientHeight*.9;t.scrollBy({top:e==="next"?u:-u,behavior:"smooth"});return}let s=o.current?Ae.get(o.current):void 0,r=t.getBoundingClientRect().top,i=1,a=null,c=-1;if(e==="prev"){for(let u=n.length-1;u>=0;u--)if(n[u].getBoundingClientRect().top<r-i){a=n[u],c=u;break}a?(a.scrollIntoView({block:"start",behavior:"smooth"}),s&&(s.turnToast.textContent=`Turn ${c+1} of ${n.length}`)):(t.scrollTo({top:0,behavior:"smooth"}),s&&(s.turnToast.textContent="Start"));return}for(let u=0;u<n.length;u++)if(n[u].getBoundingClientRect().top>r+i){a=n[u],c=u;break}a?(a.scrollIntoView({block:"start",behavior:"smooth"}),s&&(s.turnToast.textContent=`Turn ${c+1} of ${n.length}`)):t.scrollTo({top:t.scrollHeight,behavior:"smooth"})}function In(e){let t=o.sessions.find(b=>b.sessionId===e.sessionId),n=t?.title||e.title||Ls(e.sessionId),s=t?.cwd||e.cwd,r=()=>{e.headerExpanded=!e.headerExpanded,_()},i=l("div",{class:"chat-header"},l("div",{class:"chat-title-row"},ee()?null:l("button",{class:"chat-back",title:"Back to session list",...I(()=>Fe())},"\u2190"),l("div",{class:"chat-title clickable",title:"Click for session details",...I(r)},n)),l("div",{class:"chat-header-row"},l("div",{class:"chat-header-pills",title:"Click for session details",...I(r)},!e.ready&&e.cold?l("span",{class:"pill cold clickable",title:"Session closed cold \u2014 sending a prompt will resurrect it",...I(r)},"cold"):e.ready?e.inTurn?l("span",{class:"pill working clickable",title:"Agent is working",...I(r)},l("span",{class:"dot"},"\u25CF"),"thinking"):e.armedTasks&&e.armedTasks>0?l("span",{class:"pill waiting clickable",title:e.armedSince?`Agent has a background task running (armed ${Math.max(1,Math.floor((Date.now()-e.armedSince)/6e4))}m ago). It may resume on its own.`:"Agent has a background task running. It may resume on its own.",...I(r)},l("span",{class:"dot"},"\u25CF"),"waiting"):l("span",{class:"pill ready clickable",title:"Ready for a prompt",...I(r)},l("span",{class:"dot"},"\u25CF"),"ready"):l("span",{class:"pill clickable",title:"Click for session details",...I(r)},"connecting\u2026"),t?.workspace?l("span",{class:"pill clickable",title:`In workspace "${t.workspace.label}" (source: ${An(t.workspace.sourceCwd)})`,...I(r)},"\u2387 "+t.workspace.label):null,e.model?l("span",{class:"pill clickable",title:"Model (click to change)",...I(id)},e.model):null,e.contextUsed!=null&&e.contextSize?l("span",{class:e.compactionPhase?"pill clickable compacting":"pill clickable",title:e.compactionPhase?e.compactionPhase==="deferred"?"Compaction queued \u2014 will run once the session is idle.":"Compacting\u2026":`${e.contextUsed.toLocaleString()} / ${e.contextSize.toLocaleString()} context tokens \u2014 click to compact`,...I(()=>Xu(e))},e.compactionPhase?e.compactionPhase==="deferred"?"\u23F3 queued":"\u25D0 compacting":`${ki(e.contextUsed)}/${ki(e.contextSize)}`):null,Mi(e.cost)?l("span",{class:"pill",title:"Session cost so far"},Mi(e.cost)):null),l("div",{class:"chat-header-actions"},ee()?null:l("button",{...I(ji),title:"Options"},"\u2699"),l("button",{...I(kd),title:"Files"},"\u{1F4C1}"),l("button",{title:"Export this session as a *.hydra bundle",...I(()=>Zu(e.sessionId))},"\u2B07")))),a=e.headerExpanded?l("div",{class:"chat-details"},Ts("title",n),Ts("session",he(e.sessionId)),Ts("directory",s||"?"),Nu(e.sessionId,t?.priority),Lu(t?.workspace),...e.configOptions.map(Wu)):null,c=ud(e),u=b=>{b.style.height="auto",b.style.height=b.scrollHeight+"px"},d=(b,y)=>{b.value=y,e.composerValue=y,rt(e.sessionId,y),u(b),b.setSelectionRange(y.length,y.length)},f=b=>{if(b.isComposing)return;if(b.key==="Escape"&&ee()&&!o.modal){b.preventDefault(),b.stopPropagation(),Ds();return}let y=b.target;if(b.key==="ArrowUp"&&!b.shiftKey&&!b.altKey&&!b.ctrlKey&&!b.metaKey&&y.selectionStart===0&&y.selectionEnd===0&&e.history.length>0){let T=e.historyIndex===null?0:Math.min(e.history.length-1,e.historyIndex+1);e.historyIndex===null&&(e.historyDraft=e.composerValue),e.historyIndex=T,b.preventDefault(),d(y,e.history[T]);return}if(b.key==="ArrowDown"&&!b.shiftKey&&!b.altKey&&!b.ctrlKey&&!b.metaKey&&y.selectionStart===y.value.length&&y.selectionEnd===y.value.length&&e.historyIndex!==null){if(b.preventDefault(),e.historyIndex>0)e.historyIndex-=1,d(y,e.history[e.historyIndex]);else{let T=e.historyDraft??"";e.historyIndex=null,e.historyDraft=null,d(y,T)}return}if(b.key==="Enter"&&!b.shiftKey){if(b.altKey||b.ctrlKey||b.metaKey){b.preventDefault(),qd(y,`
693
- `);return}b.preventDefault(),xt()}},m=()=>l("textarea",{"data-focus-key":"composer",placeholder:e.ready?"Message\u2026":e.cold?"Message\u2026 (wakes the session)":"Connecting\u2026",rows:"1",autocapitalize:"off",onkeydown:f,onpaste:b=>{let y=b.clipboardData?.items;if(!y)return;let T=[];for(let N of y){if(N.kind!=="file"||!N.type.startsWith("image/"))continue;let R=N.getAsFile();R&&T.push(R)}T.length!==0&&(b.preventDefault(),bu(e,T))},oninput:b=>{fa();let y=b.target;e.composerValue=y.value,rt(e.sessionId,y.value),e.historyIndex!==null&&(e.historyIndex=null,e.historyDraft=null),u(y);let T=y.value.trim().length>0||e.attachments.length>0,N=y.closest(".composer")?.querySelectorAll(".content-gated")??[];for(let R of N)R.classList.toggle("empty",!T)}},e.composerValue),p=c.composerTextarea,g=!p;if(p||(p=m(),c.composerTextarea=p),p.placeholder=e.ready?"Message\u2026":e.cold?"Message\u2026 (wakes the session)":"Connecting\u2026",p.value!==e.composerValue){p.value=e.composerValue;let b=p;queueMicrotask(()=>u(b))}else if(g&&e.composerValue.length>0){let b=p;queueMicrotask(()=>u(b))}!e.composerAutoFocused&&ir()&&(e.composerAutoFocused=!0,queueMicrotask(()=>p.focus()));let v=e.composerValue.trim().length>0||e.attachments.length>0,E=[];e.inTurn?(e.daemonSupportsAmend&&e.currentHeadMessageId!==void 0&&E.push(l("button",{class:`content-gated${v?"":" empty"}`,...I(ei),title:"Cancel the current turn and replace its prompt"},"Amend")),E.push(l("button",{class:`primary content-gated${v?"":" empty"}`,...I(xt),title:"Queue this prompt to run after the current turn"},"Enqueue"))):E.push(l("button",{class:`primary content-gated${v?"":" empty"}`,...I(xt)},"Send"));let S=l("div",{class:"composer"},Eu(e),p,l("div",{class:"composer-buttons"},l("button",{class:"stop",disabled:!e.inTurn&&!e.promptQueue.some(b=>b.status==="queued"||b.status==="pending"),...I(ri),title:"Cancel current turn"},"Stop"),...E));return c.headerSlot.replaceChildren(i),a!==null&&document.activeElement!==null&&c.detailsSlot.contains(document.activeElement)||(a?c.detailsSlot.replaceChildren(a):c.detailsSlot.replaceChildren()),c.armedSlot.replaceChildren(ad(e)),c.composerSlot.replaceChildren(S),gd(e,c),c.root}var Di=new WeakMap;function ca(e,t){let n=Di.get(e);if(n&&n.text===t)return n.html;let s=ss(t);return Di.set(e,{text:t,html:s}),s}function Pi(e){if(e.kind==="stream"){let t=e.role==="thought",n=e.role==="user"?"msg user":t?"msg system thought":"msg agent",s=t&&kt.has(e),r=l("div",{class:s?n+" collapsed":n,"data-message-id":e.messageId});t&&r.addEventListener("click",()=>{if(!!kt.has(e)){kt.delete(e),_();return}let c=document.querySelector(".chat-body"),u=c?.getBoundingClientRect(),d=r.getBoundingClientRect(),f=d.top-(u?.top??0)+(c?.scrollTop??0),p=!u||d.top>=u.top&&d.top<u.bottom?c?.scrollTop??0:f;kt.add(e),_(),requestAnimationFrame(()=>{let g=document.querySelector(".chat-body");g&&(g.scrollTop=p)})});let i=e.queueEntry;if(i&&i.amendedByMessageId!==void 0&&i.status==="amended"&&r.classList.add("amended-target"),i&&(i.status==="queued"||i.status==="pending"||i.status==="cancelled"||i.status==="editing"||i.status==="amended"||i.status==="offline")&&r.appendChild(wd(i)),i&&i.amendsMessageId!==void 0&&r.appendChild(l("span",{class:"amend-badge",title:"Merged amend \u2014 replaces the previous, cancelled prompt"},"+")),i&&i.status==="editing")r.classList.add("bubble-editing"),r.appendChild(Sd(i,a=>{e.text=a}));else{e.attachments&&e.attachments.length>0&&r.appendChild(l("div",{class:"attachment-thumbs"},...e.attachments.map(c=>l("img",{class:"attachment-thumb",src:Fi(c)}))));let a=l("div",{class:e.synthetic?"body raw":"body"});e.synthetic?a.textContent=e.text:a.innerHTML=ca(e,e.text),i&&i.status==="cancelled"&&(a.style.textDecoration="line-through",a.style.opacity="0.6"),r.appendChild(a),e.role==="user"&&e.sentAt!==void 0&&r.appendChild(l("div",{class:"msg-time"},Rs(e.sentAt)))}return r}if(e.kind==="system"){let t=e.at!==void 0?`${e.text} \xB7 ${Rs(e.at)}`:e.text;return l("div",{class:"msg system"},t)}if(e.kind==="error")return l("div",{class:"msg error"},e.text);if(e.kind==="spinner")return Id(e.spinner);if(e.kind==="turn-stamp")return Td(e);if(e.kind==="perm"){if(!o.current)return document.createTextNode("");let t=o.current.pendingPermissions.get(e.toolCallId);return t?xd(t):document.createTextNode("")}return e.kind==="plan"?Cd(e.entries):e.kind==="exit-plan-mode"?_d(e):e.kind==="edit-diff"?yd(e):document.createTextNode("")}function hd(e){return e==="+"?"diff-line hljs-addition":e==="-"?"diff-line hljs-deletion":e==="gap"?"diff-line diff-gap":"diff-line"}function bd(e){return e==="+"?"+ ":e==="-"?"- ":e==="gap"?"":" "}var Bi=new WeakMap;function Ed(e){let t=Bi.get(e);return t||(t={counts:Ao(e)},Bi.set(e,t)),t}function yd(e){let t=Ed(e.diff),n=t.counts,s=e.diff.path?An(e.diff.path):"file",r=[];n.added>0&&r.push(l("span",{class:"add"},`+${n.added}`)),n.removed>0&&r.push(l("span",{class:"del"},`-${n.removed}`));let i=l("div",{class:"head",...I(()=>{e.expanded=!e.expanded,_()})},l("span",null,e.expanded?"\u25BE":"\u25B8"),l("span",{class:"title"},`Edited ${s}`),r.length>0?l("span",{class:"kind edit-summary"},r):null),a=l("div",{class:e.expanded?"toolcard open":"toolcard"},i);if(e.expanded){let c=t.lines??(t.lines=xo(e.diff));a.appendChild(l("div",{class:"body"},l("pre",null,l("code",{class:"diff-body"},c.map(u=>l("div",{class:hd(u.op)},bd(u.op)+u.text))))))}return a}function _d(e){let t=l("div",{class:"msg agent plan-markdown"});t.appendChild(l("div",{class:"plan-header"},"\u{1F4CB} Plan"));let n=l("div",{class:"body"});n.innerHTML=ca(e,e.plan),t.appendChild(n);let s=vd(e.status);return s!==null&&t.appendChild(s),t}function vd(e){if(e===void 0)return null;switch(e){case"completed":case"succeeded":case"ok":return l("div",{class:"plan-status plan-status-ok"},"\u2713 Approved");case"failed":case"error":case"rejected":return l("div",{class:"plan-status plan-status-fail"},"\u2717 Rejected");case"cancelled":return l("div",{class:"plan-status plan-status-cancelled"},"\u229D Cancelled");case"pending":case"in_progress":case"running":case"updated":return l("div",{class:"plan-status plan-status-pending"},"awaiting approval\u2026");default:return null}}function wd(e){if(e.status==="queued"||e.status==="pending"){let t=e.status==="pending"?"sending\u2026":`queued \xB7 ${Math.max(1,e.aheadAtEnqueue)} ahead`+(e.held?" \xB7 held: agent resumed":""),n=e.status==="queued"&&e.messageId!==void 0&&o.current!==null&&o.current.daemonSupportsAmend&&o.current.currentHeadMessageId!==void 0&&o.current.inTurn;return l("div",{class:"queue-chip queue-queued"},l("span",null,t),n?l("button",{class:"queue-edit",...I(()=>jo(e)),title:"Send now \u2014 amends the running turn instead of waiting"},l("span",{class:"queue-btn-glyph"},"+")):null,l("button",{class:"queue-edit",...I(()=>{e.status="editing",_()}),title:"Edit before sending"},l("span",{class:"queue-btn-glyph"},"\u270E")),l("button",{class:"queue-cancel",...I(()=>fn(e)),title:"Cancel before sending"},l("span",{class:"queue-btn-glyph"},"\xD7")))}return e.status==="editing"?l("div",{class:"queue-chip queue-editing"},l("span",null,"editing \u2014 Save or Cancel below")):e.status==="processing"?l("div",{class:"queue-chip queue-processing"},l("span",{class:"dot"}),l("span",null,"processing")):e.status==="cancelled"?l("div",{class:"queue-chip queue-cancelled"},l("span",null,"cancelled")):e.status==="amended"?l("div",{class:"queue-chip queue-amended"},l("span",null,"amended \u2014 merged into the next prompt")):e.status==="offline"?l("div",{class:"queue-chip queue-offline"},l("span",null,"pending"),l("button",{class:"queue-edit",...I(()=>{e.editReturnStatus="offline",e.status="editing",_()}),title:"Edit before sending"},l("span",{class:"queue-btn-glyph"},"\u270E")),l("button",{class:"queue-cancel",...I(()=>fn(e)),title:"Discard, this was never sent"},l("span",{class:"queue-btn-glyph"},"\xD7"))):document.createTextNode("")}function Sd(e,t){let n=l("textarea",{class:"queue-edit-area",rows:"1",autocapitalize:"off"});n.value=e.text;let s=()=>{n.style.height="auto",n.style.height=`${n.scrollHeight}px`};n.addEventListener("input",s);let r=()=>{e.status=e.editReturnStatus??"queued",e.editReturnStatus=void 0},i=()=>{let c=n.value;e.text=c,t(c),r(),Jo(e,c),_()},a=()=>{r(),_()};return n.addEventListener("keydown",c=>{c.key==="Enter"&&!c.shiftKey?(c.preventDefault(),i()):c.key==="Escape"&&(c.preventDefault(),a())}),queueMicrotask(()=>{s(),n.focus(),n.setSelectionRange(n.value.length,n.value.length)}),l("div",{class:"queue-editor"},n,l("div",{class:"queue-editor-actions"},l("button",{class:"ghost",...I(a)},"Cancel"),l("button",{class:"primary",...I(i)},"Save")))}function Rs(e){let t=new Date(e),n=t.getFullYear()===new Date().getFullYear(),s=t.toLocaleDateString(void 0,n?{month:"short",day:"numeric"}:{month:"short",day:"numeric",year:"numeric"}),r=t.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"});return`${s}, ${r}`}function wn(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m ${t%60}s`:`${Math.floor(n/60)}h ${n%60}m`}function Td(e){let t=e.stopReason!==void 0&&e.stopReason!=="end_turn",n=t?`stopped (${e.stopReason}) \xB7 ${wn(e.elapsedMs)}`:e.toolCount>0?`${e.toolCount} tool${e.toolCount===1?"":"s"} \xB7 took ${wn(e.elapsedMs)}`:`thought \xB7 ${wn(e.elapsedMs)}`;return l("div",{class:t?"turn-stamp bad":"turn-stamp"},`${n} \xB7 ${Rs(e.endedAt)}`)}function Id(e){let t=l("button",{class:"queue-cancel",...I(()=>si()),title:"Cancel this turn"},l("span",{class:"queue-btn-glyph"},"\xD7")),n=wn(Date.now()-e.startedAt);if(!e.expanded)return l("div",{class:"spinner",...I(()=>{e.expanded=!0,_()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,e.sending?"sending\u2026":e.toolCallIds.length===0?`thinking \xB7 ${n}`:`working \u2014 ${e.toolCallIds.length} tool call${e.toolCallIds.length===1?"":"s"} \xB7 ${n}`),t));let s=e.toolCallIds.map(r=>{let i=o.current?.toolCalls.get(r);if(!i)return null;let a=i.status==="completed"||i.status==="success"?"\u2705":i.status==="failed"||i.status==="error"?"\u274C":"\u25B6";return l("li",null,l("span",{class:"icon"},a),document.createTextNode(" "+i.title))});return l("div",{class:"spinner expanded",...I(()=>{e.expanded=!1,_()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,e.sending?"sending\u2026":`working \xB7 ${n}`),t),l("ul",null,s))}function Ad(e){let t=f=>typeof f=="string"&&f.length>0?f:void 0,n=[],s=(f,m)=>l("div",{class:"detail"},l("span",{class:"k"},f),l("code",null,m)),r=t(e.kind);r&&n.push(s("kind",r));let i=new Set,a=[],c=f=>{let m=t(f);m&&!i.has(m)&&(i.add(m),a.push(m))},u=e.locations;if(Array.isArray(u))for(let f of u)f&&typeof f=="object"&&c(f.path);let d=e.rawInput&&typeof e.rawInput=="object"?e.rawInput:void 0;d&&(c(d.file_path),c(d.filePath),c(d.path));for(let f of a)n.push(s("path",f));if(d){let f=t(d.command);f&&n.push(s("command",f));let m=t(d.url);m&&n.push(s("url",m));let p=t(d.description);p&&n.push(l("div",{class:"detail note"},p))}return n}function xd(e){let t=e.toolCall||{};return l("div",{class:"perm"},l("div",{class:"title"},"\u{1F512} Permission requested"),l("div",{class:"desc"},t.title||t.name||"tool call"),Ad(t),l("div",{class:"opts"},...e.options.map(n=>l("button",{class:n.kind?.startsWith("allow")?"primary":n.kind?.startsWith("reject")?"danger":"",...I(()=>ms(e.toolCallId,n.optionId))},n.name||n.optionId)),l("button",{...I(()=>ms(e.toolCallId,"__cancel__"))},"Cancel")))}function Cd(e){return Array.isArray(e)?l("div",{class:"msg agent"},l("div",{class:"body"},l("strong",null,"Plan")),l("ul",null,...e.map(t=>l("li",null,`${t.status==="completed"?"\u2713":t.status==="in_progress"?"\u25B8":"\xB7"} ${t.content||t.title||""}`)))):document.createTextNode("")}function kd(){let e=o.current;if(!e)return;let t=e.savedFileView;e.fileOverlay={path:"",entries:[],preview:null,err:null,maximized:t?.maximized??!1,previewRaw:t?.previewRaw??!1},_(),t?.previewPath?Md(e,t.dirPath,t.previewPath,t.previewRaw):Nt(t?.dirPath??"")}async function Md(e,t,n,s){let[r,i]=await Promise.allSettled([X("/api/files/list",{method:"POST",body:JSON.stringify({sessionId:e.sessionId,path:t})}),X("/api/files/read",{method:"POST",body:JSON.stringify({sessionId:e.sessionId,path:n})})]);if(o.current!==e||!e.fileOverlay)return;let a=e.fileOverlay.maximized,c=r.status==="rejected"?r.reason.message:null,u=i.status==="rejected"?i.reason.message:null;e.fileOverlay={path:r.status==="fulfilled"?r.value.path:t,entries:r.status==="fulfilled"?r.value.entries??[]:[],preview:i.status==="fulfilled"?{path:n,content:i.value.content}:null,err:u??c,maximized:a,previewRaw:s},_()}function Nd(){let e=o.current?.fileOverlay;e&&(e.maximized=!e.maximized,_())}function Rd(e){let t=e.split(".").pop()?.toLowerCase()??"";return t==="md"||t==="markdown"}function Ld(){let e=o.current?.fileOverlay;e&&(e.previewRaw=!e.previewRaw,_())}async function Nt(e){if(!o.current)return;let t=o.current.fileOverlay?.maximized??!1;try{let n=await X("/api/files/list",{method:"POST",body:JSON.stringify({sessionId:o.current.sessionId,path:e})});o.current.fileOverlay={path:n.path,entries:n.entries??[],preview:null,err:null,maximized:t,previewRaw:!1},_()}catch(n){o.current.fileOverlay={path:e,entries:[],preview:null,err:n.message,maximized:t,previewRaw:!1},_()}}async function Od(e){if(o.current)try{let t=await X("/api/files/read",{method:"POST",body:JSON.stringify({sessionId:o.current.sessionId,path:e})}),n=o.current.fileOverlay;o.current.fileOverlay={path:n.path,entries:n.entries,preview:{path:e,content:t.content},err:null,maximized:n.maximized,previewRaw:!1},_()}catch(t){o.current.fileOverlay&&(o.current.fileOverlay={...o.current.fileOverlay,err:t.message}),_()}}function Hi(){let e=o.current;if(!e)return;let t=e.fileOverlay;t&&(e.savedFileView={dirPath:t.path,previewPath:t.preview?.path??null,previewRaw:t.previewRaw,maximized:t.maximized}),e.fileOverlay=null,_()}function Dd(e){if(!o.current?.fileOverlay)return;let t=o.current.fileOverlay,n=t.path?`${t.path}/${e.name}`:e.name;e.kind==="dir"?Nt(n):e.kind==="file"&&Od(n)}function Pd(e){let t=e?e.split("/").filter(Boolean):[],n=[l("span",{class:"crumb",...I(()=>Nt(""))},".")],s="";for(let r of t){s=s?`${s}/${r}`:r;let i=s;n.push(document.createTextNode(" / ")),n.push(l("span",{class:"crumb",...I(()=>Nt(i))},r))}return l("div",{class:"crumbs"},n)}function Bd(e){if(!o.current)return;let t=o.current.composerValue;o.current.composerValue=t?`${t} ${e}`:e,rt(o.current.sessionId,o.current.composerValue),_()}function Hd(e){let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.top="-1000px",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();let n=!1;try{n=document.execCommand("copy")}catch{n=!1}return document.body.removeChild(t),n}function la(e,t,n){let s=()=>{t.textContent="copied",setTimeout(n,900)},r=()=>{Hd(e)?s():Bd(e)};navigator.clipboard?.writeText?navigator.clipboard.writeText(e).then(s,r):r()}function ua(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function Fd(e,t,n,s){let r=String(n);la(`${ua(e,t)}:${n}`,s,()=>{s.textContent=r})}function $d(e,t){let n=l("div",{class:"crumb path-crumb",title:"Copy path",...I(()=>la(ua(e,t),n,()=>{n.textContent=t}))},t);return n}function Ud(){o.current?.fileOverlay&&(o.current.fileOverlay.preview=null,_())}function da(e){let t=e.fileOverlay;if(!t)return document.createTextNode("");let n;if(t.preview){let{path:s,content:r}=t.preview,i=Rd(s),a=i&&!t.previewRaw,c=[l("span",{class:"crumb",...I(()=>Ud())},"\u2190 back to listing")];i&&(c.push(l("span",{class:"crumb-sep"},"\xB7")),c.push(l("span",{class:"crumb",...I(()=>Ld())},a?"view source":"view rendered")));let u;if(a)u=l("div",{class:"md-view",html:ss(r)});else{let d=yo(r,s)??ie(r),f=r.split(`
694
- `).length,m=l("div",{class:"code-gutter"});for(let p=1;p<=f;p++){let g=p,v=l("div",{class:"ln",title:"Copy path:line",...I(()=>Fd(e.cwd,s,g,v))},String(g));m.appendChild(v)}u=l("div",{class:"code-view"},m,l("pre",{},l("code",{class:"hljs",html:d})))}n=l("div",{class:"preview"},l("div",{class:"crumbs preview-crumbs"},l("div",{class:"crumbs-actions"},c),$d(e.cwd,s)),u)}else n=l("div",{class:"body"},t.err?l("div",{class:"msg error"},t.err):null,t.path?l("div",{class:"entry",...I(()=>Nt(t.path.split("/").slice(0,-1).join("/")))},l("span",{class:"icon"},"\u25B8"),l("span",{class:"name"},".."),l("span",{class:"size"},"")):null,...t.entries.map(s=>l("div",{class:"entry",...I(()=>Dd(s))},l("span",{class:"icon"},s.kind==="dir"?"\u25B8":"\xB7"),l("span",{class:"name"},s.name),l("span",{class:"size"},s.kind==="file"?`${s.size}b`:""))));return l("div",{class:"modal-bg",...I(s=>{s.target.classList.contains("modal-bg")&&Hi()})},l("div",{class:t.maximized?"modal file-modal maximized":"modal file-modal"},l("div",{class:"topbar",style:"border-bottom:1px solid var(--border)"},l("span",{class:"title"},"Files"),l("span",{class:"pill"},e.cwd),l("span",{class:"spacer"}),l("button",{...I(Nd),title:t.maximized?"Restore":"Maximize"},t.maximized?"\u2921":"\u2922"),l("button",{...I(Hi)},"\xD7")),t.preview?null:Pd(t.path),l("div",{class:"files"},n)))}function qd(e,t){e.focus();let n=!1;if(typeof document.execCommand=="function")try{n=document.execCommand("insertText",!1,t)}catch{n=!1}if(!n){let s=e.selectionStart??e.value.length,r=e.selectionEnd??e.value.length,i=e.value.slice(0,s),a=e.value.slice(r);e.value=i+t+a;let c=s+t.length;e.setSelectionRange(c,c),e.dispatchEvent(new Event("input",{bubbles:!0}))}}var $s=!1,zd=100,qs=0,Ce=!1,Ee=!1,dt=!1,Ks=!1,zs=!1;document.addEventListener("focusin",e=>{e.target?.tagName==="SELECT"&&(Ks=!0)},!0);document.addEventListener("focusout",e=>{e.target?.tagName==="SELECT"&&(Ks=!1,zs&&(zs=!1,setTimeout(_,300)))},!0);var Cn=!1,ut;function hi(){ut!==void 0&&clearTimeout(ut),Cn=!0,ut=setTimeout(()=>gs(),4e3)}function gs(){ut!==void 0&&(clearTimeout(ut),ut=void 0),Cn&&(Cn=!1,Ee=!1,ct())}function ha(){dt=!0}function Ws(){dt=!1,Ee&&(Ee=!1,_())}document.addEventListener("pointerdown",()=>{Ce=!0},!0);document.addEventListener("pointerup",e=>{if(!Ce||(Ce=!1,qe!==void 0&&(clearTimeout(qe),qe=void 0),!Ee)||dt)return;if(Ee=!1,Ve()){kn=!0;return}let n=e.target?.tagName;if(n==="TEXTAREA"||n==="INPUT"||n==="SELECT"){setTimeout(_,300);return}_()},!0);var kn=!1;document.addEventListener("selectionchange",()=>{!kn||Ve()||(kn=!1,_())});document.addEventListener("pointercancel",()=>{Ce=!1,Ee&&!dt&&(Ee=!1,_())},!0);var ba=250,Ea=0;function fa(){Ea=performance.now()}function Gs(){let e=document.activeElement;return!(e instanceof HTMLTextAreaElement)&&!(e instanceof HTMLInputElement)?!1:performance.now()-Ea<ba}var Us=!1,Kd=700,qe;function ct(){qs=0,_()}function _(){if($s)return;$s=!0;let e=performance.now()-qs,t=Math.max(0,zd-e),n=()=>{if($s=!1,Ce||dt||Cn){Ee=!0,Ce&&(qe!==void 0&&clearTimeout(qe),qe=setTimeout(()=>{qe=void 0,Ce&&(Ce=!1,Ee&&!dt&&(Ee=!1,_()))},Kd));return}if(Ks){zs=!0;return}if(Gs()){Us=!0,setTimeout(()=>{Us&&(Us=!1,_())},ba);return}if(Ve()){kn=!0;return}qs=performance.now(),Se("render",Wd)};t>0?setTimeout(()=>requestAnimationFrame(n),t):requestAnimationFrame(n)}function Wd(){let e=document.getElementById("app");if(!e)return;let t=document.activeElement,n=null,s=null,r=null;if(t&&t!==document.body&&t.dataset&&t.dataset.focusKey&&(n=t.dataset.focusKey,"selectionStart"in t))try{s=t.selectionStart,r=t.selectionEnd}catch{}let i=()=>{if(!n)return;let y=e.querySelector(`[data-focus-key="${CSS.escape(n)}"]`);if(!y)return;y.focus();let T=y;if(s!==null&&typeof T.setSelectionRange=="function")try{T.setSelectionRange(s,r)}catch{}};if(ia(e,o)){Qe("patch"),i();return}Qe("teardown");let a=e.querySelector(".chat-body"),c=a?a.scrollTop:null,u=e.querySelector(".list"),d=u?u.scrollTop:null,f=u?Ps(u):null,m=e.querySelector(".files .body"),p=m?m.scrollTop:null,g=e.querySelector(".files .preview"),v=g?g.scrollTop:null;e.replaceChildren(),qi(e,o);let E=e.querySelector(".chat-body");if(E){!Sn(E)&&c!==null&&(E.scrollTop=c),o.current&&aa(o.current);let y=E.querySelector(".jump-to-latest");if(y){let N=E.scrollHeight-E.scrollTop-E.clientHeight<50;y.classList.toggle("visible",!N)}let T=E.querySelector(".turn-toast");T&&xn(E,T)}let S=e.querySelector(".list");S&&(f?Bs(S,f):d!==null&&(S.scrollTop=d));let A=e.querySelector(".files .body");A&&p!==null&&(A.scrollTop=p);let b=e.querySelector(".files .preview");b&&v!==null&&(b.scrollTop=v),i()}var ya="hydra-acp-browser:filters",_a=["groupBy","showCold","hostFilter","hideThoughts","notifyOnTurnEnd","theme","fontScale","railWidth","lastSessionId"];function Gd(){try{let e=localStorage.getItem(ya);return e?JSON.parse(e):{}}catch{return{}}}function Yd(){try{let e={};for(let t of _a)e[t]=o[t];localStorage.setItem(ya,JSON.stringify(e))}catch{}}var o={view:"list",sessions:[],agents:[],remotes:[],defaultCwd:null,groupBy:"recent",showCold:!0,sessionSearch:"",fontScale:1,railWidth:null,hostFilter:"__local",listHighlightedSessionId:null,hideThoughts:!1,notifyOnTurnEnd:!1,theme:"dark",banner:null,modal:null,current:null,lastSessionId:null,...Gd()},Qd=["sessions","groupBy","showCold","hostFilter","listHighlightedSessionId","sessionSearch"],Mn=!0;function va(){Mn=!0}function pa(){return Mn}function Fs(){Mn=!1}function M(e){let t=!1,n=!1;for(let s of Object.keys(e)){let r=e[s];Ys(o[s],r)||(o[s]=r,t=!0,_a.includes(s)&&(n=!0),Qd.includes(s)&&(Mn=!0))}n&&Yd(),t&&_()}function Ys(e,t){return e===t?!0:e===null||t===null||typeof e!=typeof t||typeof e!="object"?!1:JSON.stringify(e)===JSON.stringify(t)}function wa(e,t,n){if(!n)return t.sessions;let s=new Map(e.map(r=>[r.sessionId,r]));for(let r of s.values())r.status!=="cold"&&s.delete(r.sessionId);for(let r of t.removed)s.delete(r);for(let r of t.sessions)s.set(r.sessionId,r);return[...s.values()]}var Vd="hydra-acp-session-cache";var pt="cache",Ia="sessions";function Xd(e){let t=[];for(let n of e)n.status!=="warm"&&(n.remote||t.push({sessionId:n.sessionId,cwd:n.cwd,agentId:n.agentId,currentModel:n.currentModel,title:n.title,status:n.status,busy:n.busy,awaitingInput:n.awaitingInput,priority:n.priority,importedFromMachine:n.importedFromMachine,upstreamSessionId:n.upstreamSessionId,armedTasks:n.armedTasks,updatedAt:n.updatedAt}));return t}var Nn=null;function Aa(){return Nn||(Nn=new Promise(e=>{if(!("indexedDB"in window)){e(null);return}let t;try{t=indexedDB.open(Vd,1)}catch{e(null);return}t.onupgradeneeded=()=>{t.result.objectStoreNames.contains(pt)||t.result.createObjectStore(pt,{keyPath:"key"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}),Nn)}async function xa(){let e=await Aa();return e?new Promise(t=>{let n;try{n=e.transaction(pt,"readonly")}catch{t(null);return}let s=n.objectStore(pt).get(Ia);s.onsuccess=()=>{let r=s.result;if(!r||!Array.isArray(r.sessions)||typeof r.cursor!="number"){t(null);return}t({sessions:r.sessions,cursor:r.cursor})},s.onerror=()=>t(null)}):null}var Qs,ft,Sa=Promise.resolve();function Ca(e,t){Qs={sessions:e,cursor:t},ft===void 0&&(ft=setTimeout(()=>{ft=void 0,ka()},2e3))}function Ta(){ft!==void 0&&(clearTimeout(ft),ft=void 0),ka()}function ka(){Sa=Sa.then(Zd).catch(()=>{})}async function Zd(){let e=Qs;if(!e)return;Qs=void 0;let t=await Aa();if(!t)return;let n={key:Ia,sessions:Xd(e.sessions),cursor:e.cursor};return new Promise(s=>{let r;try{r=t.transaction(pt,"readwrite")}catch{s();return}r.objectStore(pt).put(n),r.oncomplete=()=>s(),r.onerror=()=>s()})}typeof window<"u"&&typeof document<"u"&&(window.addEventListener("pagehide",Ta),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Ta()}));function jd(){let e=window.getSelection();return!e||e.isCollapsed?!1:e.toString().length>0}async function X(e,t){let{timeoutMs:n,...s}=t??{},r=n!==void 0?new AbortController:void 0,i=r!==void 0?setTimeout(()=>r.abort(),n):void 0,a;try{a=await fetch(e,{credentials:"same-origin",headers:{"Content-Type":"application/json"},...r?{signal:r.signal}:{},...s})}catch(c){throw r?.signal.aborted?new Error("timed out \u2014 it may still have completed; check the session list"):c}finally{i!==void 0&&clearTimeout(i)}if(!a.ok){let c=`${a.status} ${a.statusText}`;try{let u=await a.json();u&&u.error&&(c=u.error)}catch{}throw new Error(c)}return a.status===204?null:await a.json()}var Vs=null,Rt;async function Ma(){let e=await xa();e&&(o.sessions=e.sessions,Rt=e.cursor||void 0)}async function xe(){if(!Gs()){if(o.view==="chat"&&o.current&&!ee()){await Jd(o.current.sessionId);return}await ef()}}function Na(e){e.status==="warm"&&o.current&&o.current.sessionId===e.sessionId&&o.current.cold&&En()}async function Jd(e){try{let t=await X(`/api/sessions/${encodeURIComponent(e)}`),n=o.sessions.findIndex(r=>r.sessionId===e);if(n>=0?o.sessions[n]=t:o.sessions.push(t),!o.current||o.current.sessionId!==e)return;Na(t);let s=`${t.title}|${t.cwd}|${t.agentId}|${t.currentModel}|${t.workspace?.label}|${t.workspace?.vcs?.branch}|${t.workspace?.clean}`;s!==o.current._lastMetaFp&&(o.current._lastMetaFp=s,_())}catch{}}async function ef(){try{let e=Rt!==void 0,t=e?`/api/sessions?since=${Rt}`:"/api/sessions",n=await X(t),s={sessions:n.sessions??[],removed:n.removed??[],cursor:n.cursor??0},r=wa(o.sessions,s,e);Rt=s.cursor,(s.removed.length>0||s.sessions.some(c=>c.status==="cold"))&&Ca(r,Rt);let i=o.banner!==null,a=!Ys(o.sessions,r);if(o.sessions=r,o.banner=null,o.current){let c=r.find(u=>u.sessionId===o.current.sessionId);c&&Na(c)}if(a&&va(),!a&&!i||!i&&jd()||!i&&o.modal)return;_()}catch(e){M({banner:{kind:"bad",text:"session list failed: "+e.message}})}}function Ra(){Vs&&clearInterval(Vs),xe(),Vs=setInterval(()=>{xe()},2e3)}async function La(){try{let e=await X("/api/agents");M({agents:e.agents??[]})}catch(e){M({banner:{kind:"warn",text:"agents unavailable: "+e.message}})}}async function Oa(){try{let e=await X("/api/remotes");M({remotes:e.remotes??[]})}catch{M({remotes:[]})}}async function Da(){try{let e=await X("/api/config");M({defaultCwd:e.defaultCwd??null})}catch{}}async function ma(e,t={}){return X("/api/sessions/import",{method:"POST",body:JSON.stringify({bundle:e,replace:t.replace===!0})})}async function ga(e){let t=await fetch("/api/sessions/import",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({bundle:e})});if(t.ok)return{ok:!0,result:await t.json()};let n,s=`${t.status} ${t.statusText}`;try{let r=await t.json();r.existingSessionId&&(n=r.existingSessionId),r.error&&(s=r.error)}catch{}return{ok:!1,status:t.status,message:s,existingSessionId:n}}var Pa=70,tf=110,Rn=null,Ln=null,gt=!1,ze=!1,mt=null;function Zs(){return mt||(mt=document.createElement("div"),mt.className="pull-refresh",document.body.appendChild(mt),mt)}function nf(e){let t=Zs(),n=Math.max(0,Math.min(e,tf));ze=n>=Pa,t.style.opacity=n>0?String(Math.min(n/Pa,1)):"0",t.style.transform=`translate(-50%, ${n>0?n-32:-48}px)`,t.textContent=ze?"\u2191 Release to refresh":"\u2193 Pull to refresh"}function Xs(){let e=Zs();e.style.opacity="0",e.style.transform="translate(-50%, -48px)"}function Ha(){return document.querySelector(".list")}function sf(e){if(gt=!1,ze=!1,o.view!=="list")return;let t=Ha(),n=e.touches[0];!t||!n||t.scrollTop>0||!t.contains(n.target)||(Rn=n.clientX,Ln=n.clientY,gt=!0)}function rf(e){if(!gt||Rn===null||Ln===null)return;let t=Ha(),n=e.touches[0];if(!t||!n)return;let s=n.clientY-Ln,r=n.clientX-Rn;if(Math.abs(r)>Math.abs(s)){Xs(),gt=!1,ze=!1;return}if(s<=0||t.scrollTop>0){Xs(),ze=!1;return}e.preventDefault(),nf(s)}function Ba(){if(gt&&ze){let e=Zs();e.textContent="Refreshing\u2026",location.reload()}else Xs();gt=!1,ze=!1,Rn=null,Ln=null}function Fa(){document.addEventListener("touchstart",sf,{passive:!0}),document.addEventListener("touchmove",rf,{passive:!1}),document.addEventListener("touchend",Ba,{passive:!0}),document.addEventListener("touchcancel",Ba,{passive:!0})}var js=80,$a=12,Js=.25,ke=220;function of(e){let t=e instanceof Element?e:null;for(;t&&t!==document.body;){if(t.scrollWidth>t.clientWidth&&t.scrollLeft>0)return!0;t=t.parentElement}return!1}var Et=null,On=null,me=null,Lt=!1,ht=!1,Me=[],Ke=null,le=null,re=null,Dn=null,bt=null;function af(e){if(Dn=null,bt=null,e==="toList")return zi();let t=o.lastSessionId;if(!t)return null;let n=vi();if(n&&n.sessionId===t){let r=oa(n);if(r){r.style.transform="",r.style.transition="",r.style.zIndex="",Dn=n;let i=r.querySelector(".chat-body");return i&&(bt={body:i,top:Si()}),r}}let s=o.sessions.find(r=>r.sessionId===t);return s?Ki(s):null}function cf(e){let t=document.getElementById("app");if(!t)return!1;let n=af(e);if(!n||(Me=Array.from(t.children),Me.length===0))return!1;le=document.createElement("div"),le.className="swipe-reveal-content",le.appendChild(n),Ke=document.createElement("div"),Ke.className="swipe-reveal-layer",Ke.appendChild(le),re=document.createElement("div"),re.className="swipe-reveal-scrim";let s=e==="toList";for(let r of Me)r.style.zIndex=s?"2":"0";return Ke.style.zIndex=s?"0":"2",re.style.zIndex="1",t.insertBefore(re,t.firstChild),t.insertBefore(Ke,t.firstChild),bt&&(bt.body.scrollTop=bt.top),ha(),!0}function Ua(e,t){if(!le||!re)return;let n=Math.min(Math.abs(e)/js,1);if(t==="toList"){for(let s of Me)s.style.transform=`translateX(${e}px)`;re.style.opacity=String(Js*(1-n))}else{let s=window.innerWidth;le.style.transform=`translateX(${s+e}px)`,re.style.opacity=String(Js*n)}}function qa(){for(let e of Me)e.style.transform="",e.style.transition="",e.style.zIndex="";Me=[],Ke?.remove(),re?.remove(),Ke=null,le=null,re=null,Dn=null,bt=null,Ws()}function lf(e){let t=window.innerWidth;if(e==="toList"){for(let s of Me)s.style.transition=`transform ${ke}ms ease-out`,s.style.transform=`translateX(${t}px)`;re&&(re.style.transition=`opacity ${ke}ms ease-out`,re.style.opacity="0")}else le&&(le.style.transition=`transform ${ke}ms ease-out`,le.style.transform="translateX(0)"),re&&(re.style.transition=`opacity ${ke}ms ease-out`,re.style.opacity=String(Js));let n=Dn;setTimeout(()=>{if(Ws(),e==="toList"){Fe();return}if(n&&Ti(n))return;let s=o.lastSessionId,r=s?o.sessions.find(i=>i.sessionId===s):void 0;s&&r?He(s,r.status==="cold"):qa()},ke)}function za(){for(let e of Me)e.style.transition=`transform ${ke}ms ease-out`,e.style.transform="translateX(0)";le&&(le.style.transition=`transform ${ke}ms ease-out`),Ua(0,me??"toList"),setTimeout(qa,ke)}function Pn(){Et=null,On=null,me=null,Lt=!1,ht=!1}function uf(e){if(Pn(),ee()||o.modal||o.banner)return;let t=e.touches[0];if(t){if(o.view==="list"&&o.lastSessionId)me="toChat";else if(o.view==="chat"&&!Te(t.target)&&!of(t.target))me="toList";else return;Et=t.clientX,On=t.clientY,Lt=!0}}function df(e){if(!Lt||Et===null||On===null||!me)return;let t=e.touches[0];if(!t)return;let n=t.clientX-Et,s=t.clientY-On;if(!ht){if(Math.abs(n)<$a&&Math.abs(s)<$a)return;let r=me==="toChat"?n<0:n>0;if(Math.abs(s)>Math.abs(n)||!r){Lt=!1;return}if(ht=!0,!cf(me)){Lt=!1,ht=!1;return}}e.preventDefault(),Ua(n,me)}function ff(e){if(!ht||Et===null||!me){Pn();return}let t=e.changedTouches[0],n=t?t.clientX-Et:0;(me==="toChat"?n<=-js:n>=js)?lf(me):za(),Pn()}function pf(){ht&&za(),Pn()}function Ka(){document.addEventListener("touchstart",uf,{passive:!0}),document.addEventListener("touchmove",df,{passive:!1}),document.addEventListener("touchend",ff,{passive:!0}),document.addEventListener("touchcancel",pf,{passive:!0})}var mf=(()=>{try{return new URLSearchParams(window.location.search).get("vpdebug")==="1"}catch{return!1}})();function gf(e,t,n){let s=document.getElementById("__viewport_debug__");s||(s=document.createElement("div"),s.id="__viewport_debug__",s.style.cssText="position:absolute;top:0;left:0;right:0;z-index:9999;background:rgba(0,0,0,0.85);color:#fd9;padding:0.4rem 0.6rem;font:11px/1.4 ui-monospace,monospace;border:1px solid #d4a17e;border-radius:6px;white-space:pre;pointer-events:none;opacity:0.9",document.body.appendChild(s));let r=document.querySelector(".composer"),i=r?.getBoundingClientRect(),a=r?getComputedStyle(r).paddingBottom:"n/a",c=document.getElementById("app"),u=c?.getBoundingClientRect(),d=c?getComputedStyle(c).height:"n/a",m=document.querySelector(".chat-body")?.getBoundingClientRect(),p=document.getElementById("__vp_icb_line__");p||(p=document.createElement("div"),p.id="__vp_icb_line__",document.body.appendChild(p)),p.style.cssText=`position:absolute;left:0;right:0;top:${window.innerHeight-3}px;height:3px;background:lime;z-index:9999;pointer-events:none`;let g=document.getElementById("__vp_app_line__");g||(g=document.createElement("div"),g.id="__vp_app_line__",document.body.appendChild(g)),g.style.cssText="position:absolute;left:0;right:0;top:calc(var(--app-height, 100%) - 3px);height:3px;background:magenta;z-index:9999;pointer-events:none";let v=document.querySelector(".composer-buttons");v&&(v.style.outline="2px solid cyan");let E=A=>A?`top=${A.top.toFixed(0)} h=${A.height.toFixed(0)} bottom=${A.bottom.toFixed(0)}`:"n/a",S=document.body.getBoundingClientRect();s.textContent=`innerHeight=${window.innerHeight} appH(vv+inset)=${e.toFixed(1)} inset=${Wa().toFixed(0)}
699
+ Replace it? (Any live attach will be closed.)`)){M({banner:{kind:"warn",text:"Import cancelled."}});return}try{let i=await ha(t,{replace:!0});M({banner:{kind:"good",text:`Replaced ${he(i.sessionId)} from bundle`}}),ke()}catch(i){M({banner:{kind:"bad",text:"import failed: "+i.message}})}return}M({banner:{kind:"bad",text:"import failed: "+n.message}})}var sa="hydra-acp-browser:lastCwd",ra="hydra-acp-browser:cwdHistory",rd=20;function Hs(){try{let e=localStorage.getItem(ra);if(e){let n=JSON.parse(e);if(Array.isArray(n))return n.filter(s=>typeof s=="string")}let t=localStorage.getItem(sa);return t?[t]:[]}catch{return[]}}function oa(){return Hs()[0]??null}function od(e){try{let t=Hs().filter(n=>n!==e);t.unshift(e),localStorage.setItem(ra,JSON.stringify(t.slice(0,rd))),localStorage.removeItem(sa)}catch{}}function ia(){M({modal:{kind:"session",cwd:oa()??o.defaultCwd??"",agentId:"",name:"",prompt:"",err:null,busy:!1,remote:""}})}function id(e){return l("div",{class:"modal-bg",...I(t=>{t.target.classList.contains("modal-bg")&&be()})},l("div",{class:"modal"},l("h2",null,"New session"),...o.remotes.length>0?[l("div",{class:"field"},l("label",{for:"f-remote"},"create on"),ad(e))]:[],l("div",{class:"field"},l("label",{for:"f-cwd"},e.remote?"cwd (optional)":"cwd"),l("input",{id:"f-cwd","data-focus-key":"session-modal-cwd",value:e.cwd,placeholder:e.remote?"leave blank to use the remote's default":"/home/you/dev/project",...e.remote?{}:{list:"f-cwd-history"},autocomplete:"off",oninput:t=>{e.cwd=t.target.value}}),e.remote?null:l("datalist",{id:"f-cwd-history"},...Hs().map(t=>l("option",{value:t})))),e.remote?null:l("div",{class:"field"},l("label",{for:"f-agent"},"agent"),cd(e)),l("div",{class:"field"},l("label",{for:"f-name"},"name (optional)"),l("input",{id:"f-name","data-focus-key":"session-modal-name",value:e.name,placeholder:"feature-x",oninput:t=>{e.name=t.target.value}})),l("div",{class:"field"},l("label",{for:"f-prompt"},"first prompt (optional)"),l("textarea",{id:"f-prompt","data-focus-key":"session-modal-prompt",rows:"4",placeholder:"What should the agent do first?",autocapitalize:"off",oninput:t=>{e.prompt=t.target.value}},e.prompt)),e.err?l("div",{class:"err"},e.err):null,l("div",{class:"actions"},l("button",{...I(be)},"Cancel"),l("button",{class:"primary",...I(ld),disabled:e.busy},e.busy?"Creating\u2026":"Create"))))}function ad(e){let t=l("select",{id:"f-remote","data-focus-key":"session-modal-remote",onchange:s=>{let r=s.target.value;r&&!e.remote?e.cwd="":!r&&e.remote&&(e.cwd=oa()??o.defaultCwd??""),e.remote=r,v()}}),n=l("option",{value:""},"local");e.remote===""&&n.setAttribute("selected",""),t.appendChild(n);for(let s of o.remotes){let r=l("option",{value:s.name},s.status&&s.status!=="ok"?`${s.name} (${s.status})`:s.name);s.name===e.remote&&r.setAttribute("selected",""),t.appendChild(r)}return t}function cd(e){let t=l("select",{id:"f-agent","data-focus-key":"session-modal-agent",onchange:s=>{e.agentId=s.target.value}}),n=l("option",{value:""},"<default>");e.agentId===""&&n.setAttribute("selected",""),t.appendChild(n);for(let s of o.agents){let r=l("option",{value:s.id},s.id);s.id===e.agentId&&r.setAttribute("selected",""),t.appendChild(r)}return t}async function ld(){let e=o.modal;if(!(!e||e.kind!=="session")){if(!e.remote&&!e.cwd){e.err="cwd is required",v();return}e.busy=!0,e.err=null,v();try{let t={};e.cwd&&(t.cwd=e.cwd),e.remote?t.remote=e.remote:e.agentId&&(t.agentId=e.agentId),e.name&&(t.name=e.name),e.prompt&&(t.prompt=e.prompt);let n=await X("/api/sessions",{method:"POST",body:JSON.stringify(t),timeoutMs:6e4});if(!e.remote&&e.cwd&&od(e.cwd),ke(),o.modal!==e)return;be(),n&&n.sessionId&&He(n.sessionId,!1)}catch(t){if(o.modal!==e)return;e.err=t.message,e.busy=!1,v()}}}function be(){M({modal:null})}function ud(){!o.current?.models||o.current.models.length===0||M({modal:{kind:"models"}})}function Oi(e,t,n,s){return l("div",{class:"modal-bg",...I(r=>{r.target.classList.contains("modal-bg")&&be()})},l("div",{class:"modal"},l("h2",null,e),...t.map(r=>l("div",{class:"card",...I(()=>{s(r),be()})},l("div",{class:"meta"},l("div",{class:"row1"},r.name||r.id),l("div",{class:"row2"},r.id)),r.id===n?l("span",{class:"badge warm"},"current"):null)),l("div",{class:"actions"},l("button",{...I(be)},"Cancel"))))}var As=5;function dd(e){let t=e.armedTaskList;if(!t||t.length===0)return document.createTextNode("");let n=t.slice(0,As),s=Date.now();return l("div",{class:"armed-tasks"},...n.map(r=>l("div",{class:"armed-task"},l("span",{class:"dot"},"\u25D0"),l("span",{class:"label"},r.label.length>0?r.label:r.taskType??"background task"),l("span",{class:"elapsed"},zi(s-r.since)))),t.length>As?l("div",{class:"armed-tasks-more"},`+${t.length-As} more`):null)}var xs=200,Ns=450,fd=250;function vn(e){let t=e.body;Math.abs(t.scrollTop-(t.scrollHeight-t.clientHeight))>1&&(t.scrollTop=t.scrollHeight)}function pd(e){e.stickToBottom=!0,e.reflowUntil=performance.now()+700,vn(e),requestAnimationFrame(()=>vn(e)),setTimeout(()=>vn(e),120),setTimeout(()=>{vn(e),e.reflowUntil=0;let t=e.body,n=t.scrollHeight-t.scrollTop-t.clientHeight<50;e.jump.classList.toggle("visible",!n),xn(t,e.turnToast)},450)}function Mt(e){if(!e.stickToBottom||e.touchActive)return;let t=performance.now();if(t-e.lastTouchEndAt<Ns||t-e.lastScrollAt<fd)return;let n=e.body,s=n.scrollHeight-n.clientHeight;Math.abs(n.scrollTop-s)>1&&(n.scrollTop=n.scrollHeight)}var xe=new WeakMap;function aa(e){return xe.get(e)?.root??null}function xi(e){return xe.get(e)?.body.scrollTop??0}function md(e){let t=xe.get(e);if(t)return t;let n=l("div",{class:"chat-body"}),s=l("button",{class:"jump-to-latest-btn",...I(()=>{n.scrollTop=n.scrollHeight,c.classList.remove("visible")})},"\u2193 Bottom"),r=l("button",{class:"jump-to-latest-btn icon",...I(()=>Tn("prev")),title:"Previous turn (Cmd/Ctrl+PageUp)"},"\u25B2"),i=l("button",{class:"jump-to-latest-btn icon",...I(()=>Tn("next")),title:"Next turn (Cmd/Ctrl+PageDown)"},"\u25BC"),a=l("div",{class:"turn-toast"}),c=l("div",{class:"jump-to-latest"},r,a,i,s),u=0;n.addEventListener("scroll",()=>{t.lastScrollAt=performance.now();let b=n.scrollHeight-n.scrollTop-n.clientHeight<50;performance.now()>=t.reflowUntil&&(t.stickToBottom=b),u&&cancelAnimationFrame(u),u=requestAnimationFrame(()=>{u=0,!(performance.now()<t.reflowUntil)&&(c.classList.toggle("visible",!b),xn(n,a))})},{passive:!0});let d=0;n.addEventListener("touchstart",()=>{t.touchActive=!0,d=n.scrollHeight},{passive:!0});let f=b=>{b.touches.length>0||(t.touchActive=!1,t.lastTouchEndAt=performance.now(),n.scrollHeight!==d&&(setTimeout(()=>Mt(t),Ns+50),setTimeout(()=>Mt(t),Ns+900)))};n.addEventListener("touchend",f,{passive:!0}),n.addEventListener("touchcancel",f,{passive:!0});let p=0,m=0;n.addEventListener("pointerdown",b=>{p=b.clientX,m=b.clientY},{passive:!0}),n.addEventListener("pointerup",b=>{if(Te(b.target)||Math.hypot(b.clientX-p,b.clientY-m)>zn)return;let _=document.activeElement;(_ instanceof HTMLTextAreaElement||_ instanceof HTMLInputElement)&&_.blur()},{passive:!0});let g=l("div",{class:"chat-slot"}),E=l("div",{class:"chat-slot"}),y=l("div",{class:"chat-slot"}),S=l("div",{class:"chat-slot"});{let T=null,N=null,R=!1,G=!1,B=()=>{let H=document.activeElement;G&&(H instanceof HTMLTextAreaElement||H instanceof HTMLInputElement)&&H.blur(),T=null,N=null,R=!1,G=!1};S.addEventListener("touchstart",H=>{T=null,N=null,R=!1,G=!1;let Y=document.activeElement;if(!(Y instanceof HTMLTextAreaElement||Y instanceof HTMLInputElement))return;let Z=H.touches[0];Z&&(T=Z.clientX,N=Z.clientY)},{passive:!0}),S.addEventListener("touchmove",H=>{if(T===null||N===null)return;let Y=H.touches[0];if(!Y)return;let Z=Y.clientX-T,j=Y.clientY-N;if(!R){if(Math.abs(Z)<10&&Math.abs(j)<10)return;if(Math.abs(Z)>Math.abs(j)||j<0){T=null,N=null;return}R=!0}G=j>=50},{passive:!0}),S.addEventListener("touchend",B,{passive:!0}),S.addEventListener("touchcancel",B,{passive:!0})}return t={root:l("div",{class:"chat"},g,E,y,n,S),body:n,jump:c,headerSlot:g,detailsSlot:E,armedSlot:y,composerSlot:S,stickToBottom:!0,touchActive:!1,lastTouchEndAt:0,lastScrollAt:0,reflowUntil:0,turnToast:a},xe.set(e,t),t}var Di=new WeakMap;function gd(e){if(e.kind==="stream"){let t=e.queueEntry;return[e.text,e.role,e.synthetic??!1,e.closed??!1,Ct.has(e),t?.status,t?.amendedByMessageId,t?.amendsMessageId,e.attachments?.length??0,e.sentAt]}return e.kind==="system"||e.kind==="error"?[e.text]:e.kind==="edit-diff"?[e.diff,e.expanded,e.status]:e.kind==="exit-plan-mode"?[e.plan,e.status]:e.kind==="turn-stamp"?[e.elapsedMs,e.toolCount,e.stopReason,e.endedAt]:null}var Pi="pre, table";function hd(e,t){if(!(e instanceof HTMLElement)||!(t instanceof HTMLElement))return;let n=e.querySelectorAll(Pi);if(n.length===0)return;let s=[];n.forEach((r,i)=>{(r.scrollLeft!==0||r.scrollTop!==0)&&s.push([i,r.scrollLeft])}),s.length!==0&&queueMicrotask(()=>{let r=t.querySelectorAll(Pi);for(let[i,a]of s){let c=r[i];c&&(c.scrollLeft=a)}})}function bd(e){let t=gd(e);if(t===null)return Hi(e);let n=Di.get(e);if(n&&n.sig.length===t.length&&n.sig.every((r,i)=>r===t[i]))return Qe("node-hit"),n.node;Qe(n?"node-resig":"node-new");let s=Hi(e);return n&&hd(n.node,s),Di.set(e,{node:s,sig:t}),s}function Ed(e,t){let n=new Set(t);for(let s=e.childNodes.length-1;s>=0;s--){let r=e.childNodes[s];n.has(r)||e.removeChild(r)}for(let s=0;s<t.length;s++){let r=t[s],i=e.childNodes[s]??null;i!==r&&e.insertBefore(r,i)}for(;e.childNodes.length>t.length;)e.removeChild(e.lastChild)}function yd(e,t){let n=t.body,s=!e.renderAllHistory&&e.log.length>xs,r=s?e.log.length-xs:0;if(s){let c=Math.max(0,e.log.length-xs*2);for(let u=r;u>=c;u--){let d=e.log[u];if(d&&d.kind==="stream"&&d.role==="user"){r=u;break}}}let i=s?e.log.slice(r):e.log,a=[];if(e.historyIsPartial&&!s&&a.push(l("button",{class:"show-earlier",...I(()=>vi(e))},"Load full history")),s){let c=r;a.push(l("button",{class:"show-earlier",...I(()=>{e.renderAllHistory=!0,v()})},`Show ${c} earlier message${c===1?"":"s"}`))}for(let c of i)o.hideThoughts&&c.kind==="stream"&&c.role==="thought"||a.push(bd(c));if(a.push(t.jump),Ed(n,a),e.pinAfterReplaySwap){e.pinAfterReplaySwap=!1,pd(t);return}Mt(t)}function Sn(e){let t=o.current?.scrollRestoreMessageId;if(!t)return!1;let n=e.querySelector(`[data-message-id="${CSS.escape(t)}"]`);return n?(n.scrollIntoView({block:"start"}),o.current.scrollRestoreMessageId=void 0,!0):!1}function ca(e,t){if(t.view!=="chat"||!t.current||t.banner||t.modal||t.current.fileOverlay)return!1;let n=xe.get(t.current);if(!n)return!1;if(ee()){if(e.childNodes.length!==1)return!1;let s=e.firstElementChild;if(!s||!s.classList.contains("split"))return!1;let r=s.querySelector(":scope > .rail"),i=s.querySelector(":scope > .split-detail");return!r||!i||i.childNodes.length!==1||i.firstChild!==n.root?!1:(Au(r),In(t.current),Sn(n.body),!0)}return e.childNodes.length!==1||e.firstChild!==n.root?!1:(In(t.current),Sn(n.body),!0)}function la(e){let t=xe.get(e);t&&Mt(t)}function It(e){let t=xe.get(e);t&&(t.stickToBottom=!0,Mt(t))}function xn(e,t){let n=Array.from(e.querySelectorAll(".msg.user"));if(n.length===0){t.textContent="";return}let s=e.getBoundingClientRect().top,r=1,i=-1;for(let a=n.length-1;a>=0;a--)if(n[a].getBoundingClientRect().top<s+r){i=a;break}t.textContent=i===-1?"Start":`Turn ${i+1} of ${n.length}`}function Tn(e){let t=document.querySelector(".chat-body");if(!t)return;let n=Array.from(t.querySelectorAll(".msg.user"));if(n.length===0){let u=t.clientHeight*.9;t.scrollBy({top:e==="next"?u:-u,behavior:"smooth"});return}let s=o.current?xe.get(o.current):void 0,r=t.getBoundingClientRect().top,i=1,a=null,c=-1;if(e==="prev"){for(let u=n.length-1;u>=0;u--)if(n[u].getBoundingClientRect().top<r-i){a=n[u],c=u;break}a?(a.scrollIntoView({block:"start",behavior:"smooth"}),s&&(s.turnToast.textContent=`Turn ${c+1} of ${n.length}`)):(t.scrollTo({top:0,behavior:"smooth"}),s&&(s.turnToast.textContent="Start"));return}for(let u=0;u<n.length;u++)if(n[u].getBoundingClientRect().top>r+i){a=n[u],c=u;break}a?(a.scrollIntoView({block:"start",behavior:"smooth"}),s&&(s.turnToast.textContent=`Turn ${c+1} of ${n.length}`)):t.scrollTo({top:t.scrollHeight,behavior:"smooth"})}function In(e){let t=o.sessions.find(b=>b.sessionId===e.sessionId),n=t?.title||e.title||Ls(e.sessionId),s=t?.cwd||e.cwd,r=()=>{e.headerExpanded=!e.headerExpanded,v()},i=l("div",{class:"chat-header"},l("div",{class:"chat-title-row"},ee()?null:l("button",{class:"chat-back",title:"Back to session list",...I(()=>Fe())},"\u2190"),l("div",{class:"chat-title clickable",title:"Click for session details",...I(r)},n)),l("div",{class:"chat-header-row"},l("div",{class:"chat-header-pills",title:"Click for session details",...I(r)},!e.ready&&e.cold?l("span",{class:"pill cold clickable",title:"Session closed cold \u2014 sending a prompt will resurrect it",...I(r)},"cold"):e.ready?e.inTurn?l("span",{class:"pill working clickable",title:"Agent is working",...I(r)},l("span",{class:"dot"},"\u25CF"),"thinking"):e.armedTasks&&e.armedTasks>0?l("span",{class:"pill waiting clickable",title:e.armedSince?`Agent has a background task running (armed ${Math.max(1,Math.floor((Date.now()-e.armedSince)/6e4))}m ago). It may resume on its own.`:"Agent has a background task running. It may resume on its own.",...I(r)},l("span",{class:"dot"},"\u25CF"),"waiting"):l("span",{class:"pill ready clickable",title:"Ready for a prompt",...I(r)},l("span",{class:"dot"},"\u25CF"),"ready"):l("span",{class:"pill clickable",title:"Click for session details",...I(r)},"connecting\u2026"),t?.workspace?l("span",{class:"pill clickable",title:`In workspace "${t.workspace.label}" (source: ${An(t.workspace.sourceCwd)})`,...I(r)},"\u2387 "+t.workspace.label):null,e.model?l("span",{class:"pill clickable",title:"Model (click to change)",...I(ud)},e.model):null,e.contextUsed!=null&&e.contextSize?l("span",{class:e.compactionPhase?"pill clickable compacting":"pill clickable",title:e.compactionPhase?e.compactionPhase==="deferred"?"Compaction queued \u2014 will run once the session is idle.":"Compacting\u2026":`${e.contextUsed.toLocaleString()} / ${e.contextSize.toLocaleString()} context tokens \u2014 click to compact`,...I(()=>ed(e))},e.compactionPhase?e.compactionPhase==="deferred"?"\u23F3 queued":"\u25D0 compacting":`${Ni(e.contextUsed)}/${Ni(e.contextSize)}`):null,Ri(e.cost)?l("span",{class:"pill",title:"Session cost so far"},Ri(e.cost)):null),l("div",{class:"chat-header-actions"},ee()?null:l("button",{...I(ea),title:"Options"},"\u2699"),l("button",{...I(Od),title:"Files"},"\u{1F4C1}"),l("button",{title:"Export this session as a *.hydra bundle",...I(()=>td(e.sessionId))},"\u2B07")))),a=e.headerExpanded?l("div",{class:"chat-details"},Ts("title",n),Ts("session",he(e.sessionId)),Ts("directory",s||"?"),Du(e.sessionId,t?.priority),Bu(t?.workspace),...e.configOptions.map(Vu)):null,c=md(e),u=b=>{b.style.height="auto",b.style.height=b.scrollHeight+"px"},d=(b,_)=>{b.value=_,e.composerValue=_,rt(e.sessionId,_),u(b),b.setSelectionRange(_.length,_.length)},f=b=>{if(b.isComposing)return;if(b.key==="Escape"&&ee()&&!o.modal){b.preventDefault(),b.stopPropagation(),Ds();return}let _=b.target;if(b.key==="ArrowUp"&&!b.shiftKey&&!b.altKey&&!b.ctrlKey&&!b.metaKey&&_.selectionStart===0&&_.selectionEnd===0&&e.history.length>0){let T=e.historyIndex===null?0:Math.min(e.history.length-1,e.historyIndex+1);e.historyIndex===null&&(e.historyDraft=e.composerValue),e.historyIndex=T,b.preventDefault(),d(_,e.history[T]);return}if(b.key==="ArrowDown"&&!b.shiftKey&&!b.altKey&&!b.ctrlKey&&!b.metaKey&&_.selectionStart===_.value.length&&_.selectionEnd===_.value.length&&e.historyIndex!==null){if(b.preventDefault(),e.historyIndex>0)e.historyIndex-=1,d(_,e.history[e.historyIndex]);else{let T=e.historyDraft??"";e.historyIndex=null,e.historyDraft=null,d(_,T)}return}if(b.key==="Enter"&&!b.shiftKey){if(b.altKey||b.ctrlKey||b.metaKey){b.preventDefault(),Yd(_,`
700
+ `);return}b.preventDefault(),xt()}},p=()=>l("textarea",{"data-focus-key":"composer",placeholder:e.ready?"Message\u2026":e.cold?"Message\u2026 (wakes the session)":"Connecting\u2026",rows:"1",autocapitalize:"off",onkeydown:f,onpaste:b=>{let _=b.clipboardData?.items;if(!_)return;let T=[];for(let N of _){if(N.kind!=="file"||!N.type.startsWith("image/"))continue;let R=N.getAsFile();R&&T.push(R)}T.length!==0&&(b.preventDefault(),vu(e,T))},oninput:b=>{ma();let _=b.target;e.composerValue=_.value,rt(e.sessionId,_.value),e.historyIndex!==null&&(e.historyIndex=null,e.historyDraft=null),u(_);let T=_.value.trim().length>0||e.attachments.length>0,N=_.closest(".composer")?.querySelectorAll(".content-gated")??[];for(let R of N)R.classList.toggle("empty",!T)}},e.composerValue),m=c.composerTextarea,g=!m;if(m||(m=p(),c.composerTextarea=m),m.placeholder=e.ready?"Message\u2026":e.cold?"Message\u2026 (wakes the session)":"Connecting\u2026",m.value!==e.composerValue){m.value=e.composerValue;let b=m;queueMicrotask(()=>u(b))}else if(g&&e.composerValue.length>0){let b=m;queueMicrotask(()=>u(b))}!e.composerAutoFocused&&ir()&&(e.composerAutoFocused=!0,queueMicrotask(()=>m.focus()));let E=e.composerValue.trim().length>0||e.attachments.length>0,y=[];e.inTurn?(e.daemonSupportsAmend&&e.currentHeadMessageId!==void 0&&y.push(l("button",{class:`content-gated${E?"":" empty"}`,...I(ni),title:"Cancel the current turn and replace its prompt"},"Amend")),y.push(l("button",{class:`primary content-gated${E?"":" empty"}`,...I(xt),title:"Queue this prompt to run after the current turn"},"Enqueue"))):y.push(l("button",{class:`primary content-gated${E?"":" empty"}`,...I(xt)},"Send"));let S=l("div",{class:"composer"},wu(e),m,l("div",{class:"composer-buttons"},l("button",{class:"stop",disabled:!e.inTurn&&!e.promptQueue.some(b=>b.status==="queued"||b.status==="pending"),...I(ii),title:"Cancel current turn"},"Stop"),...y));return c.headerSlot.replaceChildren(i),a!==null&&document.activeElement!==null&&c.detailsSlot.contains(document.activeElement)||(a?c.detailsSlot.replaceChildren(a):c.detailsSlot.replaceChildren()),c.armedSlot.replaceChildren(dd(e)),c.composerSlot.replaceChildren(S),yd(e,c),c.root}var Bi=new WeakMap;function ua(e,t){let n=Bi.get(e);if(n&&n.text===t)return n.html;let s=ss(t);return Bi.set(e,{text:t,html:s}),s}function Hi(e){if(e.kind==="stream"){let t=e.role==="thought",n=e.role==="user"?"msg user":t?"msg system thought":"msg agent",s=t&&Ct.has(e),r=l("div",{class:s?n+" collapsed":n,"data-message-id":e.messageId});t&&r.addEventListener("click",()=>{if(!!Ct.has(e)){Ct.delete(e),v();return}let c=document.querySelector(".chat-body"),u=c?.getBoundingClientRect(),d=r.getBoundingClientRect(),f=d.top-(u?.top??0)+(c?.scrollTop??0),m=!u||d.top>=u.top&&d.top<u.bottom?c?.scrollTop??0:f;Ct.add(e),v(),requestAnimationFrame(()=>{let g=document.querySelector(".chat-body");g&&(g.scrollTop=m)})});let i=e.queueEntry;if(i&&i.amendedByMessageId!==void 0&&i.status==="amended"&&r.classList.add("amended-target"),i&&(i.status==="queued"||i.status==="pending"||i.status==="cancelled"||i.status==="editing"||i.status==="amended"||i.status==="offline")&&r.appendChild(xd(i)),i&&i.amendsMessageId!==void 0&&r.appendChild(l("span",{class:"amend-badge",title:"Merged amend \u2014 replaces the previous, cancelled prompt"},"+")),i&&i.status==="editing")r.classList.add("bubble-editing"),r.appendChild(kd(i,a=>{e.text=a}));else{e.attachments&&e.attachments.length>0&&r.appendChild(l("div",{class:"attachment-thumbs"},...e.attachments.map(c=>l("img",{class:"attachment-thumb",src:Ui(c)}))));let a=l("div",{class:e.synthetic?"body raw":"body"});e.synthetic?a.textContent=e.text:a.innerHTML=ua(e,e.text),i&&i.status==="cancelled"&&(a.style.textDecoration="line-through",a.style.opacity="0.6"),r.appendChild(a),e.role==="user"&&e.sentAt!==void 0&&r.appendChild(l("div",{class:"msg-time"},Rs(e.sentAt)))}return r}if(e.kind==="system"){let t=e.at!==void 0?`${e.text} \xB7 ${Rs(e.at)}`:e.text;return l("div",{class:"msg system"},t)}if(e.kind==="error")return l("div",{class:"msg error"},e.text);if(e.kind==="spinner")return Md(e.spinner);if(e.kind==="turn-stamp")return Cd(e);if(e.kind==="perm"){if(!o.current)return document.createTextNode("");let t=o.current.pendingPermissions.get(e.toolCallId);return t?Rd(t):document.createTextNode("")}return e.kind==="plan"?Ld(e.entries):e.kind==="exit-plan-mode"?Id(e):e.kind==="edit-diff"?Td(e):document.createTextNode("")}function _d(e){return e==="+"?"diff-line hljs-addition":e==="-"?"diff-line hljs-deletion":e==="gap"?"diff-line diff-gap":"diff-line"}function vd(e){return e==="+"?"+ ":e==="-"?"- ":e==="gap"?"":" "}var Fi=new WeakMap;function wd(e){let t=Fi.get(e);return t||(t={counts:Ao(e)},Fi.set(e,t)),t}function Sd(e){let t=e.lastIndexOf("/"),n=t>=0?e.slice(t+1):e,s=t>=0?e.slice(0,t):"";return l("span",{class:"title"},l("span",{class:"edit-name"},`Edited ${n}`),s.length>0?l("span",{class:"edit-dir"},s):null)}function Td(e){let t=wd(e.diff),n=t.counts,s=e.diff.path?An(e.diff.path):"file",r=[];n.added>0&&r.push(l("span",{class:"add"},`+${n.added}`)),n.removed>0&&r.push(l("span",{class:"del"},`-${n.removed}`));let i=l("div",{class:"head",...I(()=>{e.expanded=!e.expanded,v()})},l("span",null,e.expanded?"\u25BE":"\u25B8"),Sd(s),r.length>0?l("span",{class:"kind edit-summary"},r):null),a=l("div",{class:e.expanded?"toolcard open":"toolcard"},i);if(e.expanded){let c=t.lines??(t.lines=xo(e.diff));a.appendChild(l("div",{class:"body"},l("pre",null,l("code",{class:"diff-body"},c.map(u=>l("div",{class:_d(u.op)},vd(u.op)+u.text))))))}return a}function Id(e){let t=l("div",{class:"msg agent plan-markdown"});t.appendChild(l("div",{class:"plan-header"},"\u{1F4CB} Plan"));let n=l("div",{class:"body"});n.innerHTML=ua(e,e.plan),t.appendChild(n);let s=Ad(e.status);return s!==null&&t.appendChild(s),t}function Ad(e){if(e===void 0)return null;switch(e){case"completed":case"succeeded":case"ok":return l("div",{class:"plan-status plan-status-ok"},"\u2713 Approved");case"failed":case"error":case"rejected":return l("div",{class:"plan-status plan-status-fail"},"\u2717 Rejected");case"cancelled":return l("div",{class:"plan-status plan-status-cancelled"},"\u229D Cancelled");case"pending":case"in_progress":case"running":case"updated":return l("div",{class:"plan-status plan-status-pending"},"awaiting approval\u2026");default:return null}}function xd(e){if(e.status==="queued"||e.status==="pending"){let t=e.status==="pending"?"sending\u2026":`queued \xB7 ${Math.max(1,e.aheadAtEnqueue)} ahead`+(e.held?" \xB7 held: agent resumed":""),n=e.status==="queued"&&e.messageId!==void 0&&o.current!==null&&o.current.daemonSupportsAmend&&o.current.currentHeadMessageId!==void 0&&o.current.inTurn;return l("div",{class:"queue-chip queue-queued"},l("span",null,t),n?l("button",{class:"queue-edit",...I(()=>ei(e)),title:"Send now \u2014 amends the running turn instead of waiting"},l("span",{class:"queue-btn-glyph"},"+")):null,l("button",{class:"queue-edit",...I(()=>{e.status="editing",v()}),title:"Edit before sending"},l("span",{class:"queue-btn-glyph"},"\u270E")),l("button",{class:"queue-cancel",...I(()=>fn(e)),title:"Cancel before sending"},l("span",{class:"queue-btn-glyph"},"\xD7")))}return e.status==="editing"?l("div",{class:"queue-chip queue-editing"},l("span",null,"editing \u2014 Save or Cancel below")):e.status==="processing"?l("div",{class:"queue-chip queue-processing"},l("span",{class:"dot"}),l("span",null,"processing")):e.status==="cancelled"?l("div",{class:"queue-chip queue-cancelled"},l("span",null,"cancelled")):e.status==="amended"?l("div",{class:"queue-chip queue-amended"},l("span",null,"amended \u2014 merged into the next prompt")):e.status==="offline"?l("div",{class:"queue-chip queue-offline"},l("span",null,"pending"),l("button",{class:"queue-edit",...I(()=>{e.editReturnStatus="offline",e.status="editing",v()}),title:"Edit before sending"},l("span",{class:"queue-btn-glyph"},"\u270E")),l("button",{class:"queue-cancel",...I(()=>fn(e)),title:"Discard, this was never sent"},l("span",{class:"queue-btn-glyph"},"\xD7"))):document.createTextNode("")}function kd(e,t){let n=l("textarea",{class:"queue-edit-area",rows:"1",autocapitalize:"off"});n.value=e.text;let s=()=>{n.style.height="auto",n.style.height=`${n.scrollHeight}px`};n.addEventListener("input",s);let r=()=>{e.status=e.editReturnStatus??"queued",e.editReturnStatus=void 0},i=()=>{let c=n.value;e.text=c,t(c),r(),ti(e,c),v()},a=()=>{r(),v()};return n.addEventListener("keydown",c=>{c.key==="Enter"&&!c.shiftKey?(c.preventDefault(),i()):c.key==="Escape"&&(c.preventDefault(),a())}),queueMicrotask(()=>{s(),n.focus(),n.setSelectionRange(n.value.length,n.value.length)}),l("div",{class:"queue-editor"},n,l("div",{class:"queue-editor-actions"},l("button",{class:"ghost",...I(a)},"Cancel"),l("button",{class:"primary",...I(i)},"Save")))}function Rs(e){let t=new Date(e),n=t.getFullYear()===new Date().getFullYear(),s=t.toLocaleDateString(void 0,n?{month:"short",day:"numeric"}:{month:"short",day:"numeric",year:"numeric"}),r=t.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"});return`${s}, ${r}`}function wn(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m ${t%60}s`:`${Math.floor(n/60)}h ${n%60}m`}function Cd(e){let t=e.stopReason!==void 0&&e.stopReason!=="end_turn",n=t?`stopped (${e.stopReason}) \xB7 ${wn(e.elapsedMs)}`:e.toolCount>0?`${e.toolCount} tool${e.toolCount===1?"":"s"} \xB7 took ${wn(e.elapsedMs)}`:`thought \xB7 ${wn(e.elapsedMs)}`;return l("div",{class:t?"turn-stamp bad":"turn-stamp"},`${n} \xB7 ${Rs(e.endedAt)}`)}function Md(e){let t=l("button",{class:"queue-cancel",...I(()=>oi()),title:"Cancel this turn"},l("span",{class:"queue-btn-glyph"},"\xD7")),n=wn(Date.now()-e.startedAt);if(!e.expanded)return l("div",{class:"spinner",...I(()=>{e.expanded=!0,v()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,e.sending?"sending\u2026":e.toolCallIds.length===0?`thinking \xB7 ${n}`:`working \u2014 ${e.toolCallIds.length} tool call${e.toolCallIds.length===1?"":"s"} \xB7 ${n}`),t));let s=e.toolCallIds.map(r=>{let i=o.current?.toolCalls.get(r);if(!i)return null;let a=i.status==="completed"||i.status==="success"?"\u2705":i.status==="failed"||i.status==="error"?"\u274C":"\u25B6";return l("li",null,l("span",{class:"icon"},a),document.createTextNode(" "+i.title))});return l("div",{class:"spinner expanded",...I(()=>{e.expanded=!1,v()})},l("div",{class:"head"},l("span",{class:"dot"}),l("span",null,e.sending?"sending\u2026":`working \xB7 ${n}`),t),l("ul",null,s))}function Nd(e){let t=f=>typeof f=="string"&&f.length>0?f:void 0,n=[],s=(f,p)=>l("div",{class:"detail"},l("span",{class:"k"},f),l("code",null,p)),r=t(e.kind);r&&n.push(s("kind",r));let i=new Set,a=[],c=f=>{let p=t(f);p&&!i.has(p)&&(i.add(p),a.push(p))},u=e.locations;if(Array.isArray(u))for(let f of u)f&&typeof f=="object"&&c(f.path);let d=e.rawInput&&typeof e.rawInput=="object"?e.rawInput:void 0;d&&(c(d.file_path),c(d.filePath),c(d.path));for(let f of a)n.push(s("path",f));if(d){let f=t(d.command);f&&n.push(s("command",f));let p=t(d.url);p&&n.push(s("url",p));let m=t(d.description);m&&n.push(l("div",{class:"detail note"},m))}return n}function Rd(e){let t=e.toolCall||{};return l("div",{class:"perm"},l("div",{class:"title"},"\u{1F512} Permission requested"),l("div",{class:"desc"},t.title||t.name||"tool call"),Nd(t),l("div",{class:"opts"},...e.options.map(n=>l("button",{class:n.kind?.startsWith("allow")?"primary":n.kind?.startsWith("reject")?"danger":"",...I(()=>ms(e.toolCallId,n.optionId))},n.name||n.optionId)),l("button",{...I(()=>ms(e.toolCallId,"__cancel__"))},"Cancel")))}function Ld(e){return Array.isArray(e)?l("div",{class:"msg agent"},l("div",{class:"body"},l("strong",null,"Plan")),l("ul",null,...e.map(t=>l("li",null,`${t.status==="completed"?"\u2713":t.status==="in_progress"?"\u25B8":"\xB7"} ${t.content||t.title||""}`)))):document.createTextNode("")}function Od(){let e=o.current;if(!e)return;let t=e.savedFileView;e.fileOverlay={path:"",entries:[],preview:null,err:null,maximized:t?.maximized??!1,previewRaw:t?.previewRaw??!1},v(),t?.previewPath?Dd(e,t.dirPath,t.previewPath,t.previewRaw):Nt(t?.dirPath??"")}async function Dd(e,t,n,s){let[r,i]=await Promise.allSettled([X("/api/files/list",{method:"POST",body:JSON.stringify({sessionId:e.sessionId,path:t})}),X("/api/files/read",{method:"POST",body:JSON.stringify({sessionId:e.sessionId,path:n})})]);if(o.current!==e||!e.fileOverlay)return;let a=e.fileOverlay.maximized,c=r.status==="rejected"?r.reason.message:null,u=i.status==="rejected"?i.reason.message:null;e.fileOverlay={path:r.status==="fulfilled"?r.value.path:t,entries:r.status==="fulfilled"?r.value.entries??[]:[],preview:i.status==="fulfilled"?{path:n,content:i.value.content}:null,err:u??c,maximized:a,previewRaw:s},v()}function Pd(){let e=o.current?.fileOverlay;e&&(e.maximized=!e.maximized,v())}function Bd(e){let t=e.split(".").pop()?.toLowerCase()??"";return t==="md"||t==="markdown"}function Hd(){let e=o.current?.fileOverlay;e&&(e.previewRaw=!e.previewRaw,v())}async function Nt(e){if(!o.current)return;let t=o.current.fileOverlay?.maximized??!1;try{let n=await X("/api/files/list",{method:"POST",body:JSON.stringify({sessionId:o.current.sessionId,path:e})});o.current.fileOverlay={path:n.path,entries:n.entries??[],preview:null,err:null,maximized:t,previewRaw:!1},v()}catch(n){o.current.fileOverlay={path:e,entries:[],preview:null,err:n.message,maximized:t,previewRaw:!1},v()}}async function Fd(e){if(o.current)try{let t=await X("/api/files/read",{method:"POST",body:JSON.stringify({sessionId:o.current.sessionId,path:e})}),n=o.current.fileOverlay;o.current.fileOverlay={path:n.path,entries:n.entries,preview:{path:e,content:t.content},err:null,maximized:n.maximized,previewRaw:!1},v()}catch(t){o.current.fileOverlay&&(o.current.fileOverlay={...o.current.fileOverlay,err:t.message}),v()}}function $i(){let e=o.current;if(!e)return;let t=e.fileOverlay;t&&(e.savedFileView={dirPath:t.path,previewPath:t.preview?.path??null,previewRaw:t.previewRaw,maximized:t.maximized}),e.fileOverlay=null,v()}function $d(e){if(!o.current?.fileOverlay)return;let t=o.current.fileOverlay,n=t.path?`${t.path}/${e.name}`:e.name;e.kind==="dir"?Nt(n):e.kind==="file"&&Fd(n)}function Ud(e){let t=e?e.split("/").filter(Boolean):[],n=[l("span",{class:"crumb",...I(()=>Nt(""))},".")],s="";for(let r of t){s=s?`${s}/${r}`:r;let i=s;n.push(document.createTextNode(" / ")),n.push(l("span",{class:"crumb",...I(()=>Nt(i))},r))}return l("div",{class:"crumbs"},n)}function qd(e){if(!o.current)return;let t=o.current.composerValue;o.current.composerValue=t?`${t} ${e}`:e,rt(o.current.sessionId,o.current.composerValue),v()}function zd(e){let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.top="-1000px",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();let n=!1;try{n=document.execCommand("copy")}catch{n=!1}return document.body.removeChild(t),n}function da(e,t,n){let s=()=>{t.textContent="copied",setTimeout(n,900)},r=()=>{zd(e)?s():qd(e)};navigator.clipboard?.writeText?navigator.clipboard.writeText(e).then(s,r):r()}function fa(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function Kd(e,t,n,s){let r=String(n);da(`${fa(e,t)}:${n}`,s,()=>{s.textContent=r})}function Wd(e,t){let n=l("div",{class:"crumb path-crumb",title:"Copy path",...I(()=>da(fa(e,t),n,()=>{n.textContent=t}))},t);return n}function Gd(){o.current?.fileOverlay&&(o.current.fileOverlay.preview=null,v())}function pa(e){let t=e.fileOverlay;if(!t)return document.createTextNode("");let n;if(t.preview){let{path:s,content:r}=t.preview,i=Bd(s),a=i&&!t.previewRaw,c=[l("span",{class:"crumb",...I(()=>Gd())},"\u2190 back to listing")];i&&(c.push(l("span",{class:"crumb-sep"},"\xB7")),c.push(l("span",{class:"crumb",...I(()=>Hd())},a?"view source":"view rendered")));let u;if(a)u=l("div",{class:"md-view",html:ss(r)});else{let d=yo(r,s)??ie(r),f=r.split(`
701
+ `).length,p=l("div",{class:"code-gutter"});for(let m=1;m<=f;m++){let g=m,E=l("div",{class:"ln",title:"Copy path:line",...I(()=>Kd(e.cwd,s,g,E))},String(g));p.appendChild(E)}u=l("div",{class:"code-view"},p,l("pre",{},l("code",{class:"hljs",html:d})))}n=l("div",{class:"preview"},l("div",{class:"crumbs preview-crumbs"},l("div",{class:"crumbs-actions"},c),Wd(e.cwd,s)),u)}else n=l("div",{class:"body"},t.err?l("div",{class:"msg error"},t.err):null,t.path?l("div",{class:"entry",...I(()=>Nt(t.path.split("/").slice(0,-1).join("/")))},l("span",{class:"icon"},"\u25B8"),l("span",{class:"name"},".."),l("span",{class:"size"},"")):null,...t.entries.map(s=>l("div",{class:"entry",...I(()=>$d(s))},l("span",{class:"icon"},s.kind==="dir"?"\u25B8":"\xB7"),l("span",{class:"name"},s.name),l("span",{class:"size"},s.kind==="file"?`${s.size}b`:""))));return l("div",{class:"modal-bg",...I(s=>{s.target.classList.contains("modal-bg")&&$i()})},l("div",{class:t.maximized?"modal file-modal maximized":"modal file-modal"},l("div",{class:"topbar",style:"border-bottom:1px solid var(--border)"},l("span",{class:"title"},"Files"),l("span",{class:"pill"},e.cwd),l("span",{class:"spacer"}),l("button",{...I(Pd),title:t.maximized?"Restore":"Maximize"},t.maximized?"\u2921":"\u2922"),l("button",{...I($i)},"\xD7")),t.preview?null:Ud(t.path),l("div",{class:"files"},n)))}function Yd(e,t){e.focus();let n=!1;if(typeof document.execCommand=="function")try{n=document.execCommand("insertText",!1,t)}catch{n=!1}if(!n){let s=e.selectionStart??e.value.length,r=e.selectionEnd??e.value.length,i=e.value.slice(0,s),a=e.value.slice(r);e.value=i+t+a;let c=s+t.length;e.setSelectionRange(c,c),e.dispatchEvent(new Event("input",{bubbles:!0}))}}var $s=!1,Qd=100,qs=0,Ce=!1,Ee=!1,dt=!1,Ks=!1,zs=!1;document.addEventListener("focusin",e=>{e.target?.tagName==="SELECT"&&(Ks=!0)},!0);document.addEventListener("focusout",e=>{e.target?.tagName==="SELECT"&&(Ks=!1,zs&&(zs=!1,setTimeout(v,300)))},!0);var kn=!1,ut;function Ei(){ut!==void 0&&clearTimeout(ut),kn=!0,ut=setTimeout(()=>gs(),4e3)}function gs(){ut!==void 0&&(clearTimeout(ut),ut=void 0),kn&&(kn=!1,Ee=!1,ct())}function Ea(){dt=!0}function Ws(){dt=!1,Ee&&(Ee=!1,v())}document.addEventListener("pointerdown",()=>{Ce=!0},!0);document.addEventListener("pointerup",e=>{if(!Ce||(Ce=!1,qe!==void 0&&(clearTimeout(qe),qe=void 0),!Ee)||dt)return;if(Ee=!1,Ve()){Cn=!0;return}let n=e.target?.tagName;if(n==="TEXTAREA"||n==="INPUT"||n==="SELECT"){setTimeout(v,300);return}v()},!0);var Cn=!1;document.addEventListener("selectionchange",()=>{!Cn||Ve()||(Cn=!1,v())});document.addEventListener("pointercancel",()=>{Ce=!1,Ee&&!dt&&(Ee=!1,v())},!0);var ya=250,_a=0;function ma(){_a=performance.now()}function Gs(){let e=document.activeElement;return!(e instanceof HTMLTextAreaElement)&&!(e instanceof HTMLInputElement)?!1:performance.now()-_a<ya}var Us=!1,Vd=700,qe;function ct(){qs=0,v()}function v(){if($s)return;$s=!0;let e=performance.now()-qs,t=Math.max(0,Qd-e),n=()=>{if($s=!1,Ce||dt||kn){Ee=!0,Ce&&(qe!==void 0&&clearTimeout(qe),qe=setTimeout(()=>{qe=void 0,Ce&&(Ce=!1,Ee&&!dt&&(Ee=!1,v()))},Vd));return}if(Ks){zs=!0;return}if(Gs()){Us=!0,setTimeout(()=>{Us&&(Us=!1,v())},ya);return}if(Ve()){Cn=!0;return}qs=performance.now(),Se("render",Xd)};t>0?setTimeout(()=>requestAnimationFrame(n),t):requestAnimationFrame(n)}function Xd(){let e=document.getElementById("app");if(!e)return;let t=document.activeElement,n=null,s=null,r=null;if(t&&t!==document.body&&t.dataset&&t.dataset.focusKey&&(n=t.dataset.focusKey,"selectionStart"in t))try{s=t.selectionStart,r=t.selectionEnd}catch{}let i=()=>{if(!n)return;let _=e.querySelector(`[data-focus-key="${CSS.escape(n)}"]`);if(!_)return;_.focus();let T=_;if(s!==null&&typeof T.setSelectionRange=="function")try{T.setSelectionRange(s,r)}catch{}};if(ca(e,o)){Qe("patch"),i();return}Qe("teardown");let a=e.querySelector(".chat-body"),c=a?a.scrollTop:null,u=e.querySelector(".list"),d=u?u.scrollTop:null,f=u?Ps(u):null,p=e.querySelector(".files .body"),m=p?p.scrollTop:null,g=e.querySelector(".files .preview"),E=g?g.scrollTop:null;e.replaceChildren(),Ki(e,o);let y=e.querySelector(".chat-body");if(y){!Sn(y)&&c!==null&&(y.scrollTop=c),o.current&&la(o.current);let _=y.querySelector(".jump-to-latest");if(_){let N=y.scrollHeight-y.scrollTop-y.clientHeight<50;_.classList.toggle("visible",!N)}let T=y.querySelector(".turn-toast");T&&xn(y,T)}let S=e.querySelector(".list");S&&(f?Bs(S,f):d!==null&&(S.scrollTop=d));let A=e.querySelector(".files .body");A&&m!==null&&(A.scrollTop=m);let b=e.querySelector(".files .preview");b&&E!==null&&(b.scrollTop=E),i()}var va="hydra-acp-browser:filters",wa=["groupBy","showCold","hostFilter","hideThoughts","notifyOnTurnEnd","theme","fontScale","railWidth","lastSessionId"];function Zd(){try{let e=localStorage.getItem(va);return e?JSON.parse(e):{}}catch{return{}}}function jd(){try{let e={};for(let t of wa)e[t]=o[t];localStorage.setItem(va,JSON.stringify(e))}catch{}}var o={view:"list",sessions:[],agents:[],remotes:[],defaultCwd:null,groupBy:"recent",showCold:!0,sessionSearch:"",fontScale:1,railWidth:null,hostFilter:"__local",listHighlightedSessionId:null,hideThoughts:!1,notifyOnTurnEnd:!1,theme:"dark",banner:null,modal:null,current:null,lastSessionId:null,...Zd()},Jd=["sessions","groupBy","showCold","hostFilter","listHighlightedSessionId","sessionSearch"],Mn=!0;function Sa(){Mn=!0}function ga(){return Mn}function Fs(){Mn=!1}function M(e){let t=!1,n=!1;for(let s of Object.keys(e)){let r=e[s];Ys(o[s],r)||(o[s]=r,t=!0,wa.includes(s)&&(n=!0),Jd.includes(s)&&(Mn=!0))}n&&jd(),t&&v()}function Ys(e,t){return e===t?!0:e===null||t===null||typeof e!=typeof t||typeof e!="object"?!1:JSON.stringify(e)===JSON.stringify(t)}function Ta(e,t,n){if(!n)return t.sessions;let s=new Map(e.map(r=>[r.sessionId,r]));for(let r of s.values())r.status!=="cold"&&s.delete(r.sessionId);for(let r of t.removed)s.delete(r);for(let r of t.sessions)s.set(r.sessionId,r);return[...s.values()]}var ef="hydra-acp-session-cache";var pt="cache",xa="sessions";function tf(e){let t=[];for(let n of e)n.status!=="warm"&&(n.remote||t.push({sessionId:n.sessionId,cwd:n.cwd,agentId:n.agentId,currentModel:n.currentModel,title:n.title,status:n.status,busy:n.busy,awaitingInput:n.awaitingInput,priority:n.priority,importedFromMachine:n.importedFromMachine,upstreamSessionId:n.upstreamSessionId,armedTasks:n.armedTasks,updatedAt:n.updatedAt}));return t}var Nn=null;function ka(){return Nn||(Nn=new Promise(e=>{if(!("indexedDB"in window)){e(null);return}let t;try{t=indexedDB.open(ef,1)}catch{e(null);return}t.onupgradeneeded=()=>{t.result.objectStoreNames.contains(pt)||t.result.createObjectStore(pt,{keyPath:"key"})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null)}),Nn)}async function Ca(){let e=await ka();return e?new Promise(t=>{let n;try{n=e.transaction(pt,"readonly")}catch{t(null);return}let s=n.objectStore(pt).get(xa);s.onsuccess=()=>{let r=s.result;if(!r||!Array.isArray(r.sessions)||typeof r.cursor!="number"){t(null);return}t({sessions:r.sessions,cursor:r.cursor})},s.onerror=()=>t(null)}):null}var Qs,ft,Ia=Promise.resolve();function Ma(e,t){Qs={sessions:e,cursor:t},ft===void 0&&(ft=setTimeout(()=>{ft=void 0,Na()},2e3))}function Aa(){ft!==void 0&&(clearTimeout(ft),ft=void 0),Na()}function Na(){Ia=Ia.then(nf).catch(()=>{})}async function nf(){let e=Qs;if(!e)return;Qs=void 0;let t=await ka();if(!t)return;let n={key:xa,sessions:tf(e.sessions),cursor:e.cursor};return new Promise(s=>{let r;try{r=t.transaction(pt,"readwrite")}catch{s();return}r.objectStore(pt).put(n),r.oncomplete=()=>s(),r.onerror=()=>s()})}typeof window<"u"&&typeof document<"u"&&(window.addEventListener("pagehide",Aa),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Aa()}));function sf(){let e=window.getSelection();return!e||e.isCollapsed?!1:e.toString().length>0}async function X(e,t){let{timeoutMs:n,...s}=t??{},r=n!==void 0?new AbortController:void 0,i=r!==void 0?setTimeout(()=>r.abort(),n):void 0,a;try{a=await fetch(e,{credentials:"same-origin",headers:{"Content-Type":"application/json"},...r?{signal:r.signal}:{},...s})}catch(c){throw r?.signal.aborted?new Error("timed out \u2014 it may still have completed; check the session list"):c}finally{i!==void 0&&clearTimeout(i)}if(!a.ok){let c=`${a.status} ${a.statusText}`;try{let u=await a.json();u&&u.error&&(c=u.error)}catch{}throw new Error(c)}return a.status===204?null:await a.json()}var Vs=null,Rt;async function Ra(){let e=await Ca();e&&(o.sessions=e.sessions,Rt=e.cursor||void 0)}async function ke(){if(!Gs()){if(o.view==="chat"&&o.current&&!ee()){await rf(o.current.sessionId);return}await of()}}function La(e){e.status==="warm"&&o.current&&o.current.sessionId===e.sessionId&&o.current.cold&&En()}async function rf(e){try{let t=await X(`/api/sessions/${encodeURIComponent(e)}`),n=o.sessions.findIndex(r=>r.sessionId===e);if(n>=0?o.sessions[n]=t:o.sessions.push(t),!o.current||o.current.sessionId!==e)return;La(t);let s=`${t.title}|${t.cwd}|${t.agentId}|${t.currentModel}|${t.workspace?.label}|${t.workspace?.vcs?.branch}|${t.workspace?.clean}`;s!==o.current._lastMetaFp&&(o.current._lastMetaFp=s,v())}catch{}}async function of(){try{let e=Rt!==void 0,t=e?`/api/sessions?since=${Rt}`:"/api/sessions",n=await X(t),s={sessions:n.sessions??[],removed:n.removed??[],cursor:n.cursor??0},r=Ta(o.sessions,s,e);Rt=s.cursor,(s.removed.length>0||s.sessions.some(c=>c.status==="cold"))&&Ma(r,Rt);let i=o.banner!==null,a=!Ys(o.sessions,r);if(o.sessions=r,o.banner=null,o.current){let c=r.find(u=>u.sessionId===o.current.sessionId);c&&La(c)}if(a&&Sa(),!a&&!i||!i&&sf()||!i&&o.modal)return;v()}catch(e){M({banner:{kind:"bad",text:"session list failed: "+e.message}})}}function Oa(){Vs&&clearInterval(Vs),ke(),Vs=setInterval(()=>{ke()},2e3)}async function Da(){try{let e=await X("/api/agents");M({agents:e.agents??[]})}catch(e){M({banner:{kind:"warn",text:"agents unavailable: "+e.message}})}}async function Pa(){try{let e=await X("/api/remotes");M({remotes:e.remotes??[]})}catch{M({remotes:[]})}}async function Ba(){try{let e=await X("/api/config");M({defaultCwd:e.defaultCwd??null})}catch{}}async function ha(e,t={}){return X("/api/sessions/import",{method:"POST",body:JSON.stringify({bundle:e,replace:t.replace===!0})})}async function ba(e){let t=await fetch("/api/sessions/import",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({bundle:e})});if(t.ok)return{ok:!0,result:await t.json()};let n,s=`${t.status} ${t.statusText}`;try{let r=await t.json();r.existingSessionId&&(n=r.existingSessionId),r.error&&(s=r.error)}catch{}return{ok:!1,status:t.status,message:s,existingSessionId:n}}var Ha=70,af=110,Rn=null,Ln=null,gt=!1,ze=!1,mt=null;function Zs(){return mt||(mt=document.createElement("div"),mt.className="pull-refresh",document.body.appendChild(mt),mt)}function cf(e){let t=Zs(),n=Math.max(0,Math.min(e,af));ze=n>=Ha,t.style.opacity=n>0?String(Math.min(n/Ha,1)):"0",t.style.transform=`translate(-50%, ${n>0?n-32:-48}px)`,t.textContent=ze?"\u2191 Release to refresh":"\u2193 Pull to refresh"}function Xs(){let e=Zs();e.style.opacity="0",e.style.transform="translate(-50%, -48px)"}function $a(){return document.querySelector(".list")}function lf(e){if(gt=!1,ze=!1,o.view!=="list")return;let t=$a(),n=e.touches[0];!t||!n||t.scrollTop>0||!t.contains(n.target)||(Rn=n.clientX,Ln=n.clientY,gt=!0)}function uf(e){if(!gt||Rn===null||Ln===null)return;let t=$a(),n=e.touches[0];if(!t||!n)return;let s=n.clientY-Ln,r=n.clientX-Rn;if(Math.abs(r)>Math.abs(s)){Xs(),gt=!1,ze=!1;return}if(s<=0||t.scrollTop>0){Xs(),ze=!1;return}e.preventDefault(),cf(s)}function Fa(){if(gt&&ze){let e=Zs();e.textContent="Refreshing\u2026",location.reload()}else Xs();gt=!1,ze=!1,Rn=null,Ln=null}function Ua(){document.addEventListener("touchstart",lf,{passive:!0}),document.addEventListener("touchmove",uf,{passive:!1}),document.addEventListener("touchend",Fa,{passive:!0}),document.addEventListener("touchcancel",Fa,{passive:!0})}var js=80,qa=12,Js=.25,Me=220;function df(e){let t=e instanceof Element?e:null;for(;t&&t!==document.body;){if(t.scrollWidth>t.clientWidth&&t.scrollLeft>0)return!0;t=t.parentElement}return!1}var Et=null,On=null,me=null,Lt=!1,ht=!1,Ne=[],Ke=null,le=null,re=null,Dn=null,bt=null;function ff(e){if(Dn=null,bt=null,e==="toList")return Wi();let t=o.lastSessionId;if(!t)return null;let n=Si();if(n&&n.sessionId===t){let r=aa(n);if(r){r.style.transform="",r.style.transition="",r.style.zIndex="",Dn=n;let i=r.querySelector(".chat-body");return i&&(bt={body:i,top:Ii()}),r}}let s=o.sessions.find(r=>r.sessionId===t);return s?Gi(s):null}function pf(e){let t=document.getElementById("app");if(!t)return!1;let n=ff(e);if(!n||(Ne=Array.from(t.children),Ne.length===0))return!1;le=document.createElement("div"),le.className="swipe-reveal-content",le.appendChild(n),Ke=document.createElement("div"),Ke.className="swipe-reveal-layer",Ke.appendChild(le),re=document.createElement("div"),re.className="swipe-reveal-scrim";let s=e==="toList";for(let r of Ne)r.style.zIndex=s?"2":"0";return Ke.style.zIndex=s?"0":"2",re.style.zIndex="1",t.insertBefore(re,t.firstChild),t.insertBefore(Ke,t.firstChild),bt&&(bt.body.scrollTop=bt.top),Ea(),!0}function za(e,t){if(!le||!re)return;let n=Math.min(Math.abs(e)/js,1);if(t==="toList"){for(let s of Ne)s.style.transform=`translateX(${e}px)`;re.style.opacity=String(Js*(1-n))}else{let s=window.innerWidth;le.style.transform=`translateX(${s+e}px)`,re.style.opacity=String(Js*n)}}function Ka(){for(let e of Ne)e.style.transform="",e.style.transition="",e.style.zIndex="";Ne=[],Ke?.remove(),re?.remove(),Ke=null,le=null,re=null,Dn=null,bt=null,Ws()}function mf(e){let t=window.innerWidth;if(e==="toList"){for(let s of Ne)s.style.transition=`transform ${Me}ms ease-out`,s.style.transform=`translateX(${t}px)`;re&&(re.style.transition=`opacity ${Me}ms ease-out`,re.style.opacity="0")}else le&&(le.style.transition=`transform ${Me}ms ease-out`,le.style.transform="translateX(0)"),re&&(re.style.transition=`opacity ${Me}ms ease-out`,re.style.opacity=String(Js));let n=Dn;setTimeout(()=>{if(Ws(),e==="toList"){Fe();return}if(n&&Ai(n))return;let s=o.lastSessionId,r=s?o.sessions.find(i=>i.sessionId===s):void 0;s&&r?He(s,r.status==="cold"):Ka()},Me)}function Wa(){for(let e of Ne)e.style.transition=`transform ${Me}ms ease-out`,e.style.transform="translateX(0)";le&&(le.style.transition=`transform ${Me}ms ease-out`),za(0,me??"toList"),setTimeout(Ka,Me)}function Pn(){Et=null,On=null,me=null,Lt=!1,ht=!1}function gf(e){if(Pn(),ee()||o.modal||o.banner)return;let t=e.touches[0];if(t){if(o.view==="list"&&o.lastSessionId)me="toChat";else if(o.view==="chat"&&!Te(t.target)&&!df(t.target))me="toList";else return;Et=t.clientX,On=t.clientY,Lt=!0}}function hf(e){if(!Lt||Et===null||On===null||!me)return;let t=e.touches[0];if(!t)return;let n=t.clientX-Et,s=t.clientY-On;if(!ht){if(Math.abs(n)<qa&&Math.abs(s)<qa)return;let r=me==="toChat"?n<0:n>0;if(Math.abs(s)>Math.abs(n)||!r){Lt=!1;return}if(ht=!0,!pf(me)){Lt=!1,ht=!1;return}}e.preventDefault(),za(n,me)}function bf(e){if(!ht||Et===null||!me){Pn();return}let t=e.changedTouches[0],n=t?t.clientX-Et:0;(me==="toChat"?n<=-js:n>=js)?mf(me):Wa(),Pn()}function Ef(){ht&&Wa(),Pn()}function Ga(){document.addEventListener("touchstart",gf,{passive:!0}),document.addEventListener("touchmove",hf,{passive:!1}),document.addEventListener("touchend",bf,{passive:!0}),document.addEventListener("touchcancel",Ef,{passive:!0})}var yf=(()=>{try{return new URLSearchParams(window.location.search).get("vpdebug")==="1"}catch{return!1}})();function _f(e,t,n){let s=document.getElementById("__viewport_debug__");s||(s=document.createElement("div"),s.id="__viewport_debug__",s.style.cssText="position:absolute;top:0;left:0;right:0;z-index:9999;background:rgba(0,0,0,0.85);color:#fd9;padding:0.4rem 0.6rem;font:11px/1.4 ui-monospace,monospace;border:1px solid #d4a17e;border-radius:6px;white-space:pre;pointer-events:none;opacity:0.9",document.body.appendChild(s));let r=document.querySelector(".composer"),i=r?.getBoundingClientRect(),a=r?getComputedStyle(r).paddingBottom:"n/a",c=document.getElementById("app"),u=c?.getBoundingClientRect(),d=c?getComputedStyle(c).height:"n/a",p=document.querySelector(".chat-body")?.getBoundingClientRect(),m=document.getElementById("__vp_icb_line__");m||(m=document.createElement("div"),m.id="__vp_icb_line__",document.body.appendChild(m)),m.style.cssText=`position:absolute;left:0;right:0;top:${window.innerHeight-3}px;height:3px;background:lime;z-index:9999;pointer-events:none`;let g=document.getElementById("__vp_app_line__");g||(g=document.createElement("div"),g.id="__vp_app_line__",document.body.appendChild(g)),g.style.cssText="position:absolute;left:0;right:0;top:calc(var(--app-height, 100%) - 3px);height:3px;background:magenta;z-index:9999;pointer-events:none";let E=document.querySelector(".composer-buttons");E&&(E.style.outline="2px solid cyan");let y=A=>A?`top=${A.top.toFixed(0)} h=${A.height.toFixed(0)} bottom=${A.bottom.toFixed(0)}`:"n/a",S=document.body.getBoundingClientRect();s.textContent=`innerHeight=${window.innerHeight} appH(vv+inset)=${e.toFixed(1)} inset=${Ya().toFixed(0)}
695
702
  vv.offsetTop=${t.toFixed(1)} keyboard-open=${n}
696
703
  screen.h=${screen.height} docClientH=${document.documentElement.clientHeight}
697
- body ${E(S)}
698
- #app styleH=${d} ${E(u)}
699
- .chat-body ${E(m)}
700
- .composer padBottom=${a} ${E(i)}`}var Ot=null;function Wa(){return Ot||(Ot=document.createElement("div"),Ot.style.cssText="position:fixed;top:0;left:0;width:1px;height:env(safe-area-inset-top,0px);visibility:hidden;pointer-events:none",document.documentElement.appendChild(Ot)),Ot.getBoundingClientRect().height}function Ga(){let e=document.documentElement,t=new Map,n=null,s=null,r=null,i=!1,a=()=>{if(i)return;let m=window.visualViewport,p=(m?.height??window.innerHeight)+Wa(),g=m?.offsetTop??0;p!==n&&(n=p,e.style.setProperty("--app-height",`${p}px`));let v=Math.round(m?.width??window.innerWidth),E=Math.max(p,t.get(v)??0);t.set(v,E);let S=E-p>100;S!==s&&(s=S,e.classList.toggle("keyboard-open",S));let A=S?g:0;A!==r&&(r=A,e.style.setProperty("--app-offset-top",`${A}px`)),mf&&gf(p,A,S)};a(),window.visualViewport&&(window.visualViewport.addEventListener("resize",a),window.visualViewport.addEventListener("scroll",a)),window.addEventListener("resize",a),window.addEventListener("orientationchange",a),window.addEventListener("pageshow",a),window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),window.addEventListener("pointerdown",()=>{i=!0},{capture:!0});let c=()=>{i&&(i=!1,a())};window.addEventListener("pointerup",c,{capture:!0}),window.addEventListener("pointercancel",c,{capture:!0});let u=1200,d=0,f=()=>{d&&cancelAnimationFrame(d);let m=performance.now()+u,p=null,g=0,v=()=>{a();let E=window.visualViewport?.height??window.innerHeight;if(p!==null&&Math.abs(E-p)<.5?g++:g=0,p=E,g>=2||performance.now()>=m){d=0;return}d=requestAnimationFrame(v)};d=requestAnimationFrame(v)};document.addEventListener("focusin",f),document.addEventListener("focusout",f),setInterval(a,1e3)}xi();nr();_n();Ga();cr(()=>_());window.addEventListener("DOMContentLoaded",async()=>{await Ma(),Ra(),La(),Da(),Oa(),it(),o.notifyOnTurnEnd&&typeof Notification<"u"&&Notification.permission==="granted"&&mn().then(()=>at()),Ei(),_s(),_i(),_(),Fa(),Ka()});window.addEventListener("hashchange",()=>{_s()});function Ya(){let e=document.getElementById("app");e&&(e.style.transform="translateZ(0)",requestAnimationFrame(()=>{e.style.transform=""}))}window.addEventListener("pageshow",()=>{ct(),Ya()});document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&(ct(),Ya())});document.addEventListener("visibilitychange",()=>Ct());window.addEventListener("focus",()=>Ct());window.addEventListener("blur",()=>Ct());window.addEventListener("online",()=>En());setInterval(()=>{o.current?.inTurn&&o.current.spinner&&_()},1e3);window.addEventListener("keydown",e=>{e.key.toLowerCase()!=="p"||!e.ctrlKey||e.metaKey||e.altKey||(e.preventDefault(),ee()?Ds():o.view==="chat"&&Fe())});window.addEventListener("keydown",e=>{e.key!=="Escape"||!o.modal||(e.preventDefault(),e.stopImmediatePropagation(),be())});window.addEventListener("keydown",e=>Xi(e));window.addEventListener("keydown",e=>{if(e.key!=="PageUp"&&e.key!=="PageDown"||o.view!=="chat")return;let t=document.activeElement;if(t instanceof HTMLTextAreaElement&&t.scrollHeight>t.clientHeight)return;let n=document.querySelector(".chat-body");if(!n)return;if(e.preventDefault(),e.metaKey||e.ctrlKey){Tn(e.key==="PageDown"?"next":"prev");return}let s=n.clientHeight*.9;n.scrollBy({top:e.key==="PageDown"?s:-s,behavior:"smooth"})});})();
704
+ body ${y(S)}
705
+ #app styleH=${d} ${y(u)}
706
+ .chat-body ${y(p)}
707
+ .composer padBottom=${a} ${y(i)}`}var Ot=null;function Ya(){return Ot||(Ot=document.createElement("div"),Ot.style.cssText="position:fixed;top:0;left:0;width:1px;height:env(safe-area-inset-top,0px);visibility:hidden;pointer-events:none",document.documentElement.appendChild(Ot)),Ot.getBoundingClientRect().height}function Qa(){let e=document.documentElement,t=new Map,n=null,s=null,r=null,i=!1,a=()=>{if(i)return;let p=window.visualViewport,m=(p?.height??window.innerHeight)+Ya(),g=p?.offsetTop??0;m!==n&&(n=m,e.style.setProperty("--app-height",`${m}px`));let E=Math.round(p?.width??window.innerWidth),y=Math.max(m,t.get(E)??0);t.set(E,y);let S=y-m>100;S!==s&&(s=S,e.classList.toggle("keyboard-open",S));let A=S?g:0;A!==r&&(r=A,e.style.setProperty("--app-offset-top",`${A}px`)),yf&&_f(m,A,S)};a(),window.visualViewport&&(window.visualViewport.addEventListener("resize",a),window.visualViewport.addEventListener("scroll",a)),window.addEventListener("resize",a),window.addEventListener("orientationchange",a),window.addEventListener("pageshow",a),window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),window.addEventListener("pointerdown",()=>{i=!0},{capture:!0});let c=()=>{i&&(i=!1,a())};window.addEventListener("pointerup",c,{capture:!0}),window.addEventListener("pointercancel",c,{capture:!0});let u=1200,d=0,f=()=>{d&&cancelAnimationFrame(d);let p=performance.now()+u,m=null,g=0,E=()=>{a();let y=window.visualViewport?.height??window.innerHeight;if(m!==null&&Math.abs(y-m)<.5?g++:g=0,m=y,g>=2||performance.now()>=p){d=0;return}d=requestAnimationFrame(E)};d=requestAnimationFrame(E)};document.addEventListener("focusin",f),document.addEventListener("focusout",f),setInterval(a,1e3)}Ci();nr();_n();Qa();cr(()=>v());window.addEventListener("DOMContentLoaded",async()=>{await Ra(),Oa(),Da(),Ba(),Pa(),it(),o.notifyOnTurnEnd&&typeof Notification<"u"&&Notification.permission==="granted"&&mn().then(()=>at()),_i(),_s(),wi(),v(),Ua(),Ga()});window.addEventListener("hashchange",()=>{_s()});function Va(){let e=document.getElementById("app");e&&(e.style.transform="translateZ(0)",requestAnimationFrame(()=>{e.style.transform=""}))}window.addEventListener("pageshow",()=>{ct(),Va()});document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&(ct(),Va())});document.addEventListener("visibilitychange",()=>kt());window.addEventListener("focus",()=>kt());window.addEventListener("blur",()=>kt());window.addEventListener("online",()=>En());setInterval(()=>{o.current?.inTurn&&o.current.spinner&&v()},1e3);window.addEventListener("keydown",e=>{e.key.toLowerCase()!=="p"||!e.ctrlKey||e.metaKey||e.altKey||(e.preventDefault(),ee()?Ds():o.view==="chat"&&Fe())});window.addEventListener("keydown",e=>{e.key!=="Escape"||!o.modal||(e.preventDefault(),e.stopImmediatePropagation(),be())});window.addEventListener("keydown",e=>ji(e));window.addEventListener("keydown",e=>{if(e.key!=="PageUp"&&e.key!=="PageDown"||o.view!=="chat")return;let t=document.activeElement;if(t instanceof HTMLTextAreaElement&&t.scrollHeight>t.clientHeight)return;let n=document.querySelector(".chat-body");if(!n)return;if(e.preventDefault(),e.metaKey||e.ctrlKey){Tn(e.key==="PageDown"?"next":"prev");return}let s=n.clientHeight*.9;n.scrollBy({top:e.key==="PageDown"?s:-s,behavior:"smooth"})});})();
701
708
  </script>
702
709
  </body>
703
710
  </html>