site-operator 0.2.8 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-operator.es.js","names":["t","e","s","o","n","r","i","S","c","i","e","h","r","o","n","a","c","l","p","d","t","u","s","f","b","t","i","s","e","h","o","n","r","l","c","a","u","d","f","v","m","p","y","x","M","s","t","r","e","o","o","t","e","o","e","t","r","n","i","s","t","r","e","t","c","e","o","t","r","s","n","i","mappedMessages: v0_8.Types.ServerToClientMessage[]","dataModelUpdate: v0_8.Types.DataModelUpdate","normalized: v0_8.Types.DataModelUpdate","normalized: Record<string, unknown>","normalized: v0_8.Types.ServerToClientMessage","a","b","i","s","c","n","w","i","s","t","h","e","t","e","i","t","o","i","n","e","l","c","f","r","s","d","m","p","h","j","s","e","i","t","o","r","h","n","t","s","i","h","o","m","o","t","i","s","l","r","t","r","l","o","i","s","t","e","o","s","i","t","h","e","t","s","i","e","r","i","n","t","o","s","skandiaThemeVars: Record<string, string>","defaultTheme: v0_8.Types.Theme","ID_PREFIXES: Record<StoreItemType, string>","messages: UIMessage[]","userMsg: UIMessage","placeholder: UIMessage","activityMsg: UIMessage"],"sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit-html/lit-html.js","../../../node_modules/lit-element/lit-element.js","../../../node_modules/@lit/reactive-element/decorators/custom-element.js","../../../node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/@lit/reactive-element/decorators/state.js","../../../node_modules/@lit/reactive-element/decorators/base.js","../../../node_modules/@lit/reactive-element/decorators/query.js","../src/components/agent-chat.styles.ts","../src/components/chat-header.styles.ts","../src/components/ui/icon-button.styles.ts","../src/components/ui/icon-button.ts","../src/icons.ts","../src/components/chat-header.ts","../src/components/chat-thread.styles.ts","../src/components/chat-message.styles.ts","../src/services/a2ui.service.ts","../src/components/chat-message.ts","../src/components/chat-thread.ts","../src/components/chat-composer.styles.ts","../src/components/chat-composer.ts","../../../node_modules/signal-polyfill/dist/index.js","../../../node_modules/@lit-labs/signals/lib/signal-watcher.js","../../../node_modules/lit-html/directive.js","../../../node_modules/lit-html/directive-helpers.js","../../../node_modules/lit-html/async-directive.js","../../../node_modules/@lit-labs/signals/lib/watch.js","../../../node_modules/@lit-labs/signals/lib/html-tag.js","../../../node_modules/@lit-labs/signals/index.js","../../../node_modules/@lit/context/lib/context-request-event.js","../../../node_modules/@lit/context/lib/value-notifier.js","../../../node_modules/@lit/context/lib/controllers/context-provider.js","../../../node_modules/@lit/context/lib/decorators/provide.js","../src/models/a2ui.theme.ts","../src/components/a2ui-theme-provider.ts","../src/components/chat-history-list.styles.ts","../src/components/chat-history-list.ts","../src/services/inspector.service.ts","../src/components/inspector-window.styles.ts","../src/components/inspector-window.ts","../src/utils/id-generator.ts","../src/services/chat-portal.service.ts","../src/services/chat.subscriber.ts","../src/services/conversation.service.ts","../src/services/chat.service.ts","../src/hooks/chat.controller.ts","../src/services/fetch-interceptor.service.ts","../src/components/agent-chat.ts","../src/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: flex;\n flex-direction: column;\n height: 100vh;\n background-color: var(--agent-bg-white, #ffffff);\n overflow: hidden;\n position: relative;\n }\n\n .chat-layout {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: relative;\n }\n\n agent-chat-header {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n z-index: 10;\n }\n\n agent-chat-thread {\n flex: 1;\n /* padding-bottom: 8rem; / / Space for composer */\n }\n\n .inspector-toggle {\n position: absolute;\n bottom: 110px;\n left: 20px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: #ffffff;\n border: 1px solid #e5e7eb;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #6b7280;\n transition: all 0.2s;\n z-index: 999;\n }\n\n .inspector-toggle:hover {\n background: #f3f4f6;\n color: #111827;\n transform: scale(1.1);\n }\n\n`;\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n border-bottom: 1px solid var(--agent-border-zinc-200, #e4e4e7);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 4rem; /* 64px */\n padding: 0 1rem;\n background-color: rgba(255, 255, 255, 0.8);\n backdrop-filter: blur(4px);\n }\n\n\n h1 {\n margin: 0;\n font-size: 1.125rem; /* 18px */\n font-weight: 600;\n color: var(--agent-text-foreground, #09090b);\n }\n\n .actions {\n display: flex;\n gap: 0.5rem;\n }\n`;\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: inline-flex;\n }\n\n button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n cursor: pointer;\n border-radius: var(--agent-radius-full, 9999px);\n padding: 0.5rem;\n color: var(--agent-text-zinc-500, #71717a);\n transition: color 0.2s, background-color 0.2s;\n }\n\n button:hover {\n color: var(--agent-text-foreground, #09090b);\n background-color: var(--agent-bg-zinc-100, #f4f4f5);\n }\n\n ::slotted(svg) {\n width: 1.25rem;\n height: 1.25rem;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './icon-button.styles';\n\n@customElement('agent-icon-button')\nexport class AgentIconButton extends LitElement {\n static styles = styles;\n\n @property() tooltip = '';\n\n render() {\n return html`\n <button title=\"${this.tooltip}\" aria-label=\"${this.tooltip || 'Action'}\">\n <slot></slot>\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'agent-icon-button': AgentIconButton;\n }\n}\n","import { html } from 'lit';\n\nexport const PlusIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus\">\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n</svg>`;\n\nexport const SendIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-send\">\n <path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\" />\n <path d=\"m21.854 2.147-10.94 10.939\" />\n</svg>`;\n\nexport const CopyIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-copy\">\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n</svg>`;\n\nexport const ReloadIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-rotate-cw\">\n <path d=\"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8\" />\n <path d=\"M21 3v5h-5\" />\n</svg>`;\n\nexport const StopIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-square\">\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n</svg>`;\n\nexport const HistoryIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-history\">\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n <path d=\"M12 7v5l4 2\" />\n</svg>`;\n\nexport const ToolIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-wrench\">\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\" />\n</svg>`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './chat-header.styles';\nimport './ui/icon-button';\nimport { PlusIcon, HistoryIcon } from '../icons';\n\n@customElement('agent-chat-header')\nexport class ChatHeader extends LitElement {\n static styles = styles;\n\n @property({ type: String }) title = 'Agent Chat';\n\n private _handleNewThread() {\n this.dispatchEvent(new CustomEvent('new-thread', { bubbles: true, composed: true }));\n }\n\n private _handleToggleHistory() {\n this.dispatchEvent(new CustomEvent('toggle-history', { bubbles: true, composed: true }));\n }\n\n render() {\n return html`\n <header class=\"header\">\n <h1>${this.title}</h1>\n <div class=\"actions\">\n <agent-icon-button tooltip=\"Conversaciones\" @click=\"${this._handleToggleHistory}\">\n ${HistoryIcon}\n </agent-icon-button>\n <agent-icon-button tooltip=\"Nuevo Chat\" @click=\"${this._handleNewThread}\">\n ${PlusIcon}\n </agent-icon-button>\n </div>\n </header>\n `;\n }\n}\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n height: 100%;\n overflow-y: auto;\n background-color: var(--agent-bg-white, #ffffff);\n padding-top: 4rem; /* Spacer for fixed header */\n }\n\n .messages-list {\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n padding: 1rem;\n max-width: 48rem; /* max-w-screen-md */\n margin: 0 auto;\n min-height: calc(100% - 4rem); \n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--agent-text-foreground, #09090b);\n min-height: 50vh;\n }\n\n .empty-avatar {\n width: 3rem;\n height: 3rem;\n border-radius: var(--agent-radius-full, 9999px);\n border: 1px solid var(--agent-border-zinc-200, #e4e4e7);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.875rem;\n margin-bottom: 1rem;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n }\n\n .empty-avatar-img {\n width: 3rem;\n height: 3rem;\n border-radius: var(--agent-radius-full, 9999px);\n object-fit: cover;\n margin-bottom: 1rem;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n }\n\n .empty-text {\n font-size: 1.25rem;\n line-height: 1.75rem;\n text-align: center;\n padding: 0 1rem;\n }\n`;\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n margin: 1rem 0;\n }\n\n .message-container {\n display: flex;\n gap: 0.75rem;\n max-width: 100%;\n align-items: flex-end;\n }\n\n :host([role=\"user\"]) .message-container {\n justify-content: flex-end;\n }\n\n :host([role=\"assistant\"]) .message-container {\n justify-content: flex-start;\n }\n\n .avatar {\n flex-shrink: 0;\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--agent-radius-full, 9999px);\n border: 1px solid var(--agent-border-zinc-200, #e4e4e7);\n font-size: 0.75rem;\n color: var(--agent-text-foreground, #09090b);\n }\n\n .avatar-img {\n width: 2rem;\n height: 2rem;\n border-radius: 9999px;\n object-fit: cover;\n flex-shrink: 0;\n }\n\n .content-wrapper {\n display: flex;\n flex-direction: column;\n max-width: 80%;\n }\n\n .bubble {\n padding: 0.5rem 1.25rem;\n border-radius: var(--agent-radius-3xl, 1.5rem);\n color: var(--agent-text-foreground, #09090b);\n line-height: 1.5;\n white-space: pre-wrap;\n }\n\n :host([role=\"user\"]) .bubble {\n background-color: var(--agent-bg-zinc-100, #f4f4f5);\n }\n\n :host([role=\"assistant\"]) .bubble {\n background-color: transparent;\n padding-left: 0;\n }\n \n .actions {\n display: flex;\n gap: 0.25rem;\n margin-top: 0.5rem;\n opacity: 0;\n transition: opacity 0.2s;\n }\n\n /* Cursor animation */\n .bubble.streaming::after {\n content: '';\n display: inline-block;\n width: 0.125rem;\n height: 1em;\n background-color: currentColor;\n margin-left: 0.125rem;\n vertical-align: text-bottom;\n animation: cursor-blink 1s step-end infinite;\n }\n\n @keyframes cursor-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0; }\n }\n\n .message-container:hover .actions {\n opacity: 1;\n }\n\n .typing-indicator {\n display: flex;\n gap: 0.25rem;\n padding: 0.25rem 0;\n }\n\n .typing-dot {\n width: 0.375rem;\n height: 0.375rem;\n background-color: var(--agent-text-foreground, #09090b);\n border-radius: 50%;\n opacity: 0.4;\n animation: typing 1.4s infinite ease-in-out both;\n }\n\n .typing-dot:nth-child(1) {\n animation-delay: -0.32s;\n }\n \n .typing-dot:nth-child(2) {\n animation-delay: -0.16s;\n }\n\n @keyframes typing {\n 0%, 80%, 100% { \n transform: scale(0);\n } \n 40% { \n transform: scale(1); \n }\n }\n`;\n","import { v0_8 } from '@a2ui/lit';\nimport type { ActivitySnapshotEvent } from \"@ag-ui/client\";\nimport type { UIMessage } from '../models/chat.types';\n\n/**\n * Service to manage A2UI message processing and surface updates.\n */\nexport class A2UIService {\n public processor: v0_8.Types.MessageProcessor = v0_8.Data.createSignalA2uiMessageProcessor();\n\n /**\n * Initializes the A2UI service.\n */\n constructor() {\n // Initialize with empty messages to clear surfaces\n \n }\n\n private mapMessage(message: UIMessage): v0_8.Types.ServerToClientMessage[] {\n if (message.role !== 'assistant' || !message.toolCalls) {\n throw new Error(\"Unsupported message type for A2UI processing\");\n }\n\n const mappedMessages: v0_8.Types.ServerToClientMessage[] = [];\n\n for (const toolCall of message.toolCalls) {\n if (toolCall.type !== 'function' || !toolCall.function) {\n continue;\n }\n\n const toolName = toolCall.function.name;\n const args = this.parseToolArguments(toolCall.function.arguments, toolName);\n if (!args) {\n continue;\n }\n\n if (toolName === 'a2ui_begin_rendering') {\n const beginRendering = this.mapBeginRendering(args);\n if (beginRendering) {\n mappedMessages.push({ beginRendering });\n }\n continue;\n }\n\n if (toolName === 'a2ui_update_surface') {\n const surfaceUpdate = this.mapSurfaceUpdate(args);\n if (surfaceUpdate) {\n mappedMessages.push({ surfaceUpdate });\n }\n continue;\n }\n\n if (toolName === 'a2ui_update_data_model') {\n const dataModelUpdate = this.mapDataModelUpdate(args);\n if (dataModelUpdate) {\n mappedMessages.push({ dataModelUpdate });\n }\n continue;\n }\n\n if (toolName === 'a2ui_delete_surface') {\n const deleteSurface = this.mapDeleteSurface(args);\n if (deleteSurface) {\n mappedMessages.push({ deleteSurface });\n }\n continue;\n }\n }\n\n return mappedMessages;\n }\n\n private parseToolArguments(rawArgs: unknown, toolName: string): Record<string, unknown> | null {\n if (rawArgs == null) {\n console.warn(`A2UIService: Missing arguments for ${toolName}`);\n return null;\n }\n\n if (typeof rawArgs === \"string\") {\n const trimmedArgs = rawArgs.trim();\n if (trimmedArgs === \"\") {\n return {};\n }\n try {\n return JSON.parse(trimmedArgs) as Record<string, unknown>;\n } catch (error) {\n console.warn(`A2UIService: Failed to parse arguments for ${toolName}`, error);\n return null;\n }\n }\n\n if (typeof rawArgs === \"object\") {\n return rawArgs as Record<string, unknown>;\n }\n\n console.warn(`A2UIService: Unsupported arguments type for ${toolName}`);\n return null;\n }\n\n private mapBeginRendering(args: Record<string, unknown>): v0_8.Types.BeginRenderingMessage | null {\n const surfaceId = this.getSurfaceId(args);\n const root = this.getRootComponentId(args);\n\n if (!surfaceId || !root) {\n console.warn(\"A2UIService: Missing surfaceId or root for begin rendering\");\n return null;\n }\n\n const styles = (typeof args.styles === \"object\" && args.styles) ? (args.styles as Record<string, string>) : undefined;\n return styles ? { surfaceId, root, styles } : { surfaceId, root };\n }\n\n private mapSurfaceUpdate(args: Record<string, unknown>): v0_8.Types.SurfaceUpdateMessage | null {\n const surfaceId = this.getSurfaceId(args);\n\n if (!surfaceId) {\n console.warn(\"A2UIService: Missing surfaceId for surface update\");\n return null;\n }\n\n const components = Array.isArray(args.components) ? args.components : [];\n return {\n surfaceId,\n components: components as v0_8.Types.ComponentInstance[]\n };\n }\n\n private mapDataModelUpdate(args: Record<string, unknown>): v0_8.Types.DataModelUpdate | null {\n const surfaceId = this.getSurfaceId(args);\n\n if (!surfaceId) {\n console.warn(\"A2UIService: Missing surfaceId for data model update\");\n return null;\n }\n\n const contents = this.normalizeValueMapArray(args.contents);\n const dataModelUpdate: v0_8.Types.DataModelUpdate = {\n surfaceId,\n contents\n };\n\n if (typeof args.path === \"string\") {\n dataModelUpdate.path = args.path;\n }\n\n return dataModelUpdate;\n }\n\n private normalizeDataModelUpdate(update: v0_8.Types.DataModelUpdate): v0_8.Types.DataModelUpdate {\n const normalized: v0_8.Types.DataModelUpdate = {\n surfaceId: update.surfaceId,\n contents: this.normalizeValueMapArray(update.contents)\n };\n\n if (typeof update.path === \"string\") {\n normalized.path = update.path;\n }\n\n return normalized;\n }\n\n private mapDeleteSurface(args: Record<string, unknown>): v0_8.Types.DeleteSurfaceMessage | null {\n const surfaceId = this.getSurfaceId(args);\n\n if (!surfaceId) {\n console.warn(\"A2UIService: Missing surfaceId for delete surface\");\n return null;\n }\n\n return { surfaceId };\n }\n\n private getSurfaceId(args: Record<string, unknown>): string | null {\n const surfaceId = args.surfaceId ?? args.surface_id;\n\n if (typeof surfaceId === \"string\" && surfaceId.trim()) {\n return surfaceId;\n }\n\n if (typeof surfaceId === \"number\") {\n return String(surfaceId);\n }\n\n return null;\n }\n\n private getRootComponentId(args: Record<string, unknown>): string | null {\n const root =\n args.root ??\n args.rootComponentId ??\n args.root_component ??\n args.root_component_id;\n\n if (typeof root === \"string\" && root.trim()) {\n return root;\n }\n\n if (typeof root === \"number\") {\n return String(root);\n }\n\n return null;\n }\n\n private normalizeValueMapArray(contents: unknown): v0_8.Types.ValueMap[] {\n if (!Array.isArray(contents)) {\n return [];\n }\n\n return contents\n .filter((entry) => entry && typeof entry === \"object\" && \"key\" in entry)\n .map((entry) => this.normalizeValueMapEntry(entry as Record<string, unknown>));\n }\n\n private normalizeValueMapEntry(entry: Record<string, unknown>): v0_8.Types.ValueMap {\n const normalized: Record<string, unknown> = { ...entry };\n\n if (\"value_string\" in entry) {\n normalized.valueString = entry[\"value_string\"];\n }\n if (\"valueString\" in entry) {\n normalized.valueString = entry[\"valueString\"];\n }\n if (\"value_number\" in entry) {\n normalized.valueNumber = entry[\"value_number\"];\n }\n if (\"valueNumber\" in entry) {\n normalized.valueNumber = entry[\"valueNumber\"];\n }\n if (\"value_boolean\" in entry) {\n normalized.valueBoolean = entry[\"value_boolean\"];\n }\n if (\"valueBoolean\" in entry) {\n normalized.valueBoolean = entry[\"valueBoolean\"];\n }\n\n const valueMap = entry[\"valueMap\"] ?? entry[\"value_map\"];\n if (valueMap !== undefined) {\n normalized.valueMap = this.normalizeValueMapArray(valueMap);\n }\n\n delete normalized[\"value_string\"];\n delete normalized[\"value_number\"];\n delete normalized[\"value_boolean\"];\n delete normalized[\"value_map\"];\n\n if (typeof normalized.key !== \"string\") {\n normalized.key = String(normalized.key ?? \"\");\n }\n\n return normalized as v0_8.Types.ValueMap;\n }\n\n private isServerToClientMessage(message: unknown): message is v0_8.Types.ServerToClientMessage {\n if (!message || typeof message !== \"object\") {\n return false;\n }\n\n const candidate = message as Record<string, unknown>;\n return (\n \"beginRendering\" in candidate ||\n \"begin_rendering\" in candidate ||\n \"surfaceUpdate\" in candidate ||\n \"surface_update\" in candidate ||\n \"dataModelUpdate\" in candidate ||\n \"data_model_update\" in candidate ||\n \"deleteSurface\" in candidate ||\n \"delete_surface\" in candidate\n );\n }\n\n private normalizeServerMessage(message: v0_8.Types.ServerToClientMessage | Record<string, unknown>): v0_8.Types.ServerToClientMessage {\n const messageRecord = message as Record<string, unknown>;\n if (\"beginRendering\" in messageRecord || \"surfaceUpdate\" in messageRecord || \"dataModelUpdate\" in messageRecord || \"deleteSurface\" in messageRecord) {\n const existing = message as v0_8.Types.ServerToClientMessage;\n if (existing.dataModelUpdate) {\n return { ...existing, dataModelUpdate: this.normalizeDataModelUpdate(existing.dataModelUpdate) };\n }\n return existing;\n }\n\n const normalized: v0_8.Types.ServerToClientMessage = {};\n\n const beginRenderingArgs = messageRecord[\"begin_rendering\"];\n if (beginRenderingArgs && typeof beginRenderingArgs === \"object\") {\n const beginRendering = this.mapBeginRendering(beginRenderingArgs as Record<string, unknown>);\n if (beginRendering) {\n normalized.beginRendering = beginRendering;\n }\n }\n\n const surfaceUpdateArgs = messageRecord[\"surface_update\"];\n if (surfaceUpdateArgs && typeof surfaceUpdateArgs === \"object\") {\n const surfaceUpdate = this.mapSurfaceUpdate(surfaceUpdateArgs as Record<string, unknown>);\n if (surfaceUpdate) {\n normalized.surfaceUpdate = surfaceUpdate;\n }\n }\n\n const dataModelUpdateArgs = messageRecord[\"data_model_update\"];\n if (dataModelUpdateArgs && typeof dataModelUpdateArgs === \"object\") {\n const dataModelUpdate = this.mapDataModelUpdate(dataModelUpdateArgs as Record<string, unknown>);\n if (dataModelUpdate) {\n normalized.dataModelUpdate = dataModelUpdate;\n }\n }\n\n const deleteSurfaceArgs = messageRecord[\"delete_surface\"];\n if (deleteSurfaceArgs && typeof deleteSurfaceArgs === \"object\") {\n const deleteSurface = this.mapDeleteSurface(deleteSurfaceArgs as Record<string, unknown>);\n if (deleteSurface) {\n normalized.deleteSurface = deleteSurface;\n }\n }\n\n return normalized;\n }\n\n processMessages(messages: UIMessage[]) {\n const mappedMessages: v0_8.Types.ServerToClientMessage[] = [];\n\n for (const message of messages) {\n if (this.isServerToClientMessage(message)) {\n mappedMessages.push(this.normalizeServerMessage(message));\n continue;\n }\n\n if (message.role === 'assistant' && message.toolCalls) {\n mappedMessages.push(...this.mapMessage(message));\n }\n }\n\n if (mappedMessages.length === 0) {\n return;\n }\n\n return this.processor.processMessages(mappedMessages);\n }\n\n processMessage(message: UIMessage) {\n this.processMessages([message]);\n }\n\n /**\n * Processes an activity snapshot event.\n * @param event The activity snapshot event.\n */\n processSnapshot(event: ActivitySnapshotEvent) {\n if (event.activityType === 'a2ui' && event.content) {\n const content = event.content;\n const rawMessages = Array.isArray(content) ? content : [content];\n const surfaceIds = this.getSurfaceIdsFromEvent(event);\n\n // If it's a replace/snapshot, we should clear the state for these surfaces first\n // to ensure we don't have leftover components from previous snapshots.\n const prefixMessages = (event.replace !== false) ?\n surfaceIds.map(id => ({ deleteSurface: { surfaceId: id } })) : [];\n\n // Auto-fix: If we have a surfaceUpdate but no corresponding root in the processor,\n // or if the agent sent a new root id in components but didn't update beginRendering.\n const messages = rawMessages.map(m => {\n if (m.surfaceUpdate || m.surface_update) {\n const update = m.surfaceUpdate || m.surface_update;\n const surfaceId = update.surfaceId || update.surface_id;\n const components = update.components || [];\n\n if (surfaceId && components.length > 0) {\n const surface = this.processor.getSurfaces().get(surfaceId);\n const currentRootId = surface?.rootComponentId;\n\n // Check if current rootId exists in the NEW components\n const rootExists = components.some((c: any) => c.id === currentRootId);\n\n if (!rootExists || !currentRootId) {\n // Find a likely root: first component or one not referenced elsewhere (impl. first for simplicity)\n const likelyRootId = components[0].id;\n console.warn(`A2UIService: Auto-fixing root mismatch for surface ${surfaceId}. Mapeando root a ${likelyRootId}`);\n\n // Return BOTH a beginRendering to fix the root and the original update\n return [\n { beginRendering: { surfaceId, root: likelyRootId } },\n m\n ];\n }\n }\n }\n return m;\n }).flat();\n\n const finalMessages = [...prefixMessages, ...messages];\n console.log(\"A2UIService: Processing messages (fixed)\", finalMessages);\n this.processor.processMessages(finalMessages as any[]);\n\n // Post-process log\n const surfaces = Array.from(this.processor.getSurfaces().entries());\n console.log(\"A2UIService: Estado del procesador tras procesado:\", surfaces.map(([id, s]) => ({\n id,\n root: s.rootComponentId,\n components: s.components.size,\n hasTree: !!s.componentTree\n })));\n }\n }\n\n getSurfaceIdsFromEvent(event: ActivitySnapshotEvent): string[] {\n if (event.activityType !== 'a2ui' || !event.content) return [];\n const content = event.content;\n const messages = Array.isArray(content) ? content : [content];\n const ids = new Set<string>();\n\n messages.forEach(m => {\n const payload = m.beginRendering || m.begin_rendering || m.surfaceUpdate || m.surface_update || m.deleteSurface || m.delete_surface;\n const sid = payload?.surfaceId || payload?.surface_id;\n if (sid) ids.add(sid);\n });\n\n return Array.from(ids);\n }\n}\n\nexport const a2uiService = new A2UIService();\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './chat-message.styles';\nimport type { UIMessage } from '../models/chat.types';\nimport './ui/icon-button';\nimport { CopyIcon, ReloadIcon } from '../icons';\n\nimport { a2uiService } from '../services/a2ui.service';\n\n@customElement('agent-chat-message')\nexport class ChatMessage extends LitElement {\n static styles = styles;\n\n @property({ type: Object }) message!: UIMessage;\n @property({ type: Boolean }) isLast = false;\n @property({ type: Boolean }) isStreaming = false;\n @property({ type: String }) agentAvatar = '';\n\n updated(changedProperties: Map<string, any>) {\n if (changedProperties.has('message')) {\n this.setAttribute('role', this.message.role);\n this.requestUpdate();\n }\n }\n\n private _handleCopy() {\n const textToCopy = typeof this.message.content === 'string'\n ? this.message.content\n : JSON.stringify(this.message.content || '');\n navigator.clipboard.writeText(textToCopy);\n // TODO: Show copied feedback\n }\n\n private _handleReload() {\n this.dispatchEvent(new CustomEvent('reload-message', { detail: { id: this.message.id }, bubbles: true, composed: true }));\n }\n\n render() {\n const isUser = this.message.role === 'user';\n const hasToolCalls = this.message.role === 'assistant'\n && Array.isArray(this.message.toolCalls)\n && this.message.toolCalls.length > 0;\n\n if (hasToolCalls) {\n a2uiService.processMessages([this.message]);\n const surfaces = Array.from(a2uiService.processor.getSurfaces().entries());\n const processor = a2uiService.processor; // Use shared processor\n\n if (surfaces.length > 0) {\n return html`\n <div class=\"message-container activity\">\n <div class=\"content-wrapper\">\n ${surfaces.map(([surfaceId, surface]) => {\n return html`\n <a2ui-theme-provider\n .surfaceId=\"${surfaceId}\"\n .processor=\"${processor}\"\n .surface=\"${surface}\"\n .enableCustomElements=\"${true}\"\n ></a2ui-theme-provider>\n `;\n })}\n </div>\n </div>\n `;\n }\n }\n\n return html`\n <div class=\"message-container\">\n ${!isUser ? html`\n ${this.agentAvatar\n ? html`<img src=\"${this.agentAvatar}\" class=\"avatar-img\" alt=\"AI\">`\n : html`<div class=\"avatar\">C</div>`\n }\n ` : ''}\n \n <div class=\"content-wrapper\">\n <div class=\"bubble ${this.isStreaming ? 'streaming' : ''}\">${this.message.isThinking\n ? html`\n <div class=\"typing-indicator\">\n <div class=\"typing-dot\"></div>\n <div class=\"typing-dot\"></div>\n <div class=\"typing-dot\"></div>\n </div>\n `\n : this.message.content}</div>\n\n ${!isUser ? html`\n <div class=\"actions\">\n <agent-icon-button tooltip=\"Copy\" @click=\"${this._handleCopy}\">\n ${CopyIcon}\n </agent-icon-button>\n <agent-icon-button tooltip=\"Reload\" @click=\"${this._handleReload}\">\n ${ReloadIcon}\n </agent-icon-button>\n </div>\n ` : ''}\n </div>\n </div>\n `;\n }\n}\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './chat-thread.styles';\nimport type { UIMessage } from '../models/chat.types';\nimport './chat-message';\n\n@customElement('agent-chat-thread')\nexport class ChatThread extends LitElement {\n static styles = styles;\n\n @property({ type: Array }) messages: UIMessage[] = [];\n @property({ type: Boolean }) isRunning = false;\n @property({ type: String }) agentAvatar = '';\n @property({ type: String }) emptyText = '';\n\n // listElement query removed as it was unused in logic (scrollToBottom uses querySelector directly)\n\n updated(changedProperties: Map<string, any>) {\n if (changedProperties.has('messages')) {\n this.scrollToBottom();\n }\n }\n\n async scrollToBottom() {\n await this.updateComplete;\n const lastMessage = this.shadowRoot?.querySelector('agent-chat-message:last-of-type');\n lastMessage?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n\n render() {\n if (this.messages.length === 0) {\n return html`\n <div class=\"empty-state\">\n ${this.agentAvatar\n ? html`<img src=\"${this.agentAvatar}\" alt=\"Agent Avatar\" class=\"empty-avatar-img\">`\n : html`<div class=\"empty-avatar\">SM</div>`\n }\n <p class=\"empty-text\">${this.emptyText}</p>\n </div>\n `;\n }\n\n return html`\n <div class=\"messages-list\">\n ${this.messages\n .filter(msg => msg.role === 'assistant' || msg.role === 'user' || msg.role === 'activity')\n .map((msg, index, filteredArr) => html`\n <agent-chat-message \n .message=${msg} \n .isLast=${index === filteredArr.length - 1}\n .isStreaming=${this.isRunning && index === filteredArr.length - 1}\n .agentAvatar=\"${this.agentAvatar}\">\n </agent-chat-message>\n `)}\n </div>\n `;\n }\n}\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n padding: 1rem;\n /* position: fixed; */\n /* bottom: 0; */\n /* left: 0; */\n /* width: 100%; */\n }\n\n .composer-container {\n /* max-width: 48rem; / / max-w-screen-md */\n margin: 0 auto;\n display: flex;\n align-items: center;\n background-color: var(--agent-bg-zinc-100, #f4f4f5);\n border-radius: var(--agent-radius-3xl, 1.5rem);\n padding-left: 0.5rem;\n transition: background-color 0.2s;\n }\n\n .composer-container:focus-within {\n background-color: #e4e4e780; /* zinc-200/50 approx */\n }\n\n textarea {\n flex-grow: 1;\n background: transparent;\n border: none;\n resize: none;\n max-height: 10rem;\n padding: 0.875rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: var(--agent-text-foreground, #09090b);\n outline: none;\n height: 3rem; /* default roughly h-12 */\n }\n\n textarea::placeholder {\n color: var(--agent-text-zinc-500, #71717a);\n }\n\n .action-button {\n margin: 0.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border-radius: var(--agent-radius-full, 9999px);\n background-color: transparent;\n border: 1.5px solid transparent;\n color: var(--agent-text-foreground, #09090b);\n transition: all 0.2s ease-in-out;\n cursor: pointer;\n }\n\n .action-button:hover:not(:disabled) {\n border-color: #22c55e;\n color: #22c55e;\n background-color: #22c55e10;\n }\n\n .action-button:hover:not(:disabled) svg {\n fill: #22c55e20; /* Subtle fill for \"relleno\" feeling */\n }\n \n .action-button:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n\n /* Make sure icons are sized well inside the circle */\n .action-button svg {\n width: 1.25rem;\n height: 1.25rem;\n }\n \n .disclaimer {\n text-align: center;\n color: var(--agent-text-zinc-500, #71717a);\n font-size: 0.75rem;\n padding: 0.5rem;\n }\n\n .prompts-list {\n display: flex;\n flex-direction: column;\n margin-bottom: 0.75rem;\n padding: 0 0.5rem;\n }\n\n .prompt-item {\n background: transparent;\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n padding: 0.625rem 0.5rem;\n text-align: left;\n cursor: pointer;\n font-size: 0.875rem;\n color: var(--agent-text-zinc-600, #52525b);\n transition: all 0.2s ease;\n border-radius: 0.375rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .prompt-item:last-child {\n border-bottom: none;\n }\n\n .prompt-item:hover {\n background-color: var(--agent-bg-zinc-50, #fafafa);\n color: var(--agent-text-foreground, #09090b);\n padding-left: 0.75rem;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { styles } from './chat-composer.styles';\nimport { SendIcon, StopIcon } from '../icons';\nimport type { SuggestedPrompt } from '../models/chat.types';\n\n@customElement('agent-chat-composer')\nexport class ChatComposer extends LitElement {\n static styles = styles;\n\n @property({ type: Boolean }) isRunning = false;\n @property({ type: String }) disclaimer = '';\n @property({ type: String }) placeholder = '';\n @property({ type: Array }) prompts: SuggestedPrompt[] = [];\n\n @state() private _value = '';\n @query('textarea') private _textarea!: HTMLTextAreaElement;\n\n private _handleInput(e: Event) {\n const target = e.target as HTMLTextAreaElement;\n this._value = target.value;\n this._adjustHeight();\n }\n\n private _handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n this._handleSubmit();\n }\n }\n\n private _adjustHeight() {\n if (!this._textarea) return;\n this._textarea.style.height = 'auto'; // Reset to shrink if needed\n this._textarea.style.height = `${Math.min(this._textarea.scrollHeight, 160)}px`; // Grow up to max\n }\n\n private _handlePromptClick(prompt: SuggestedPrompt) {\n this._value = prompt.message;\n this._textarea.focus();\n setTimeout(() => this._adjustHeight(), 0);\n }\n\n async _handleSubmit() {\n if (!this._value.trim()) return;\n\n this.dispatchEvent(new CustomEvent('send', { detail: { content: this._value }, bubbles: true, composed: true }));\n this._value = '';\n await this.updateComplete;\n this._textarea.style.height = '3rem'; // Reset height\n }\n\n private _handleStop() {\n this.dispatchEvent(new CustomEvent('cancel', { bubbles: true, composed: true }));\n }\n\n render() {\n return html`\n ${this.prompts.length > 0 ? html`\n <div class=\"prompts-list\">\n ${this.prompts.map(prompt => html`\n <button class=\"prompt-item\" @click=\"${() => this._handlePromptClick(prompt)}\">\n ${prompt.caption}\n </button>\n `)}\n </div>\n ` : ''}\n <div class=\"composer-container\">\n <textarea\n placeholder=\"${this.placeholder}\"\n .value=\"${this._value}\"\n @input=\"${this._handleInput}\"\n @keydown=\"${this._handleKeyDown}\"\n ?disabled=\"${this.isRunning}\"\n rows=\"1\"\n ></textarea>\n \n ${this.isRunning\n ? html`<button class=\"action-button\" @click=\"${this._handleStop}\">${StopIcon}</button>`\n : html`<button class=\"action-button\" ?disabled=\"${!this._value.trim()}\" @click=\"${this._handleSubmit}\">${SendIcon}</button>`\n }\n </div>\n <p class=\"disclaimer\">\n ${this.disclaimer}\n </p>\n `;\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateIn = (member, obj) => {\n if (Object(obj) !== obj)\n throw TypeError('Cannot use the \"in\" operator on this value');\n return member.has(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateMethod = (obj, member, method) => {\n __accessCheck(obj, member, \"access private method\");\n return method;\n};\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction defaultEquals(a, b) {\n return Object.is(a, b);\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet activeConsumer = null;\nlet inNotificationPhase = false;\nlet epoch = 1;\nconst SIGNAL = /* @__PURE__ */ Symbol(\"SIGNAL\");\nfunction setActiveConsumer(consumer) {\n const prev = activeConsumer;\n activeConsumer = consumer;\n return prev;\n}\nfunction getActiveConsumer() {\n return activeConsumer;\n}\nfunction isInNotificationPhase() {\n return inNotificationPhase;\n}\nconst REACTIVE_NODE = {\n version: 0,\n lastCleanEpoch: 0,\n dirty: false,\n producerNode: void 0,\n producerLastReadVersion: void 0,\n producerIndexOfThis: void 0,\n nextProducerIndex: 0,\n liveConsumerNode: void 0,\n liveConsumerIndexOfThis: void 0,\n consumerAllowSignalWrites: false,\n consumerIsAlwaysLive: false,\n producerMustRecompute: () => false,\n producerRecomputeValue: () => {\n },\n consumerMarkedDirty: () => {\n },\n consumerOnSignalRead: () => {\n }\n};\nfunction producerAccessed(node) {\n if (inNotificationPhase) {\n throw new Error(\n typeof ngDevMode !== \"undefined\" && ngDevMode ? `Assertion error: signal read during notification phase` : \"\"\n );\n }\n if (activeConsumer === null) {\n return;\n }\n activeConsumer.consumerOnSignalRead(node);\n const idx = activeConsumer.nextProducerIndex++;\n assertConsumerNode(activeConsumer);\n if (idx < activeConsumer.producerNode.length && activeConsumer.producerNode[idx] !== node) {\n if (consumerIsLive(activeConsumer)) {\n const staleProducer = activeConsumer.producerNode[idx];\n producerRemoveLiveConsumerAtIndex(staleProducer, activeConsumer.producerIndexOfThis[idx]);\n }\n }\n if (activeConsumer.producerNode[idx] !== node) {\n activeConsumer.producerNode[idx] = node;\n activeConsumer.producerIndexOfThis[idx] = consumerIsLive(activeConsumer) ? producerAddLiveConsumer(node, activeConsumer, idx) : 0;\n }\n activeConsumer.producerLastReadVersion[idx] = node.version;\n}\nfunction producerIncrementEpoch() {\n epoch++;\n}\nfunction producerUpdateValueVersion(node) {\n if (!node.dirty && node.lastCleanEpoch === epoch) {\n return;\n }\n if (!node.producerMustRecompute(node) && !consumerPollProducersForChange(node)) {\n node.dirty = false;\n node.lastCleanEpoch = epoch;\n return;\n }\n node.producerRecomputeValue(node);\n node.dirty = false;\n node.lastCleanEpoch = epoch;\n}\nfunction producerNotifyConsumers(node) {\n if (node.liveConsumerNode === void 0) {\n return;\n }\n const prev = inNotificationPhase;\n inNotificationPhase = true;\n try {\n for (const consumer of node.liveConsumerNode) {\n if (!consumer.dirty) {\n consumerMarkDirty(consumer);\n }\n }\n } finally {\n inNotificationPhase = prev;\n }\n}\nfunction producerUpdatesAllowed() {\n return (activeConsumer == null ? void 0 : activeConsumer.consumerAllowSignalWrites) !== false;\n}\nfunction consumerMarkDirty(node) {\n var _a;\n node.dirty = true;\n producerNotifyConsumers(node);\n (_a = node.consumerMarkedDirty) == null ? void 0 : _a.call(node.wrapper ?? node);\n}\nfunction consumerBeforeComputation(node) {\n node && (node.nextProducerIndex = 0);\n return setActiveConsumer(node);\n}\nfunction consumerAfterComputation(node, prevConsumer) {\n setActiveConsumer(prevConsumer);\n if (!node || node.producerNode === void 0 || node.producerIndexOfThis === void 0 || node.producerLastReadVersion === void 0) {\n return;\n }\n if (consumerIsLive(node)) {\n for (let i = node.nextProducerIndex; i < node.producerNode.length; i++) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n }\n }\n while (node.producerNode.length > node.nextProducerIndex) {\n node.producerNode.pop();\n node.producerLastReadVersion.pop();\n node.producerIndexOfThis.pop();\n }\n}\nfunction consumerPollProducersForChange(node) {\n assertConsumerNode(node);\n for (let i = 0; i < node.producerNode.length; i++) {\n const producer = node.producerNode[i];\n const seenVersion = node.producerLastReadVersion[i];\n if (seenVersion !== producer.version) {\n return true;\n }\n producerUpdateValueVersion(producer);\n if (seenVersion !== producer.version) {\n return true;\n }\n }\n return false;\n}\nfunction producerAddLiveConsumer(node, consumer, indexOfThis) {\n var _a;\n assertProducerNode(node);\n assertConsumerNode(node);\n if (node.liveConsumerNode.length === 0) {\n (_a = node.watched) == null ? void 0 : _a.call(node.wrapper);\n for (let i = 0; i < node.producerNode.length; i++) {\n node.producerIndexOfThis[i] = producerAddLiveConsumer(node.producerNode[i], node, i);\n }\n }\n node.liveConsumerIndexOfThis.push(indexOfThis);\n return node.liveConsumerNode.push(consumer) - 1;\n}\nfunction producerRemoveLiveConsumerAtIndex(node, idx) {\n var _a;\n assertProducerNode(node);\n assertConsumerNode(node);\n if (typeof ngDevMode !== \"undefined\" && ngDevMode && idx >= node.liveConsumerNode.length) {\n throw new Error(\n `Assertion error: active consumer index ${idx} is out of bounds of ${node.liveConsumerNode.length} consumers)`\n );\n }\n if (node.liveConsumerNode.length === 1) {\n (_a = node.unwatched) == null ? void 0 : _a.call(node.wrapper);\n for (let i = 0; i < node.producerNode.length; i++) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n }\n }\n const lastIdx = node.liveConsumerNode.length - 1;\n node.liveConsumerNode[idx] = node.liveConsumerNode[lastIdx];\n node.liveConsumerIndexOfThis[idx] = node.liveConsumerIndexOfThis[lastIdx];\n node.liveConsumerNode.length--;\n node.liveConsumerIndexOfThis.length--;\n if (idx < node.liveConsumerNode.length) {\n const idxProducer = node.liveConsumerIndexOfThis[idx];\n const consumer = node.liveConsumerNode[idx];\n assertConsumerNode(consumer);\n consumer.producerIndexOfThis[idxProducer] = idx;\n }\n}\nfunction consumerIsLive(node) {\n var _a;\n return node.consumerIsAlwaysLive || (((_a = node == null ? void 0 : node.liveConsumerNode) == null ? void 0 : _a.length) ?? 0) > 0;\n}\nfunction assertConsumerNode(node) {\n node.producerNode ?? (node.producerNode = []);\n node.producerIndexOfThis ?? (node.producerIndexOfThis = []);\n node.producerLastReadVersion ?? (node.producerLastReadVersion = []);\n}\nfunction assertProducerNode(node) {\n node.liveConsumerNode ?? (node.liveConsumerNode = []);\n node.liveConsumerIndexOfThis ?? (node.liveConsumerIndexOfThis = []);\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction computedGet(node) {\n producerUpdateValueVersion(node);\n producerAccessed(node);\n if (node.value === ERRORED) {\n throw node.error;\n }\n return node.value;\n}\nfunction createComputed(computation) {\n const node = Object.create(COMPUTED_NODE);\n node.computation = computation;\n const computed = () => computedGet(node);\n computed[SIGNAL] = node;\n return computed;\n}\nconst UNSET = /* @__PURE__ */ Symbol(\"UNSET\");\nconst COMPUTING = /* @__PURE__ */ Symbol(\"COMPUTING\");\nconst ERRORED = /* @__PURE__ */ Symbol(\"ERRORED\");\nconst COMPUTED_NODE = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n value: UNSET,\n dirty: true,\n error: null,\n equal: defaultEquals,\n producerMustRecompute(node) {\n return node.value === UNSET || node.value === COMPUTING;\n },\n producerRecomputeValue(node) {\n if (node.value === COMPUTING) {\n throw new Error(\"Detected cycle in computations.\");\n }\n const oldValue = node.value;\n node.value = COMPUTING;\n const prevConsumer = consumerBeforeComputation(node);\n let newValue;\n let wasEqual = false;\n try {\n newValue = node.computation.call(node.wrapper);\n const oldOk = oldValue !== UNSET && oldValue !== ERRORED;\n wasEqual = oldOk && node.equal.call(node.wrapper, oldValue, newValue);\n } catch (err) {\n newValue = ERRORED;\n node.error = err;\n } finally {\n consumerAfterComputation(node, prevConsumer);\n }\n if (wasEqual) {\n node.value = oldValue;\n return;\n }\n node.value = newValue;\n node.version++;\n }\n };\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction defaultThrowError() {\n throw new Error();\n}\nlet throwInvalidWriteToSignalErrorFn = defaultThrowError;\nfunction throwInvalidWriteToSignalError() {\n throwInvalidWriteToSignalErrorFn();\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction createSignal(initialValue) {\n const node = Object.create(SIGNAL_NODE);\n node.value = initialValue;\n const getter = () => {\n producerAccessed(node);\n return node.value;\n };\n getter[SIGNAL] = node;\n return getter;\n}\nfunction signalGetFn() {\n producerAccessed(this);\n return this.value;\n}\nfunction signalSetFn(node, newValue) {\n if (!producerUpdatesAllowed()) {\n throwInvalidWriteToSignalError();\n }\n if (!node.equal.call(node.wrapper, node.value, newValue)) {\n node.value = newValue;\n signalValueChanged(node);\n }\n}\nconst SIGNAL_NODE = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n equal: defaultEquals,\n value: void 0\n };\n})();\nfunction signalValueChanged(node) {\n node.version++;\n producerIncrementEpoch();\n producerNotifyConsumers(node);\n}\n/**\n * @license\n * Copyright 2024 Bloomberg Finance L.P.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst NODE = Symbol(\"node\");\nvar Signal;\n((Signal2) => {\n var _a, _brand, brand_fn, _b, _brand2, brand_fn2;\n class State {\n constructor(initialValue, options = {}) {\n __privateAdd(this, _brand);\n __publicField(this, _a);\n const ref = createSignal(initialValue);\n const node = ref[SIGNAL];\n this[NODE] = node;\n node.wrapper = this;\n if (options) {\n const equals = options.equals;\n if (equals) {\n node.equal = equals;\n }\n node.watched = options[Signal2.subtle.watched];\n node.unwatched = options[Signal2.subtle.unwatched];\n }\n }\n get() {\n if (!(0, Signal2.isState)(this))\n throw new TypeError(\"Wrong receiver type for Signal.State.prototype.get\");\n return signalGetFn.call(this[NODE]);\n }\n set(newValue) {\n if (!(0, Signal2.isState)(this))\n throw new TypeError(\"Wrong receiver type for Signal.State.prototype.set\");\n if (isInNotificationPhase()) {\n throw new Error(\"Writes to signals not permitted during Watcher callback\");\n }\n const ref = this[NODE];\n signalSetFn(ref, newValue);\n }\n }\n _a = NODE;\n _brand = new WeakSet();\n brand_fn = function() {\n };\n Signal2.isState = (s) => typeof s === \"object\" && __privateIn(_brand, s);\n Signal2.State = State;\n class Computed {\n // Create a Signal which evaluates to the value returned by the callback.\n // Callback is called with this signal as the parameter.\n constructor(computation, options) {\n __privateAdd(this, _brand2);\n __publicField(this, _b);\n const ref = createComputed(computation);\n const node = ref[SIGNAL];\n node.consumerAllowSignalWrites = true;\n this[NODE] = node;\n node.wrapper = this;\n if (options) {\n const equals = options.equals;\n if (equals) {\n node.equal = equals;\n }\n node.watched = options[Signal2.subtle.watched];\n node.unwatched = options[Signal2.subtle.unwatched];\n }\n }\n get() {\n if (!(0, Signal2.isComputed)(this))\n throw new TypeError(\"Wrong receiver type for Signal.Computed.prototype.get\");\n return computedGet(this[NODE]);\n }\n }\n _b = NODE;\n _brand2 = new WeakSet();\n brand_fn2 = function() {\n };\n Signal2.isComputed = (c) => typeof c === \"object\" && __privateIn(_brand2, c);\n Signal2.Computed = Computed;\n ((subtle2) => {\n var _a2, _brand3, brand_fn3, _assertSignals, assertSignals_fn;\n function untrack(cb) {\n let output;\n let prevActiveConsumer = null;\n try {\n prevActiveConsumer = setActiveConsumer(null);\n output = cb();\n } finally {\n setActiveConsumer(prevActiveConsumer);\n }\n return output;\n }\n subtle2.untrack = untrack;\n function introspectSources(sink) {\n var _a3;\n if (!(0, Signal2.isComputed)(sink) && !(0, Signal2.isWatcher)(sink)) {\n throw new TypeError(\"Called introspectSources without a Computed or Watcher argument\");\n }\n return ((_a3 = sink[NODE].producerNode) == null ? void 0 : _a3.map((n) => n.wrapper)) ?? [];\n }\n subtle2.introspectSources = introspectSources;\n function introspectSinks(signal) {\n var _a3;\n if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isState)(signal)) {\n throw new TypeError(\"Called introspectSinks without a Signal argument\");\n }\n return ((_a3 = signal[NODE].liveConsumerNode) == null ? void 0 : _a3.map((n) => n.wrapper)) ?? [];\n }\n subtle2.introspectSinks = introspectSinks;\n function hasSinks(signal) {\n if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isState)(signal)) {\n throw new TypeError(\"Called hasSinks without a Signal argument\");\n }\n const liveConsumerNode = signal[NODE].liveConsumerNode;\n if (!liveConsumerNode)\n return false;\n return liveConsumerNode.length > 0;\n }\n subtle2.hasSinks = hasSinks;\n function hasSources(signal) {\n if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isWatcher)(signal)) {\n throw new TypeError(\"Called hasSources without a Computed or Watcher argument\");\n }\n const producerNode = signal[NODE].producerNode;\n if (!producerNode)\n return false;\n return producerNode.length > 0;\n }\n subtle2.hasSources = hasSources;\n class Watcher {\n // When a (recursive) source of Watcher is written to, call this callback,\n // if it hasn't already been called since the last `watch` call.\n // No signals may be read or written during the notify.\n constructor(notify) {\n __privateAdd(this, _brand3);\n __privateAdd(this, _assertSignals);\n __publicField(this, _a2);\n let node = Object.create(REACTIVE_NODE);\n node.wrapper = this;\n node.consumerMarkedDirty = notify;\n node.consumerIsAlwaysLive = true;\n node.consumerAllowSignalWrites = false;\n node.producerNode = [];\n this[NODE] = node;\n }\n // Add these signals to the Watcher's set, and set the watcher to run its\n // notify callback next time any signal in the set (or one of its dependencies) changes.\n // Can be called with no arguments just to reset the \"notified\" state, so that\n // the notify callback will be invoked again.\n watch(...signals) {\n if (!(0, Signal2.isWatcher)(this)) {\n throw new TypeError(\"Called unwatch without Watcher receiver\");\n }\n __privateMethod(this, _assertSignals, assertSignals_fn).call(this, signals);\n const node = this[NODE];\n node.dirty = false;\n const prev = setActiveConsumer(node);\n for (const signal of signals) {\n producerAccessed(signal[NODE]);\n }\n setActiveConsumer(prev);\n }\n // Remove these signals from the watched set (e.g., for an effect which is disposed)\n unwatch(...signals) {\n if (!(0, Signal2.isWatcher)(this)) {\n throw new TypeError(\"Called unwatch without Watcher receiver\");\n }\n __privateMethod(this, _assertSignals, assertSignals_fn).call(this, signals);\n const node = this[NODE];\n assertConsumerNode(node);\n for (let i = node.producerNode.length - 1; i >= 0; i--) {\n if (signals.includes(node.producerNode[i].wrapper)) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n const lastIdx = node.producerNode.length - 1;\n node.producerNode[i] = node.producerNode[lastIdx];\n node.producerIndexOfThis[i] = node.producerIndexOfThis[lastIdx];\n node.producerNode.length--;\n node.producerIndexOfThis.length--;\n node.nextProducerIndex--;\n if (i < node.producerNode.length) {\n const idxConsumer = node.producerIndexOfThis[i];\n const producer = node.producerNode[i];\n assertProducerNode(producer);\n producer.liveConsumerIndexOfThis[idxConsumer] = i;\n }\n }\n }\n }\n // Returns the set of computeds in the Watcher's set which are still yet\n // to be re-evaluated\n getPending() {\n if (!(0, Signal2.isWatcher)(this)) {\n throw new TypeError(\"Called getPending without Watcher receiver\");\n }\n const node = this[NODE];\n return node.producerNode.filter((n) => n.dirty).map((n) => n.wrapper);\n }\n }\n _a2 = NODE;\n _brand3 = new WeakSet();\n brand_fn3 = function() {\n };\n _assertSignals = new WeakSet();\n assertSignals_fn = function(signals) {\n for (const signal of signals) {\n if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isState)(signal)) {\n throw new TypeError(\"Called watch/unwatch without a Computed or State argument\");\n }\n }\n };\n Signal2.isWatcher = (w) => __privateIn(_brand3, w);\n subtle2.Watcher = Watcher;\n function currentComputed() {\n var _a3;\n return (_a3 = getActiveConsumer()) == null ? void 0 : _a3.wrapper;\n }\n subtle2.currentComputed = currentComputed;\n subtle2.watched = Symbol(\"watched\");\n subtle2.unwatched = Symbol(\"unwatched\");\n })(Signal2.subtle || (Signal2.subtle = {}));\n})(Signal || (Signal = {}));\nexport {\n Signal\n};\n","import{Signal as t}from\"signal-polyfill\";\n/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const i=Symbol(\"SignalWatcherBrand\"),s=new FinalizationRegistry((({watcher:t,signal:i})=>{t.unwatch(i)})),h=new WeakMap;function e(e){return!0===e[i]?(console.warn(\"SignalWatcher should not be applied to the same class more than once.\"),e):class extends e{constructor(){super(...arguments),this._$St=new t.State(0),this._$Si=!1,this._$So=!0,this._$Sh=new Set}_$Sl(){if(void 0!==this._$Su)return;this._$Sv=new t.Computed((()=>{this._$St.get(),super.performUpdate()}));const i=this._$Su=new t.subtle.Watcher((function(){const t=h.get(this);void 0!==t&&(!1===t._$Si&&t.requestUpdate(),this.watch())}));h.set(i,this),s.register(this,{watcher:i,signal:this._$Sv}),i.watch(this._$Sv)}_$Sp(){void 0!==this._$Su&&(this._$Su.unwatch(this._$Sv),this._$Sv=void 0,this._$Su=void 0)}performUpdate(){this.isUpdatePending&&(this._$Sl(),this._$Si=!0,this._$St.set(this._$St.get()+1),this._$Si=!1,this._$Sv.get())}update(t){try{this._$So?(this._$So=!1,super.update(t)):this._$Sh.forEach((t=>t.commit()))}finally{this.isUpdatePending=!1,this._$Sh.clear()}}requestUpdate(t,i,s){this._$So=!0,super.requestUpdate(t,i,s)}connectedCallback(){super.connectedCallback(),this.requestUpdate()}disconnectedCallback(){super.disconnectedCallback(),queueMicrotask((()=>{!1===this.isConnected&&this._$Sp()}))}_(t){this._$Sh.add(t);const i=this._$So;this.requestUpdate(),this._$So=i}m(t){this._$Sh.delete(t)}}}export{e as SignalWatcher};\n//# sourceMappingURL=signal-watcher.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>o,n=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,e={HTML:1,SVG:2,MATHML:3},l=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,d=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,f=o=>o?._$litDirective$,r=o=>void 0===o.strings,s=()=>document.createComment(\"\"),v=(o,n,e)=>{const l=o._$AA.parentNode,d=void 0===n?o._$AB:n._$AA;if(void 0===e){const i=l.insertBefore(s(),d),n=l.insertBefore(s(),d);e=new t(i,n,o,o.options)}else{const t=e._$AB.nextSibling,n=e._$AM,c=n!==o;if(c){let t;e._$AQ?.(o),e._$AM=o,void 0!==e._$AP&&(t=o._$AU)!==n._$AU&&e._$AP(t)}if(t!==d||c){let o=e._$AA;for(;o!==t;){const t=i(o).nextSibling;i(l).insertBefore(o,d),o=t}}}return e},u=(o,t,i=o)=>(o._$AI(t,i),o),m={},p=(o,t=m)=>o._$AH=t,M=o=>o._$AH,h=o=>{o._$AR(),o._$AA.remove()},j=o=>{o._$AR()};export{e as TemplateResultType,j as clearPart,M as getCommittedValue,f as getDirectiveClass,v as insertPart,d as isCompiledTemplateResult,c as isDirectiveResult,n as isPrimitive,r as isSingleExpression,l as isTemplateResult,h as removePart,u as setChildPartValue,p as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{const e=i._$AN;if(void 0===e)return!1;for(const i of e)i._$AO?.(t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===e?.size)},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),c(t)}};function h(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function n(i,t=!1,e=0){const r=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(t)if(Array.isArray(r))for(let i=e;i<r.length;i++)s(r[i],!1),o(r[i]);else null!=r&&(s(r,!1),o(r));else s(this,i)}const c=i=>{i.type==e.CHILD&&(i._$AP??=n,i._$AQ??=h)};class f extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{f as AsyncDirective,t as Directive,e as PartType};\n//# sourceMappingURL=async-directive.js.map\n","import{directive as i}from\"lit/directive.js\";import{AsyncDirective as t}from\"lit/async-directive.js\";import{Signal as s}from\"signal-polyfill\";\n/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class h extends t{_$Sl(){if(void 0!==this._$Su)return;this._$SW=new s.Computed((()=>{var i;return null===(i=this._$Sj)||void 0===i?void 0:i.get()}));const i=this._$Su=new s.subtle.Watcher((()=>{var t;null===(t=this._$SO)||void 0===t||t._(this),i.watch()}));i.watch(this._$SW)}_$Sp(){var i;void 0!==this._$Su&&(this._$Su.unwatch(this._$SW),this._$SW=void 0,this._$Su=void 0,null===(i=this._$SO)||void 0===i||i.m(this))}commit(){this.setValue(s.subtle.untrack((()=>{var i;return null===(i=this._$SW)||void 0===i?void 0:i.get()})))}render(i){return s.subtle.untrack((()=>i.get()))}update(i,[t]){var h,o;return null!==(h=this._$SO)&&void 0!==h||(this._$SO=null===(o=i.options)||void 0===o?void 0:o.host),t!==this._$Sj&&void 0!==this._$Sj&&this._$Sp(),this._$Sj=t,this._$Sl(),s.subtle.untrack((()=>this._$SW.get()))}disconnected(){this._$Sp()}reconnected(){this._$Sl()}}const o=i(h);export{h as WatchDirective,o as watch};\n//# sourceMappingURL=watch.js.map\n","import{html as o,svg as t}from\"lit/html.js\";import{watch as s}from\"./watch.js\";import{Signal as i}from\"signal-polyfill\";\n/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const m=o=>(t,...m)=>o(t,...m.map((o=>o instanceof i.State||o instanceof i.Computed?s(o):o))),l=m(o),r=m(t);export{l as html,r as svg,m as withWatch};\n//# sourceMappingURL=html-tag.js.map\n","import{Signal as t}from\"signal-polyfill\";export*from\"signal-polyfill\";export{SignalWatcher}from\"./lib/signal-watcher.js\";export{WatchDirective,watch}from\"./lib/watch.js\";export{html,svg,withWatch}from\"./lib/html-tag.js\";\n/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const l=t.State,o=t.Computed,r=(l,o)=>new t.State(l,o),i=(l,o)=>new t.Computed(l,o);export{o as Computed,l as State,i as computed,r as signal};\n//# sourceMappingURL=index.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s extends Event{constructor(s,t,e,o){super(\"context-request\",{bubbles:!0,composed:!0}),this.context=s,this.contextTarget=t,this.callback=e,this.subscribe=o??!1}}export{s as ContextRequestEvent};\n//# sourceMappingURL=context-request-event.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s{get value(){return this.o}set value(s){this.setValue(s)}setValue(s,t=!1){const i=t||!Object.is(s,this.o);this.o=s,i&&this.updateObservers()}constructor(s){this.subscriptions=new Map,this.updateObservers=()=>{for(const[s,{disposer:t}]of this.subscriptions)s(this.o,t)},void 0!==s&&(this.value=s)}addCallback(s,t,i){if(!i)return void s(this.value);this.subscriptions.has(s)||this.subscriptions.set(s,{disposer:()=>{this.subscriptions.delete(s)},consumerHost:t});const{disposer:h}=this.subscriptions.get(s);s(this.value,h)}clearCallbacks(){this.subscriptions.clear()}}export{s as ValueNotifier};\n//# sourceMappingURL=value-notifier.js.map\n","import{ContextRequestEvent as t}from\"../context-request-event.js\";import{ValueNotifier as s}from\"../value-notifier.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends Event{constructor(t,s){super(\"context-provider\",{bubbles:!0,composed:!0}),this.context=t,this.contextTarget=s}}class i extends s{constructor(s,e,i){super(void 0!==e.context?e.initialValue:i),this.onContextRequest=t=>{if(t.context!==this.context)return;const s=t.contextTarget??t.composedPath()[0];s!==this.host&&(t.stopPropagation(),this.addCallback(t.callback,s,t.subscribe))},this.onProviderRequest=s=>{if(s.context!==this.context)return;if((s.contextTarget??s.composedPath()[0])===this.host)return;const e=new Set;for(const[s,{consumerHost:i}]of this.subscriptions)e.has(s)||(e.add(s),i.dispatchEvent(new t(this.context,i,s,!0)));s.stopPropagation()},this.host=s,void 0!==e.context?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener(\"context-request\",this.onContextRequest),this.host.addEventListener(\"context-provider\",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new e(this.context,this.host))}}export{i as ContextProvider,e as ContextProviderEvent};\n//# sourceMappingURL=context-provider.js.map\n","import{ContextProvider as t}from\"../controllers/context-provider.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e({context:e}){return(n,i)=>{const r=new WeakMap;if(\"object\"==typeof i)return{get(){return n.get.call(this)},set(t){return r.get(this).setValue(t),n.set.call(this,t)},init(n){return r.set(this,new t(this,{context:e,initialValue:n})),n}};{n.constructor.addInitializer((n=>{r.set(n,new t(n,{context:e}))}));const o=Object.getOwnPropertyDescriptor(n,i);let s;if(void 0===o){const t=new WeakMap;s={get(){return t.get(this)},set(e){r.get(this).setValue(e),t.set(this,e)},configurable:!0,enumerable:!0}}else{const t=o.set;s={...o,set(e){r.get(this).setValue(e),t?.call(this,e)}}}return void Object.defineProperty(n,i,s)}}}export{e as provide};\n//# sourceMappingURL=provide.js.map\n","\n/*\n Copyright 2025 Google LLC\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nimport { v0_8 } from \"@a2ui/lit\";\n\n/** Elements */\n\nconst a = {\n \"typography-f-sf\": true,\n \"typography-fs-n\": true,\n \"typography-w-500\": true,\n \"layout-as-n\": true,\n \"layout-dis-iflx\": true,\n \"layout-al-c\": true,\n};\n\nconst audio = {\n \"layout-w-100\": true,\n};\n\nconst body = {\n \"typography-f-s\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-mt-0\": true,\n \"layout-mb-2\": true,\n \"typography-sz-bm\": true,\n \"color-c-n10\": true,\n};\n\nconst button = {\n \"typography-f-sf\": true,\n \"typography-fs-n\": true,\n \"typography-w-500\": true,\n \"layout-pt-3\": true,\n \"layout-pb-3\": true,\n \"layout-pl-5\": true,\n \"layout-pr-5\": true,\n \"layout-mb-1\": true,\n \"border-br-3\": true,\n \"border-bw-0\": true,\n \"border-c-n70\": true,\n \"border-bs-s\": true,\n \"color-bgc-s30\": true,\n \"color-c-n100\": true,\n \"behavior-ho-80\": true,\n};\n\nconst heading = {\n \"typography-f-sf\": true,\n \"typography-fs-n\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mb-2\": true,\n \"color-c-n10\": true,\n};\n\nconst h1 = {\n ...heading,\n \"typography-sz-tl\": true,\n};\n\nconst h2 = {\n ...heading,\n \"typography-sz-tm\": true,\n};\n\nconst h3 = {\n ...heading,\n \"typography-sz-ts\": true,\n};\n\nconst iframe = {\n \"behavior-sw-n\": true,\n};\n\nconst input = {\n \"typography-f-sf\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-pl-4\": true,\n \"layout-pr-4\": true,\n \"layout-pt-2\": true,\n \"layout-pb-2\": true,\n \"border-br-3\": true,\n \"border-bw-1\": true,\n \"color-bc-s70\": true,\n \"border-bs-s\": true,\n \"layout-as-n\": true,\n \"color-c-n10\": true,\n};\n\nconst p = {\n \"typography-f-s\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-m-0\": true,\n \"typography-sz-bm\": true,\n \"layout-as-n\": true,\n \"color-c-n10\": true,\n};\n\nconst orderedList = {\n \"typography-f-s\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-m-0\": true,\n \"typography-sz-bm\": true,\n \"layout-as-n\": true,\n};\n\nconst unorderedList = {\n \"typography-f-s\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-m-0\": true,\n \"typography-sz-bm\": true,\n \"layout-as-n\": true,\n};\n\nconst listItem = {\n \"typography-f-s\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-m-0\": true,\n \"typography-sz-bm\": true,\n \"layout-as-n\": true,\n};\n\nconst pre = {\n \"typography-f-c\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"typography-sz-bm\": true,\n \"typography-ws-p\": true,\n \"layout-as-n\": true,\n};\n\nconst textarea = {\n ...input,\n \"layout-r-none\": true,\n \"layout-fs-c\": true,\n};\n\nconst video = {\n \"layout-el-cv\": true,\n};\n\nconst aLight = v0_8.Styles.merge(a, { \"color-c-p30\": true });\nconst inputLight = v0_8.Styles.merge(input, { \"color-c-n5\": true });\nconst textareaLight = v0_8.Styles.merge(textarea, { \"color-c-n5\": true });\nconst buttonLight = v0_8.Styles.merge(button, { \"color-c-n100\": true });\nconst h1Light = v0_8.Styles.merge(h1, { \"color-c-n5\": true });\nconst h2Light = v0_8.Styles.merge(h2, { \"color-c-n5\": true });\nconst h3Light = v0_8.Styles.merge(h3, { \"color-c-n5\": true });\nconst bodyLight = v0_8.Styles.merge(body, { \"color-c-n5\": true });\nconst pLight = v0_8.Styles.merge(p, { \"color-c-n60\": true });\nconst preLight = v0_8.Styles.merge(pre, { \"color-c-n35\": true });\nconst orderedListLight = v0_8.Styles.merge(orderedList, {\n \"color-c-n35\": true,\n});\nconst unorderedListLight = v0_8.Styles.merge(unorderedList, {\n \"color-c-n35\": true,\n});\nconst listItemLight = v0_8.Styles.merge(listItem, {\n \"color-c-n35\": true,\n});\n\nconst skandiaThemeVars: Record<string, string> = {\n \"--color-scheme\": \"light\",\n \"--font-family\": '\"Montserrat\", sans-serif',\n \"--font-family-flex\": '\"Montserrat\", sans-serif',\n \"--p-30\": \"#00c73d\",\n \"--p-60\": \"#66e08a\",\n \"--p-80\": \"#c9f5d8\",\n \"--p-100\": \"#ffffff\",\n \"--s-30\": \"#f2f5f7\",\n \"--s-70\": \"#d9dee4\",\n \"--n-5\": \"#0b0b0b\",\n \"--n-10\": \"#111827\",\n \"--n-30\": \"#4b5563\",\n \"--n-35\": \"#6b7280\",\n \"--n-60\": \"#9ca3af\",\n \"--n-70\": \"#cbd5e1\",\n \"--n-90\": \"#e5e7eb\",\n \"--n-98\": \"#f9fafb\",\n \"--n-100\": \"#ffffff\",\n};\n\nexport const defaultTheme: v0_8.Types.Theme = {\n additionalStyles: {\n Card: {\n ...skandiaThemeVars,\n \"min-width\": \"320px\",\n },\n Button: {\n ...skandiaThemeVars,\n \"--n-60\": \"var(--n-100)\",\n },\n CheckBox: {\n ...skandiaThemeVars,\n },\n Column: {\n ...skandiaThemeVars,\n },\n DateTimeInput: {\n ...skandiaThemeVars,\n },\n Divider: {\n ...skandiaThemeVars,\n },\n Icon: {\n ...skandiaThemeVars,\n },\n Image: {\n ...skandiaThemeVars,\n \"max-width\": \"120px\",\n \"max-height\": \"120px\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n List: {\n ...skandiaThemeVars,\n },\n Modal: {\n ...skandiaThemeVars,\n },\n MultipleChoice: {\n ...skandiaThemeVars,\n },\n Row: {\n ...skandiaThemeVars,\n },\n Slider: {\n ...skandiaThemeVars,\n },\n Tabs: {\n ...skandiaThemeVars,\n },\n Text: {\n ...skandiaThemeVars,\n },\n TextField: {\n ...skandiaThemeVars,\n },\n Video: {\n ...skandiaThemeVars,\n },\n AudioPlayer: {\n ...skandiaThemeVars,\n },\n },\n components: {\n AudioPlayer: {},\n Button: {\n \"layout-pt-2\": true,\n \"layout-pb-2\": true,\n \"layout-pl-5\": true,\n \"layout-pr-5\": true,\n \"border-br-3\": true,\n \"border-bw-0\": true,\n \"border-bs-s\": true,\n \"color-bgc-p30\": true,\n \"color-c-n100\": true,\n \"behavior-ho-70\": true,\n },\n Card: {\n \"border-br-3\": true,\n \"color-bgc-p100\": true,\n \"color-bc-n90\": true,\n \"border-bw-1\": true,\n \"border-bs-s\": true,\n \"layout-pt-10\": true,\n \"layout-pb-10\": true,\n \"layout-pl-4\": true,\n \"layout-pr-4\": true,\n },\n CheckBox: {\n element: {\n \"layout-m-0\": true,\n \"layout-mr-2\": true,\n \"layout-p-2\": true,\n \"border-br-3\": true,\n \"border-bw-1\": true,\n \"border-bs-s\": true,\n \"color-bgc-p100\": true,\n \"color-bc-p60\": true,\n \"color-c-n30\": true,\n },\n label: {\n \"color-c-n10\": true,\n \"typography-f-sf\": true,\n \"typography-v-r\": true,\n \"typography-w-400\": true,\n \"layout-flx-1\": true,\n \"typography-sz-ll\": true,\n },\n container: {\n \"layout-dsp-iflex\": true,\n \"layout-al-c\": true,\n },\n },\n Column: {},\n DateTimeInput: {\n container: {},\n label: {},\n element: {\n \"layout-pt-2\": true,\n \"layout-pb-2\": true,\n \"layout-pl-3\": true,\n \"layout-pr-3\": true,\n \"border-br-3\": true,\n \"border-bw-1\": true,\n \"border-bs-s\": true,\n \"color-bgc-p100\": true,\n \"color-bc-p60\": true,\n \"color-c-n30\": true,\n },\n },\n Divider: {\n \"color-bgc-n90\": true,\n \"layout-mt-6\": true,\n \"layout-mb-6\": true,\n },\n Image: {\n all: {\n \"border-br-50pc\": true,\n \"layout-el-cv\": true,\n \"layout-w-100\": true,\n \"layout-h-100\": true,\n \"layout-dsp-flexhor\": true,\n \"layout-al-c\": true,\n \"layout-sp-c\": true,\n \"layout-mb-3\": true,\n },\n avatar: {},\n header: {},\n icon: {},\n largeFeature: {},\n mediumFeature: {},\n smallFeature: {},\n },\n Icon: {\n \"border-br-1\": true,\n \"layout-p-2\": true,\n \"color-bgc-n98\": true,\n \"layout-dsp-flexhor\": true,\n \"layout-al-c\": true,\n \"layout-sp-c\": true,\n },\n List: {\n \"layout-g-4\": true,\n \"layout-p-2\": true,\n },\n Modal: {\n backdrop: { \"color-bbgc-p60_20\": true },\n element: {\n \"border-br-3\": true,\n \"color-bgc-p100\": true,\n \"layout-p-4\": true,\n \"border-bw-1\": true,\n \"border-bs-s\": true,\n \"color-bc-p80\": true,\n },\n },\n MultipleChoice: {\n container: {},\n label: {},\n element: {},\n },\n Row: {\n \"layout-g-4\": true,\n \"layout-mb-3\": true,\n },\n Slider: {\n container: {},\n label: {},\n element: {},\n },\n Tabs: {\n container: {},\n controls: { all: {}, selected: {} },\n element: {},\n },\n Text: {\n all: {\n \"layout-w-100\": true,\n \"layout-g-2\": true,\n \"color-c-n10\": true,\n },\n h1: {\n \"typography-f-sf\": true,\n \"typography-ta-c\": true,\n \"typography-v-r\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mr-0\": true,\n \"layout-ml-0\": true,\n \"layout-mb-2\": true,\n \"layout-p-0\": true,\n \"typography-sz-tl\": true,\n },\n h2: {\n \"typography-f-sf\": true,\n \"typography-ta-c\": true,\n \"typography-v-r\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mr-0\": true,\n \"layout-ml-0\": true,\n \"layout-mb-2\": true,\n \"layout-p-0\": true,\n \"typography-sz-tl\": true,\n },\n h3: {\n \"typography-f-sf\": true,\n \"typography-ta-c\": true,\n \"typography-v-r\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mr-0\": true,\n \"layout-ml-0\": true,\n \"layout-mb-0\": true,\n \"layout-p-0\": true,\n \"typography-sz-ts\": true,\n },\n h4: {\n \"typography-f-sf\": true,\n \"typography-ta-c\": true,\n \"typography-v-r\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mr-0\": true,\n \"layout-ml-0\": true,\n \"layout-mb-0\": true,\n \"layout-p-0\": true,\n \"typography-sz-bl\": true,\n },\n h5: {\n \"typography-f-sf\": true,\n \"typography-ta-c\": true,\n \"typography-v-r\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mr-0\": true,\n \"layout-ml-0\": true,\n \"layout-mb-0\": true,\n \"layout-p-0\": true,\n \"color-c-n30\": true,\n \"typography-sz-bm\": true,\n \"layout-mb-1\": true,\n },\n body: {},\n caption: {},\n },\n TextField: {\n container: {\n \"typography-sz-bm\": true,\n \"layout-w-100\": true,\n \"layout-g-2\": true,\n \"layout-dsp-flexhor\": true,\n \"layout-al-c\": true,\n },\n label: {\n \"layout-flx-0\": true,\n },\n element: {\n \"typography-sz-bm\": true,\n \"layout-pt-2\": true,\n \"layout-pb-2\": true,\n \"layout-pl-3\": true,\n \"layout-pr-3\": true,\n \"border-br-3\": true,\n \"border-bw-1\": true,\n \"border-bs-s\": true,\n \"color-bgc-p100\": true,\n \"color-bc-p60\": true,\n \"color-c-n30\": true,\n },\n },\n Video: {\n \"border-br-5\": true,\n \"layout-el-cv\": true,\n },\n },\n elements: {\n a: aLight,\n audio,\n body: bodyLight,\n button: buttonLight,\n h1: h1Light,\n h2: h2Light,\n h3: h3Light,\n h4: {},\n h5: {},\n iframe,\n input: inputLight,\n p: pLight,\n pre: preLight,\n textarea: textareaLight,\n video,\n },\n markdown: {\n p: [...Object.keys(pLight)],\n h1: [...Object.keys(h1Light)],\n h2: [...Object.keys(h2Light)],\n h3: [...Object.keys(h3Light)],\n h4: [],\n h5: [],\n ul: [...Object.keys(unorderedListLight)],\n ol: [...Object.keys(orderedListLight)],\n li: [...Object.keys(listItemLight)],\n a: [...Object.keys(aLight)],\n strong: [],\n em: [],\n },\n};\n","import { SignalWatcher } from \"@lit-labs/signals\";\nimport { LitElement, html, css } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { provide } from \"@lit/context\";\nimport { v0_8 } from \"@a2ui/lit\";\nimport * as UI from \"@a2ui/lit/ui\";\nimport { defaultTheme } from \"../models/a2ui.theme\";\n\n// Type alias for the processor\ntype A2UIModelProcessorInstance = v0_8.Types.MessageProcessor;\n\n/**\n * Theme Provider for A2UI Components\n *\n * This component wraps A2UI surfaces and provides the theme context\n * required by the A2UI component library.\n */\n@customElement(\"a2ui-theme-provider\")\nexport class A2UIThemeProvider extends SignalWatcher(LitElement) {\n @provide({ context: UI.Context.themeContext })\n theme: v0_8.Types.Theme = defaultTheme;\n\n @property({ type: String })\n surfaceId: string = \"\";\n\n @property({ type: Object })\n surface: v0_8.Types.Surface | undefined;\n\n @property({ type: Object })\n processor: A2UIModelProcessorInstance | undefined;\n\n @property({ type: Boolean })\n enableCustomElements: boolean = true;\n\n static styles = css`\n :host {\n display: block;\n }\n `;\n\n render() {\n if (!this.surfaceId || !this.processor) {\n return html``;\n }\n\n // Attempt to get the surface if not provided\n const surface = this.surface || this.processor.getSurfaces().get(this.surfaceId);\n\n if (!surface) {\n console.warn(`A2UIThemeProvider: Surface ${this.surfaceId} not found in processor`, this.processor.getSurfaces());\n return html`<!-- Surface ${this.surfaceId} not found -->`;\n }\n\n return html`\n <a2ui-surface\n .surfaceId=${this.surfaceId}\n .surface=${surface}\n .processor=${this.processor}\n .enableCustomElements=${this.enableCustomElements}\n ></a2ui-surface>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"a2ui-theme-provider\": A2UIThemeProvider;\n }\n}\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n position: absolute;\n top: 4rem;\n left: 0;\n bottom: 0;\n width: 260px;\n background: #ffffff;\n border-right: 1px solid #e5e5e5;\n transform: translateX(-100%);\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n z-index: 20;\n box-shadow: 2px 0 8px rgba(0,0,0,0.05);\n }\n\n :host([open]) {\n transform: translateX(0);\n }\n\n .header {\n height: 60px;\n padding: 0 1rem;\n border-bottom: 1px solid #f0f0f0;\n font-weight: 600;\n font-size: 0.95rem;\n color: #1a1a1a;\n display: flex;\n align-items: center;\n background: #fafafa;\n }\n\n .list {\n list-style: none;\n padding: 0;\n margin: 0;\n overflow-y: auto;\n height: calc(100% - 60px);\n }\n\n .item {\n padding: 1rem;\n cursor: pointer;\n border-bottom: 1px solid #f5f5f5;\n transition: all 0.2s ease;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 0.9rem;\n color: #4a4a4a;\n }\n\n .item:hover {\n background-color: #f9f9f9;\n color: #1a1a1a;\n }\n\n .empty-state {\n padding: 2rem 1rem;\n text-align: center;\n color: #999;\n font-size: 0.9rem;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './chat-history-list.styles';\nimport type { ConversationSummary } from '../models/chat.types';\n\n@customElement('agent-chat-history-list')\nexport class ChatHistoryList extends LitElement {\n static styles = styles;\n\n @property({ type: Array }) conversations: ConversationSummary[] = [];\n @property({ type: Boolean, reflect: true }) open = false;\n\n private _handleSelect(conversation: ConversationSummary) {\n this.dispatchEvent(new CustomEvent('select-thread', {\n detail: { conversation },\n bubbles: true,\n composed: true\n }));\n }\n\n render() {\n return html`\n <div class=\"header\">\n Conversaciones\n </div>\n <ul class=\"list\">\n ${this.conversations.length === 0\n ? html`<div class=\"empty-state\">No hay conversaciones recientes</div>`\n : this.conversations.map(conv => html`\n <li class=\"item\" @click=\"${() => this._handleSelect(conv)}\">\n ${conv.title}\n </li>\n `)}\n </ul>\n `;\n }\n}\n","import type { Message, InspectorEvent, AppState } from \"../models/chat.types.js\";\nimport type { AppContext } from \"../models/portal.types.js\";\n\n\n\n/**\n * Servicio para gestionar la información de inspección del agente.\n * Mantiene un registro del contexto, mensajes y eventos de streaming.\n */\nexport class InspectorService extends EventTarget {\n private _context: AppContext | null = null;\n private _state: AppState | null = null;\n private _messages: Message[] = [];\n private _stream: InspectorEvent[] = [];\n\n get context() { return this._context; }\n get state() { return this._state; }\n get messages() { return this._messages; }\n get stream() { return this._stream; }\n\n /**\n * Actualiza el contexto actual (estático).\n * @param context Nuevo contexto del agente.\n */\n setContext(context: AppContext | null) {\n this._context = context;\n this.notify();\n }\n\n /**\n * Actualiza el estado actual (dinámico).\n * @param state Nuevo estado del agente.\n */\n setState(state: AppState | null) {\n this._state = state;\n this.notify();\n }\n\n\n\n /**\n * Actualiza la lista de mensajes.\n * @param messages Lista de mensajes del hilo.\n */\n setMessages(messages: Message[]) {\n this._messages = [...messages];\n this.notify();\n }\n\n /**\n * Agrega un nuevo evento al flujo de eventos.\n * @param event Nombre del evento.\n * @param content Contenido o detalle del evento.\n */\n addEvent(event: string, content: any) {\n const now = new Date();\n const time = now.toTimeString().split(' ')[0]; // hh:mm:ss\n this._stream = [{ event, content, time }, ...this._stream].slice(0, 100); // Keep last 100\n this.notify();\n }\n\n /**\n * Limpia el flujo de eventos.\n */\n clearStream() {\n this._stream = [];\n this.notify();\n }\n\n private notify() {\n this.dispatchEvent(new CustomEvent('inspector-change'));\n }\n}\n\nexport const inspectorService = new InspectorService();\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n position: absolute;\n bottom: 60px;\n left: 20px;\n width: 400px;\n height: 500px;\n min-width: 300px;\n min-height: 200px;\n background: #ffffff;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n z-index: 1000;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n }\n\n .header {\n padding: 12px 16px;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: move;\n user-select: none;\n flex-shrink: 0;\n }\n\n .header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n }\n\n .close-button {\n background: none;\n border: none;\n color: #6b7280;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .close-button:hover {\n background: #f3f4f6;\n color: #111827;\n }\n\n .tabs {\n display: flex;\n background: #f3f4f6;\n padding: 4px;\n gap: 4px;\n flex-shrink: 0;\n }\n\n .tab {\n flex: 1;\n padding: 6px;\n font-size: 12px;\n font-weight: 500;\n text-align: center;\n color: #6b7280;\n cursor: pointer;\n border-radius: 6px;\n transition: all 0.2s;\n }\n\n .tab:hover {\n color: #374151;\n }\n\n .tab.active {\n background: #ffffff;\n color: #111827;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n }\n\n .content {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n font-size: 12px;\n }\n\n pre {\n margin: 0;\n white-space: pre-wrap;\n word-break: break-all;\n background: #f9fafb;\n padding: 8px;\n border-radius: 6px;\n border: 1px solid #e5e7eb;\n color: #374151;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n }\n\n .event-item {\n margin-bottom: 12px;\n padding-bottom: 12px;\n border-bottom: 1px solid #f3f4f6;\n }\n\n .event-item:last-child {\n border-bottom: none;\n }\n\n .event-header {\n display: flex;\n justify-content: space-between;\n margin-bottom: 4px;\n }\n\n .event-name {\n font-weight: 600;\n color: #6366f1;\n }\n\n .event-time {\n color: #9ca3af;\n font-size: 10px;\n }\n\n .event-content {\n margin-top: 4px;\n }\n\n details {\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n overflow: hidden;\n }\n\n summary {\n padding: 6px 10px;\n cursor: pointer;\n background: #f3f4f6;\n font-family: ui-monospace, monospace;\n font-size: 11px;\n color: #4b5563;\n user-select: none;\n }\n\n summary:hover {\n background: #e5e7eb;\n }\n\n details[open] summary {\n border-bottom: 1px solid #e5e7eb;\n margin-bottom: 0;\n }\n\n details pre {\n border: none;\n border-radius: 0;\n padding: 10px;\n }\n\n .resize-handle {\n position: absolute;\n bottom: 0;\n right: 0;\n width: 16px;\n height: 16px;\n cursor: nwse-resize;\n z-index: 1001;\n background-image: radial-gradient(circle, #d1d5db 1px, transparent 1px);\n background-size: 4px 4px;\n background-position: center;\n }\n\n .context-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n }\n\n .edit-button, .save-button, .cancel-button {\n font-size: 11px;\n padding: 4px 8px;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .edit-button {\n background: #f3f4f6;\n border: 1px solid #d1d5db;\n color: #374151;\n }\n\n .edit-button:hover {\n background: #e5e7eb;\n }\n\n .save-button {\n background: #6366f1;\n border: 1px solid #4f46e5;\n color: white;\n }\n\n .save-button:hover {\n background: #4f46e5;\n }\n\n .cancel-button {\n background: #ffffff;\n border: 1px solid #d1d5db;\n color: #6b7280;\n }\n\n .cancel-button:hover {\n background: #f9fafb;\n }\n\n .editor-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n height: 100%;\n }\n\n .context-editor {\n flex: 1;\n width: 100%;\n min-height: 200px;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 12px;\n padding: 8px;\n border-radius: 6px;\n border: 1px solid #d1d5db;\n background: #f9fafb;\n color: #374151;\n resize: none;\n }\n\n .editor-actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, state } from 'lit/decorators.js';\nimport { inspectorService } from '../services/inspector.service';\nimport { styles } from './inspector-window.styles';\n\n@customElement('agent-inspector-window')\nexport class InspectorWindow extends LitElement {\n static styles = styles;\n\n @state() private _activeTab: 'context' | 'state' | 'messages' | 'stream' = 'stream';\n @state() private _context: any = null;\n @state() private _appState: any = null;\n @state() private _messages: any[] = [];\n @state() private _stream: any[] = [];\n @state() private _isEditing = false;\n @state() private _editedData = \"\";\n\n private _isDragging = false;\n private _isResizing = false;\n private _currentX: number = 0;\n private _currentY: number = 0;\n private _initialX: number = 0;\n private _initialY: number = 0;\n private _xOffset: number = 0;\n private _yOffset: number = 0;\n\n private _initialWidth: number = 0;\n private _initialHeight: number = 0;\n\n connectedCallback() {\n super.connectedCallback();\n inspectorService.addEventListener('inspector-change', this._onInspectorChange);\n window.addEventListener('mousemove', this._onMouseMove);\n window.addEventListener('mouseup', this._onMouseUp);\n this._updateData();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n inspectorService.removeEventListener('inspector-change', this._onInspectorChange);\n window.removeEventListener('mousemove', this._onMouseMove);\n window.removeEventListener('mouseup', this._onMouseUp);\n }\n\n private _onMouseMove = (e: MouseEvent) => {\n if (this._isDragging) {\n this._drag(e);\n } else if (this._isResizing) {\n this._resize(e);\n }\n };\n\n private _onMouseUp = () => {\n if (this._isDragging) {\n this._dragEnd();\n } else if (this._isResizing) {\n this._resizeEnd();\n }\n };\n\n private _onInspectorChange = () => {\n this._updateData();\n };\n\n private _updateData() {\n this._context = inspectorService.context;\n this._appState = inspectorService.state;\n this._messages = inspectorService.messages;\n this._stream = inspectorService.stream;\n this.requestUpdate();\n }\n\n private _handleClose() {\n this.dispatchEvent(new CustomEvent('close'));\n }\n\n private _dragStart(e: MouseEvent | TouchEvent) {\n if (e.target && (e.target as HTMLElement).closest('.close-button')) return;\n\n if (e.type === \"touchstart\") {\n this._initialX = (e as TouchEvent).touches[0].clientX - this._xOffset;\n this._initialY = (e as TouchEvent).touches[0].clientY - this._yOffset;\n } else {\n this._initialX = (e as MouseEvent).clientX - this._xOffset;\n this._initialY = (e as MouseEvent).clientY - this._yOffset;\n }\n\n this._isDragging = true;\n }\n\n private _drag(e: MouseEvent | TouchEvent) {\n if (this._isDragging) {\n if (e.type !== \"mousemove\") e.preventDefault();\n\n if (e.type === \"touchmove\") {\n this._currentX = (e as TouchEvent).touches[0].clientX - this._initialX;\n this._currentY = (e as TouchEvent).touches[0].clientY - this._initialY;\n } else {\n this._currentX = (e as MouseEvent).clientX - this._initialX;\n this._currentY = (e as MouseEvent).clientY - this._initialY;\n }\n\n this._xOffset = this._currentX;\n this._yOffset = this._currentY;\n\n this._setTranslate(this._currentX, this._currentY);\n }\n }\n\n private _dragEnd() {\n this._initialX = this._currentX;\n this._initialY = this._currentY;\n this._isDragging = false;\n }\n\n private _resizeStart(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n this._isResizing = true;\n this._initialX = e.clientX;\n this._initialY = e.clientY;\n this._initialWidth = this.getBoundingClientRect().width;\n this._initialHeight = this.getBoundingClientRect().height;\n }\n\n private _resize(e: MouseEvent) {\n if (this._isResizing) {\n const deltaX = e.clientX - this._initialX;\n const deltaY = e.clientY - this._initialY;\n this.style.width = `${this._initialWidth + deltaX}px`;\n this.style.height = `${this._initialHeight + deltaY}px`;\n }\n }\n\n private _resizeEnd() {\n this._isResizing = false;\n }\n\n private _setTranslate(xPos: number, yPos: number) {\n this.style.transform = `translate3d(${xPos}px, ${yPos}px, 0)`;\n }\n\n render() {\n return html`\n <div class=\"header\"\n @mousedown=\"${this._dragStart}\"\n @touchstart=\"${this._dragStart}\"\n @touchmove=\"${this._drag}\"\n @touchend=\"${this._dragEnd}\"\n >\n <h3>Inspector</h3>\n <button class=\"close-button\" @click=\"${this._handleClose}\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31317L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>\n </button>\n </div>\n <div class=\"tabs\">\n <div class=\"tab ${this._activeTab === 'context' ? 'active' : ''}\" @click=\"${() => this._activeTab = 'context'}\">Context</div>\n <div class=\"tab ${this._activeTab === 'state' ? 'active' : ''}\" @click=\"${() => this._activeTab = 'state'}\">State</div>\n <div class=\"tab ${this._activeTab === 'messages' ? 'active' : ''}\" @click=\"${() => this._activeTab = 'messages'}\">Messages</div>\n <div class=\"tab ${this._activeTab === 'stream' ? 'active' : ''}\" @click=\"${() => this._activeTab = 'stream'}\">Stream</div>\n </div>\n <div class=\"content\">\n ${this._renderContent()}\n </div>\n <div class=\"resize-handle\" @mousedown=\"${this._resizeStart}\"></div>\n `;\n }\n\n private _renderContent() {\n switch (this._activeTab) {\n case 'context':\n return this._renderEditableSection('context', this._context);\n case 'state':\n return this._renderEditableSection('state', this._appState);\n case 'messages':\n return html`<pre>${JSON.stringify(this._messages, null, 2)}</pre>`;\n case 'stream':\n return html`\n <div class=\"stream-list\">\n ${this._stream.map(item => html`\n <div class=\"event-item\">\n <div class=\"event-header\">\n <span class=\"event-name\">${item.event}</span>\n <span class=\"event-time\">${item.time}</span>\n </div>\n <div class=\"event-content\">\n <details>\n <summary>JSON</summary>\n <pre>${JSON.stringify(item.content, null, 2)}</pre>\n </details>\n </div>\n </div>\n `)}\n ${this._stream.length === 0 ? html`<div style=\"color: #9ca3af; text-align: center; padding: 20px;\">No events yet</div>` : ''}\n </div>\n `;\n }\n }\n\n private _renderEditableSection(type: 'context' | 'state', data: any) {\n if (this._isEditing) {\n return html`\n <div class=\"editor-container\">\n <textarea \n class=\"context-editor\" \n .value=\"${this._editedData}\"\n @input=\"${(e: any) => this._editedData = e.target.value}\"\n ></textarea>\n <div class=\"editor-actions\">\n <button class=\"cancel-button\" @click=\"${this._handleCancelEdit}\">Cancel</button>\n <button class=\"save-button\" @click=\"${() => this._handleSave(type)}\">Save Changes</button>\n </div>\n </div>\n `;\n }\n return html`\n <div class=\"context-header\">\n <span>Current ${type === 'context' ? 'Static Context' : 'Dynamic State'}</span>\n <button class=\"edit-button\" @click=\"${() => this._handleEdit(data)}\">Edit</button>\n </div>\n <pre>${JSON.stringify(data, null, 2)}</pre>\n `;\n }\n\n private _handleEdit(data: any) {\n this._editedData = JSON.stringify(data, null, 2);\n this._isEditing = true;\n }\n\n private _handleCancelEdit() {\n this._isEditing = false;\n }\n\n private _handleSave(type: 'context' | 'state') {\n try {\n const parsed = JSON.parse(this._editedData);\n const eventName = type === 'context' ? 'context-update' : 'state-update';\n this.dispatchEvent(new CustomEvent(eventName, {\n detail: parsed,\n bubbles: true,\n composed: true\n }));\n this._isEditing = false;\n } catch (e) {\n alert('Invalid JSON: ' + (e as Error).message);\n }\n }\n\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'agent-inspector-window': InspectorWindow;\n }\n}\n","export type StoreItemType =\n | \"thread\"\n | \"message\"\n | \"toolCall\"\n | \"workflow\"\n | \"task\"\n | \"attachment\"\n | \"sdkHiddenContext\";\n\nconst ID_PREFIXES: Record<StoreItemType, string> = {\n \"thread\": \"thr\",\n \"message\": \"msg\",\n \"toolCall\": \"tc\",\n \"workflow\": \"wf\",\n \"task\": \"tsk\",\n \"attachment\": \"atc\",\n \"sdkHiddenContext\": \"shcx\",\n};\n\nexport function generateId(itemType: StoreItemType): string {\n const prefix = ID_PREFIXES[itemType];\n // python uuid4().hex[:8] equivalent: remove dashes from uuid and take first 8 chars\n const randomPart = crypto.randomUUID().replace(/-/g, '').slice(0, 8);\n return `${prefix}_${randomPart}`;\n}\n","import type { ChatPortalAPI, AppContext, ExecutePlanResult, Action } from \"../models/portal.types.js\";\n\n\nexport class ChatPortalService extends EventTarget implements ChatPortalAPI {\n private _context: AppContext | null = null;\n private _visibleTargetIds: Set<string> = new Set();\n private static _instance: ChatPortalService;\n\n private _executePlanHandler: ((plan: Action) => Promise<ExecutePlanResult>) | null = null;\n\n private constructor() {\n super();\n }\n\n public static getInstance(): ChatPortalService {\n if (!ChatPortalService._instance) {\n ChatPortalService._instance = new ChatPortalService();\n }\n return ChatPortalService._instance;\n }\n\n registerPortal(context: AppContext, handlers?: { executePlan?: (plan: Action) => Promise<ExecutePlanResult> }): void {\n console.log('Registering app context', context);\n this._context = context;\n if (handlers?.executePlan) {\n this._executePlanHandler = handlers.executePlan;\n }\n this.dispatchEvent(new CustomEvent('portal-registered', { detail: context }));\n }\n\n setVisibleTargets(ids: string[]): void {\n this._visibleTargetIds = new Set(ids);\n this.dispatchEvent(new CustomEvent('targets-updated', { detail: ids }));\n }\n\n async executePlan(plan: Action): Promise<ExecutePlanResult> {\n\n if (plan.type === 'click') {\n const targetId = (plan as any).targetId;\n console.log(`ChatPortalService: Waiting for click target \"${targetId}\"...`);\n const found = await this._waitForTarget(targetId);\n if (!found) {\n return { status: \"error\", details: `Target \"${targetId}\" not found or not visible after timeout.` };\n }\n }\n\n if (this._executePlanHandler) {\n return this._executePlanHandler(plan);\n }\n\n if (!this._context) {\n console.warn('No portal registered. Cannot execute plan.');\n return { status: \"error\", details: \"No portal registered\" };\n }\n\n console.log('Executing plan (simplified):', plan);\n // TODO: Implement execution logic based on ClickTarget actions\n return { status: \"ok\" };\n }\n\n private _waitForTarget(targetId: string, timeout = 10000): Promise<boolean> {\n if (this._visibleTargetIds.has(targetId)) {\n return Promise.resolve(true);\n }\n\n return new Promise((resolve) => {\n const timer = setTimeout(() => {\n this.removeEventListener('targets-updated', handler);\n resolve(false);\n }, timeout);\n\n const handler = () => {\n if (this._visibleTargetIds.has(targetId)) {\n clearTimeout(timer);\n this.removeEventListener('targets-updated', handler);\n resolve(true);\n }\n };\n\n this.addEventListener('targets-updated', handler);\n });\n }\n\n public get context(): AppContext | null {\n return this._context;\n }\n\n /**\n * @deprecated Use context instead\n */\n public get specs(): AppContext | null {\n\n return this._context;\n }\n}\n\nexport const chatPortalService = ChatPortalService.getInstance();\n\n","import type {\n AgentSubscriber,\n RunStartedEvent,\n RunFinishedEvent,\n StepStartedEvent,\n StepFinishedEvent,\n TextMessageStartEvent,\n TextMessageContentEvent,\n TextMessageEndEvent,\n MessagesSnapshotEvent,\n AgentSubscriberParams,\n ToolCallStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n ToolCallResultEvent,\n StateSnapshotEvent,\n StateDeltaEvent,\n ActivitySnapshotEvent,\n ActivityDeltaEvent,\n CustomEvent as AgCustomEvent,\n RunErrorEvent,\n BaseEvent\n\n} from \"@ag-ui/client\";\nimport { ChatService } from \"./chat.service\";\nimport { inspectorService } from \"./inspector.service\";\nimport { chatPortalService } from \"./chat-portal.service\";\nimport type { UIMessage } from \"../models/chat.types.js\";\nimport { a2uiService } from \"./a2ui.service.js\";\nimport type { Action } from \"../models/portal.types.js\";\n\n\nexport class ChatSubscriber implements AgentSubscriber {\n private service: ChatService;\n\n constructor(service: ChatService) {\n this.service = service;\n }\n\n onRunFinishedEvent(params: { event: RunFinishedEvent, result?: any } & AgentSubscriberParams) {\n inspectorService.addEvent('onRunFinishedEvent', params.event);\n }\n\n onRunStartedEvent(params: { event: RunStartedEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onRunStartedEvent', params.event);\n // Show thinking animation\n this.service.addPlaceholderMessage();\n }\n\n onRunErrorEvent(params: { event: RunErrorEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onRunErrorEvent', params.event);\n // We could also notify the user in the UI, but for now we logs it to inspector\n console.error('ChatSubscriber: Run Error', params.event);\n }\n\n onStepStartedEvent(params: { event: StepStartedEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onStepStartedEvent', params.event);\n }\n\n onStepFinishedEvent(params: { event: StepFinishedEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onStepFinishedEvent', params.event);\n }\n\n onTextMessageStartEvent(params: { event: TextMessageStartEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onTextMessageStartEvent', params.event);\n // Switch from thinking to streaming text\n this.service.prepareMessageForStreaming(params.event.messageId);\n }\n\n onTextMessageContentEvent(params: { event: TextMessageContentEvent, textMessageBuffer: string } & AgentSubscriberParams) {\n inspectorService.addEvent('onTextMessageContentEvent', params.event);\n // Add chunk\n // The event has 'delta' prop for the new content chunk\n const content = params.event.delta || \"\";\n this.service.appendMessageContent(params.event.messageId, content);\n }\n\n\n onTextMessageEndEvent(params: { event: TextMessageEndEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onTextMessageEndEvent', params.event);\n }\n\n onMessagesSnapshotEvent(params: { event: MessagesSnapshotEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onMessagesSnapshotEvent', params.event);\n\n // Sync full state, mapping to our local Message type\n const messages: UIMessage[] = params.event.messages.map(msg => ({\n ...msg,\n createdAt: (msg as any).createdAt || Date.now(),\n }));\n this.service.setMessages(messages);\n }\n\n onToolCallStartEvent(params: { event: ToolCallStartEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onToolCallStartEvent', params.event);\n }\n\n onToolCallArgsEvent(params: { event: ToolCallArgsEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onToolCallArgsEvent', params.event);\n }\n\n async onToolCallEndEvent(params: {\n event: ToolCallEndEvent;\n toolCallName: string;\n toolCallArgs: Record<string, any>;\n } & AgentSubscriberParams) {\n inspectorService.addEvent('onToolCallEndEvent', params.event);\n\n if (params.toolCallName === 'executePlan') {\n console.log('ChatSubscriber: Received executePlan tool call', params.toolCallArgs);\n const result = await chatPortalService.executePlan(params.toolCallArgs as Action);\n console.log('ChatSubscriber: executePlan result', result);\n }\n\n if (params.toolCallName === 'navigate_user') {\n console.log('ChatSubscriber: Received navigate_user tool call', params.toolCallArgs);\n const result = await chatPortalService.executePlan({\n type: 'navigate',\n toPath: params.toolCallArgs.path,\n reason: params.toolCallArgs.reason\n });\n console.log('ChatSubscriber: navigate_user result', result);\n }\n\n if (params.toolCallName === 'click_element') {\n console.log('ChatSubscriber: Received click_element tool call', params.toolCallArgs);\n const result = await chatPortalService.executePlan({\n type: 'click',\n targetId: params.toolCallArgs.target_id,\n reason: params.toolCallArgs.reason\n });\n console.log('ChatSubscriber: click_element result', result);\n }\n }\n\n onToolCallResultEvent(params: { event: ToolCallResultEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onToolCallResultEvent', params.event);\n }\n\n onStateSnapshotEvent(params: { event: StateSnapshotEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onStateSnapshotEvent', params.event);\n }\n\n onStateDeltaEvent(params: { event: StateDeltaEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onStateDeltaEvent', params.event);\n }\n\n onActivitySnapshotEvent(params: { event: ActivitySnapshotEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onActivitySnapshotEvent', params.event);\n // a2uiService.processSnapshot(params.event);\n if (params.event.activityType == \"a2ui\" && params.event.content.surfaceUpdate)\n this.service.addA2UIMessage(params.event);\n else if (params.event.activityType == \"a2ui\" && params.event.content.beginRendering)\n a2uiService.processMessages([params.event.content] as any)\n else if (params.event.activityType == \"navigation\")\n chatPortalService.executePlan(params.event.content as Action);\n else if (params.event.activityType == \"click\")\n chatPortalService.executePlan(params.event.content as Action);\n }\n\n onActivityDeltaEvent(params: { event: ActivityDeltaEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onActivityDeltaEvent', params.event);\n // Delta processing is not supported by the current processor\n }\n\n onCustomEvent(params: { event: AgCustomEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onCustomEvent', params.event);\n }\n\n async onClientToolCall(params: { event: AgCustomEvent, toolName: string, args: Record<string, any> } & AgentSubscriberParams) {\n\n inspectorService.addEvent('onClientToolCall', params.event);\n if (params.toolName === 'executePlan') {\n console.log('ChatSubscriber: Received executePlan client tool call', params.args);\n await chatPortalService.executePlan(params.args as Action);\n }\n }\n\n\n onEvent(params: { event: BaseEvent } & AgentSubscriberParams) {\n // Log all recognized events to inspector\n inspectorService.addEvent(`onEvent:${params.event.type}`, params.event);\n }\n\n onRawEvent(params: { event: any } & AgentSubscriberParams) {\n // Log raw data from the stream\n inspectorService.addEvent('onRawEvent', params.event);\n }\n}\n","import type { Conversation } from \"../models/conversation.types\";\nimport type { AppContext } from \"../models/portal.types\";\n\n/**\n * Servicio para gestionar las conversaciones (threads) a través de un API externa.\n */\nexport class ConversationService {\n private baseUrl: string;\n\n constructor() {\n // La URL se resuelve en tiempo de compilación. Por defecto se usa http://localhost:8001\n const apiUrl = import.meta.env.VITE_CONVERSATIONS_API_URL || '';\n this.baseUrl = `${apiUrl}/api/conversations`;\n }\n\n /**\n * Inicializa la URL base del servicio.\n * @param apiUrl URL base del API de conversaciones\n */\n initialize(apiUrl: string) {\n this.baseUrl = `${apiUrl}/api/conversations`;\n }\n\n /**\n * Obtiene todas las conversaciones de un usuario.\n * @returns Promesa con el listado de conversaciones\n */\n async getConversations(): Promise<Conversation[]> {\n const response = await fetch(`${this.baseUrl}`);\n if (!response.ok) {\n throw new Error(`Failed to fetch conversations: ${response.statusText}`);\n }\n return response.json();\n }\n\n /**\n * Obtiene una conversación por su ID.\n * @param id ID de la conversación\n * @returns Promesa con la conversación\n */\n async getConversation(id: string): Promise<Conversation> {\n const response = await fetch(`${this.baseUrl}/${id}`);\n if (!response.ok) {\n throw new Error(`Failed to fetch conversation: ${response.statusText}`);\n }\n return response.json();\n }\n\n /**\n * Crea una nueva conversación.\n * @param data Datos de la conversación a crear (incluyendo opcionalmente el appContext).\n * @returns Promesa con la conversación creada\n */\n async createConversation(data: Partial<Conversation> & { appContext?: AppContext }): Promise<Conversation> {\n const payload = {\n ...data,\n title: data.title || \"Nueva conversación\"\n };\n\n const response = await fetch(this.baseUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to create conversation: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /**\n * Actualiza una conversación existente.\n * @param id ID de la conversación\n * @param conversation Datos parciales a actualizar\n * @returns Promesa con la conversación actualizada\n */\n async updateConversation(id: string, conversation: Partial<Conversation>): Promise<Conversation> {\n const response = await fetch(`${this.baseUrl}/${id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(conversation),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to update conversation: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /**\n * Elimina una conversación.\n * @param id ID de la conversación a eliminar\n */\n async deleteConversation(id: string): Promise<void> {\n const response = await fetch(`${this.baseUrl}/${id}`, {\n method: 'DELETE',\n });\n\n if (!response.ok) {\n throw new Error(`Failed to delete conversation: ${response.statusText}`);\n }\n }\n}\n\nexport const conversationService = new ConversationService();\n","import { HttpAgent, type Message } from \"@ag-ui/client\";\nimport type { ConversationSummary, AppState, UIMessage, SuggestedPrompt } from \"../models/chat.types.js\";\nimport type { AppContext } from \"../models/portal.types\";\nimport type { ActivitySnapshotEvent } from \"@ag-ui/client\";\n\n\nimport { generateId } from \"../utils/id-generator\";\nimport { ChatSubscriber } from \"./chat.subscriber\";\nimport { inspectorService } from \"./inspector.service\";\nimport { conversationService } from \"./conversation.service\";\nimport { chatPortalService } from \"./chat-portal.service\";\n\nconst threadIdPlaceHolder = \"thread-placeholder\";\nconst STORAGE_THREAD_ID_KEY = \"site-operator-thread-id\";\nconst DEFAUILT_AG_UI_URI = '/ag_ui';\nexport class ChatService extends EventTarget {\n private agent?: HttpAgent;\n private _conversations: ConversationSummary[] = [];\n private _appContext: AppContext | null = null;\n private _appState: AppState = {\n v: \"1.1\",\n location: { path: \"\" },\n ui: { visibleClickTargetIds: [] }\n };\n private _suggestedPrompts: SuggestedPrompt[] = [];\n private _showPrompts: boolean = false;\n\n get isRunning() {\n return this.agent?.isRunning || false;\n }\n\n get messages() {\n return this.agent?.messages || [];\n }\n\n get suggestedPrompts() {\n return this._suggestedPrompts;\n }\n\n get showPrompts() {\n return this._showPrompts;\n }\n\n\n private subscriber: ChatSubscriber;\n\n constructor() {\n super();\n this.subscriber = new ChatSubscriber(this);\n\n // Listen for context registration from other parts of the app\n chatPortalService.addEventListener('portal-registered', (e: Event) => {\n const detail = (e as CustomEvent<AppContext>).detail;\n console.log('ChatService: Portal context detected', detail);\n this.setAppContext(detail);\n });\n }\n\n /**\n * Inicializa el servicio de chat con las URLs necesarias y el nombre de la aplicación.\n * @param config Configuración de inicialización.\n */\n async initialize(config: { backendUrl: string, conversationUrl: string, appName: string, inspector?: boolean }) {\n const storedThreadId = localStorage.getItem(STORAGE_THREAD_ID_KEY);\n\n this.agent = new HttpAgent({\n url: `${config.backendUrl}${DEFAUILT_AG_UI_URI}`,\n threadId: storedThreadId || threadIdPlaceHolder,\n });\n conversationService.initialize(config.backendUrl);\n\n // Prioritize already registered portal context if available\n if (chatPortalService.context) {\n this._appContext = chatPortalService.context;\n } else {\n this._appContext = {\n v: \"1.1\",\n site: {\n name: config.appName,\n locale: window.navigator.language || window.navigator.languages[0] || \"en\",\n },\n };\n }\n\n if (storedThreadId) {\n await this.loadConversation(storedThreadId);\n }\n\n inspectorService.setContext(this._appContext);\n inspectorService.setState(this._appState);\n inspectorService.setMessages(this.agent?.messages || []);\n }\n\n /**\n * Carga una conversación existente por su ID.\n * @param id ID de la conversación a cargar.\n */\n async loadConversation(id: string) {\n try {\n const conversation = await conversationService.getConversation(id);\n if (this.agent) {\n this.agent.threadId = conversation.id;\n this.agent.messages = (conversation.messages || []) as UIMessage[];\n localStorage.setItem(STORAGE_THREAD_ID_KEY, conversation.id);\n }\n this.notify();\n } catch (error) {\n console.error(\"Failed to load conversation\", error);\n // Si falla la carga, volvemos al estado inicial\n if (this.agent) {\n this.agent.threadId = threadIdPlaceHolder;\n this.agent.messages = [];\n localStorage.removeItem(STORAGE_THREAD_ID_KEY);\n }\n this.notify();\n }\n }\n\n get conversations() {\n return this._conversations;\n }\n\n /**\n * Establece el contexto de la aplicación para el agente.\n * Este contexto se envía en cada mensaje.\n * @param context El contexto de la aplicación (AgentState o AppContext)\n */\n setAppContext(context: AppContext) {\n this._appContext = context;\n inspectorService.setContext(this._appContext);\n this.notify();\n }\n\n\n\n /**\n * Establece el estado dinámico de la aplicación.\n * @param state El estado completo de la aplicación.\n */\n setAppState(state: AppState) {\n this._appState = state;\n inspectorService.setState(this._appState);\n if (state.ui?.visibleClickTargetIds) {\n chatPortalService.setVisibleTargets(state.ui.visibleClickTargetIds);\n }\n this.notify();\n }\n\n /**\n * Actualiza el estado dinámico de la aplicación de forma parcial.\n * @param partial El estado parcial de la aplicación.\n */\n updateAppState(partial: Partial<AppState>) {\n this._appState = { ...this._appState, ...partial };\n this.notify();\n }\n\n setAppLocation(location: AppState[\"location\"]) {\n this._appState.location = location;\n this.notify();\n }\n\n setAppUI(ui: AppState[\"ui\"]) {\n this._appState.ui = ui;\n if (ui?.visibleClickTargetIds) {\n chatPortalService.setVisibleTargets(ui.visibleClickTargetIds);\n }\n this.notify();\n }\n\n setAppFocus(focus: AppState[\"focus\"]) {\n this._appState.focus = focus;\n this.notify();\n }\n\n /**\n * Establece los prompts sugeridos que se mostrarán al usuario.\n * @param prompts Lista de prompts sugeridos. El caption tiene un máximo de 50 caracteres.\n */\n setSuggestedPrompts(prompts: SuggestedPrompt[]) {\n this._suggestedPrompts = prompts.map(p => ({\n ...p,\n caption: p.caption.slice(0, 50)\n }));\n this._showPrompts = true;\n this.notify();\n }\n\n /**\n * Oculta la lista de prompts sugeridos.\n */\n hideSuggestedPrompts() {\n this._showPrompts = false;\n this.notify();\n }\n\n\n async sendMessage(content: string, role: \"developer\" | \"user\" | \"assistant\" | \"system\" | \"tool\" | \"activity\" = \"user\") {\n if (!this.agent) {\n console.error(\"ChatService not initialized. Call initialize() first.\");\n return;\n }\n\n // Optimistic update\n const id = generateId(\"message\");\n const createdAt = Date.now();\n let userMsg: UIMessage;\n\n switch (role) {\n case \"activity\":\n userMsg = { id, role: \"activity\", activityType: \"message\", content: { text: content }, createdAt };\n break;\n case \"tool\":\n userMsg = { id, role: \"tool\", content, toolCallId: generateId(\"toolCall\"), createdAt };\n break;\n case \"user\":\n userMsg = { id, role: \"user\", content, createdAt };\n break;\n case \"assistant\":\n userMsg = { id, role: \"assistant\", content, createdAt };\n break;\n case \"system\":\n userMsg = { id, role: \"system\", content, createdAt };\n break;\n case \"developer\":\n userMsg = { id, role: \"developer\", content, createdAt };\n break;\n }\n\n\n\n this.notify();\n\n try {\n if (this.agent?.threadId == threadIdPlaceHolder)\n await this._ensureConversation();\n // Add only the new message\n this.agent.addMessage(userMsg as Message);\n\n this.agent.state = {\n appContext: this._appContext,\n appState: this._appState\n };\n\n\n\n await this.agent.runAgent({ tools: [] }, this.subscriber);\n\n\n\n } catch (error) {\n console.error(\"Failed to send message\", error);\n // Add error message to thread?\n } finally {\n this._showPrompts = false;\n this.notify();\n }\n }\n\n async _ensureConversation() {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n if (this.agent?.threadId == threadIdPlaceHolder) {\n const conversation = await conversationService.createConversation({\n appContext: this._appContext || undefined\n });\n this.agent.threadId = conversation.id;\n localStorage.setItem(STORAGE_THREAD_ID_KEY, conversation.id);\n }\n }\n\n addPlaceholderMessage() {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n const placeholder: UIMessage = {\n id: \"thinking-placeholder\",\n role: \"assistant\",\n content: \"\",\n createdAt: Date.now(),\n isThinking: true\n };\n this.agent.messages = [...this.agent.messages, placeholder];\n this.notify();\n }\n\n prepareMessageForStreaming(newId: string) {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n this.agent.messages = this.agent.messages.map(msg => {\n if (msg.id === \"thinking-placeholder\" && this.isRunning) {\n return {\n ...msg,\n id: newId,\n isThinking: false\n };\n }\n return msg;\n });\n this.notify();\n }\n\n appendMessageContent(id: string, content: string) {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n this.agent.messages = this.agent.messages.map(msg => {\n if (msg.id === id && typeof msg.content === 'string') {\n return {\n ...msg,\n content: (msg.content || '') + content\n } as UIMessage;\n }\n return msg;\n });\n this.notify();\n }\n\n setMessages(messages: Message[]) {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n\n // Preserve existing activity messages that are not in the incoming set\n const existingActivities = this.agent.messages.filter(m => m.role === ('activity' as any));\n const incomingIds = new Set(messages.map(m => m.id));\n const missingActivities = existingActivities.filter(m => !incomingIds.has(m.id));\n\n console.log(\"ChatService: setMessages - Preserving activities\", missingActivities.length);\n\n // Map external messages to our Message type\n this.agent.messages = [...(messages as UIMessage[]), ...missingActivities];\n\n // Sort by createdAt to maintain some order (though activities might not have it from server)\n this.agent.messages.sort((a, b) => ((a as any).createdAt || 0) - ((b as any).createdAt || 0));\n\n this.notify();\n }\n\n addA2UIMessage(event: ActivitySnapshotEvent) {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n\n // Handle case where content might be a string\n let content = event.content;\n if (typeof content === 'string') {\n try {\n content = JSON.parse(content);\n } catch (e) {\n console.error(\"ChatService: Failed to parse activity content string\", e);\n }\n }\n\n\n\n const activityMsg: UIMessage = {\n id: event.messageId,\n role: 'activity',\n activityType: event.activityType,\n content: event.content,\n createdAt: Date.now()\n };\n\n\n // Remove existing message with same ID if any (to handle updates/snapshots)\n const messages = this.agent.messages.filter(m => m.id !== event.messageId);\n this.agent.messages = [...messages, activityMsg];\n\n this.notify();\n }\n\n async startNewThread() {\n localStorage.removeItem(STORAGE_THREAD_ID_KEY);\n if (this.agent) {\n this.agent.threadId = threadIdPlaceHolder;\n this.agent.messages = [];\n this.agent.isRunning = false;\n }\n\n if (this._suggestedPrompts.length > 0) {\n this._showPrompts = true;\n }\n\n this.notify();\n }\n\n /**\n * Refresca la lista de conversaciones desde el servicio de conversaciones.\n */\n async refreshConversations() {\n try {\n const conversations = await conversationService.getConversations();\n this._conversations = conversations.map(c => ({\n id: c.id,\n title: c.title\n }));\n this.notify();\n } catch (error) {\n console.error(\"Failed to refresh conversations\", error);\n }\n }\n\n private notify() {\n inspectorService.setMessages(this.agent?.messages || []);\n inspectorService.setState(this._appState);\n this.dispatchEvent(new CustomEvent(\"state-change\"));\n }\n}\n\nexport const chatService = new ChatService();\n","import type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport { chatService } from '../services/chat.service';\nimport type { AppState, SuggestedPrompt } from '../models/chat.types';\nimport type { AppContext } from '../models/portal.types';\n\n\n\n/**\n * Controlador reactivo para gestionar la conexión con el ChatService.\n * Se encarga de suscribirse a los cambios de estado y limpiar los recursos\n * cuando el componente host se desconecta.\n */\nexport class ChatController implements ReactiveController {\n private _host: ReactiveControllerHost;\n\n constructor(host: ReactiveControllerHost) {\n this._host = host;\n this._host.addController(this);\n }\n\n /**\n * Inicializa el servicio de chat con las URLs necesarias y el nombre de la aplicación.\n * @param config Configuración de inicialización.\n */\n initialize(config: { backendUrl: string, appName: string, conversationUrl: string, inspector?: boolean }) {\n return chatService.initialize(config);\n }\n\n /**\n * Se ejecuta cuando el componente se conecta al DOM.\n * Registra el listener para actualizaciones de estado.\n */\n hostConnected() {\n chatService.addEventListener('state-change', this._onStateChange);\n }\n\n /**\n * Se ejecuta cuando el componente se desconecta del DOM.\n * Elimina el listener para evitar fugas de memoria.\n */\n hostDisconnected() {\n chatService.removeEventListener('state-change', this._onStateChange);\n }\n\n /**\n * Retorna el estado actual del hilo de chat.\n */\n get isRunning() {\n return chatService.isRunning;\n }\n\n /**\n * Retorna el listado de mensajes.\n */\n get messages() {\n return chatService.messages;\n }\n\n /**\n * Retorna el listado de conversaciones recientes.\n */\n get conversations() {\n return chatService.conversations;\n }\n\n /**\n * Retorna los prompts sugeridos.\n */\n get suggestedPrompts() {\n return chatService.suggestedPrompts;\n }\n\n /**\n * Indica si se deben mostrar los prompts.\n */\n get showPrompts() {\n return chatService.showPrompts;\n }\n\n /**\n * Envía un mensaje a través del servicio.\n * @param content Contenido del mensaje.\n * @param role Rol del mensaje (opcional, por defecto 'user').\n */\n sendMessage(content: string, role: Parameters<typeof chatService.sendMessage>[1] = 'user') {\n return chatService.sendMessage(content, role);\n }\n\n /**\n * Inicia un nuevo hilo de charla.\n */\n startNewThread() {\n return chatService.startNewThread();\n }\n\n /**\n * Carga una conversación existente por su ID.\n * @param id ID de la conversación a cargar.\n */\n loadConversation(id: string) {\n return chatService.loadConversation(id);\n }\n\n /**\n * Establece el contexto de la aplicación.\n * @param context Objeto AgentState o AppContext con el contexto.\n */\n setAppContext(context: AppContext) {\n return chatService.setAppContext(context);\n }\n\n /**\n * Establece el estado dinámico de la aplicación.\n * @param state Objeto AppState.\n */\n setAppState(state: AppState) {\n return chatService.setAppState(state);\n }\n\n setAppLocation(location: AppState[\"location\"]) {\n return chatService.setAppLocation(location);\n }\n\n setAppUI(ui: AppState[\"ui\"]) {\n return chatService.setAppUI(ui);\n }\n\n setAppFocus(focus: AppState[\"focus\"]) {\n return chatService.setAppFocus(focus);\n }\n\n /**\n * Establece los prompts sugeridos.\n * @param prompts Lista de prompts.\n */\n setSuggestedPrompts(prompts: SuggestedPrompt[]) {\n return chatService.setSuggestedPrompts(prompts);\n }\n\n /**\n * Oculta los prompts sugeridos.\n */\n hideSuggestedPrompts() {\n return chatService.hideSuggestedPrompts();\n }\n\n\n\n /**\n * Refresca el listado de conversaciones desde el servidor.\n */\n refreshConversations() {\n return chatService.refreshConversations();\n }\n\n /**\n * Manejador interno para cambios de estado.\n * Llama a requestUpdate() en el host para forzar el renderizado.\n */\n private _onStateChange = () => {\n this._host.requestUpdate();\n };\n}\n","/**\n * Service to manage fetch interceptions.\n * This is primarily used for development and testing purposes to inject headers or log requests.\n */\nexport class FetchInterceptorService {\n private originalFetch = window.fetch.bind(window);\n private _isEnabled = false;\n\n /**\n * Checks if the interceptor is currently enabled.\n * @returns boolean\n */\n public get isEnabled(): boolean {\n return this._isEnabled;\n }\n\n /**\n * Initializes the fetch interceptor.\n * Adds a test Authorization header to all outgoing fetch requests.\n * This method should only be called in development environments.\n */\n public init(): void {\n if (this._isEnabled) return;\n\n const self = this;\n window.fetch = async function (input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n try {\n // Create headers if they don't exist\n const headers = new Headers(init?.headers || {});\n\n // Add test authorization header if it doesn't exist\n // Using VITE_TEST_AUTH_TOKEN from environment if available\n const token = import.meta.env.VITE_TEST_AUTH_TOKEN;\n if (token && !headers.has('Authorization')) {\n headers.append('Authorization', `Bearer ${token}`);\n }\n\n // Call original fetch with updated config\n return self.originalFetch(input, { ...init, headers });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n this._isEnabled = true;\n console.log('Fetch interceptor initialized with test Authorization header (Native implementation).');\n }\n\n /**\n * Disables the fetch interceptor.\n */\n public destroy(): void {\n if (this._isEnabled) {\n window.fetch = this.originalFetch;\n this._isEnabled = false;\n console.log('Fetch interceptor destroyed (Native implementation).');\n }\n }\n}\n\n/**\n * Singleton instance of the FetchInterceptorService.\n */\nexport const fetchInterceptorService = new FetchInterceptorService();\n","import { LitElement, html } from 'lit';\nimport { customElement, state, property } from 'lit/decorators.js';\nimport { styles } from './agent-chat.styles';\nimport './chat-header';\nimport './chat-thread';\nimport './chat-composer';\nimport '@a2ui/lit/ui';\nimport './a2ui-theme-provider';\nimport type { AppContext } from \"../models/portal.types.js\";\nimport type { AppState, SuggestedPrompt } from \"../models/chat.types.js\";\n\nimport './chat-history-list';\n\nimport './inspector-window';\nimport { ChatController } from '../hooks/chat.controller';\nimport { ToolIcon } from '../icons';\n\nimport { fetchInterceptorService } from '../services/fetch-interceptor.service';\n\n@customElement('agent-chat')\nexport class AgentChat extends LitElement {\n static styles = styles;\n\n private _chatController = new ChatController(this);\n\n public get controller() {\n return this._chatController;\n }\n\n protected firstUpdated() {\n this.dispatchEvent(new CustomEvent('controller-ready', {\n detail: this._chatController\n }));\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('a2uiaction', this._handleA2UIAction as EventListener);\n }\n\n disconnectedCallback() {\n this.removeEventListener('a2uiaction', this._handleA2UIAction as EventListener);\n super.disconnectedCallback();\n }\n @property({ type: String, attribute: 'backend-url' }) backendUrl = '';\n @property({ type: String, attribute: 'app-name' }) appName = 'Lit-Chat-App';\n @property({ type: String, attribute: 'conversation-url' }) conversationUrl = '';\n @property({ type: String, attribute: 'agent-avatar' }) agentAvatar = '';\n @property({ type: String, attribute: 'disclaimer' }) disclaimer = 'Agent puede cometer errores. Verifica la información importante.';\n @property({ type: String, attribute: 'empty-text' }) emptyText = '¿En qué puedo ayudarte hoy?';\n @property({ type: String, attribute: 'placeholder' }) placeholder = 'Enviar un mensaje a Agent';\n @property({ type: String, attribute: 'header-title' }) headerTitle = 'Agent';\n @property({ type: Boolean, attribute: 'hide-header' }) hideHeader = false;\n @property({ type: Boolean, attribute: 'interceptor' }) interceptor = false;\n\n @state() private _historyOpen = false;\n @state() private _inspectorOpen = false;\n @state() private _inspectorEnabled = false;\n\n willUpdate(changedProperties: Map<string, any>) {\n\n if (changedProperties.has('interceptor')) {\n if (this.interceptor) {\n this.enableFetchInterceptor();\n } else {\n fetchInterceptorService.destroy();\n }\n }\n if (changedProperties.has('backendUrl')\n || changedProperties.has('appName')\n || changedProperties.has('conversationUrl')) {\n this._chatController.initialize({\n backendUrl: this.backendUrl,\n appName: this.appName,\n conversationUrl: this.conversationUrl,\n inspector: this.hasAttribute('inspector') || (this as any).inspector\n });\n this._inspectorEnabled = this.hasAttribute('inspector') || (this as any).inspector;\n }\n\n }\n\n /**\n * Enables the fetch interceptor for development purposes.\n * This will only work if the application is running in development mode.\n */\n public enableFetchInterceptor() {\n if (import.meta.env.DEV) {\n fetchInterceptorService.init();\n } else {\n console.warn('Fetch interceptor is only available in development mode.');\n }\n }\n\n private _handleSend(e: CustomEvent) {\n this._chatController.sendMessage(e.detail.content);\n }\n\n private _handleNewThread() {\n this._chatController.startNewThread();\n }\n\n /**\n * API Pública para establecer el contexto de la aplicación.\n * @param appContext Contexto de la aplicación (AgentState o AppContext)\n */\n public setAppContext(appContext: AppContext) {\n this._chatController.setAppContext(appContext);\n }\n\n /**\n * API Pública para establecer el estado dinámico de la aplicación.\n * @param appState Estado dinámico de la aplicación.\n */\n public setAppState(appState: AppState) {\n this._chatController.setAppState(appState);\n }\n\n public setAppLocation(location: AppState[\"location\"]) {\n this._chatController.setAppLocation(location);\n }\n\n public setAppUI(ui: AppState[\"ui\"]) {\n this._chatController.setAppUI(ui);\n }\n\n public setAppFocus(focus: AppState[\"focus\"]) {\n this._chatController.setAppFocus(focus);\n }\n\n /**\n * Establece los prompts sugeridos que se mostrarán al usuario.\n * @param prompts Lista de prompts sugeridos.\n */\n public setSuggestedPrompts(prompts: SuggestedPrompt[]) {\n this._chatController.setSuggestedPrompts(prompts);\n }\n\n\n private _toggleHistory() {\n this._historyOpen = !this._historyOpen;\n if (this._historyOpen) {\n this._chatController.refreshConversations();\n }\n }\n\n private _handleSelectThread(e: CustomEvent) {\n console.log('Selected conversation:', e.detail.conversation);\n this._chatController.loadConversation(e.detail.conversation.id);\n this._historyOpen = false;\n }\n\n private _toggleInspector() {\n this._inspectorOpen = !this._inspectorOpen;\n }\n\n render() {\n return html`\n <div class=\"chat-layout\">\n ${!this.hideHeader ? html`\n <agent-chat-header \n .title=\"${this.headerTitle}\"\n @new-thread=\"${this._handleNewThread}\"\n @toggle-history=\"${this._toggleHistory}\"\n ></agent-chat-header>\n ` : ''}\n <agent-chat-history-list \n .conversations=\"${this._chatController.conversations}\" \n ?open=\"${this._historyOpen}\"\n @select-thread=\"${this._handleSelectThread}\"\n ></agent-chat-history-list>\n <agent-chat-thread \n .messages=\"${this._chatController.messages}\" \n ?isRunning=\"${this._chatController.isRunning}\"\n .agentAvatar=\"${this.agentAvatar}\"\n .emptyText=\"${this.emptyText}\">\n </agent-chat-thread>\n <agent-chat-composer \n ?isRunning=\"${this._chatController.isRunning}\" \n .disclaimer=\"${this.disclaimer}\"\n .placeholder=\"${this.placeholder}\"\n .prompts=\"${this._chatController.showPrompts ? this._chatController.suggestedPrompts : []}\"\n @send=\"${this._handleSend}\">\n </agent-chat-composer>\n\n ${this._inspectorEnabled ? html`\n <button class=\"inspector-toggle\" @click=\"${this._toggleInspector}\" title=\"Inspector\">\n ${ToolIcon}\n </button>\n ` : ''}\n\n ${this._inspectorOpen ? html`\n <agent-inspector-window \n @close=\"${this._toggleInspector}\"\n @context-update=\"${this._handleContextUpdate}\"\n @state-update=\"${this._handleStateUpdate}\"\n ></agent-inspector-window>\n ` : ''}\n </div>\n `;\n }\n\n private _handleContextUpdate(e: CustomEvent) {\n this.setAppContext(e.detail);\n }\n\n private _handleA2UIAction(e: CustomEvent) {\n const { action } = e.detail;\n if (!action) return;\n\n console.log('AgentChat: A2UI Action received:', action);\n\n // Handler específico para decisiones de autenticación/consentimiento\n if (action.name === 'decision') {\n this._handleAuthDecision(action);\n return;\n }\n\n // Handler genérico para URLs\n this._handleGenericUrlAction(action);\n }\n\n /**\n * Maneja acciones de tipo 'decision' (Aprobar/Denegar).\n * Si es 'approve', abre una URL y espera a que se cierre la pestaña antes de notificar.\n * Si es 'deny', notifica inmediatamente.\n */\n private _handleAuthDecision(action: any) {\n const context = action.context || [];\n const decision = context.find((p: any) => p.key === 'userDecision')?.value?.literalString;\n const url = context.find((p: any) => ['url', 'href', 'link', 'uri'].includes(p.key?.toLowerCase()))?.value?.literalString;\n\n console.log(`AgentChat: Specialized decision handler: ${decision}`, action);\n\n if (decision === 'deny') {\n console.log('AgentChat: User denied the request.');\n this._chatController.sendMessage(\n `User selected \"Deny\" for action \"${action.name}\".`,\n 'tool'\n );\n return;\n }\n\n if (decision === 'approve') {\n if (url) {\n console.log(`AgentChat: User selected \"Approve\". Opening auth URL: ${url}`);\n const win = window.open(url, '_blank');\n\n if (win) {\n const checkClosed = setInterval(() => {\n if (win.closed) {\n clearInterval(checkClosed);\n console.log('AgentChat: Auth tab closed. Notifying approval.');\n this._chatController.sendMessage(\n `User approved the request \"${action.name}\" and completed authentication.`,\n 'tool'\n );\n }\n }, 1000);\n } else {\n console.error('AgentChat: Failed to open auth tab.');\n }\n } else {\n // Si no hay URL, simplemente notificamos la aprobación\n console.log('AgentChat: User approved (no URL provided).');\n this._chatController.sendMessage(\n `User selected \"Approve\" for action \"${action.name}\".`,\n 'tool'\n );\n }\n }\n }\n\n /**\n * Handler genérico para cualquier acción que contenga una URL.\n */\n private _handleGenericUrlAction(action: any) {\n const urlParam = action.context?.find((p: any) =>\n ['url', 'href', 'link', 'uri'].includes(p.key?.toLowerCase())\n );\n const url = urlParam?.value?.literalString || urlParam?.value?.path;\n\n if (url) {\n console.log(`AgentChat: Opening generic URL: ${url}`);\n window.open(url, '_blank');\n } else {\n console.warn('AgentChat: A2UI Action received without recognizable purpose:', action);\n }\n }\n\n private _handleStateUpdate(e: CustomEvent) {\n this.setAppState(e.detail);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'agent-chat': AgentChat;\n }\n\n interface HTMLElementEventMap {\n 'controller-ready': CustomEvent<ChatController>;\n }\n}\n","import './components/agent-chat';\n\n\nexport * from './components/agent-chat';\nexport * from './hooks';\nexport * from './services/chat-portal.service';\nexport * from './services/conversation.service';\nexport * from './services/fetch-interceptor.service';\nexport * from './models/portal.types';\nexport * from './models/conversation.types';\nexport * from './models/chat.types';\n\n/**\n * Mounts the Agent Chat component to a target element.\n * @param element The DOM element to mount the chat into.\n * @param options Configuration options for the chat.\n */\nexport function mount(element: HTMLElement, options: any = {}) {\n const chat = document.createElement('agent-chat');\n\n // Apply options if any (assuming AgentChat has properties we can set)\n // For now dealing with the component as is.\n Object.keys(options).forEach(key => {\n if (key in chat) {\n // @ts-ignore\n chat[key] = options[key];\n }\n });\n\n element.appendChild(chat);\n return chat;\n}\n\n/**\n * Registers the web component.\n * (It's already registered by import, but this can be a safe-guard re-export or initialization function)\n */\nexport function register() {\n // verify if already defined? \n // currently agent-chat.ts likely calls customElements.define side-effect.\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,22,23,24,25,26,27,28,29,30,31,32,33],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"site-operator.es.js","names":["t","e","s","o","n","r","i","S","c","i","e","h","r","o","n","a","c","l","p","d","t","u","s","f","b","t","i","s","e","h","o","n","r","l","c","a","u","d","f","v","m","p","y","x","M","s","t","r","e","o","o","t","e","o","e","t","r","n","i","s","t","r","e","t","c","e","o","t","r","s","n","i","mappedMessages: v0_8.Types.ServerToClientMessage[]","dataModelUpdate: v0_8.Types.DataModelUpdate","normalized: v0_8.Types.DataModelUpdate","normalized: Record<string, unknown>","normalized: v0_8.Types.ServerToClientMessage","payloads: v0_8.Types.ServerToClientMessage[]","a","b","i","s","c","n","w","i","s","t","h","e","t","e","i","t","o","i","n","e","l","c","f","r","s","d","m","p","h","j","s","e","i","t","o","r","h","n","t","s","i","h","o","m","o","t","i","s","l","r","t","r","l","o","i","s","t","e","o","s","i","t","h","e","t","s","i","e","r","i","n","t","o","s","skandiaThemeVars: Record<string, string>","defaultTheme: v0_8.Types.Theme","ID_PREFIXES: Record<StoreItemType, string>","messages: UIMessage[]","userMsg: UIMessage","placeholder: UIMessage","activityMsg: UIMessage"],"sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit-html/lit-html.js","../../../node_modules/lit-element/lit-element.js","../../../node_modules/@lit/reactive-element/decorators/custom-element.js","../../../node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/@lit/reactive-element/decorators/state.js","../../../node_modules/@lit/reactive-element/decorators/base.js","../../../node_modules/@lit/reactive-element/decorators/query.js","../src/components/agent-chat.styles.ts","../src/components/chat-header.styles.ts","../src/components/ui/icon-button.styles.ts","../src/components/ui/icon-button.ts","../src/icons.ts","../src/components/chat-header.ts","../src/components/chat-thread.styles.ts","../src/components/chat-message.styles.ts","../src/services/a2ui.service.ts","../src/components/chat-message.ts","../src/components/chat-thread.ts","../src/components/chat-composer.styles.ts","../src/components/chat-composer.ts","../../../node_modules/signal-polyfill/dist/index.js","../../../node_modules/@lit-labs/signals/lib/signal-watcher.js","../../../node_modules/lit-html/directive.js","../../../node_modules/lit-html/directive-helpers.js","../../../node_modules/lit-html/async-directive.js","../../../node_modules/@lit-labs/signals/lib/watch.js","../../../node_modules/@lit-labs/signals/lib/html-tag.js","../../../node_modules/@lit-labs/signals/index.js","../../../node_modules/@lit/context/lib/context-request-event.js","../../../node_modules/@lit/context/lib/value-notifier.js","../../../node_modules/@lit/context/lib/controllers/context-provider.js","../../../node_modules/@lit/context/lib/decorators/provide.js","../src/models/a2ui.theme.ts","../src/components/a2ui-theme-provider.ts","../src/components/chat-history-list.styles.ts","../src/components/chat-history-list.ts","../src/services/inspector.service.ts","../src/components/inspector-window.styles.ts","../src/components/inspector-window.ts","../src/utils/id-generator.ts","../src/services/chat-portal.service.ts","../src/services/chat.subscriber.ts","../src/services/conversation.service.ts","../src/services/chat.service.ts","../src/hooks/chat.controller.ts","../src/services/fetch-interceptor.service.ts","../src/components/agent-chat.ts","../src/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: flex;\n flex-direction: column;\n height: 100vh;\n background-color: var(--agent-bg-white, #ffffff);\n overflow: hidden;\n position: relative;\n }\n\n .chat-layout {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: relative;\n }\n\n agent-chat-header {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n z-index: 10;\n }\n\n agent-chat-thread {\n flex: 1;\n /* padding-bottom: 8rem; / / Space for composer */\n }\n\n .inspector-toggle {\n position: absolute;\n bottom: 110px;\n left: 20px;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: #ffffff;\n border: 1px solid #e5e7eb;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #6b7280;\n transition: all 0.2s;\n z-index: 999;\n }\n\n .inspector-toggle:hover {\n background: #f3f4f6;\n color: #111827;\n transform: scale(1.1);\n }\n\n`;\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n border-bottom: 1px solid var(--agent-border-zinc-200, #e4e4e7);\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 4rem; /* 64px */\n padding: 0 1rem;\n background-color: rgba(255, 255, 255, 0.8);\n backdrop-filter: blur(4px);\n }\n\n\n h1 {\n margin: 0;\n font-size: 1.125rem; /* 18px */\n font-weight: 600;\n color: var(--agent-text-foreground, #09090b);\n }\n\n .actions {\n display: flex;\n gap: 0.5rem;\n }\n`;\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: inline-flex;\n }\n\n button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n cursor: pointer;\n border-radius: var(--agent-radius-full, 9999px);\n padding: 0.5rem;\n color: var(--agent-text-zinc-500, #71717a);\n transition: color 0.2s, background-color 0.2s;\n }\n\n button:hover {\n color: var(--agent-text-foreground, #09090b);\n background-color: var(--agent-bg-zinc-100, #f4f4f5);\n }\n\n ::slotted(svg) {\n width: 1.25rem;\n height: 1.25rem;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './icon-button.styles';\n\n@customElement('agent-icon-button')\nexport class AgentIconButton extends LitElement {\n static styles = styles;\n\n @property() tooltip = '';\n\n render() {\n return html`\n <button title=\"${this.tooltip}\" aria-label=\"${this.tooltip || 'Action'}\">\n <slot></slot>\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'agent-icon-button': AgentIconButton;\n }\n}\n","import { html } from 'lit';\n\nexport const PlusIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-plus\">\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n</svg>`;\n\nexport const SendIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-send\">\n <path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\" />\n <path d=\"m21.854 2.147-10.94 10.939\" />\n</svg>`;\n\nexport const CopyIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-copy\">\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n</svg>`;\n\nexport const ReloadIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-rotate-cw\">\n <path d=\"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8\" />\n <path d=\"M21 3v5h-5\" />\n</svg>`;\n\nexport const StopIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-square\">\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n</svg>`;\n\nexport const HistoryIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-history\">\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n <path d=\"M12 7v5l4 2\" />\n</svg>`;\n\nexport const ToolIcon = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-wrench\">\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\" />\n</svg>`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './chat-header.styles';\nimport './ui/icon-button';\nimport { PlusIcon, HistoryIcon } from '../icons';\n\n@customElement('agent-chat-header')\nexport class ChatHeader extends LitElement {\n static styles = styles;\n\n @property({ type: String }) title = 'Agent Chat';\n\n private _handleNewThread() {\n this.dispatchEvent(new CustomEvent('new-thread', { bubbles: true, composed: true }));\n }\n\n private _handleToggleHistory() {\n this.dispatchEvent(new CustomEvent('toggle-history', { bubbles: true, composed: true }));\n }\n\n render() {\n return html`\n <header class=\"header\">\n <h1>${this.title}</h1>\n <div class=\"actions\">\n <agent-icon-button tooltip=\"Conversaciones\" @click=\"${this._handleToggleHistory}\">\n ${HistoryIcon}\n </agent-icon-button>\n <agent-icon-button tooltip=\"Nuevo Chat\" @click=\"${this._handleNewThread}\">\n ${PlusIcon}\n </agent-icon-button>\n </div>\n </header>\n `;\n }\n}\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n height: 100%;\n overflow-y: auto;\n background-color: var(--agent-bg-white, #ffffff);\n padding-top: 4rem; /* Spacer for fixed header */\n }\n\n .messages-list {\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n padding: 1rem;\n max-width: 48rem; /* max-w-screen-md */\n margin: 0 auto;\n min-height: calc(100% - 4rem); \n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--agent-text-foreground, #09090b);\n min-height: 50vh;\n }\n\n .empty-avatar {\n width: 3rem;\n height: 3rem;\n border-radius: var(--agent-radius-full, 9999px);\n border: 1px solid var(--agent-border-zinc-200, #e4e4e7);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.875rem;\n margin-bottom: 1rem;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n }\n\n .empty-avatar-img {\n width: 3rem;\n height: 3rem;\n border-radius: var(--agent-radius-full, 9999px);\n object-fit: cover;\n margin-bottom: 1rem;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n }\n\n .empty-text {\n font-size: 1.25rem;\n line-height: 1.75rem;\n text-align: center;\n padding: 0 1rem;\n }\n`;\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n margin: 1rem 0;\n }\n\n .message-container {\n display: flex;\n gap: 0.75rem;\n max-width: 100%;\n align-items: flex-end;\n }\n\n :host([role=\"user\"]) .message-container {\n justify-content: flex-end;\n }\n\n :host([role=\"assistant\"]) .message-container {\n justify-content: flex-start;\n }\n\n .avatar {\n flex-shrink: 0;\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--agent-radius-full, 9999px);\n border: 1px solid var(--agent-border-zinc-200, #e4e4e7);\n font-size: 0.75rem;\n color: var(--agent-text-foreground, #09090b);\n }\n\n .avatar-img {\n width: 2rem;\n height: 2rem;\n border-radius: 9999px;\n object-fit: cover;\n flex-shrink: 0;\n }\n\n .content-wrapper {\n display: flex;\n flex-direction: column;\n max-width: 80%;\n }\n\n .bubble {\n padding: 0.5rem 1.25rem;\n border-radius: var(--agent-radius-3xl, 1.5rem);\n color: var(--agent-text-foreground, #09090b);\n line-height: 1.5;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n word-break: break-word;\n }\n\n :host([role=\"user\"]) .bubble {\n background-color: var(--agent-bg-zinc-100, #f4f4f5);\n }\n\n :host([role=\"assistant\"]) .bubble {\n background-color: transparent;\n padding-left: 0;\n }\n \n .actions {\n display: flex;\n gap: 0.25rem;\n margin-top: 0.5rem;\n opacity: 0;\n transition: opacity 0.2s;\n }\n\n /* Cursor animation */\n .bubble.streaming::after {\n content: '';\n display: inline-block;\n width: 0.125rem;\n height: 1em;\n background-color: currentColor;\n margin-left: 0.125rem;\n vertical-align: text-bottom;\n animation: cursor-blink 1s step-end infinite;\n }\n\n @keyframes cursor-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0; }\n }\n\n .message-container:hover .actions {\n opacity: 1;\n }\n\n .typing-indicator {\n display: flex;\n gap: 0.25rem;\n padding: 0.25rem 0;\n }\n\n .typing-dot {\n width: 0.375rem;\n height: 0.375rem;\n background-color: var(--agent-text-foreground, #09090b);\n border-radius: 50%;\n opacity: 0.4;\n animation: typing 1.4s infinite ease-in-out both;\n }\n\n .typing-dot:nth-child(1) {\n animation-delay: -0.32s;\n }\n \n .typing-dot:nth-child(2) {\n animation-delay: -0.16s;\n }\n\n @keyframes typing {\n 0%, 80%, 100% { \n transform: scale(0);\n } \n 40% { \n transform: scale(1); \n }\n }\n`;\n","import { v0_8 } from '@a2ui/lit';\nimport type { ActivitySnapshotEvent } from \"@ag-ui/client\";\nimport type { UIMessage } from '../models/chat.types';\n\n/**\n * Service to manage A2UI message processing and surface updates.\n */\nexport class A2UIService {\n public processor: v0_8.Types.MessageProcessor = v0_8.Data.createSignalA2uiMessageProcessor();\n\n /**\n * Initializes the A2UI service.\n */\n constructor() {\n // Initialize with empty messages to clear surfaces\n\n }\n\n /**\n * Resolves a value descriptor (literal or path) against a surface's data model.\n */\n public resolveValue(surfaceId: string, descriptor: any): any {\n if (!descriptor) return undefined;\n if (descriptor.literalString !== undefined) return descriptor.literalString;\n if (descriptor.literalNumber !== undefined) return descriptor.literalNumber;\n if (descriptor.literalBoolean !== undefined) return descriptor.literalBoolean;\n if (descriptor.literalArray !== undefined) return descriptor.literalArray;\n\n if (descriptor.path) {\n const surface = this.processor.getSurfaces().get(surfaceId);\n if (surface) {\n // Remove leading slash if present to match how keys are stored in many implementations\n const pathKey = descriptor.path.startsWith('/') ? descriptor.path.substring(1) : descriptor.path;\n const val = surface.dataModel.get(pathKey);\n if (val !== undefined) return val;\n }\n // Fallback if path is not in dataModel yet or surface not found\n console.warn(`A2UIService: Could not resolve path ${descriptor.path} for surface ${surfaceId}`);\n }\n return undefined;\n }\n\n private mapMessage(message: UIMessage): v0_8.Types.ServerToClientMessage[] {\n if (message.role !== 'assistant' || !message.toolCalls) {\n throw new Error(\"Unsupported message type for A2UI processing\");\n }\n\n const mappedMessages: v0_8.Types.ServerToClientMessage[] = [];\n\n for (const toolCall of message.toolCalls) {\n if (toolCall.type !== 'function' || !toolCall.function) {\n continue;\n }\n\n const toolName = toolCall.function.name;\n const args = this.parseToolArguments(toolCall.function.arguments, toolName);\n if (!args) {\n continue;\n }\n\n if (toolName === 'a2ui_begin_rendering') {\n const beginRendering = this.mapBeginRendering(args);\n if (beginRendering) {\n mappedMessages.push({ beginRendering });\n }\n continue;\n }\n\n if (toolName === 'a2ui_update_surface') {\n const surfaceUpdate = this.mapSurfaceUpdate(args);\n if (surfaceUpdate) {\n mappedMessages.push({ surfaceUpdate });\n }\n continue;\n }\n\n if (toolName === 'a2ui_update_data_model') {\n const dataModelUpdate = this.mapDataModelUpdate(args);\n if (dataModelUpdate) {\n mappedMessages.push({ dataModelUpdate });\n }\n continue;\n }\n\n if (toolName === 'a2ui_delete_surface') {\n const deleteSurface = this.mapDeleteSurface(args);\n if (deleteSurface) {\n mappedMessages.push({ deleteSurface });\n }\n continue;\n }\n }\n\n return mappedMessages;\n }\n\n private parseToolArguments(rawArgs: unknown, toolName: string): Record<string, unknown> | null {\n if (rawArgs == null) {\n console.warn(`A2UIService: Missing arguments for ${toolName}`);\n return null;\n }\n\n if (typeof rawArgs === \"string\") {\n const trimmedArgs = rawArgs.trim();\n if (trimmedArgs === \"\") {\n return {};\n }\n try {\n return JSON.parse(trimmedArgs) as Record<string, unknown>;\n } catch (error) {\n console.warn(`A2UIService: Failed to parse arguments for ${toolName}`, error);\n return null;\n }\n }\n\n if (typeof rawArgs === \"object\") {\n return rawArgs as Record<string, unknown>;\n }\n\n console.warn(`A2UIService: Unsupported arguments type for ${toolName}`);\n return null;\n }\n\n private mapBeginRendering(args: Record<string, unknown>): v0_8.Types.BeginRenderingMessage | null {\n const surfaceId = this.getSurfaceId(args);\n const root = this.getRootComponentId(args);\n\n if (!surfaceId || !root) {\n console.warn(\"A2UIService: Missing surfaceId or root for begin rendering\");\n return null;\n }\n\n const styles = (typeof args.styles === \"object\" && args.styles) ? (args.styles as Record<string, string>) : undefined;\n return styles ? { surfaceId, root, styles } : { surfaceId, root };\n }\n\n private mapSurfaceUpdate(args: Record<string, unknown>): v0_8.Types.SurfaceUpdateMessage | null {\n const surfaceId = this.getSurfaceId(args);\n\n if (!surfaceId) {\n console.warn(\"A2UIService: Missing surfaceId for surface update\");\n return null;\n }\n\n const components = Array.isArray(args.components) ? args.components : [];\n return {\n surfaceId,\n components: components as v0_8.Types.ComponentInstance[]\n };\n }\n\n private mapDataModelUpdate(args: Record<string, unknown>): v0_8.Types.DataModelUpdate | null {\n const surfaceId = this.getSurfaceId(args);\n\n if (!surfaceId) {\n console.warn(\"A2UIService: Missing surfaceId for data model update\");\n return null;\n }\n\n const contents = this.normalizeValueMapArray(args.contents);\n const dataModelUpdate: v0_8.Types.DataModelUpdate = {\n surfaceId,\n contents\n };\n\n if (typeof args.path === \"string\") {\n dataModelUpdate.path = args.path;\n }\n\n return dataModelUpdate;\n }\n\n private normalizeDataModelUpdate(update: v0_8.Types.DataModelUpdate): v0_8.Types.DataModelUpdate {\n const surfaceId = update.surfaceId || (update as any).surface_id;\n const normalized: v0_8.Types.DataModelUpdate = {\n surfaceId,\n contents: this.normalizeValueMapArray(update.contents)\n };\n\n if (typeof update.path === \"string\") {\n normalized.path = update.path;\n }\n\n console.log(`A2UIService: Normalized DataModelUpdate for ${surfaceId}`, normalized);\n return normalized;\n }\n\n private mapDeleteSurface(args: Record<string, unknown>): v0_8.Types.DeleteSurfaceMessage | null {\n const surfaceId = this.getSurfaceId(args);\n\n if (!surfaceId) {\n console.warn(\"A2UIService: Missing surfaceId for delete surface\");\n return null;\n }\n\n return { surfaceId };\n }\n\n private getSurfaceId(args: Record<string, unknown>): string | null {\n const surfaceId = args.surfaceId ?? args.surface_id;\n\n if (typeof surfaceId === \"string\" && surfaceId.trim()) {\n return surfaceId;\n }\n\n if (typeof surfaceId === \"number\") {\n return String(surfaceId);\n }\n\n return null;\n }\n\n private getRootComponentId(args: Record<string, unknown>): string | null {\n const root =\n args.root ??\n args.rootComponentId ??\n args.root_component ??\n args.root_component_id;\n\n if (typeof root === \"string\" && root.trim()) {\n return root;\n }\n\n if (typeof root === \"number\") {\n return String(root);\n }\n\n return null;\n }\n\n private normalizeValueMapArray(contents: unknown): v0_8.Types.ValueMap[] {\n if (!Array.isArray(contents)) {\n return [];\n }\n\n return contents\n .filter((entry) => entry && typeof entry === \"object\" && (\"key\" in entry || \"path\" in entry))\n .map((entry) => this.normalizeValueMapEntry(entry as Record<string, unknown>));\n }\n\n private normalizeValueMapEntry(entry: Record<string, unknown>): v0_8.Types.ValueMap {\n const normalized: Record<string, unknown> = { ...entry };\n\n if (\"value_string\" in entry) {\n normalized.valueString = entry[\"value_string\"];\n }\n if (\"valueString\" in entry) {\n normalized.valueString = entry[\"valueString\"];\n }\n if (\"value_number\" in entry) {\n normalized.valueNumber = entry[\"value_number\"];\n }\n if (\"valueNumber\" in entry) {\n normalized.valueNumber = entry[\"valueNumber\"];\n }\n if (\"value_boolean\" in entry) {\n normalized.valueBoolean = entry[\"value_boolean\"];\n }\n if (\"valueBoolean\" in entry) {\n normalized.valueBoolean = entry[\"valueBoolean\"];\n }\n\n // Handle generic 'value' and 'path' aliases often used by agents\n if (!(\"key\" in normalized) && \"path\" in entry) {\n normalized.key = entry[\"path\"];\n }\n\n if (!(\"valueString\" in normalized) && !(\"valueNumber\" in normalized) && !(\"valueBoolean\" in normalized) && \"value\" in entry) {\n const val = entry[\"value\"];\n if (typeof val === 'string') normalized.valueString = val;\n else if (typeof val === 'number') normalized.valueNumber = val;\n else if (typeof val === 'boolean') normalized.valueBoolean = val;\n }\n\n const valueMap = entry[\"valueMap\"] ?? entry[\"value_map\"];\n if (valueMap !== undefined) {\n normalized.valueMap = this.normalizeValueMapArray(valueMap);\n }\n\n delete normalized[\"value_string\"];\n delete normalized[\"value_number\"];\n delete normalized[\"value_boolean\"];\n delete normalized[\"value_map\"];\n\n if (typeof normalized.key !== \"string\") {\n normalized.key = String(normalized.key ?? \"\");\n }\n\n // Normalize: remove leading slash from keys to match path resolution\n let key = normalized.key as string;\n if (key.startsWith('/')) {\n normalized.key = key.substring(1);\n }\n\n return normalized as v0_8.Types.ValueMap;\n }\n\n private isServerToClientMessage(message: unknown): message is v0_8.Types.ServerToClientMessage {\n if (!message || typeof message !== \"object\") {\n return false;\n }\n\n const candidate = message as Record<string, unknown>;\n const content = candidate.content as Record<string, unknown> | undefined;\n const hasA2UIPayload = content !== null && typeof content === 'object' && (\n \"beginRendering\" in content ||\n \"surfaceUpdate\" in content\n );\n\n return (\n \"beginRendering\" in candidate ||\n \"begin_rendering\" in candidate ||\n \"surfaceUpdate\" in candidate ||\n \"surface_update\" in candidate ||\n \"dataModelUpdate\" in candidate ||\n \"data_model_update\" in candidate ||\n \"deleteSurface\" in candidate ||\n \"delete_surface\" in candidate ||\n hasA2UIPayload\n );\n }\n\n private normalizeServerMessage(message: v0_8.Types.ServerToClientMessage | Record<string, unknown>): v0_8.Types.ServerToClientMessage {\n const messageRecord = message as Record<string, unknown>;\n if (\"beginRendering\" in messageRecord || \"surfaceUpdate\" in messageRecord || \"dataModelUpdate\" in messageRecord || \"deleteSurface\" in messageRecord) {\n const existing = message as v0_8.Types.ServerToClientMessage;\n if (existing.dataModelUpdate) {\n return { ...existing, dataModelUpdate: this.normalizeDataModelUpdate(existing.dataModelUpdate) };\n }\n return existing;\n }\n\n const normalized: v0_8.Types.ServerToClientMessage = {};\n\n const beginRenderingArgs = messageRecord[\"begin_rendering\"];\n if (beginRenderingArgs && typeof beginRenderingArgs === \"object\") {\n const beginRendering = this.mapBeginRendering(beginRenderingArgs as Record<string, unknown>);\n if (beginRendering) {\n normalized.beginRendering = beginRendering;\n }\n }\n\n const surfaceUpdateArgs = messageRecord[\"surface_update\"];\n if (surfaceUpdateArgs && typeof surfaceUpdateArgs === \"object\") {\n const surfaceUpdate = this.mapSurfaceUpdate(surfaceUpdateArgs as Record<string, unknown>);\n if (surfaceUpdate) {\n normalized.surfaceUpdate = surfaceUpdate;\n }\n }\n\n const dataModelUpdateArgs = messageRecord[\"data_model_update\"];\n if (dataModelUpdateArgs && typeof dataModelUpdateArgs === \"object\") {\n const dataModelUpdate = this.mapDataModelUpdate(dataModelUpdateArgs as Record<string, unknown>);\n if (dataModelUpdate) {\n normalized.dataModelUpdate = dataModelUpdate;\n }\n }\n\n const deleteSurfaceArgs = messageRecord[\"delete_surface\"];\n if (deleteSurfaceArgs && typeof deleteSurfaceArgs === \"object\") {\n const deleteSurface = this.mapDeleteSurface(deleteSurfaceArgs as Record<string, unknown>);\n if (deleteSurface) {\n normalized.deleteSurface = deleteSurface;\n }\n }\n\n return normalized;\n }\n\n processMessages(messages: UIMessage[]) {\n const mappedMessages: v0_8.Types.ServerToClientMessage[] = [];\n\n for (const message of messages) {\n // Check if message itself is an A2UI message\n if (this.isServerToClientMessage(message)) {\n mappedMessages.push(this.normalizeServerMessage(message));\n continue;\n }\n\n // Check if it's a tool message with JSON content\n if (message.role === 'tool' && typeof message.content === 'string') {\n try {\n const parsed = JSON.parse(message.content);\n if (parsed.role === 'activity' && parsed.activity_type === 'a2ui' && parsed.content) {\n const content = parsed.content;\n if (this.isServerToClientMessage(content)) {\n mappedMessages.push(this.normalizeServerMessage(content));\n } else {\n const items = Array.isArray(content) ? content : [content];\n for (const item of items) {\n if (this.isServerToClientMessage(item)) {\n mappedMessages.push(this.normalizeServerMessage(item));\n }\n }\n }\n }\n } catch (e) {\n // Not valid JSON or wrong format, ignore\n }\n continue;\n }\n\n // Check if it's an activity message containing A2UI payload\n const msg = message as any;\n if (msg.role === 'activity' && msg.activityType === 'a2ui' && msg.content) {\n if (this.isServerToClientMessage(msg.content)) {\n mappedMessages.push(this.normalizeServerMessage(msg.content));\n } else {\n // It might be a raw message or array of messages\n const content = msg.content;\n const items = Array.isArray(content) ? content : [content];\n for (const item of items) {\n if (this.isServerToClientMessage(item)) {\n mappedMessages.push(this.normalizeServerMessage(item));\n }\n }\n }\n continue;\n }\n\n if (message.role === 'assistant' && message.toolCalls) {\n mappedMessages.push(...this.mapMessage(message));\n }\n }\n\n if (mappedMessages.length === 0) {\n return;\n }\n\n console.log(\"A2UIService: Processing mapped messages:\", JSON.stringify(mappedMessages, null, 2));\n return this.processor.processMessages(mappedMessages);\n }\n\n processMessage(message: UIMessage) {\n this.processMessages([message]);\n }\n\n /**\n * Processes an activity snapshot event.\n * @param event The activity snapshot event.\n */\n processSnapshot(event: ActivitySnapshotEvent) {\n if (event.activityType === 'a2ui' && event.content) {\n const content = event.content;\n const rawMessages = Array.isArray(content) ? content : [content];\n const surfaceIds = this.getSurfaceIdsFromEvent(event);\n\n // If it's a replace/snapshot, we should clear the state for these surfaces first\n // to ensure we don't have leftover components from previous snapshots.\n const prefixMessages = (event.replace !== false) ?\n surfaceIds.map(id => ({ deleteSurface: { surfaceId: id } })) : [];\n\n // Auto-fix: If we have a surfaceUpdate but no corresponding root in the processor,\n // or if the agent sent a new root id in components but didn't update beginRendering.\n const messages = rawMessages.map(m => {\n if (m.surfaceUpdate || m.surface_update) {\n const update = m.surfaceUpdate || m.surface_update;\n const surfaceId = update.surfaceId || update.surface_id;\n const components = update.components || [];\n\n if (surfaceId && components.length > 0) {\n const surface = this.processor.getSurfaces().get(surfaceId);\n const currentRootId = surface?.rootComponentId;\n\n // Check if current rootId exists in the NEW components\n const rootExists = components.some((c: any) => c.id === currentRootId);\n\n if (!rootExists || !currentRootId) {\n // Find a likely root: first component or one not referenced elsewhere (impl. first for simplicity)\n const likelyRootId = components[0].id;\n console.warn(`A2UIService: Auto-fixing root mismatch for surface ${surfaceId}. Mapeando root a ${likelyRootId}`);\n\n // Return BOTH a beginRendering to fix the root and the original update\n return [\n { beginRendering: { surfaceId, root: likelyRootId } },\n m\n ];\n }\n }\n }\n return m;\n }).flat();\n\n const finalMessages = [...prefixMessages, ...messages].map(m => this.normalizeServerMessage(m as any));\n console.log(\"A2UIService: Processing messages (fixed & normalized)\", JSON.stringify(finalMessages, null, 2));\n this.processor.processMessages(finalMessages);\n\n // Post-process log\n const surfaces = Array.from(this.processor.getSurfaces().entries());\n console.log(\"A2UIService: Estado del procesador tras procesado:\", surfaces.map(([id, s]) => ({\n id,\n root: s.rootComponentId,\n components: s.components.size,\n hasTree: !!s.componentTree\n })));\n }\n }\n\n getSurfaceIdsFromEvent(event: ActivitySnapshotEvent): string[] {\n if (event.activityType !== 'a2ui' || !event.content) return [];\n const content = event.content;\n const messages = Array.isArray(content) ? content : [content];\n const ids = new Set<string>();\n\n messages.forEach(m => {\n const payload = m.beginRendering || m.begin_rendering || m.surfaceUpdate || m.surface_update || m.deleteSurface || m.delete_surface;\n const sid = payload?.surfaceId || payload?.surface_id;\n if (sid) ids.add(sid);\n });\n\n return Array.from(ids);\n }\n\n /**\n * Checks if a message contains ONLY beginRendering payloads.\n */\n isBeginRenderingOnly(message: UIMessage): boolean {\n const payloads = this.getA2UIPayloads(message);\n if (payloads.length === 0) return false;\n return payloads.every(p => {\n const hasBegin = !!p.beginRendering;\n const hasOther = !!p.surfaceUpdate || !!p.dataModelUpdate || !!p.deleteSurface;\n return hasBegin && !hasOther;\n });\n }\n\n /**\n * Checks if a message contains A2UI activity.\n */\n isA2UIMessage(message: UIMessage): boolean {\n if (message.role === 'activity' && (message as any).activityType === 'a2ui') return true;\n if (message.role === 'assistant' && message.toolCalls && message.toolCalls.some(tc => tc.function?.name.startsWith('a2ui_'))) return true;\n\n if (message.role === 'tool' && typeof message.content === 'string') {\n try {\n const parsed = JSON.parse(message.content);\n return parsed.role === 'activity' && parsed.activity_type === 'a2ui';\n } catch {\n return false;\n }\n }\n return false;\n }\n\n /**\n * Extracts A2UI payloads from a message.\n */\n getA2UIPayloads(message: UIMessage): v0_8.Types.ServerToClientMessage[] {\n const payloads: v0_8.Types.ServerToClientMessage[] = [];\n\n if (message.role === 'assistant' && message.toolCalls) {\n payloads.push(...this.mapMessage(message));\n } else if (message.role === 'activity' && (message as any).activityType === 'a2ui' && message.content) {\n const content = message.content;\n const items = Array.isArray(content) ? content : [content];\n items.forEach(item => {\n if (this.isServerToClientMessage(item)) {\n payloads.push(this.normalizeServerMessage(item));\n }\n });\n } else if (message.role === 'tool' && typeof message.content === 'string') {\n try {\n const parsed = JSON.parse(message.content);\n if (parsed.role === 'activity' && parsed.activity_type === 'a2ui' && parsed.content) {\n const content = parsed.content;\n const items = Array.isArray(content) ? content : [content];\n items.forEach(item => {\n if (this.isServerToClientMessage(item)) {\n payloads.push(this.normalizeServerMessage(item));\n }\n });\n }\n } catch { }\n }\n\n return payloads;\n }\n}\n\nexport const a2uiService = new A2UIService();\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './chat-message.styles';\nimport type { UIMessage } from '../models/chat.types';\nimport './ui/icon-button';\nimport { CopyIcon, ReloadIcon } from '../icons';\n\nimport { a2uiService } from '../services/a2ui.service';\n\n@customElement('agent-chat-message')\nexport class ChatMessage extends LitElement {\n static styles = styles;\n\n @property({ type: Object }) message!: UIMessage;\n @property({ type: Boolean }) isLast = false;\n @property({ type: Boolean }) isStreaming = false;\n @property({ type: String }) agentAvatar = '';\n\n updated(changedProperties: Map<string, any>) {\n if (changedProperties.has('message')) {\n this.setAttribute('role', this.message.role);\n this.requestUpdate();\n }\n }\n\n private _handleCopy() {\n const textToCopy = typeof this.message.content === 'string'\n ? this.message.content\n : JSON.stringify(this.message.content || '');\n navigator.clipboard.writeText(textToCopy);\n // TODO: Show copied feedback\n }\n\n private _handleReload() {\n this.dispatchEvent(new CustomEvent('reload-message', { detail: { id: this.message.id }, bubbles: true, composed: true }));\n }\n\n render() {\n const isUser = this.message.role === 'user';\n const isA2UI = a2uiService.isA2UIMessage(this.message);\n\n if (isA2UI) {\n a2uiService.processMessages([this.message]);\n const surfaces = Array.from(a2uiService.processor.getSurfaces().entries());\n const processor = a2uiService.processor; // Use shared processor\n\n if (surfaces.length > 0) {\n return html`\n <div class=\"message-container activity\">\n ${this.agentAvatar\n ? html`<img src=\"${this.agentAvatar}\" class=\"avatar-img\" alt=\"AI\">`\n : html`<div class=\"avatar\">C</div>`\n }\n <div class=\"content-wrapper\">\n ${surfaces.map(([surfaceId, surface]) => {\n return html`\n <a2ui-theme-provider\n .surfaceId=\"${surfaceId}\"\n .processor=\"${processor}\"\n .surface=\"${surface}\"\n .enableCustomElements=\"${true}\"\n ></a2ui-theme-provider>\n `;\n })}\n </div>\n </div>\n `;\n }\n }\n\n return html`\n <div class=\"message-container\">\n ${!isUser ? html`\n ${this.agentAvatar\n ? html`<img src=\"${this.agentAvatar}\" class=\"avatar-img\" alt=\"AI\">`\n : html`<div class=\"avatar\">C</div>`\n }\n ` : ''}\n \n <div class=\"content-wrapper\">\n <div class=\"bubble ${this.isStreaming ? 'streaming' : ''}\">${this.message.isThinking\n ? html`\n <div class=\"typing-indicator\">\n <div class=\"typing-dot\"></div>\n <div class=\"typing-dot\"></div>\n <div class=\"typing-dot\"></div>\n </div>\n `\n : this.message.content}</div>\n\n ${!isUser ? html`\n <div class=\"actions\">\n <agent-icon-button tooltip=\"Copy\" @click=\"${this._handleCopy}\">\n ${CopyIcon}\n </agent-icon-button>\n <agent-icon-button tooltip=\"Reload\" @click=\"${this._handleReload}\">\n ${ReloadIcon}\n </agent-icon-button>\n </div>\n ` : ''}\n </div>\n </div>\n `;\n }\n}\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './chat-thread.styles';\nimport type { UIMessage } from '../models/chat.types';\nimport './chat-message';\nimport { a2uiService } from '../services/a2ui.service';\n\n@customElement('agent-chat-thread')\nexport class ChatThread extends LitElement {\n static styles = styles;\n\n @property({ type: Array }) messages: UIMessage[] = [];\n @property({ type: Boolean }) isRunning = false;\n @property({ type: String }) agentAvatar = '';\n @property({ type: String }) emptyText = '';\n\n // listElement query removed as it was unused in logic (scrollToBottom uses querySelector directly)\n\n updated(changedProperties: Map<string, any>) {\n if (changedProperties.has('messages')) {\n a2uiService.processMessages(this.messages);\n this.scrollToBottom();\n }\n }\n\n async scrollToBottom() {\n await this.updateComplete;\n const lastMessage = this.shadowRoot?.querySelector('agent-chat-message:last-of-type');\n lastMessage?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n\n render() {\n if (this.messages.length === 0) {\n return html`\n <div class=\"empty-state\">\n ${this.agentAvatar\n ? html`<img src=\"${this.agentAvatar}\" alt=\"Agent Avatar\" class=\"empty-avatar-img\">`\n : html`<div class=\"empty-avatar\">SM</div>`\n }\n <p class=\"empty-text\">${this.emptyText}</p>\n </div>\n `;\n }\n\n return html`\n <div class=\"messages-list\">\n ${this.messages\n .filter(msg => {\n // if (msg.role === 'assistant' || msg.role === 'user') return true;\n if (a2uiService.isA2UIMessage(msg)) {\n console.log(\"A2UIService: isA2UIMessage\", msg);\n return !a2uiService.isBeginRenderingOnly(msg);\n }\n return true;\n\n })\n .map((msg, index, filteredArr) => html`\n <agent-chat-message \n .message=${msg} \n .isLast=${index === filteredArr.length - 1}\n .isStreaming=${this.isRunning && index === filteredArr.length - 1}\n .agentAvatar=\"${this.agentAvatar}\">\n </agent-chat-message>\n `)}\n </div>\n `;\n }\n}\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n padding: 1rem;\n /* position: fixed; */\n /* bottom: 0; */\n /* left: 0; */\n /* width: 100%; */\n }\n\n .composer-container {\n /* max-width: 48rem; / / max-w-screen-md */\n margin: 0 auto;\n display: flex;\n align-items: center;\n background-color: var(--agent-bg-zinc-100, #f4f4f5);\n border-radius: var(--agent-radius-3xl, 1.5rem);\n padding-left: 0.5rem;\n transition: background-color 0.2s;\n }\n\n .composer-container:focus-within {\n background-color: #e4e4e780; /* zinc-200/50 approx */\n }\n\n textarea {\n flex-grow: 1;\n background: transparent;\n border: none;\n resize: none;\n max-height: 10rem;\n padding: 0.875rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: var(--agent-text-foreground, #09090b);\n outline: none;\n height: 3rem; /* default roughly h-12 */\n }\n\n textarea::placeholder {\n color: var(--agent-text-zinc-500, #71717a);\n }\n\n .action-button {\n margin: 0.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n border-radius: var(--agent-radius-full, 9999px);\n background-color: transparent;\n border: 1.5px solid transparent;\n color: var(--agent-text-foreground, #09090b);\n transition: all 0.2s ease-in-out;\n cursor: pointer;\n }\n\n .action-button:hover:not(:disabled) {\n border-color: #22c55e;\n color: #22c55e;\n background-color: #22c55e10;\n }\n\n .action-button:hover:not(:disabled) svg {\n fill: #22c55e20; /* Subtle fill for \"relleno\" feeling */\n }\n \n .action-button:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n\n /* Make sure icons are sized well inside the circle */\n .action-button svg {\n width: 1.25rem;\n height: 1.25rem;\n }\n \n .disclaimer {\n text-align: center;\n color: var(--agent-text-zinc-500, #71717a);\n font-size: 0.75rem;\n padding: 0.5rem;\n }\n\n .prompts-list {\n display: flex;\n flex-direction: column;\n margin-bottom: 0.75rem;\n padding: 0 0.5rem;\n }\n\n .prompt-item {\n background: transparent;\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n padding: 0.625rem 0.5rem;\n text-align: left;\n cursor: pointer;\n font-size: 0.875rem;\n color: var(--agent-text-zinc-600, #52525b);\n transition: all 0.2s ease;\n border-radius: 0.375rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .prompt-item:last-child {\n border-bottom: none;\n }\n\n .prompt-item:hover {\n background-color: var(--agent-bg-zinc-50, #fafafa);\n color: var(--agent-text-foreground, #09090b);\n padding-left: 0.75rem;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { styles } from './chat-composer.styles';\nimport { SendIcon, StopIcon } from '../icons';\nimport type { SuggestedPrompt } from '../models/chat.types';\n\n@customElement('agent-chat-composer')\nexport class ChatComposer extends LitElement {\n static styles = styles;\n\n @property({ type: Boolean }) isRunning = false;\n @property({ type: String }) disclaimer = '';\n @property({ type: String }) placeholder = '';\n @property({ type: Array }) prompts: SuggestedPrompt[] = [];\n\n @state() private _value = '';\n @query('textarea') private _textarea!: HTMLTextAreaElement;\n\n private _handleInput(e: Event) {\n const target = e.target as HTMLTextAreaElement;\n this._value = target.value;\n this._adjustHeight();\n }\n\n private _handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n this._handleSubmit();\n }\n }\n\n private _adjustHeight() {\n if (!this._textarea) return;\n this._textarea.style.height = 'auto'; // Reset to shrink if needed\n this._textarea.style.height = `${Math.min(this._textarea.scrollHeight, 160)}px`; // Grow up to max\n }\n\n private _handlePromptClick(prompt: SuggestedPrompt) {\n this._value = prompt.message;\n this._textarea.focus();\n setTimeout(() => this._adjustHeight(), 0);\n }\n\n async _handleSubmit() {\n if (!this._value.trim()) return;\n\n this.dispatchEvent(new CustomEvent('send', { detail: { content: this._value }, bubbles: true, composed: true }));\n this._value = '';\n await this.updateComplete;\n this._textarea.style.height = '3rem'; // Reset height\n }\n\n private _handleStop() {\n this.dispatchEvent(new CustomEvent('cancel', { bubbles: true, composed: true }));\n }\n\n render() {\n return html`\n ${this.prompts.length > 0 ? html`\n <div class=\"prompts-list\">\n ${this.prompts.map(prompt => html`\n <button class=\"prompt-item\" @click=\"${() => this._handlePromptClick(prompt)}\">\n ${prompt.caption}\n </button>\n `)}\n </div>\n ` : ''}\n <div class=\"composer-container\">\n <textarea\n placeholder=\"${this.placeholder}\"\n .value=\"${this._value}\"\n @input=\"${this._handleInput}\"\n @keydown=\"${this._handleKeyDown}\"\n ?disabled=\"${this.isRunning}\"\n rows=\"1\"\n ></textarea>\n \n ${this.isRunning\n ? html`<button class=\"action-button\" @click=\"${this._handleStop}\">${StopIcon}</button>`\n : html`<button class=\"action-button\" ?disabled=\"${!this._value.trim()}\" @click=\"${this._handleSubmit}\">${SendIcon}</button>`\n }\n </div>\n <p class=\"disclaimer\">\n ${this.disclaimer}\n </p>\n `;\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateIn = (member, obj) => {\n if (Object(obj) !== obj)\n throw TypeError('Cannot use the \"in\" operator on this value');\n return member.has(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateMethod = (obj, member, method) => {\n __accessCheck(obj, member, \"access private method\");\n return method;\n};\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction defaultEquals(a, b) {\n return Object.is(a, b);\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet activeConsumer = null;\nlet inNotificationPhase = false;\nlet epoch = 1;\nconst SIGNAL = /* @__PURE__ */ Symbol(\"SIGNAL\");\nfunction setActiveConsumer(consumer) {\n const prev = activeConsumer;\n activeConsumer = consumer;\n return prev;\n}\nfunction getActiveConsumer() {\n return activeConsumer;\n}\nfunction isInNotificationPhase() {\n return inNotificationPhase;\n}\nconst REACTIVE_NODE = {\n version: 0,\n lastCleanEpoch: 0,\n dirty: false,\n producerNode: void 0,\n producerLastReadVersion: void 0,\n producerIndexOfThis: void 0,\n nextProducerIndex: 0,\n liveConsumerNode: void 0,\n liveConsumerIndexOfThis: void 0,\n consumerAllowSignalWrites: false,\n consumerIsAlwaysLive: false,\n producerMustRecompute: () => false,\n producerRecomputeValue: () => {\n },\n consumerMarkedDirty: () => {\n },\n consumerOnSignalRead: () => {\n }\n};\nfunction producerAccessed(node) {\n if (inNotificationPhase) {\n throw new Error(\n typeof ngDevMode !== \"undefined\" && ngDevMode ? `Assertion error: signal read during notification phase` : \"\"\n );\n }\n if (activeConsumer === null) {\n return;\n }\n activeConsumer.consumerOnSignalRead(node);\n const idx = activeConsumer.nextProducerIndex++;\n assertConsumerNode(activeConsumer);\n if (idx < activeConsumer.producerNode.length && activeConsumer.producerNode[idx] !== node) {\n if (consumerIsLive(activeConsumer)) {\n const staleProducer = activeConsumer.producerNode[idx];\n producerRemoveLiveConsumerAtIndex(staleProducer, activeConsumer.producerIndexOfThis[idx]);\n }\n }\n if (activeConsumer.producerNode[idx] !== node) {\n activeConsumer.producerNode[idx] = node;\n activeConsumer.producerIndexOfThis[idx] = consumerIsLive(activeConsumer) ? producerAddLiveConsumer(node, activeConsumer, idx) : 0;\n }\n activeConsumer.producerLastReadVersion[idx] = node.version;\n}\nfunction producerIncrementEpoch() {\n epoch++;\n}\nfunction producerUpdateValueVersion(node) {\n if (!node.dirty && node.lastCleanEpoch === epoch) {\n return;\n }\n if (!node.producerMustRecompute(node) && !consumerPollProducersForChange(node)) {\n node.dirty = false;\n node.lastCleanEpoch = epoch;\n return;\n }\n node.producerRecomputeValue(node);\n node.dirty = false;\n node.lastCleanEpoch = epoch;\n}\nfunction producerNotifyConsumers(node) {\n if (node.liveConsumerNode === void 0) {\n return;\n }\n const prev = inNotificationPhase;\n inNotificationPhase = true;\n try {\n for (const consumer of node.liveConsumerNode) {\n if (!consumer.dirty) {\n consumerMarkDirty(consumer);\n }\n }\n } finally {\n inNotificationPhase = prev;\n }\n}\nfunction producerUpdatesAllowed() {\n return (activeConsumer == null ? void 0 : activeConsumer.consumerAllowSignalWrites) !== false;\n}\nfunction consumerMarkDirty(node) {\n var _a;\n node.dirty = true;\n producerNotifyConsumers(node);\n (_a = node.consumerMarkedDirty) == null ? void 0 : _a.call(node.wrapper ?? node);\n}\nfunction consumerBeforeComputation(node) {\n node && (node.nextProducerIndex = 0);\n return setActiveConsumer(node);\n}\nfunction consumerAfterComputation(node, prevConsumer) {\n setActiveConsumer(prevConsumer);\n if (!node || node.producerNode === void 0 || node.producerIndexOfThis === void 0 || node.producerLastReadVersion === void 0) {\n return;\n }\n if (consumerIsLive(node)) {\n for (let i = node.nextProducerIndex; i < node.producerNode.length; i++) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n }\n }\n while (node.producerNode.length > node.nextProducerIndex) {\n node.producerNode.pop();\n node.producerLastReadVersion.pop();\n node.producerIndexOfThis.pop();\n }\n}\nfunction consumerPollProducersForChange(node) {\n assertConsumerNode(node);\n for (let i = 0; i < node.producerNode.length; i++) {\n const producer = node.producerNode[i];\n const seenVersion = node.producerLastReadVersion[i];\n if (seenVersion !== producer.version) {\n return true;\n }\n producerUpdateValueVersion(producer);\n if (seenVersion !== producer.version) {\n return true;\n }\n }\n return false;\n}\nfunction producerAddLiveConsumer(node, consumer, indexOfThis) {\n var _a;\n assertProducerNode(node);\n assertConsumerNode(node);\n if (node.liveConsumerNode.length === 0) {\n (_a = node.watched) == null ? void 0 : _a.call(node.wrapper);\n for (let i = 0; i < node.producerNode.length; i++) {\n node.producerIndexOfThis[i] = producerAddLiveConsumer(node.producerNode[i], node, i);\n }\n }\n node.liveConsumerIndexOfThis.push(indexOfThis);\n return node.liveConsumerNode.push(consumer) - 1;\n}\nfunction producerRemoveLiveConsumerAtIndex(node, idx) {\n var _a;\n assertProducerNode(node);\n assertConsumerNode(node);\n if (typeof ngDevMode !== \"undefined\" && ngDevMode && idx >= node.liveConsumerNode.length) {\n throw new Error(\n `Assertion error: active consumer index ${idx} is out of bounds of ${node.liveConsumerNode.length} consumers)`\n );\n }\n if (node.liveConsumerNode.length === 1) {\n (_a = node.unwatched) == null ? void 0 : _a.call(node.wrapper);\n for (let i = 0; i < node.producerNode.length; i++) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n }\n }\n const lastIdx = node.liveConsumerNode.length - 1;\n node.liveConsumerNode[idx] = node.liveConsumerNode[lastIdx];\n node.liveConsumerIndexOfThis[idx] = node.liveConsumerIndexOfThis[lastIdx];\n node.liveConsumerNode.length--;\n node.liveConsumerIndexOfThis.length--;\n if (idx < node.liveConsumerNode.length) {\n const idxProducer = node.liveConsumerIndexOfThis[idx];\n const consumer = node.liveConsumerNode[idx];\n assertConsumerNode(consumer);\n consumer.producerIndexOfThis[idxProducer] = idx;\n }\n}\nfunction consumerIsLive(node) {\n var _a;\n return node.consumerIsAlwaysLive || (((_a = node == null ? void 0 : node.liveConsumerNode) == null ? void 0 : _a.length) ?? 0) > 0;\n}\nfunction assertConsumerNode(node) {\n node.producerNode ?? (node.producerNode = []);\n node.producerIndexOfThis ?? (node.producerIndexOfThis = []);\n node.producerLastReadVersion ?? (node.producerLastReadVersion = []);\n}\nfunction assertProducerNode(node) {\n node.liveConsumerNode ?? (node.liveConsumerNode = []);\n node.liveConsumerIndexOfThis ?? (node.liveConsumerIndexOfThis = []);\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction computedGet(node) {\n producerUpdateValueVersion(node);\n producerAccessed(node);\n if (node.value === ERRORED) {\n throw node.error;\n }\n return node.value;\n}\nfunction createComputed(computation) {\n const node = Object.create(COMPUTED_NODE);\n node.computation = computation;\n const computed = () => computedGet(node);\n computed[SIGNAL] = node;\n return computed;\n}\nconst UNSET = /* @__PURE__ */ Symbol(\"UNSET\");\nconst COMPUTING = /* @__PURE__ */ Symbol(\"COMPUTING\");\nconst ERRORED = /* @__PURE__ */ Symbol(\"ERRORED\");\nconst COMPUTED_NODE = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n value: UNSET,\n dirty: true,\n error: null,\n equal: defaultEquals,\n producerMustRecompute(node) {\n return node.value === UNSET || node.value === COMPUTING;\n },\n producerRecomputeValue(node) {\n if (node.value === COMPUTING) {\n throw new Error(\"Detected cycle in computations.\");\n }\n const oldValue = node.value;\n node.value = COMPUTING;\n const prevConsumer = consumerBeforeComputation(node);\n let newValue;\n let wasEqual = false;\n try {\n newValue = node.computation.call(node.wrapper);\n const oldOk = oldValue !== UNSET && oldValue !== ERRORED;\n wasEqual = oldOk && node.equal.call(node.wrapper, oldValue, newValue);\n } catch (err) {\n newValue = ERRORED;\n node.error = err;\n } finally {\n consumerAfterComputation(node, prevConsumer);\n }\n if (wasEqual) {\n node.value = oldValue;\n return;\n }\n node.value = newValue;\n node.version++;\n }\n };\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction defaultThrowError() {\n throw new Error();\n}\nlet throwInvalidWriteToSignalErrorFn = defaultThrowError;\nfunction throwInvalidWriteToSignalError() {\n throwInvalidWriteToSignalErrorFn();\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction createSignal(initialValue) {\n const node = Object.create(SIGNAL_NODE);\n node.value = initialValue;\n const getter = () => {\n producerAccessed(node);\n return node.value;\n };\n getter[SIGNAL] = node;\n return getter;\n}\nfunction signalGetFn() {\n producerAccessed(this);\n return this.value;\n}\nfunction signalSetFn(node, newValue) {\n if (!producerUpdatesAllowed()) {\n throwInvalidWriteToSignalError();\n }\n if (!node.equal.call(node.wrapper, node.value, newValue)) {\n node.value = newValue;\n signalValueChanged(node);\n }\n}\nconst SIGNAL_NODE = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n equal: defaultEquals,\n value: void 0\n };\n})();\nfunction signalValueChanged(node) {\n node.version++;\n producerIncrementEpoch();\n producerNotifyConsumers(node);\n}\n/**\n * @license\n * Copyright 2024 Bloomberg Finance L.P.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst NODE = Symbol(\"node\");\nvar Signal;\n((Signal2) => {\n var _a, _brand, brand_fn, _b, _brand2, brand_fn2;\n class State {\n constructor(initialValue, options = {}) {\n __privateAdd(this, _brand);\n __publicField(this, _a);\n const ref = createSignal(initialValue);\n const node = ref[SIGNAL];\n this[NODE] = node;\n node.wrapper = this;\n if (options) {\n const equals = options.equals;\n if (equals) {\n node.equal = equals;\n }\n node.watched = options[Signal2.subtle.watched];\n node.unwatched = options[Signal2.subtle.unwatched];\n }\n }\n get() {\n if (!(0, Signal2.isState)(this))\n throw new TypeError(\"Wrong receiver type for Signal.State.prototype.get\");\n return signalGetFn.call(this[NODE]);\n }\n set(newValue) {\n if (!(0, Signal2.isState)(this))\n throw new TypeError(\"Wrong receiver type for Signal.State.prototype.set\");\n if (isInNotificationPhase()) {\n throw new Error(\"Writes to signals not permitted during Watcher callback\");\n }\n const ref = this[NODE];\n signalSetFn(ref, newValue);\n }\n }\n _a = NODE;\n _brand = new WeakSet();\n brand_fn = function() {\n };\n Signal2.isState = (s) => typeof s === \"object\" && __privateIn(_brand, s);\n Signal2.State = State;\n class Computed {\n // Create a Signal which evaluates to the value returned by the callback.\n // Callback is called with this signal as the parameter.\n constructor(computation, options) {\n __privateAdd(this, _brand2);\n __publicField(this, _b);\n const ref = createComputed(computation);\n const node = ref[SIGNAL];\n node.consumerAllowSignalWrites = true;\n this[NODE] = node;\n node.wrapper = this;\n if (options) {\n const equals = options.equals;\n if (equals) {\n node.equal = equals;\n }\n node.watched = options[Signal2.subtle.watched];\n node.unwatched = options[Signal2.subtle.unwatched];\n }\n }\n get() {\n if (!(0, Signal2.isComputed)(this))\n throw new TypeError(\"Wrong receiver type for Signal.Computed.prototype.get\");\n return computedGet(this[NODE]);\n }\n }\n _b = NODE;\n _brand2 = new WeakSet();\n brand_fn2 = function() {\n };\n Signal2.isComputed = (c) => typeof c === \"object\" && __privateIn(_brand2, c);\n Signal2.Computed = Computed;\n ((subtle2) => {\n var _a2, _brand3, brand_fn3, _assertSignals, assertSignals_fn;\n function untrack(cb) {\n let output;\n let prevActiveConsumer = null;\n try {\n prevActiveConsumer = setActiveConsumer(null);\n output = cb();\n } finally {\n setActiveConsumer(prevActiveConsumer);\n }\n return output;\n }\n subtle2.untrack = untrack;\n function introspectSources(sink) {\n var _a3;\n if (!(0, Signal2.isComputed)(sink) && !(0, Signal2.isWatcher)(sink)) {\n throw new TypeError(\"Called introspectSources without a Computed or Watcher argument\");\n }\n return ((_a3 = sink[NODE].producerNode) == null ? void 0 : _a3.map((n) => n.wrapper)) ?? [];\n }\n subtle2.introspectSources = introspectSources;\n function introspectSinks(signal) {\n var _a3;\n if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isState)(signal)) {\n throw new TypeError(\"Called introspectSinks without a Signal argument\");\n }\n return ((_a3 = signal[NODE].liveConsumerNode) == null ? void 0 : _a3.map((n) => n.wrapper)) ?? [];\n }\n subtle2.introspectSinks = introspectSinks;\n function hasSinks(signal) {\n if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isState)(signal)) {\n throw new TypeError(\"Called hasSinks without a Signal argument\");\n }\n const liveConsumerNode = signal[NODE].liveConsumerNode;\n if (!liveConsumerNode)\n return false;\n return liveConsumerNode.length > 0;\n }\n subtle2.hasSinks = hasSinks;\n function hasSources(signal) {\n if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isWatcher)(signal)) {\n throw new TypeError(\"Called hasSources without a Computed or Watcher argument\");\n }\n const producerNode = signal[NODE].producerNode;\n if (!producerNode)\n return false;\n return producerNode.length > 0;\n }\n subtle2.hasSources = hasSources;\n class Watcher {\n // When a (recursive) source of Watcher is written to, call this callback,\n // if it hasn't already been called since the last `watch` call.\n // No signals may be read or written during the notify.\n constructor(notify) {\n __privateAdd(this, _brand3);\n __privateAdd(this, _assertSignals);\n __publicField(this, _a2);\n let node = Object.create(REACTIVE_NODE);\n node.wrapper = this;\n node.consumerMarkedDirty = notify;\n node.consumerIsAlwaysLive = true;\n node.consumerAllowSignalWrites = false;\n node.producerNode = [];\n this[NODE] = node;\n }\n // Add these signals to the Watcher's set, and set the watcher to run its\n // notify callback next time any signal in the set (or one of its dependencies) changes.\n // Can be called with no arguments just to reset the \"notified\" state, so that\n // the notify callback will be invoked again.\n watch(...signals) {\n if (!(0, Signal2.isWatcher)(this)) {\n throw new TypeError(\"Called unwatch without Watcher receiver\");\n }\n __privateMethod(this, _assertSignals, assertSignals_fn).call(this, signals);\n const node = this[NODE];\n node.dirty = false;\n const prev = setActiveConsumer(node);\n for (const signal of signals) {\n producerAccessed(signal[NODE]);\n }\n setActiveConsumer(prev);\n }\n // Remove these signals from the watched set (e.g., for an effect which is disposed)\n unwatch(...signals) {\n if (!(0, Signal2.isWatcher)(this)) {\n throw new TypeError(\"Called unwatch without Watcher receiver\");\n }\n __privateMethod(this, _assertSignals, assertSignals_fn).call(this, signals);\n const node = this[NODE];\n assertConsumerNode(node);\n for (let i = node.producerNode.length - 1; i >= 0; i--) {\n if (signals.includes(node.producerNode[i].wrapper)) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n const lastIdx = node.producerNode.length - 1;\n node.producerNode[i] = node.producerNode[lastIdx];\n node.producerIndexOfThis[i] = node.producerIndexOfThis[lastIdx];\n node.producerNode.length--;\n node.producerIndexOfThis.length--;\n node.nextProducerIndex--;\n if (i < node.producerNode.length) {\n const idxConsumer = node.producerIndexOfThis[i];\n const producer = node.producerNode[i];\n assertProducerNode(producer);\n producer.liveConsumerIndexOfThis[idxConsumer] = i;\n }\n }\n }\n }\n // Returns the set of computeds in the Watcher's set which are still yet\n // to be re-evaluated\n getPending() {\n if (!(0, Signal2.isWatcher)(this)) {\n throw new TypeError(\"Called getPending without Watcher receiver\");\n }\n const node = this[NODE];\n return node.producerNode.filter((n) => n.dirty).map((n) => n.wrapper);\n }\n }\n _a2 = NODE;\n _brand3 = new WeakSet();\n brand_fn3 = function() {\n };\n _assertSignals = new WeakSet();\n assertSignals_fn = function(signals) {\n for (const signal of signals) {\n if (!(0, Signal2.isComputed)(signal) && !(0, Signal2.isState)(signal)) {\n throw new TypeError(\"Called watch/unwatch without a Computed or State argument\");\n }\n }\n };\n Signal2.isWatcher = (w) => __privateIn(_brand3, w);\n subtle2.Watcher = Watcher;\n function currentComputed() {\n var _a3;\n return (_a3 = getActiveConsumer()) == null ? void 0 : _a3.wrapper;\n }\n subtle2.currentComputed = currentComputed;\n subtle2.watched = Symbol(\"watched\");\n subtle2.unwatched = Symbol(\"unwatched\");\n })(Signal2.subtle || (Signal2.subtle = {}));\n})(Signal || (Signal = {}));\nexport {\n Signal\n};\n","import{Signal as t}from\"signal-polyfill\";\n/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const i=Symbol(\"SignalWatcherBrand\"),s=new FinalizationRegistry((({watcher:t,signal:i})=>{t.unwatch(i)})),h=new WeakMap;function e(e){return!0===e[i]?(console.warn(\"SignalWatcher should not be applied to the same class more than once.\"),e):class extends e{constructor(){super(...arguments),this._$St=new t.State(0),this._$Si=!1,this._$So=!0,this._$Sh=new Set}_$Sl(){if(void 0!==this._$Su)return;this._$Sv=new t.Computed((()=>{this._$St.get(),super.performUpdate()}));const i=this._$Su=new t.subtle.Watcher((function(){const t=h.get(this);void 0!==t&&(!1===t._$Si&&t.requestUpdate(),this.watch())}));h.set(i,this),s.register(this,{watcher:i,signal:this._$Sv}),i.watch(this._$Sv)}_$Sp(){void 0!==this._$Su&&(this._$Su.unwatch(this._$Sv),this._$Sv=void 0,this._$Su=void 0)}performUpdate(){this.isUpdatePending&&(this._$Sl(),this._$Si=!0,this._$St.set(this._$St.get()+1),this._$Si=!1,this._$Sv.get())}update(t){try{this._$So?(this._$So=!1,super.update(t)):this._$Sh.forEach((t=>t.commit()))}finally{this.isUpdatePending=!1,this._$Sh.clear()}}requestUpdate(t,i,s){this._$So=!0,super.requestUpdate(t,i,s)}connectedCallback(){super.connectedCallback(),this.requestUpdate()}disconnectedCallback(){super.disconnectedCallback(),queueMicrotask((()=>{!1===this.isConnected&&this._$Sp()}))}_(t){this._$Sh.add(t);const i=this._$So;this.requestUpdate(),this._$So=i}m(t){this._$Sh.delete(t)}}}export{e as SignalWatcher};\n//# sourceMappingURL=signal-watcher.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>o,n=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,e={HTML:1,SVG:2,MATHML:3},l=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,d=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,f=o=>o?._$litDirective$,r=o=>void 0===o.strings,s=()=>document.createComment(\"\"),v=(o,n,e)=>{const l=o._$AA.parentNode,d=void 0===n?o._$AB:n._$AA;if(void 0===e){const i=l.insertBefore(s(),d),n=l.insertBefore(s(),d);e=new t(i,n,o,o.options)}else{const t=e._$AB.nextSibling,n=e._$AM,c=n!==o;if(c){let t;e._$AQ?.(o),e._$AM=o,void 0!==e._$AP&&(t=o._$AU)!==n._$AU&&e._$AP(t)}if(t!==d||c){let o=e._$AA;for(;o!==t;){const t=i(o).nextSibling;i(l).insertBefore(o,d),o=t}}}return e},u=(o,t,i=o)=>(o._$AI(t,i),o),m={},p=(o,t=m)=>o._$AH=t,M=o=>o._$AH,h=o=>{o._$AR(),o._$AA.remove()},j=o=>{o._$AR()};export{e as TemplateResultType,j as clearPart,M as getCommittedValue,f as getDirectiveClass,v as insertPart,d as isCompiledTemplateResult,c as isDirectiveResult,n as isPrimitive,r as isSingleExpression,l as isTemplateResult,h as removePart,u as setChildPartValue,p as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{const e=i._$AN;if(void 0===e)return!1;for(const i of e)i._$AO?.(t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===e?.size)},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),c(t)}};function h(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function n(i,t=!1,e=0){const r=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(t)if(Array.isArray(r))for(let i=e;i<r.length;i++)s(r[i],!1),o(r[i]);else null!=r&&(s(r,!1),o(r));else s(this,i)}const c=i=>{i.type==e.CHILD&&(i._$AP??=n,i._$AQ??=h)};class f extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{f as AsyncDirective,t as Directive,e as PartType};\n//# sourceMappingURL=async-directive.js.map\n","import{directive as i}from\"lit/directive.js\";import{AsyncDirective as t}from\"lit/async-directive.js\";import{Signal as s}from\"signal-polyfill\";\n/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class h extends t{_$Sl(){if(void 0!==this._$Su)return;this._$SW=new s.Computed((()=>{var i;return null===(i=this._$Sj)||void 0===i?void 0:i.get()}));const i=this._$Su=new s.subtle.Watcher((()=>{var t;null===(t=this._$SO)||void 0===t||t._(this),i.watch()}));i.watch(this._$SW)}_$Sp(){var i;void 0!==this._$Su&&(this._$Su.unwatch(this._$SW),this._$SW=void 0,this._$Su=void 0,null===(i=this._$SO)||void 0===i||i.m(this))}commit(){this.setValue(s.subtle.untrack((()=>{var i;return null===(i=this._$SW)||void 0===i?void 0:i.get()})))}render(i){return s.subtle.untrack((()=>i.get()))}update(i,[t]){var h,o;return null!==(h=this._$SO)&&void 0!==h||(this._$SO=null===(o=i.options)||void 0===o?void 0:o.host),t!==this._$Sj&&void 0!==this._$Sj&&this._$Sp(),this._$Sj=t,this._$Sl(),s.subtle.untrack((()=>this._$SW.get()))}disconnected(){this._$Sp()}reconnected(){this._$Sl()}}const o=i(h);export{h as WatchDirective,o as watch};\n//# sourceMappingURL=watch.js.map\n","import{html as o,svg as t}from\"lit/html.js\";import{watch as s}from\"./watch.js\";import{Signal as i}from\"signal-polyfill\";\n/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const m=o=>(t,...m)=>o(t,...m.map((o=>o instanceof i.State||o instanceof i.Computed?s(o):o))),l=m(o),r=m(t);export{l as html,r as svg,m as withWatch};\n//# sourceMappingURL=html-tag.js.map\n","import{Signal as t}from\"signal-polyfill\";export*from\"signal-polyfill\";export{SignalWatcher}from\"./lib/signal-watcher.js\";export{WatchDirective,watch}from\"./lib/watch.js\";export{html,svg,withWatch}from\"./lib/html-tag.js\";\n/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const l=t.State,o=t.Computed,r=(l,o)=>new t.State(l,o),i=(l,o)=>new t.Computed(l,o);export{o as Computed,l as State,i as computed,r as signal};\n//# sourceMappingURL=index.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s extends Event{constructor(s,t,e,o){super(\"context-request\",{bubbles:!0,composed:!0}),this.context=s,this.contextTarget=t,this.callback=e,this.subscribe=o??!1}}export{s as ContextRequestEvent};\n//# sourceMappingURL=context-request-event.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s{get value(){return this.o}set value(s){this.setValue(s)}setValue(s,t=!1){const i=t||!Object.is(s,this.o);this.o=s,i&&this.updateObservers()}constructor(s){this.subscriptions=new Map,this.updateObservers=()=>{for(const[s,{disposer:t}]of this.subscriptions)s(this.o,t)},void 0!==s&&(this.value=s)}addCallback(s,t,i){if(!i)return void s(this.value);this.subscriptions.has(s)||this.subscriptions.set(s,{disposer:()=>{this.subscriptions.delete(s)},consumerHost:t});const{disposer:h}=this.subscriptions.get(s);s(this.value,h)}clearCallbacks(){this.subscriptions.clear()}}export{s as ValueNotifier};\n//# sourceMappingURL=value-notifier.js.map\n","import{ContextRequestEvent as t}from\"../context-request-event.js\";import{ValueNotifier as s}from\"../value-notifier.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends Event{constructor(t,s){super(\"context-provider\",{bubbles:!0,composed:!0}),this.context=t,this.contextTarget=s}}class i extends s{constructor(s,e,i){super(void 0!==e.context?e.initialValue:i),this.onContextRequest=t=>{if(t.context!==this.context)return;const s=t.contextTarget??t.composedPath()[0];s!==this.host&&(t.stopPropagation(),this.addCallback(t.callback,s,t.subscribe))},this.onProviderRequest=s=>{if(s.context!==this.context)return;if((s.contextTarget??s.composedPath()[0])===this.host)return;const e=new Set;for(const[s,{consumerHost:i}]of this.subscriptions)e.has(s)||(e.add(s),i.dispatchEvent(new t(this.context,i,s,!0)));s.stopPropagation()},this.host=s,void 0!==e.context?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener(\"context-request\",this.onContextRequest),this.host.addEventListener(\"context-provider\",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new e(this.context,this.host))}}export{i as ContextProvider,e as ContextProviderEvent};\n//# sourceMappingURL=context-provider.js.map\n","import{ContextProvider as t}from\"../controllers/context-provider.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e({context:e}){return(n,i)=>{const r=new WeakMap;if(\"object\"==typeof i)return{get(){return n.get.call(this)},set(t){return r.get(this).setValue(t),n.set.call(this,t)},init(n){return r.set(this,new t(this,{context:e,initialValue:n})),n}};{n.constructor.addInitializer((n=>{r.set(n,new t(n,{context:e}))}));const o=Object.getOwnPropertyDescriptor(n,i);let s;if(void 0===o){const t=new WeakMap;s={get(){return t.get(this)},set(e){r.get(this).setValue(e),t.set(this,e)},configurable:!0,enumerable:!0}}else{const t=o.set;s={...o,set(e){r.get(this).setValue(e),t?.call(this,e)}}}return void Object.defineProperty(n,i,s)}}}export{e as provide};\n//# sourceMappingURL=provide.js.map\n","\n/*\n Copyright 2025 Google LLC\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nimport { v0_8 } from \"@a2ui/lit\";\n\n/** Elements */\n\nconst a = {\n \"typography-f-sf\": true,\n \"typography-fs-n\": true,\n \"typography-w-500\": true,\n \"layout-as-n\": true,\n \"layout-dis-iflx\": true,\n \"layout-al-c\": true,\n};\n\nconst audio = {\n \"layout-w-100\": true,\n};\n\nconst body = {\n \"typography-f-s\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-mt-0\": true,\n \"layout-mb-2\": true,\n \"typography-sz-bm\": true,\n \"color-c-n10\": true,\n};\n\nconst button = {\n \"typography-f-sf\": true,\n \"typography-fs-n\": true,\n \"typography-w-500\": true,\n \"layout-pt-3\": true,\n \"layout-pb-3\": true,\n \"layout-pl-5\": true,\n \"layout-pr-5\": true,\n \"layout-mb-1\": true,\n \"border-br-3\": true,\n \"border-bw-0\": true,\n \"border-c-n70\": true,\n \"border-bs-s\": true,\n \"color-bgc-s30\": true,\n \"color-c-n100\": true,\n \"behavior-ho-80\": true,\n};\n\nconst heading = {\n \"typography-f-sf\": true,\n \"typography-fs-n\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mb-2\": true,\n \"color-c-n10\": true,\n};\n\nconst h1 = {\n ...heading,\n \"typography-sz-tl\": true,\n};\n\nconst h2 = {\n ...heading,\n \"typography-sz-tm\": true,\n};\n\nconst h3 = {\n ...heading,\n \"typography-sz-ts\": true,\n};\n\nconst iframe = {\n \"behavior-sw-n\": true,\n};\n\nconst input = {\n \"typography-f-sf\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-pl-4\": true,\n \"layout-pr-4\": true,\n \"layout-pt-2\": true,\n \"layout-pb-2\": true,\n \"border-br-3\": true,\n \"border-bw-1\": true,\n \"color-bc-s70\": true,\n \"border-bs-s\": true,\n \"layout-as-n\": true,\n \"color-c-n10\": true,\n};\n\nconst p = {\n \"typography-f-s\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-m-0\": true,\n \"typography-sz-bm\": true,\n \"layout-as-n\": true,\n \"color-c-n10\": true,\n};\n\nconst orderedList = {\n \"typography-f-s\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-m-0\": true,\n \"typography-sz-bm\": true,\n \"layout-as-n\": true,\n};\n\nconst unorderedList = {\n \"typography-f-s\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-m-0\": true,\n \"typography-sz-bm\": true,\n \"layout-as-n\": true,\n};\n\nconst listItem = {\n \"typography-f-s\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"layout-m-0\": true,\n \"typography-sz-bm\": true,\n \"layout-as-n\": true,\n};\n\nconst pre = {\n \"typography-f-c\": true,\n \"typography-fs-n\": true,\n \"typography-w-400\": true,\n \"typography-sz-bm\": true,\n \"typography-ws-p\": true,\n \"layout-as-n\": true,\n};\n\nconst textarea = {\n ...input,\n \"layout-r-none\": true,\n \"layout-fs-c\": true,\n};\n\nconst video = {\n \"layout-el-cv\": true,\n};\n\nconst aLight = v0_8.Styles.merge(a, { \"color-c-p30\": true });\nconst inputLight = v0_8.Styles.merge(input, { \"color-c-n5\": true });\nconst textareaLight = v0_8.Styles.merge(textarea, { \"color-c-n5\": true });\nconst buttonLight = v0_8.Styles.merge(button, { \"color-c-n100\": true });\nconst h1Light = v0_8.Styles.merge(h1, { \"color-c-n5\": true });\nconst h2Light = v0_8.Styles.merge(h2, { \"color-c-n5\": true });\nconst h3Light = v0_8.Styles.merge(h3, { \"color-c-n5\": true });\nconst bodyLight = v0_8.Styles.merge(body, { \"color-c-n5\": true });\nconst pLight = v0_8.Styles.merge(p, { \"color-c-n60\": true });\nconst preLight = v0_8.Styles.merge(pre, { \"color-c-n35\": true });\nconst orderedListLight = v0_8.Styles.merge(orderedList, {\n \"color-c-n35\": true,\n});\nconst unorderedListLight = v0_8.Styles.merge(unorderedList, {\n \"color-c-n35\": true,\n});\nconst listItemLight = v0_8.Styles.merge(listItem, {\n \"color-c-n35\": true,\n});\n\nconst skandiaThemeVars: Record<string, string> = {\n \"--color-scheme\": \"light\",\n \"--font-family\": '\"Montserrat\", sans-serif',\n \"--font-family-flex\": '\"Montserrat\", sans-serif',\n \"--p-30\": \"#00c73d\",\n \"--p-60\": \"#66e08a\",\n \"--p-80\": \"#c9f5d8\",\n \"--p-100\": \"#ffffff\",\n \"--s-30\": \"#f2f5f7\",\n \"--s-70\": \"#d9dee4\",\n \"--n-5\": \"#0b0b0b\",\n \"--n-10\": \"#111827\",\n \"--n-30\": \"#4b5563\",\n \"--n-35\": \"#6b7280\",\n \"--n-60\": \"#9ca3af\",\n \"--n-70\": \"#cbd5e1\",\n \"--n-90\": \"#e5e7eb\",\n \"--n-98\": \"#f9fafb\",\n \"--n-100\": \"#ffffff\",\n};\n\nexport const defaultTheme: v0_8.Types.Theme = {\n additionalStyles: {\n Card: {\n ...skandiaThemeVars,\n \"min-width\": \"320px\",\n },\n Button: {\n ...skandiaThemeVars,\n \"--n-60\": \"var(--n-100)\",\n },\n CheckBox: {\n ...skandiaThemeVars,\n },\n Column: {\n ...skandiaThemeVars,\n },\n DateTimeInput: {\n ...skandiaThemeVars,\n },\n Divider: {\n ...skandiaThemeVars,\n },\n Icon: {\n ...skandiaThemeVars,\n },\n Image: {\n ...skandiaThemeVars,\n \"max-width\": \"120px\",\n \"max-height\": \"120px\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n List: {\n ...skandiaThemeVars,\n },\n Modal: {\n ...skandiaThemeVars,\n },\n MultipleChoice: {\n ...skandiaThemeVars,\n },\n Row: {\n ...skandiaThemeVars,\n },\n Slider: {\n ...skandiaThemeVars,\n },\n Tabs: {\n ...skandiaThemeVars,\n },\n Text: {\n ...skandiaThemeVars,\n },\n TextField: {\n ...skandiaThemeVars,\n },\n Video: {\n ...skandiaThemeVars,\n },\n AudioPlayer: {\n ...skandiaThemeVars,\n },\n },\n components: {\n AudioPlayer: {},\n Button: {\n \"layout-pt-2\": true,\n \"layout-pb-2\": true,\n \"layout-pl-5\": true,\n \"layout-pr-5\": true,\n \"border-br-3\": true,\n \"border-bw-0\": true,\n \"border-bs-s\": true,\n \"color-bgc-p30\": true,\n \"color-c-n100\": true,\n \"behavior-ho-70\": true,\n },\n Card: {\n \"border-br-3\": true,\n \"color-bgc-p100\": true,\n \"color-bc-n90\": true,\n \"border-bw-1\": true,\n \"border-bs-s\": true,\n \"layout-pt-10\": true,\n \"layout-pb-10\": true,\n \"layout-pl-4\": true,\n \"layout-pr-4\": true,\n },\n CheckBox: {\n element: {\n \"layout-m-0\": true,\n \"layout-mr-2\": true,\n \"layout-p-2\": true,\n \"border-br-3\": true,\n \"border-bw-1\": true,\n \"border-bs-s\": true,\n \"color-bgc-p100\": true,\n \"color-bc-p60\": true,\n \"color-c-n30\": true,\n },\n label: {\n \"color-c-n10\": true,\n \"typography-f-sf\": true,\n \"typography-v-r\": true,\n \"typography-w-400\": true,\n \"layout-flx-1\": true,\n \"typography-sz-ll\": true,\n },\n container: {\n \"layout-dsp-iflex\": true,\n \"layout-al-c\": true,\n },\n },\n Column: {},\n DateTimeInput: {\n container: {},\n label: {},\n element: {\n \"layout-pt-2\": true,\n \"layout-pb-2\": true,\n \"layout-pl-3\": true,\n \"layout-pr-3\": true,\n \"border-br-3\": true,\n \"border-bw-1\": true,\n \"border-bs-s\": true,\n \"color-bgc-p100\": true,\n \"color-bc-p60\": true,\n \"color-c-n30\": true,\n },\n },\n Divider: {\n \"color-bgc-n90\": true,\n \"layout-mt-6\": true,\n \"layout-mb-6\": true,\n },\n Image: {\n all: {\n \"border-br-50pc\": true,\n \"layout-el-cv\": true,\n \"layout-w-100\": true,\n \"layout-h-100\": true,\n \"layout-dsp-flexhor\": true,\n \"layout-al-c\": true,\n \"layout-sp-c\": true,\n \"layout-mb-3\": true,\n },\n avatar: {},\n header: {},\n icon: {},\n largeFeature: {},\n mediumFeature: {},\n smallFeature: {},\n },\n Icon: {\n \"border-br-1\": true,\n \"layout-p-2\": true,\n \"color-bgc-n98\": true,\n \"layout-dsp-flexhor\": true,\n \"layout-al-c\": true,\n \"layout-sp-c\": true,\n },\n List: {\n \"layout-g-4\": true,\n \"layout-p-2\": true,\n },\n Modal: {\n backdrop: { \"color-bbgc-p60_20\": true },\n element: {\n \"border-br-3\": true,\n \"color-bgc-p100\": true,\n \"layout-p-4\": true,\n \"border-bw-1\": true,\n \"border-bs-s\": true,\n \"color-bc-p80\": true,\n },\n },\n MultipleChoice: {\n container: {},\n label: {},\n element: {},\n },\n Row: {\n \"layout-g-4\": true,\n \"layout-mb-3\": true,\n },\n Slider: {\n container: {},\n label: {},\n element: {},\n },\n Tabs: {\n container: {},\n controls: { all: {}, selected: {} },\n element: {},\n },\n Text: {\n all: {\n \"layout-w-100\": true,\n \"layout-g-2\": true,\n \"color-c-n10\": true,\n },\n h1: {\n \"typography-f-sf\": true,\n \"typography-ta-c\": true,\n \"typography-v-r\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mr-0\": true,\n \"layout-ml-0\": true,\n \"layout-mb-2\": true,\n \"layout-p-0\": true,\n \"typography-sz-tl\": true,\n },\n h2: {\n \"typography-f-sf\": true,\n \"typography-ta-c\": true,\n \"typography-v-r\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mr-0\": true,\n \"layout-ml-0\": true,\n \"layout-mb-2\": true,\n \"layout-p-0\": true,\n \"typography-sz-tl\": true,\n },\n h3: {\n \"typography-f-sf\": true,\n \"typography-ta-c\": true,\n \"typography-v-r\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mr-0\": true,\n \"layout-ml-0\": true,\n \"layout-mb-0\": true,\n \"layout-p-0\": true,\n \"typography-sz-ts\": true,\n },\n h4: {\n \"typography-f-sf\": true,\n \"typography-ta-c\": true,\n \"typography-v-r\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mr-0\": true,\n \"layout-ml-0\": true,\n \"layout-mb-0\": true,\n \"layout-p-0\": true,\n \"typography-sz-bl\": true,\n },\n h5: {\n \"typography-f-sf\": true,\n \"typography-ta-c\": true,\n \"typography-v-r\": true,\n \"typography-w-500\": true,\n \"layout-mt-0\": true,\n \"layout-mr-0\": true,\n \"layout-ml-0\": true,\n \"layout-mb-0\": true,\n \"layout-p-0\": true,\n \"color-c-n30\": true,\n \"typography-sz-bm\": true,\n \"layout-mb-1\": true,\n },\n body: {},\n caption: {},\n },\n TextField: {\n container: {\n \"typography-sz-bm\": true,\n \"layout-w-100\": true,\n \"layout-g-2\": true,\n \"layout-dsp-flexhor\": true,\n \"layout-al-c\": true,\n },\n label: {\n \"layout-flx-0\": true,\n },\n element: {\n \"typography-sz-bm\": true,\n \"layout-pt-2\": true,\n \"layout-pb-2\": true,\n \"layout-pl-3\": true,\n \"layout-pr-3\": true,\n \"border-br-3\": true,\n \"border-bw-1\": true,\n \"border-bs-s\": true,\n \"color-bgc-p100\": true,\n \"color-bc-p60\": true,\n \"color-c-n30\": true,\n },\n },\n Video: {\n \"border-br-5\": true,\n \"layout-el-cv\": true,\n },\n },\n elements: {\n a: aLight,\n audio,\n body: bodyLight,\n button: buttonLight,\n h1: h1Light,\n h2: h2Light,\n h3: h3Light,\n h4: {},\n h5: {},\n iframe,\n input: inputLight,\n p: pLight,\n pre: preLight,\n textarea: textareaLight,\n video,\n },\n markdown: {\n p: [...Object.keys(pLight)],\n h1: [...Object.keys(h1Light)],\n h2: [...Object.keys(h2Light)],\n h3: [...Object.keys(h3Light)],\n h4: [],\n h5: [],\n ul: [...Object.keys(unorderedListLight)],\n ol: [...Object.keys(orderedListLight)],\n li: [...Object.keys(listItemLight)],\n a: [...Object.keys(aLight)],\n strong: [],\n em: [],\n },\n};\n","import { SignalWatcher } from \"@lit-labs/signals\";\nimport { LitElement, html, css } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { provide } from \"@lit/context\";\nimport { v0_8 } from \"@a2ui/lit\";\nimport * as UI from \"@a2ui/lit/ui\";\nimport { defaultTheme } from \"../models/a2ui.theme\";\n\n// Type alias for the processor\ntype A2UIModelProcessorInstance = v0_8.Types.MessageProcessor;\n\n/**\n * Theme Provider for A2UI Components\n *\n * This component wraps A2UI surfaces and provides the theme context\n * required by the A2UI component library.\n */\n@customElement(\"a2ui-theme-provider\")\nexport class A2UIThemeProvider extends SignalWatcher(LitElement) {\n @provide({ context: UI.Context.themeContext })\n theme: v0_8.Types.Theme = defaultTheme;\n\n @property({ type: String })\n surfaceId: string = \"\";\n\n @property({ type: Object })\n surface: v0_8.Types.Surface | undefined;\n\n @property({ type: Object })\n processor: A2UIModelProcessorInstance | undefined;\n\n @property({ type: Boolean })\n enableCustomElements: boolean = true;\n\n static styles = css`\n :host {\n display: block;\n }\n `;\n\n render() {\n if (!this.surfaceId || !this.processor) {\n return html``;\n }\n\n // Attempt to get the surface if not provided\n const surface = this.surface || this.processor.getSurfaces().get(this.surfaceId);\n\n if (!surface) {\n console.warn(`A2UIThemeProvider: Surface ${this.surfaceId} not found in processor`, this.processor.getSurfaces());\n return html`<!-- Surface ${this.surfaceId} not found -->`;\n }\n\n return html`\n <a2ui-surface\n .surfaceId=${this.surfaceId}\n .surface=${surface}\n .processor=${this.processor}\n .enableCustomElements=${this.enableCustomElements}\n ></a2ui-surface>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"a2ui-theme-provider\": A2UIThemeProvider;\n }\n}\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n position: absolute;\n top: 4rem;\n left: 0;\n bottom: 0;\n width: 260px;\n background: #ffffff;\n border-right: 1px solid #e5e5e5;\n transform: translateX(-100%);\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n z-index: 20;\n box-shadow: 2px 0 8px rgba(0,0,0,0.05);\n }\n\n :host([open]) {\n transform: translateX(0);\n }\n\n .header {\n height: 60px;\n padding: 0 1rem;\n border-bottom: 1px solid #f0f0f0;\n font-weight: 600;\n font-size: 0.95rem;\n color: #1a1a1a;\n display: flex;\n align-items: center;\n background: #fafafa;\n }\n\n .list {\n list-style: none;\n padding: 0;\n margin: 0;\n overflow-y: auto;\n height: calc(100% - 60px);\n }\n\n .item {\n padding: 1rem;\n cursor: pointer;\n border-bottom: 1px solid #f5f5f5;\n transition: all 0.2s ease;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 0.9rem;\n color: #4a4a4a;\n }\n\n .item:hover {\n background-color: #f9f9f9;\n color: #1a1a1a;\n }\n\n .empty-state {\n padding: 2rem 1rem;\n text-align: center;\n color: #999;\n font-size: 0.9rem;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './chat-history-list.styles';\nimport type { ConversationSummary } from '../models/chat.types';\n\n@customElement('agent-chat-history-list')\nexport class ChatHistoryList extends LitElement {\n static styles = styles;\n\n @property({ type: Array }) conversations: ConversationSummary[] = [];\n @property({ type: Boolean, reflect: true }) open = false;\n\n private _handleSelect(conversation: ConversationSummary) {\n this.dispatchEvent(new CustomEvent('select-thread', {\n detail: { conversation },\n bubbles: true,\n composed: true\n }));\n }\n\n render() {\n return html`\n <div class=\"header\">\n Conversaciones\n </div>\n <ul class=\"list\">\n ${this.conversations.length === 0\n ? html`<div class=\"empty-state\">No hay conversaciones recientes</div>`\n : this.conversations.map(conv => html`\n <li class=\"item\" @click=\"${() => this._handleSelect(conv)}\">\n ${conv.title}\n </li>\n `)}\n </ul>\n `;\n }\n}\n","import type { Message, InspectorEvent, AppState } from \"../models/chat.types.js\";\nimport type { AppContext } from \"../models/portal.types.js\";\n\n\n\n/**\n * Servicio para gestionar la información de inspección del agente.\n * Mantiene un registro del contexto, mensajes y eventos de streaming.\n */\nexport class InspectorService extends EventTarget {\n private _context: AppContext | null = null;\n private _state: AppState | null = null;\n private _messages: Message[] = [];\n private _stream: InspectorEvent[] = [];\n\n get context() { return this._context; }\n get state() { return this._state; }\n get messages() { return this._messages; }\n get stream() { return this._stream; }\n\n /**\n * Actualiza el contexto actual (estático).\n * @param context Nuevo contexto del agente.\n */\n setContext(context: AppContext | null) {\n this._context = context;\n this.notify();\n }\n\n /**\n * Actualiza el estado actual (dinámico).\n * @param state Nuevo estado del agente.\n */\n setState(state: AppState | null) {\n this._state = state;\n this.notify();\n }\n\n\n\n /**\n * Actualiza la lista de mensajes.\n * @param messages Lista de mensajes del hilo.\n */\n setMessages(messages: Message[]) {\n this._messages = [...messages];\n this.notify();\n }\n\n /**\n * Agrega un nuevo evento al flujo de eventos.\n * @param event Nombre del evento.\n * @param content Contenido o detalle del evento.\n */\n addEvent(event: string, content: any) {\n const now = new Date();\n const time = now.toTimeString().split(' ')[0]; // hh:mm:ss\n this._stream = [{ event, content, time }, ...this._stream].slice(0, 100); // Keep last 100\n this.notify();\n }\n\n /**\n * Limpia el flujo de eventos.\n */\n clearStream() {\n this._stream = [];\n this.notify();\n }\n\n private notify() {\n this.dispatchEvent(new CustomEvent('inspector-change'));\n }\n}\n\nexport const inspectorService = new InspectorService();\n","import { css } from 'lit';\n\nexport const styles = css`\n :host {\n position: absolute;\n bottom: 60px;\n left: 20px;\n width: 400px;\n height: 500px;\n min-width: 300px;\n min-height: 200px;\n background: #ffffff;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n z-index: 1000;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n }\n\n .header {\n padding: 12px 16px;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: move;\n user-select: none;\n flex-shrink: 0;\n }\n\n .header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n }\n\n .close-button {\n background: none;\n border: none;\n color: #6b7280;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .close-button:hover {\n background: #f3f4f6;\n color: #111827;\n }\n\n .tabs {\n display: flex;\n background: #f3f4f6;\n padding: 4px;\n gap: 4px;\n flex-shrink: 0;\n }\n\n .tab {\n flex: 1;\n padding: 6px;\n font-size: 12px;\n font-weight: 500;\n text-align: center;\n color: #6b7280;\n cursor: pointer;\n border-radius: 6px;\n transition: all 0.2s;\n }\n\n .tab:hover {\n color: #374151;\n }\n\n .tab.active {\n background: #ffffff;\n color: #111827;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n }\n\n .content {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n font-size: 12px;\n }\n\n pre {\n margin: 0;\n white-space: pre-wrap;\n word-break: break-all;\n background: #f9fafb;\n padding: 8px;\n border-radius: 6px;\n border: 1px solid #e5e7eb;\n color: #374151;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n }\n\n .event-item {\n margin-bottom: 12px;\n padding-bottom: 12px;\n border-bottom: 1px solid #f3f4f6;\n }\n\n .event-item:last-child {\n border-bottom: none;\n }\n\n .event-header {\n display: flex;\n justify-content: space-between;\n margin-bottom: 4px;\n }\n\n .event-name {\n font-weight: 600;\n color: #6366f1;\n }\n\n .event-time {\n color: #9ca3af;\n font-size: 10px;\n }\n\n .event-content {\n margin-top: 4px;\n }\n\n details {\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n overflow: hidden;\n }\n\n summary {\n padding: 6px 10px;\n cursor: pointer;\n background: #f3f4f6;\n font-family: ui-monospace, monospace;\n font-size: 11px;\n color: #4b5563;\n user-select: none;\n }\n\n summary:hover {\n background: #e5e7eb;\n }\n\n details[open] summary {\n border-bottom: 1px solid #e5e7eb;\n margin-bottom: 0;\n }\n\n details pre {\n border: none;\n border-radius: 0;\n padding: 10px;\n }\n\n .resize-handle {\n position: absolute;\n bottom: 0;\n right: 0;\n width: 16px;\n height: 16px;\n cursor: nwse-resize;\n z-index: 1001;\n background-image: radial-gradient(circle, #d1d5db 1px, transparent 1px);\n background-size: 4px 4px;\n background-position: center;\n }\n\n .context-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n }\n\n .edit-button, .save-button, .cancel-button {\n font-size: 11px;\n padding: 4px 8px;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .edit-button {\n background: #f3f4f6;\n border: 1px solid #d1d5db;\n color: #374151;\n }\n\n .edit-button:hover {\n background: #e5e7eb;\n }\n\n .save-button {\n background: #6366f1;\n border: 1px solid #4f46e5;\n color: white;\n }\n\n .save-button:hover {\n background: #4f46e5;\n }\n\n .cancel-button {\n background: #ffffff;\n border: 1px solid #d1d5db;\n color: #6b7280;\n }\n\n .cancel-button:hover {\n background: #f9fafb;\n }\n\n .editor-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n height: 100%;\n }\n\n .context-editor {\n flex: 1;\n width: 100%;\n min-height: 200px;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 12px;\n padding: 8px;\n border-radius: 6px;\n border: 1px solid #d1d5db;\n background: #f9fafb;\n color: #374151;\n resize: none;\n }\n\n .editor-actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, state } from 'lit/decorators.js';\nimport { inspectorService } from '../services/inspector.service';\nimport { styles } from './inspector-window.styles';\n\n@customElement('agent-inspector-window')\nexport class InspectorWindow extends LitElement {\n static styles = styles;\n\n @state() private _activeTab: 'context' | 'state' | 'messages' | 'stream' = 'stream';\n @state() private _context: any = null;\n @state() private _appState: any = null;\n @state() private _messages: any[] = [];\n @state() private _stream: any[] = [];\n @state() private _isEditing = false;\n @state() private _editedData = \"\";\n\n private _isDragging = false;\n private _isResizing = false;\n private _currentX: number = 0;\n private _currentY: number = 0;\n private _initialX: number = 0;\n private _initialY: number = 0;\n private _xOffset: number = 0;\n private _yOffset: number = 0;\n\n private _initialWidth: number = 0;\n private _initialHeight: number = 0;\n\n connectedCallback() {\n super.connectedCallback();\n inspectorService.addEventListener('inspector-change', this._onInspectorChange);\n window.addEventListener('mousemove', this._onMouseMove);\n window.addEventListener('mouseup', this._onMouseUp);\n this._updateData();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n inspectorService.removeEventListener('inspector-change', this._onInspectorChange);\n window.removeEventListener('mousemove', this._onMouseMove);\n window.removeEventListener('mouseup', this._onMouseUp);\n }\n\n private _onMouseMove = (e: MouseEvent) => {\n if (this._isDragging) {\n this._drag(e);\n } else if (this._isResizing) {\n this._resize(e);\n }\n };\n\n private _onMouseUp = () => {\n if (this._isDragging) {\n this._dragEnd();\n } else if (this._isResizing) {\n this._resizeEnd();\n }\n };\n\n private _onInspectorChange = () => {\n this._updateData();\n };\n\n private _updateData() {\n this._context = inspectorService.context;\n this._appState = inspectorService.state;\n this._messages = inspectorService.messages;\n this._stream = inspectorService.stream;\n this.requestUpdate();\n }\n\n private _handleClose() {\n this.dispatchEvent(new CustomEvent('close'));\n }\n\n private _dragStart(e: MouseEvent | TouchEvent) {\n if (e.target && (e.target as HTMLElement).closest('.close-button')) return;\n\n if (e.type === \"touchstart\") {\n this._initialX = (e as TouchEvent).touches[0].clientX - this._xOffset;\n this._initialY = (e as TouchEvent).touches[0].clientY - this._yOffset;\n } else {\n this._initialX = (e as MouseEvent).clientX - this._xOffset;\n this._initialY = (e as MouseEvent).clientY - this._yOffset;\n }\n\n this._isDragging = true;\n }\n\n private _drag(e: MouseEvent | TouchEvent) {\n if (this._isDragging) {\n if (e.type !== \"mousemove\") e.preventDefault();\n\n if (e.type === \"touchmove\") {\n this._currentX = (e as TouchEvent).touches[0].clientX - this._initialX;\n this._currentY = (e as TouchEvent).touches[0].clientY - this._initialY;\n } else {\n this._currentX = (e as MouseEvent).clientX - this._initialX;\n this._currentY = (e as MouseEvent).clientY - this._initialY;\n }\n\n this._xOffset = this._currentX;\n this._yOffset = this._currentY;\n\n this._setTranslate(this._currentX, this._currentY);\n }\n }\n\n private _dragEnd() {\n this._initialX = this._currentX;\n this._initialY = this._currentY;\n this._isDragging = false;\n }\n\n private _resizeStart(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n this._isResizing = true;\n this._initialX = e.clientX;\n this._initialY = e.clientY;\n this._initialWidth = this.getBoundingClientRect().width;\n this._initialHeight = this.getBoundingClientRect().height;\n }\n\n private _resize(e: MouseEvent) {\n if (this._isResizing) {\n const deltaX = e.clientX - this._initialX;\n const deltaY = e.clientY - this._initialY;\n this.style.width = `${this._initialWidth + deltaX}px`;\n this.style.height = `${this._initialHeight + deltaY}px`;\n }\n }\n\n private _resizeEnd() {\n this._isResizing = false;\n }\n\n private _setTranslate(xPos: number, yPos: number) {\n this.style.transform = `translate3d(${xPos}px, ${yPos}px, 0)`;\n }\n\n render() {\n return html`\n <div class=\"header\"\n @mousedown=\"${this._dragStart}\"\n @touchstart=\"${this._dragStart}\"\n @touchmove=\"${this._drag}\"\n @touchend=\"${this._dragEnd}\"\n >\n <h3>Inspector</h3>\n <button class=\"close-button\" @click=\"${this._handleClose}\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31317L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>\n </button>\n </div>\n <div class=\"tabs\">\n <div class=\"tab ${this._activeTab === 'context' ? 'active' : ''}\" @click=\"${() => this._activeTab = 'context'}\">Context</div>\n <div class=\"tab ${this._activeTab === 'state' ? 'active' : ''}\" @click=\"${() => this._activeTab = 'state'}\">State</div>\n <div class=\"tab ${this._activeTab === 'messages' ? 'active' : ''}\" @click=\"${() => this._activeTab = 'messages'}\">Messages</div>\n <div class=\"tab ${this._activeTab === 'stream' ? 'active' : ''}\" @click=\"${() => this._activeTab = 'stream'}\">Stream</div>\n </div>\n <div class=\"content\">\n ${this._renderContent()}\n </div>\n <div class=\"resize-handle\" @mousedown=\"${this._resizeStart}\"></div>\n `;\n }\n\n private _renderContent() {\n switch (this._activeTab) {\n case 'context':\n return this._renderEditableSection('context', this._context);\n case 'state':\n return this._renderEditableSection('state', this._appState);\n case 'messages':\n return html`<pre>${JSON.stringify(this._messages, null, 2)}</pre>`;\n case 'stream':\n return html`\n <div class=\"stream-list\">\n ${this._stream.map(item => html`\n <div class=\"event-item\">\n <div class=\"event-header\">\n <span class=\"event-name\">${item.event}</span>\n <span class=\"event-time\">${item.time}</span>\n </div>\n <div class=\"event-content\">\n <details>\n <summary>JSON</summary>\n <pre>${JSON.stringify(item.content, null, 2)}</pre>\n </details>\n </div>\n </div>\n `)}\n ${this._stream.length === 0 ? html`<div style=\"color: #9ca3af; text-align: center; padding: 20px;\">No events yet</div>` : ''}\n </div>\n `;\n }\n }\n\n private _renderEditableSection(type: 'context' | 'state', data: any) {\n if (this._isEditing) {\n return html`\n <div class=\"editor-container\">\n <textarea \n class=\"context-editor\" \n .value=\"${this._editedData}\"\n @input=\"${(e: any) => this._editedData = e.target.value}\"\n ></textarea>\n <div class=\"editor-actions\">\n <button class=\"cancel-button\" @click=\"${this._handleCancelEdit}\">Cancel</button>\n <button class=\"save-button\" @click=\"${() => this._handleSave(type)}\">Save Changes</button>\n </div>\n </div>\n `;\n }\n return html`\n <div class=\"context-header\">\n <span>Current ${type === 'context' ? 'Static Context' : 'Dynamic State'}</span>\n <button class=\"edit-button\" @click=\"${() => this._handleEdit(data)}\">Edit</button>\n </div>\n <pre>${JSON.stringify(data, null, 2)}</pre>\n `;\n }\n\n private _handleEdit(data: any) {\n this._editedData = JSON.stringify(data, null, 2);\n this._isEditing = true;\n }\n\n private _handleCancelEdit() {\n this._isEditing = false;\n }\n\n private _handleSave(type: 'context' | 'state') {\n try {\n const parsed = JSON.parse(this._editedData);\n const eventName = type === 'context' ? 'context-update' : 'state-update';\n this.dispatchEvent(new CustomEvent(eventName, {\n detail: parsed,\n bubbles: true,\n composed: true\n }));\n this._isEditing = false;\n } catch (e) {\n alert('Invalid JSON: ' + (e as Error).message);\n }\n }\n\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'agent-inspector-window': InspectorWindow;\n }\n}\n","export type StoreItemType =\n | \"thread\"\n | \"message\"\n | \"toolCall\"\n | \"workflow\"\n | \"task\"\n | \"attachment\"\n | \"sdkHiddenContext\";\n\nconst ID_PREFIXES: Record<StoreItemType, string> = {\n \"thread\": \"thr\",\n \"message\": \"msg\",\n \"toolCall\": \"tc\",\n \"workflow\": \"wf\",\n \"task\": \"tsk\",\n \"attachment\": \"atc\",\n \"sdkHiddenContext\": \"shcx\",\n};\n\nexport function generateId(itemType: StoreItemType): string {\n const prefix = ID_PREFIXES[itemType];\n // python uuid4().hex[:8] equivalent: remove dashes from uuid and take first 8 chars\n const randomPart = crypto.randomUUID().replace(/-/g, '').slice(0, 8);\n return `${prefix}_${randomPart}`;\n}\n","import type { ChatPortalAPI, AppContext, ExecutePlanResult, Action } from \"../models/portal.types.js\";\n\n\nexport class ChatPortalService extends EventTarget implements ChatPortalAPI {\n private _context: AppContext | null = null;\n private _visibleTargetIds: Set<string> = new Set();\n private static _instance: ChatPortalService;\n\n private _executePlanHandler: ((plan: Action) => Promise<ExecutePlanResult>) | null = null;\n\n private constructor() {\n super();\n }\n\n public static getInstance(): ChatPortalService {\n if (!ChatPortalService._instance) {\n ChatPortalService._instance = new ChatPortalService();\n }\n return ChatPortalService._instance;\n }\n\n registerPortal(context: AppContext, handlers?: { executePlan?: (plan: Action) => Promise<ExecutePlanResult> }): void {\n console.log('Registering app context', context);\n this._context = context;\n if (handlers?.executePlan) {\n this._executePlanHandler = handlers.executePlan;\n }\n this.dispatchEvent(new CustomEvent('portal-registered', { detail: context }));\n }\n\n setVisibleTargets(ids: string[]): void {\n this._visibleTargetIds = new Set(ids);\n this.dispatchEvent(new CustomEvent('targets-updated', { detail: ids }));\n }\n\n async executePlan(plan: Action): Promise<ExecutePlanResult> {\n if (plan.type === 'plan') {\n const steps = (plan as any).steps as Action[];\n console.log(`ChatPortalService: Executing multi-step plan with ${steps.length} steps.`);\n for (const step of steps) {\n const result = await this.executePlan(step);\n if (result.status === 'error') {\n return result;\n }\n }\n return { status: \"ok\" };\n }\n\n if (plan.type === 'click' || plan.type === 'setValue') {\n const targetId = (plan as any).targetId;\n console.log(`ChatPortalService: Waiting for target \"${targetId}\" for action \"${plan.type}\"...`);\n const found = await this._waitForTarget(targetId);\n if (!found) {\n return { status: \"error\", details: `Target \"${targetId}\" not found or not visible after timeout.` };\n }\n }\n\n if (this._executePlanHandler) {\n return this._executePlanHandler(plan);\n }\n\n if (!this._context) {\n console.warn('No portal registered. Cannot execute plan.');\n return { status: \"error\", details: \"No portal registered\" };\n }\n\n console.log('Executing plan (simplified):', plan);\n return { status: \"ok\" };\n }\n\n private _waitForTarget(targetId: string, timeout = 10000): Promise<boolean> {\n if (this._visibleTargetIds.has(targetId)) {\n return Promise.resolve(true);\n }\n\n return new Promise((resolve) => {\n const timer = setTimeout(() => {\n this.removeEventListener('targets-updated', handler);\n resolve(false);\n }, timeout);\n\n const handler = () => {\n if (this._visibleTargetIds.has(targetId)) {\n clearTimeout(timer);\n this.removeEventListener('targets-updated', handler);\n resolve(true);\n }\n };\n\n this.addEventListener('targets-updated', handler);\n });\n }\n\n public get context(): AppContext | null {\n return this._context;\n }\n\n /**\n * @deprecated Use context instead\n */\n public get specs(): AppContext | null {\n\n return this._context;\n }\n}\n\nexport const chatPortalService = ChatPortalService.getInstance();\n\n","import type {\n AgentSubscriber,\n RunStartedEvent,\n RunFinishedEvent,\n StepStartedEvent,\n StepFinishedEvent,\n TextMessageStartEvent,\n TextMessageContentEvent,\n TextMessageEndEvent,\n MessagesSnapshotEvent,\n AgentSubscriberParams,\n ToolCallStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n ToolCallResultEvent,\n StateSnapshotEvent,\n StateDeltaEvent,\n ActivitySnapshotEvent,\n ActivityDeltaEvent,\n CustomEvent as AgCustomEvent,\n RunErrorEvent,\n BaseEvent\n\n} from \"@ag-ui/client\";\nimport { ChatService } from \"./chat.service\";\nimport { inspectorService } from \"./inspector.service\";\nimport { chatPortalService } from \"./chat-portal.service\";\nimport type { UIMessage } from \"../models/chat.types.js\";\nimport { a2uiService } from \"./a2ui.service.js\";\nimport type { Action } from \"../models/portal.types.js\";\n\n\nexport class ChatSubscriber implements AgentSubscriber {\n private service: ChatService;\n\n constructor(service: ChatService) {\n this.service = service;\n }\n\n onRunFinishedEvent(params: { event: RunFinishedEvent, result?: any } & AgentSubscriberParams) {\n inspectorService.addEvent('onRunFinishedEvent', params.event);\n this.service.cleanupThinkingPlaceholder();\n }\n\n onRunStartedEvent(params: { event: RunStartedEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onRunStartedEvent', params.event);\n // Show thinking animation\n this.service.addPlaceholderMessage();\n }\n\n onRunErrorEvent(params: { event: RunErrorEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onRunErrorEvent', params.event);\n // We could also notify the user in the UI, but for now we logs it to inspector\n console.error('ChatSubscriber: Run Error', params.event);\n this.service.cleanupThinkingPlaceholder();\n }\n\n onStepStartedEvent(params: { event: StepStartedEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onStepStartedEvent', params.event);\n }\n\n onStepFinishedEvent(params: { event: StepFinishedEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onStepFinishedEvent', params.event);\n }\n\n onTextMessageStartEvent(params: { event: TextMessageStartEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onTextMessageStartEvent', params.event);\n // Switch from thinking to streaming text\n this.service.prepareMessageForStreaming(params.event.messageId);\n }\n\n onTextMessageContentEvent(params: { event: TextMessageContentEvent, textMessageBuffer: string } & AgentSubscriberParams) {\n inspectorService.addEvent('onTextMessageContentEvent', params.event);\n // Add chunk\n // The event has 'delta' prop for the new content chunk\n const content = params.event.delta || \"\";\n this.service.appendMessageContent(params.event.messageId, content);\n }\n\n\n onTextMessageEndEvent(params: { event: TextMessageEndEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onTextMessageEndEvent', params.event);\n }\n\n onMessagesSnapshotEvent(params: { event: MessagesSnapshotEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onMessagesSnapshotEvent', params.event);\n\n // Sync full state, mapping to our local Message type\n const messages: UIMessage[] = params.event.messages\n .filter(msg => {\n // Ignore 'tool' role messages (already handled in backend but library might resend)\n if (msg.role === 'tool') return false;\n\n // Ignore 'assistant' messages that only contain non-A2UI tool calls\n if (msg.role === 'assistant' && msg.toolCalls && msg.toolCalls.length > 0) {\n const hasA2UITool = msg.toolCalls.some(tc => tc.function?.name?.startsWith('a2ui_'));\n const hasContent = typeof msg.content === 'string' && msg.content.trim().length > 0;\n\n // If it only has internal tools and no text content, hide it\n if (!hasA2UITool && !hasContent) return false;\n }\n\n return true;\n })\n .map(msg => ({\n ...msg,\n createdAt: (msg as any).createdAt || Date.now(),\n }));\n this.service.setMessages(messages);\n }\n\n onToolCallStartEvent(params: { event: ToolCallStartEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onToolCallStartEvent', params.event);\n }\n\n onToolCallArgsEvent(params: { event: ToolCallArgsEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onToolCallArgsEvent', params.event);\n }\n\n async onToolCallEndEvent(params: {\n event: ToolCallEndEvent;\n toolCallName: string;\n toolCallArgs: Record<string, any>;\n } & AgentSubscriberParams) {\n inspectorService.addEvent('onToolCallEndEvent', params.event);\n\n if (params.toolCallName === 'executePlan') {\n console.log('ChatSubscriber: Received executePlan tool call', params.toolCallArgs);\n const result = await chatPortalService.executePlan(params.toolCallArgs as Action);\n console.log('ChatSubscriber: executePlan result', result);\n }\n\n if (params.toolCallName === 'navigate_user') {\n console.log('ChatSubscriber: Received navigate_user tool call', params.toolCallArgs);\n const result = await chatPortalService.executePlan({\n type: 'navigate',\n toPath: params.toolCallArgs.path,\n reason: params.toolCallArgs.reason\n });\n console.log('ChatSubscriber: navigate_user result', result);\n }\n\n if (params.toolCallName === 'click_element') {\n console.log('ChatSubscriber: Received click_element tool call', params.toolCallArgs);\n const result = await chatPortalService.executePlan({\n type: 'click',\n targetId: params.toolCallArgs.target_id,\n reason: params.toolCallArgs.reason\n });\n console.log('ChatSubscriber: click_element result', result);\n }\n\n if (params.toolCallName === 'set_value') {\n console.log('ChatSubscriber: Received set_value tool call', params.toolCallArgs);\n const result = await chatPortalService.executePlan({\n type: 'setValue',\n targetId: params.toolCallArgs.target_id,\n value: params.toolCallArgs.value,\n reason: params.toolCallArgs.reason\n });\n console.log('ChatSubscriber: set_value result', result);\n }\n\n if (params.toolCallName === 'execute_ui_plan' || params.toolCallName === 'executePlan') {\n console.log('ChatSubscriber: Received UI plan tool call', params.toolCallArgs);\n const result = await chatPortalService.executePlan(params.toolCallArgs as Action);\n console.log('ChatSubscriber: UI plan result', result);\n }\n }\n\n onToolCallResultEvent(params: { event: ToolCallResultEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onToolCallResultEvent', params.event);\n }\n\n onStateSnapshotEvent(params: { event: StateSnapshotEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onStateSnapshotEvent', params.event);\n }\n\n onStateDeltaEvent(params: { event: StateDeltaEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onStateDeltaEvent', params.event);\n }\n\n onActivitySnapshotEvent(params: { event: ActivitySnapshotEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onActivitySnapshotEvent', params.event);\n\n if (params.event.activityType === 'a2ui') {\n a2uiService.processSnapshot(params.event);\n } else if ([\"navigation\", \"click\", \"setValue\", \"plan\"].includes(params.event.activityType)) {\n chatPortalService.executePlan(params.event.content as Action);\n }\n }\n\n onActivityDeltaEvent(params: { event: ActivityDeltaEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onActivityDeltaEvent', params.event);\n // Delta processing is not supported by the current processor\n }\n\n onCustomEvent(params: { event: AgCustomEvent } & AgentSubscriberParams) {\n inspectorService.addEvent('onCustomEvent', params.event);\n }\n\n async onClientToolCall(params: { event: AgCustomEvent, toolName: string, args: Record<string, any> } & AgentSubscriberParams) {\n\n inspectorService.addEvent('onClientToolCall', params.event);\n if (params.toolName === 'executePlan') {\n console.log('ChatSubscriber: Received executePlan client tool call', params.args);\n await chatPortalService.executePlan(params.args as Action);\n }\n }\n\n\n onEvent(params: { event: BaseEvent } & AgentSubscriberParams) {\n // Log all recognized events to inspector\n inspectorService.addEvent(`onEvent:${params.event.type}`, params.event);\n }\n\n onRawEvent(params: { event: any } & AgentSubscriberParams) {\n // Log raw data from the stream\n inspectorService.addEvent('onRawEvent', params.event);\n }\n}\n","import type { Conversation } from \"../models/conversation.types\";\nimport type { AppContext } from \"../models/portal.types\";\n\n/**\n * Servicio para gestionar las conversaciones (threads) a través de un API externa.\n */\nexport class ConversationService {\n private baseUrl: string;\n\n constructor() {\n // La URL se resuelve en tiempo de compilación. Por defecto se usa http://localhost:8001\n const apiUrl = import.meta.env.VITE_CONVERSATIONS_API_URL || '';\n this.baseUrl = `${apiUrl}/api/conversations`;\n }\n\n /**\n * Inicializa la URL base del servicio.\n * @param apiUrl URL base del API de conversaciones\n */\n initialize(apiUrl: string) {\n this.baseUrl = `${apiUrl}/api/conversations`;\n }\n\n /**\n * Obtiene todas las conversaciones de un usuario.\n * @returns Promesa con el listado de conversaciones\n */\n async getConversations(): Promise<Conversation[]> {\n const response = await fetch(`${this.baseUrl}`);\n if (!response.ok) {\n throw new Error(`Failed to fetch conversations: ${response.statusText}`);\n }\n return response.json();\n }\n\n /**\n * Obtiene una conversación por su ID.\n * @param id ID de la conversación\n * @returns Promesa con la conversación\n */\n async getConversation(id: string): Promise<Conversation> {\n const response = await fetch(`${this.baseUrl}/${id}`);\n if (!response.ok) {\n throw new Error(`Failed to fetch conversation: ${response.statusText}`);\n }\n return response.json();\n }\n\n /**\n * Crea una nueva conversación.\n * @param data Datos de la conversación a crear (incluyendo opcionalmente el appContext).\n * @returns Promesa con la conversación creada\n */\n async createConversation(data: Partial<Conversation> & { appContext?: AppContext }): Promise<Conversation> {\n const payload = {\n ...data,\n title: data.title || \"Nueva conversación\"\n };\n\n const response = await fetch(this.baseUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to create conversation: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /**\n * Actualiza una conversación existente.\n * @param id ID de la conversación\n * @param conversation Datos parciales a actualizar\n * @returns Promesa con la conversación actualizada\n */\n async updateConversation(id: string, conversation: Partial<Conversation>): Promise<Conversation> {\n const response = await fetch(`${this.baseUrl}/${id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(conversation),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to update conversation: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /**\n * Elimina una conversación.\n * @param id ID de la conversación a eliminar\n */\n async deleteConversation(id: string): Promise<void> {\n const response = await fetch(`${this.baseUrl}/${id}`, {\n method: 'DELETE',\n });\n\n if (!response.ok) {\n throw new Error(`Failed to delete conversation: ${response.statusText}`);\n }\n }\n}\n\nexport const conversationService = new ConversationService();\n","import { HttpAgent, type Message } from \"@ag-ui/client\";\nimport type { ConversationSummary, AppState, UIMessage, SuggestedPrompt } from \"../models/chat.types.js\";\nimport type { AppContext } from \"../models/portal.types\";\nimport type { ActivitySnapshotEvent } from \"@ag-ui/client\";\n\n\nimport { generateId } from \"../utils/id-generator\";\nimport { ChatSubscriber } from \"./chat.subscriber\";\nimport { inspectorService } from \"./inspector.service\";\nimport { conversationService } from \"./conversation.service\";\nimport { chatPortalService } from \"./chat-portal.service\";\n\nconst threadIdPlaceHolder = \"thread-placeholder\";\nconst STORAGE_THREAD_ID_KEY = \"site-operator-thread-id\";\nconst DEFAUILT_AG_UI_URI = '/ag_ui';\nexport class ChatService extends EventTarget {\n private agent?: HttpAgent;\n private _conversations: ConversationSummary[] = [];\n private _appContext: AppContext | null = null;\n private _appState: AppState = {\n v: \"1.1\",\n location: { path: \"\" },\n ui: { visibleClickTargetIds: [] }\n };\n private _suggestedPrompts: SuggestedPrompt[] = [];\n private _showPrompts: boolean = false;\n\n get isRunning() {\n return this.agent?.isRunning || false;\n }\n\n get messages() {\n return this.agent?.messages || [];\n }\n\n get suggestedPrompts() {\n return this._suggestedPrompts;\n }\n\n get showPrompts() {\n return this._showPrompts;\n }\n\n\n private subscriber: ChatSubscriber;\n\n constructor() {\n super();\n this.subscriber = new ChatSubscriber(this);\n\n // Listen for context registration from other parts of the app\n chatPortalService.addEventListener('portal-registered', (e: Event) => {\n const detail = (e as CustomEvent<AppContext>).detail;\n console.log('ChatService: Portal context detected', detail);\n this.setAppContext(detail);\n });\n }\n\n /**\n * Inicializa el servicio de chat con las URLs necesarias y el nombre de la aplicación.\n * @param config Configuración de inicialización.\n */\n async initialize(config: { backendUrl: string, conversationUrl: string, appName: string, inspector?: boolean }) {\n const storedThreadId = localStorage.getItem(STORAGE_THREAD_ID_KEY);\n\n this.agent = new HttpAgent({\n url: `${config.backendUrl}${DEFAUILT_AG_UI_URI}`,\n threadId: storedThreadId || threadIdPlaceHolder,\n });\n conversationService.initialize(config.backendUrl);\n\n // Prioritize already registered portal context if available\n if (chatPortalService.context) {\n this._appContext = chatPortalService.context;\n } else {\n this._appContext = {\n v: \"1.1\",\n site: {\n name: config.appName,\n locale: window.navigator.language || window.navigator.languages[0] || \"en\",\n },\n };\n }\n\n if (storedThreadId) {\n await this.loadConversation(storedThreadId);\n }\n\n inspectorService.setContext(this._appContext);\n inspectorService.setState(this._appState);\n inspectorService.setMessages(this.agent?.messages || []);\n }\n\n /**\n * Carga una conversación existente por su ID.\n * @param id ID de la conversación a cargar.\n */\n async loadConversation(id: string) {\n try {\n const conversation = await conversationService.getConversation(id);\n if (this.agent) {\n this.agent.threadId = conversation.id;\n this.agent.messages = (conversation.messages || []) as UIMessage[];\n localStorage.setItem(STORAGE_THREAD_ID_KEY, conversation.id);\n }\n this.notify();\n } catch (error) {\n console.error(\"Failed to load conversation\", error);\n // Si falla la carga, volvemos al estado inicial\n if (this.agent) {\n this.agent.threadId = threadIdPlaceHolder;\n this.agent.messages = [];\n localStorage.removeItem(STORAGE_THREAD_ID_KEY);\n }\n this.notify();\n }\n }\n\n get conversations() {\n return this._conversations;\n }\n\n /**\n * Establece el contexto de la aplicación para el agente.\n * Este contexto se envía en cada mensaje.\n * @param context El contexto de la aplicación (AgentState o AppContext)\n */\n setAppContext(context: AppContext) {\n this._appContext = context;\n inspectorService.setContext(this._appContext);\n this.notify();\n }\n\n\n\n /**\n * Establece el estado dinámico de la aplicación.\n * @param state El estado completo de la aplicación.\n */\n setAppState(state: AppState) {\n this._appState = state;\n inspectorService.setState(this._appState);\n if (state.ui?.visibleClickTargetIds) {\n chatPortalService.setVisibleTargets(state.ui.visibleClickTargetIds);\n }\n this.notify();\n }\n\n /**\n * Actualiza el estado dinámico de la aplicación de forma parcial.\n * @param partial El estado parcial de la aplicación.\n */\n updateAppState(partial: Partial<AppState>) {\n this._appState = { ...this._appState, ...partial };\n this.notify();\n }\n\n setAppLocation(location: AppState[\"location\"]) {\n this._appState.location = location;\n this.notify();\n }\n\n setAppUI(ui: AppState[\"ui\"]) {\n this._appState.ui = ui;\n if (ui?.visibleClickTargetIds) {\n chatPortalService.setVisibleTargets(ui.visibleClickTargetIds);\n }\n this.notify();\n }\n\n setAppFocus(focus: AppState[\"focus\"]) {\n this._appState.focus = focus;\n this.notify();\n }\n\n /**\n * Establece los prompts sugeridos que se mostrarán al usuario.\n * @param prompts Lista de prompts sugeridos. El caption tiene un máximo de 50 caracteres.\n */\n setSuggestedPrompts(prompts: SuggestedPrompt[]) {\n this._suggestedPrompts = prompts.map(p => ({\n ...p,\n caption: p.caption.slice(0, 50)\n }));\n this._showPrompts = true;\n this.notify();\n }\n\n /**\n * Oculta la lista de prompts sugeridos.\n */\n hideSuggestedPrompts() {\n this._showPrompts = false;\n this.notify();\n }\n\n\n async sendMessage(content: string, role: \"developer\" | \"user\" | \"assistant\" | \"system\" | \"tool\" | \"activity\" = \"user\") {\n if (!this.agent) {\n console.error(\"ChatService not initialized. Call initialize() first.\");\n return;\n }\n\n // Optimistic update\n const id = generateId(\"message\");\n const createdAt = Date.now();\n let userMsg: UIMessage;\n\n switch (role) {\n case \"activity\":\n userMsg = { id, role: \"activity\", activityType: \"message\", content: { text: content }, createdAt };\n break;\n case \"tool\":\n userMsg = { id, role: \"tool\", content, toolCallId: generateId(\"toolCall\"), createdAt };\n break;\n case \"user\":\n userMsg = { id, role: \"user\", content, createdAt };\n break;\n case \"assistant\":\n userMsg = { id, role: \"assistant\", content, createdAt };\n break;\n case \"system\":\n userMsg = { id, role: \"system\", content, createdAt };\n break;\n case \"developer\":\n userMsg = { id, role: \"developer\", content, createdAt };\n break;\n }\n\n this.agent.addMessage(userMsg as Message);\n\n this.notify();\n\n try {\n if (this.agent?.threadId == threadIdPlaceHolder)\n await this._ensureConversation();\n // Add only the new message\n\n\n this.agent.state = {\n appState: this._appState\n };\n\n\n\n await this.agent.runAgent({ tools: [] }, this.subscriber);\n\n\n\n } catch (error) {\n console.error(\"Failed to send message\", error);\n // Add error message to thread?\n } finally {\n this._showPrompts = false;\n this.notify();\n }\n }\n\n async _ensureConversation() {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n if (this.agent?.threadId == threadIdPlaceHolder) {\n const conversation = await conversationService.createConversation({\n appContext: this._appContext || undefined\n });\n this.agent.threadId = conversation.id;\n localStorage.setItem(STORAGE_THREAD_ID_KEY, conversation.id);\n }\n }\n\n addPlaceholderMessage() {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n const placeholder: UIMessage = {\n id: \"thinking-placeholder\",\n role: \"assistant\",\n content: \"\",\n createdAt: Date.now(),\n isThinking: true\n };\n this.agent.messages = [...(this.agent.messages || []), placeholder];\n this.notify();\n }\n\n cleanupThinkingPlaceholder() {\n if (!this.agent) return;\n const filtered = this.agent.messages.filter(m => m.id !== \"thinking-placeholder\");\n if (filtered.length !== this.agent.messages.length) {\n this.agent.messages = filtered;\n this.notify();\n }\n }\n\n prepareMessageForStreaming(newId: string) {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n this.agent.messages = this.agent.messages.map(msg => {\n if (msg.id === \"thinking-placeholder\" && this.isRunning) {\n return {\n ...msg,\n id: newId,\n isThinking: false\n };\n }\n return msg;\n });\n this.notify();\n }\n\n appendMessageContent(id: string, content: string) {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n this.agent.messages = this.agent.messages.map(msg => {\n if (msg.id === id && typeof msg.content === 'string') {\n return {\n ...msg,\n content: (msg.content || '') + content\n } as UIMessage;\n }\n return msg;\n });\n this.notify();\n }\n\n setMessages(messages: Message[]) {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n\n // Preserve existing activity messages that are not in the incoming set\n const existingActivities = this.agent.messages.filter(m => m.role === ('activity' as any));\n const incomingIds = new Set(messages.map(m => m.id));\n const missingActivities = existingActivities.filter(m => !incomingIds.has(m.id));\n\n console.log(\"ChatService: setMessages - Preserving activities\", missingActivities.length);\n\n // Map external messages to our Message type\n this.agent.messages = [...(messages as UIMessage[]), ...missingActivities];\n\n // Sort by createdAt to maintain some order (though activities might not have it from server)\n this.agent.messages.sort((a, b) => ((a as any).createdAt || 0) - ((b as any).createdAt || 0));\n\n this.notify();\n }\n\n addA2UIMessage(event: ActivitySnapshotEvent) {\n if (!this.agent) {\n throw new Error(\"Agent not initialized\");\n }\n\n // Handle case where content might be a string\n let content = event.content;\n if (typeof content === 'string') {\n try {\n content = JSON.parse(content);\n } catch (e) {\n console.error(\"ChatService: Failed to parse activity content string\", e);\n }\n }\n\n\n\n const activityMsg: UIMessage = {\n id: event.messageId,\n role: 'activity',\n activityType: event.activityType,\n content: event.content,\n createdAt: Date.now()\n };\n\n\n // Remove existing message with same ID if any (to handle updates/snapshots)\n const messages = this.agent.messages.filter(m => m.id !== event.messageId);\n this.agent.messages = [...messages, activityMsg];\n\n this.notify();\n }\n\n async startNewThread() {\n localStorage.removeItem(STORAGE_THREAD_ID_KEY);\n console.log(\"ChatService: startNewThread\");\n if (this.agent) {\n this.agent.threadId = threadIdPlaceHolder;\n this.agent.messages = [];\n this.agent.isRunning = false;\n }\n\n if (this._suggestedPrompts.length > 0) {\n this._showPrompts = true;\n }\n\n this.notify();\n }\n\n /**\n * Obtiene el listado de conversaciones desde el servidor.\n * @returns Promesa con el listado de conversaciones.\n */\n async getConversations(): Promise<ConversationSummary[]> {\n await this.refreshConversations();\n return this._conversations;\n }\n\n /**\n * Refresca la lista de conversaciones desde el servicio de conversaciones.\n */\n async refreshConversations() {\n try {\n const conversations = await conversationService.getConversations();\n this._conversations = conversations.map(c => ({\n id: c.id,\n title: c.title\n }));\n this.notify();\n } catch (error) {\n console.error(\"Failed to refresh conversations\", error);\n }\n }\n\n private notify() {\n inspectorService.setMessages(this.agent?.messages || []);\n inspectorService.setState(this._appState);\n this.dispatchEvent(new CustomEvent(\"state-change\"));\n }\n}\n\nexport const chatService = new ChatService();\n","import type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport { chatService } from '../services/chat.service';\nimport type { AppState, SuggestedPrompt } from '../models/chat.types';\nimport type { AppContext } from '../models/portal.types';\n\n\n\n/**\n * Controlador reactivo para gestionar la conexión con el ChatService.\n * Se encarga de suscribirse a los cambios de estado y limpiar los recursos\n * cuando el componente host se desconecta.\n */\nexport class ChatController implements ReactiveController {\n private _host: ReactiveControllerHost;\n\n constructor(host: ReactiveControllerHost) {\n this._host = host;\n this._host.addController(this);\n }\n\n /**\n * Inicializa el servicio de chat con las URLs necesarias y el nombre de la aplicación.\n * @param config Configuración de inicialización.\n */\n initialize(config: { backendUrl: string, appName: string, conversationUrl: string, inspector?: boolean }) {\n return chatService.initialize(config);\n }\n\n /**\n * Se ejecuta cuando el componente se conecta al DOM.\n * Registra el listener para actualizaciones de estado.\n */\n hostConnected() {\n chatService.addEventListener('state-change', this._onStateChange);\n }\n\n /**\n * Se ejecuta cuando el componente se desconecta del DOM.\n * Elimina el listener para evitar fugas de memoria.\n */\n hostDisconnected() {\n chatService.removeEventListener('state-change', this._onStateChange);\n }\n\n /**\n * Retorna el estado actual del hilo de chat.\n */\n get isRunning() {\n return chatService.isRunning;\n }\n\n /**\n * Retorna el listado de mensajes.\n */\n get messages() {\n return chatService.messages;\n }\n\n /**\n * Retorna el listado de conversaciones recientes.\n */\n get conversations() {\n return chatService.conversations;\n }\n\n /**\n * Retorna los prompts sugeridos.\n */\n get suggestedPrompts() {\n return chatService.suggestedPrompts;\n }\n\n /**\n * Indica si se deben mostrar los prompts.\n */\n get showPrompts() {\n return chatService.showPrompts;\n }\n\n /**\n * Envía un mensaje a través del servicio.\n * @param content Contenido del mensaje.\n * @param role Rol del mensaje (opcional, por defecto 'user').\n */\n sendMessage(content: string, role: Parameters<typeof chatService.sendMessage>[1] = 'user') {\n return chatService.sendMessage(content, role);\n }\n\n /**\n * Inicia un nuevo hilo de charla.\n */\n startNewThread() {\n console.log('Starting new thread');\n return chatService.startNewThread();\n }\n\n /**\n * Carga una conversación existente por su ID.\n * @param id ID de la conversación a cargar.\n */\n loadConversation(id: string) {\n return chatService.loadConversation(id);\n }\n\n /**\n * Establece el contexto de la aplicación.\n * @param context Objeto AgentState o AppContext con el contexto.\n */\n setAppContext(context: AppContext) {\n return chatService.setAppContext(context);\n }\n\n /**\n * Establece el estado dinámico de la aplicación.\n * @param state Objeto AppState.\n */\n setAppState(state: AppState) {\n return chatService.setAppState(state);\n }\n\n setAppLocation(location: AppState[\"location\"]) {\n return chatService.setAppLocation(location);\n }\n\n setAppUI(ui: AppState[\"ui\"]) {\n return chatService.setAppUI(ui);\n }\n\n setAppFocus(focus: AppState[\"focus\"]) {\n return chatService.setAppFocus(focus);\n }\n\n /**\n * Establece los prompts sugeridos.\n * @param prompts Lista de prompts.\n */\n setSuggestedPrompts(prompts: SuggestedPrompt[]) {\n return chatService.setSuggestedPrompts(prompts);\n }\n\n /**\n * Oculta los prompts sugeridos.\n */\n hideSuggestedPrompts() {\n return chatService.hideSuggestedPrompts();\n }\n\n\n\n /**\n * Refresca el listado de conversaciones desde el servidor.\n */\n refreshConversations() {\n return chatService.refreshConversations();\n }\n\n /**\n * Obtiene el listado de conversaciones desde el servidor.\n */\n getConversations() {\n return chatService.getConversations();\n }\n\n /**\n * Manejador interno para cambios de estado.\n * Llama a requestUpdate() en el host para forzar el renderizado.\n */\n private _onStateChange = () => {\n this._host.requestUpdate();\n };\n}\n","/**\n * Service to manage fetch interceptions.\n * This is primarily used for development and testing purposes to inject headers or log requests.\n */\nexport class FetchInterceptorService {\n private originalFetch = window.fetch.bind(window);\n private _isEnabled = false;\n\n /**\n * Checks if the interceptor is currently enabled.\n * @returns boolean\n */\n public get isEnabled(): boolean {\n return this._isEnabled;\n }\n\n /**\n * Initializes the fetch interceptor.\n * Adds a test Authorization header to all outgoing fetch requests.\n * This method should only be called in development environments.\n */\n public init(): void {\n if (this._isEnabled) return;\n\n const self = this;\n window.fetch = async function (input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n try {\n // Create headers if they don't exist\n const headers = new Headers(init?.headers || {});\n\n // Add test authorization header if it doesn't exist\n // Using VITE_TEST_AUTH_TOKEN from environment if available\n const token = import.meta.env.VITE_TEST_AUTH_TOKEN;\n if (token && !headers.has('Authorization')) {\n headers.append('Authorization', `Bearer ${token}`);\n }\n\n // Call original fetch with updated config\n return self.originalFetch(input, { ...init, headers });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n this._isEnabled = true;\n console.log('Fetch interceptor initialized with test Authorization header (Native implementation).');\n }\n\n /**\n * Disables the fetch interceptor.\n */\n public destroy(): void {\n if (this._isEnabled) {\n window.fetch = this.originalFetch;\n this._isEnabled = false;\n console.log('Fetch interceptor destroyed (Native implementation).');\n }\n }\n}\n\n/**\n * Singleton instance of the FetchInterceptorService.\n */\nexport const fetchInterceptorService = new FetchInterceptorService();\n","import { LitElement, html } from 'lit';\nimport { customElement, state, property } from 'lit/decorators.js';\nimport { styles } from './agent-chat.styles';\nimport './chat-header';\nimport './chat-thread';\nimport './chat-composer';\nimport '@a2ui/lit/ui';\nimport './a2ui-theme-provider';\nimport type { AppContext } from \"../models/portal.types.js\";\nimport type { AppState, SuggestedPrompt } from \"../models/chat.types.js\";\n\nimport './chat-history-list';\n\nimport './inspector-window';\nimport { ChatController } from '../hooks/chat.controller';\nimport { ToolIcon } from '../icons';\n\nimport { a2uiService } from '../services/a2ui.service';\nimport { fetchInterceptorService } from '../services/fetch-interceptor.service';\n\n@customElement('agent-chat')\nexport class AgentChat extends LitElement {\n static styles = styles;\n\n private _chatController = new ChatController(this);\n\n public get controller() {\n return this._chatController;\n }\n\n protected firstUpdated() {\n this.dispatchEvent(new CustomEvent('controller-ready', {\n detail: this._chatController\n }));\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._injectFonts();\n this.addEventListener('a2uiaction', this._handleA2UIAction as EventListener);\n }\n\n private _injectFonts() {\n const fonts = [\n 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200',\n 'https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200'\n ];\n\n fonts.forEach(url => {\n if (!document.querySelector(`link[href=\"${url}\"]`)) {\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = url;\n document.head.appendChild(link);\n }\n });\n }\n\n disconnectedCallback() {\n this.removeEventListener('a2uiaction', this._handleA2UIAction as EventListener);\n super.disconnectedCallback();\n }\n @property({ type: String, attribute: 'backend-url' }) backendUrl = '';\n @property({ type: String, attribute: 'app-name' }) appName = 'Lit-Chat-App';\n @property({ type: String, attribute: 'conversation-url' }) conversationUrl = '';\n @property({ type: String, attribute: 'agent-avatar' }) agentAvatar = '';\n @property({ type: String, attribute: 'disclaimer' }) disclaimer = 'Agent puede cometer errores. Verifica la información importante.';\n @property({ type: String, attribute: 'empty-text' }) emptyText = '¿En qué puedo ayudarte hoy?';\n @property({ type: String, attribute: 'placeholder' }) placeholder = 'Enviar un mensaje a Agent';\n @property({ type: String, attribute: 'header-title' }) headerTitle = 'Agent';\n @property({ type: Boolean, attribute: 'hide-header' }) hideHeader = false;\n @property({ type: Boolean, attribute: 'interceptor' }) interceptor = false;\n\n @state() private _historyOpen = false;\n @state() private _inspectorOpen = false;\n @state() private _inspectorEnabled = false;\n\n willUpdate(changedProperties: Map<string, any>) {\n\n if (changedProperties.has('interceptor')) {\n if (this.interceptor) {\n this.enableFetchInterceptor();\n } else {\n fetchInterceptorService.destroy();\n }\n }\n if (changedProperties.has('backendUrl')\n || changedProperties.has('appName')\n || changedProperties.has('conversationUrl')) {\n this._chatController.initialize({\n backendUrl: this.backendUrl,\n appName: this.appName,\n conversationUrl: this.conversationUrl,\n inspector: this.hasAttribute('inspector') || (this as any).inspector\n });\n this._inspectorEnabled = this.hasAttribute('inspector') || (this as any).inspector;\n }\n\n }\n\n /**\n * Enables the fetch interceptor for development purposes.\n * This will only work if the application is running in development mode.\n */\n public enableFetchInterceptor() {\n if (import.meta.env.DEV) {\n fetchInterceptorService.init();\n } else {\n console.warn('Fetch interceptor is only available in development mode.');\n }\n }\n\n private _handleSend(e: CustomEvent) {\n this._chatController.sendMessage(e.detail.content);\n }\n\n private _handleNewThread() {\n this._chatController.startNewThread();\n }\n\n /**\n * API Pública para establecer el contexto de la aplicación.\n * @param appContext Contexto de la aplicación (AgentState o AppContext)\n */\n public setAppContext(appContext: AppContext) {\n this._chatController.setAppContext(appContext);\n }\n\n /**\n * API Pública para establecer el estado dinámico de la aplicación.\n * @param appState Estado dinámico de la aplicación.\n */\n public setAppState(appState: AppState) {\n this._chatController.setAppState(appState);\n }\n\n public setAppLocation(location: AppState[\"location\"]) {\n this._chatController.setAppLocation(location);\n }\n\n public setAppUI(ui: AppState[\"ui\"]) {\n this._chatController.setAppUI(ui);\n }\n\n public setAppFocus(focus: AppState[\"focus\"]) {\n this._chatController.setAppFocus(focus);\n }\n\n /**\n * Establece los prompts sugeridos que se mostrarán al usuario.\n * @param prompts Lista de prompts sugeridos.\n */\n public setSuggestedPrompts(prompts: SuggestedPrompt[]) {\n this._chatController.setSuggestedPrompts(prompts);\n }\n\n\n private _toggleHistory() {\n this._historyOpen = !this._historyOpen;\n if (this._historyOpen) {\n this._chatController.refreshConversations();\n }\n }\n\n private _handleSelectThread(e: CustomEvent) {\n console.log('Selected conversation:', e.detail.conversation);\n this._chatController.loadConversation(e.detail.conversation.id);\n this._historyOpen = false;\n }\n\n private _toggleInspector() {\n this._inspectorOpen = !this._inspectorOpen;\n }\n\n render() {\n return html`\n <div class=\"chat-layout\">\n ${!this.hideHeader ? html`\n <agent-chat-header \n .title=\"${this.headerTitle}\"\n @new-thread=\"${this._handleNewThread}\"\n @toggle-history=\"${this._toggleHistory}\"\n ></agent-chat-header>\n ` : ''}\n <agent-chat-history-list \n .conversations=\"${this._chatController.conversations}\" \n ?open=\"${this._historyOpen}\"\n @select-thread=\"${this._handleSelectThread}\"\n ></agent-chat-history-list>\n <agent-chat-thread \n .messages=\"${this._chatController.messages}\" \n ?isRunning=\"${this._chatController.isRunning}\"\n .agentAvatar=\"${this.agentAvatar}\"\n .emptyText=\"${this.emptyText}\">\n </agent-chat-thread>\n <agent-chat-composer \n ?isRunning=\"${this._chatController.isRunning}\" \n .disclaimer=\"${this.disclaimer}\"\n .placeholder=\"${this.placeholder}\"\n .prompts=\"${this._chatController.showPrompts ? this._chatController.suggestedPrompts : []}\"\n @send=\"${this._handleSend}\">\n </agent-chat-composer>\n\n ${this._inspectorEnabled ? html`\n <button class=\"inspector-toggle\" @click=\"${this._toggleInspector}\" title=\"Inspector\">\n ${ToolIcon}\n </button>\n ` : ''}\n\n ${this._inspectorOpen ? html`\n <agent-inspector-window \n @close=\"${this._toggleInspector}\"\n @context-update=\"${this._handleContextUpdate}\"\n @state-update=\"${this._handleStateUpdate}\"\n ></agent-inspector-window>\n ` : ''}\n </div>\n `;\n }\n\n private _handleContextUpdate(e: CustomEvent) {\n this.setAppContext(e.detail);\n }\n\n private _handleA2UIAction(e: CustomEvent) {\n const { action, surfaceId } = e.detail;\n if (!action) return;\n\n console.log('AgentChat: A2UI Action received:', action, 'Surface:', surfaceId);\n\n // Intentamos obtener un surfaceId por defecto si no viene en el evento\n const activeSurfaceId = surfaceId || Array.from(a2uiService.processor.getSurfaces().keys())[0] || 'root';\n\n // Handler específico para decisiones de autenticación/consentimiento\n if (action.name === 'decision') {\n this._handleAuthDecision(action, activeSurfaceId);\n return;\n }\n\n // Handler genérico para URLs (openLink, etc)\n this._handleGenericUrlAction(action, activeSurfaceId);\n }\n\n /**\n * Maneja acciones de tipo 'decision' (Aprobar/Denegar).\n * Si es 'approve', abre una URL y espera a que se cierre la pestaña antes de notificar.\n * Si es 'deny', notifica inmediatamente.\n */\n private _handleAuthDecision(action: any, surfaceId: string) {\n const context = action.context || [];\n const decisionParam = context.find((p: any) => p.key === 'userDecision');\n const decision = a2uiService.resolveValue(surfaceId, decisionParam?.value);\n\n const urlParam = context.find((p: any) => ['url', 'href', 'link', 'uri'].includes(p.key?.toLowerCase()));\n const url = a2uiService.resolveValue(surfaceId, urlParam?.value);\n\n console.log(`AgentChat: Specialized decision handler: ${decision}`, action);\n\n if (decision === 'deny') {\n console.log('AgentChat: User denied the request.');\n this._chatController.sendMessage(\n `User selected \"Deny\" for action \"${action.name}\".`,\n 'tool'\n );\n return;\n }\n\n if (decision === 'approve') {\n if (url) {\n console.log(`AgentChat: User selected \"Approve\". Opening auth URL: ${url}`);\n const win = window.open(url, '_blank');\n\n if (win) {\n const checkClosed = setInterval(() => {\n if (win.closed) {\n clearInterval(checkClosed);\n console.log('AgentChat: Auth tab closed. Notifying approval.');\n this._chatController.sendMessage(\n `User approved the request \"${action.name}\" and completed authentication.`,\n 'tool'\n );\n }\n }, 1000);\n } else {\n console.error('AgentChat: Failed to open auth tab.');\n }\n } else {\n // Si no hay URL, simplemente notificamos la aprobación\n console.log('AgentChat: User approved (no URL provided).');\n this._chatController.sendMessage(\n `User selected \"Approve\" for action \"${action.name}\".`,\n 'tool'\n );\n }\n }\n }\n\n /**\n * Handler genérico para cualquier acción que contenga una URL.\n */\n private _handleGenericUrlAction(action: any, surfaceId: string) {\n const urlParam = action.context?.find((p: any) =>\n ['url', 'href', 'link', 'uri'].includes(p.key?.toLowerCase())\n );\n const url = a2uiService.resolveValue(surfaceId, urlParam?.value);\n\n if (url) {\n console.log(`AgentChat: Opening generic URL: ${url}`);\n window.open(url, '_blank');\n } else if (action.name === 'openLink') {\n console.warn('AgentChat: openLink action received but no URL could be resolved:', action);\n } else {\n console.warn('AgentChat: A2UI Action received without recognizable purpose:', action);\n }\n }\n\n private _handleStateUpdate(e: CustomEvent) {\n this.setAppState(e.detail);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'agent-chat': AgentChat;\n }\n\n interface HTMLElementEventMap {\n 'controller-ready': CustomEvent<ChatController>;\n }\n}\n","import './components/agent-chat';\n\n\nexport * from './components/agent-chat';\nexport * from './hooks';\nexport * from './services/chat-portal.service';\nexport * from './services/conversation.service';\nexport * from './services/fetch-interceptor.service';\nexport * from './models/portal.types';\nexport * from './models/conversation.types';\nexport * from './models/chat.types';\n\n/**\n * Mounts the Agent Chat component to a target element.\n * @param element The DOM element to mount the chat into.\n * @param options Configuration options for the chat.\n */\nexport function mount(element: HTMLElement, options: any = {}) {\n const chat = document.createElement('agent-chat');\n\n // Apply options if any (assuming AgentChat has properties we can set)\n // For now dealing with the component as is.\n Object.keys(options).forEach(key => {\n if (key in chat) {\n // @ts-ignore\n chat[key] = options[key];\n }\n });\n\n element.appendChild(chat);\n return chat;\n}\n\n/**\n * Registers the web component.\n * (It's already registered by import, but this can be a safe-guard re-export or initialization function)\n */\nexport function register() {\n // verify if already defined? \n // currently agent-chat.ts likely calls customElements.define side-effect.\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,22,23,24,25,26,27,28,29,30,31,32,33],"mappings":";;;;;;;;AAKA,IAAMA,MAAE,YAAWC,MAAED,IAAE,eAAsBA,IAAE,aAAX,KAAK,KAAgBA,IAAE,SAAS,iBAAe,wBAAuB,SAAS,aAAW,aAAY,cAAc,WAAUE,MAAE,QAAQ,EAACC,sBAAE,IAAI,SAAO,EAAOC,MAAN,MAAO;CAAC,YAAY,GAAE,GAAE,GAAE;AAAC,MAAG,KAAK,eAAa,CAAC,GAAED,MAAID,IAAE,OAAM,MAAM,oEAAoE;AAAC,OAAK,UAAQF,GAAE,KAAK,IAAEC;;CAAE,IAAI,aAAY;EAAC,IAAID,IAAE,KAAK,GAAQE,IAAE,KAAK;AAAE,MAAGD,OAAYD,MAAT,KAAK,GAAM;GAAC,IAAMC,IAAWC,MAAT,KAAK,KAAWA,EAAE,WAAN;AAAa,SAAI,IAAEC,IAAE,IAAID,EAAE,GAAWF,MAAT,KAAK,OAAS,KAAK,IAAE,IAAE,IAAI,eAAa,EAAE,YAAY,KAAK,QAAQ,EAACC,KAAGE,IAAE,IAAID,GAAEF,EAAE;;AAAE,SAAOA;;CAAE,WAAU;AAAC,SAAO,KAAK;;GAAeK,OAAE,MAAG,IAAID,IAAY,OAAOJ,KAAjB,WAAmBA,IAAEA,IAAE,IAAG,KAAK,GAAEE,IAAE,EAACI,OAAG,GAAE,GAAGL,MAAiU,IAAIG,IAApTJ,EAAE,WAAN,IAAaA,EAAE,KAAGC,EAAE,QAAQ,GAAE,GAAE,MAAIA,MAAG,MAAG;AAAC,KAAG,CAAC,MAAID,EAAE,aAAa,QAAOA,EAAE;AAAQ,KAAa,OAAOA,KAAjB,SAAmB,QAAOA;AAAE,OAAM,MAAM,qEAAmEA,IAAE,uFAAuF;GAAGE,EAAE,GAACF,EAAEG,IAAE,IAAGH,EAAE,GAAG,EAAgBA,GAAEE,IAAE,EAAEK,OAAG,GAAE,MAAI;AAAC,KAAGN,IAAE,GAAE,qBAAmBE,EAAE,KAAI,MAAGH,aAAa,gBAAcA,IAAEA,EAAE,WAAW;KAAM,MAAI,IAAMC,KAAKE,GAAE;EAAC,IAAMA,IAAE,SAAS,cAAc,QAAQ,EAACC,IAAEJ,IAAE;AAAS,EAASI,MAAT,KAAK,KAAOD,EAAE,aAAa,SAAQC,EAAE,EAAC,EAAE,cAAYH,EAAE,SAAQC,EAAE,YAAYC,EAAE;;GAAGK,MAAEP,OAAE,MAAGD,KAAE,MAAGA,aAAa,kBAAe,MAAG;CAAC,IAAIC,IAAE;AAAG,MAAI,IAAMC,KAAKF,EAAE,SAAS,MAAGE,EAAE;AAAQ,QAAOG,IAAEJ,EAAE;GAAGD,EAAE,GAACA,GCA/yC,EAAC,IAAGS,KAAE,gBAAeC,KAAE,0BAAyBC,KAAE,qBAAoBC,KAAE,uBAAsBC,KAAE,gBAAeC,QAAG,QAAOC,MAAE,YAAWC,MAAED,IAAE,cAAaE,MAAED,MAAEA,IAAE,cAAY,IAAGE,MAAEH,IAAE,gCAA+BI,OAAG,GAAE,MAAIC,GAAEC,MAAE;CAAC,YAAY,GAAE,GAAE;AAAC,UAAOC,GAAP;GAAU,KAAK;AAAQ,QAAEF,IAAEH,MAAE;AAAK;GAAM,KAAK;GAAO,KAAK,MAAM,KAAQG,KAAN,OAAQA,IAAE,KAAK,UAAUA,EAAE;;AAAC,SAAOA;;CAAG,cAAc,GAAE,GAAE;EAAC,IAAIX,IAAEW;AAAE,UAAOE,GAAP;GAAU,KAAK;AAAQ,QAASF,MAAP;AAAS;GAAM,KAAK;AAAO,QAASA,MAAP,OAAS,OAAK,OAAOA,EAAE;AAAC;GAAM,KAAK;GAAO,KAAK,MAAM,KAAG;AAAC,QAAE,KAAK,MAAMA,EAAE;WAAS;AAAC,QAAE;;;AAAM,SAAOX;;CAAG,EAACc,OAAG,GAAE,MAAI,CAACd,IAAEW,GAAEE,EAAE,EAACE,MAAE;CAAC,WAAU,CAAC;CAAE,MAAK;CAAO,WAAUH;CAAE,SAAQ,CAAC;CAAE,YAAW,CAAC;CAAE,YAAWE;CAAE;AAAC,OAAO,aAAW,OAAO,WAAW,EAAC,IAAE,wCAAsB,IAAI,SAAO;AAAC,IAAM,IAAN,cAAgB,YAAW;CAAC,OAAO,eAAe,GAAE;AAAC,OAAK,MAAM,GAAE,KAAK,MAAI,EAAE,EAAE,KAAKH,EAAE;;CAAC,WAAW,qBAAoB;AAAC,SAAO,KAAK,UAAU,EAAC,KAAK,QAAM,CAAC,GAAG,KAAK,KAAK,MAAM,CAAC;;CAAC,OAAO,eAAe,GAAE,IAAEI,KAAE;AAAC,MAAGF,EAAE,UAAQ,EAAE,YAAU,CAAC,IAAG,KAAK,MAAM,EAAC,KAAK,UAAU,eAAeF,EAAE,KAAG,CAAC,IAAE,OAAO,OAAOE,EAAE,EAAE,UAAQ,CAAC,IAAG,KAAK,kBAAkB,IAAIF,GAAEE,EAAE,EAAC,CAACA,EAAE,YAAW;GAAC,IAAMb,IAAE,QAAQ,EAACE,IAAE,KAAK,sBAAsBS,GAAEX,GAAEa,EAAE;AAAC,GAASX,MAAT,KAAK,KAAOD,IAAE,KAAK,WAAUU,GAAET,EAAE;;;CAAE,OAAO,sBAAsB,GAAE,GAAE,GAAE;EAAC,IAAK,EAAC,KAAID,GAAE,KAAIE,MAAGD,IAAE,KAAK,WAAUS,EAAE,IAAE;GAAC,MAAK;AAAC,WAAO,KAAKE;;GAAI,IAAI,GAAE;AAAC,SAAKA,KAAGF;;GAAG;AAAC,SAAM;GAAC,KAAIV;GAAE,IAAI,GAAE;IAAC,IAAMC,IAAED,GAAG,KAAK,KAAK;AAAC,OAAG,KAAK,MAAKY,EAAE,EAAC,KAAK,cAAcF,GAAET,GAAEF,EAAE;;GAAE,cAAa,CAAC;GAAE,YAAW,CAAC;GAAE;;CAAC,OAAO,mBAAmB,GAAE;AAAC,SAAO,KAAK,kBAAkB,IAAIW,EAAE,IAAEI;;CAAE,OAAO,OAAM;AAAC,MAAG,KAAK,eAAeL,IAAE,oBAAoB,CAAC,CAAC;EAAO,IAAMC,IAAEN,IAAE,KAAK;AAAC,IAAE,UAAU,EAAUM,EAAE,MAAX,KAAK,MAAU,KAAK,IAAE,CAAC,GAAGA,EAAE,EAAE,GAAE,KAAK,oBAAkB,IAAI,IAAIA,EAAE,kBAAkB;;CAAC,OAAO,WAAU;AAAC,MAAG,KAAK,eAAeD,IAAE,YAAY,CAAC,CAAC;AAAO,MAAG,KAAK,YAAU,CAAC,GAAE,KAAK,MAAM,EAAC,KAAK,eAAeA,IAAE,aAAa,CAAC,EAAC;GAAC,IAAMC,IAAE,KAAK,YAAWE,IAAE,CAAC,GAAGV,IAAEQ,EAAE,EAAC,GAAGP,IAAEO,EAAE,CAAC;AAAC,QAAI,IAAMX,KAAKa,EAAE,MAAK,eAAeb,GAAEW,EAAEX,GAAG;;EAAC,IAAMW,IAAE,KAAK,OAAO;AAAU,MAAUA,MAAP,MAAS;GAAC,IAAME,IAAE,oBAAoB,IAAIF,EAAE;AAAC,OAAYE,MAAT,KAAK,EAAM,MAAI,IAAK,CAACF,GAAEX,MAAKa,EAAE,MAAK,kBAAkB,IAAIF,GAAEX,EAAE;;AAAC,OAAK,uBAAK,IAAI,KAAG;AAAC,OAAI,IAAK,CAACW,GAAEE,MAAK,KAAK,mBAAkB;GAAC,IAAMb,IAAE,KAAK,KAAKW,GAAEE,EAAE;AAAC,GAASb,MAAT,KAAK,KAAO,KAAK,KAAK,IAAIA,GAAEW,EAAE;;AAAC,OAAK,gBAAc,KAAK,eAAe,KAAK,OAAO;;CAAC,OAAO,eAAe,GAAE;EAAC,IAAMX,IAAE,EAAE;AAAC,MAAG,MAAM,QAAQa,EAAE,EAAC;GAAC,IAAMZ,IAAE,IAAI,IAAIY,EAAE,KAAK,SAAI,CAAC,SAAS,CAAC;AAAC,QAAI,IAAMA,KAAKZ,EAAE,GAAE,QAAQU,IAAEE,EAAE,CAAC;QAAM,CAASA,MAAT,KAAK,KAAOb,EAAE,KAAKW,IAAEE,EAAE,CAAC;AAAC,SAAOb;;CAAE,OAAO,KAAK,GAAE,GAAE;EAAC,IAAMA,IAAEa,EAAE;AAAU,SAAM,CAAC,MAAIb,IAAE,KAAK,IAAY,OAAOA,KAAjB,WAAmBA,IAAY,OAAOW,KAAjB,WAAmBA,EAAE,aAAa,GAAC,KAAK;;CAAE,cAAa;AAAC,SAAO,EAAC,KAAK,OAAK,KAAK,GAAE,KAAK,kBAAgB,CAAC,GAAE,KAAK,aAAW,CAAC,GAAE,KAAK,OAAK,MAAK,KAAK,MAAM;;CAAC,OAAM;AAAC,OAAK,OAAK,IAAI,SAAQ,MAAG,KAAK,iBAAeA,EAAE,EAAC,KAAK,uBAAK,IAAI,KAAG,EAAC,KAAK,MAAM,EAAC,KAAK,eAAe,EAAC,KAAK,YAAY,GAAG,SAAQ,MAAGA,EAAE,KAAK,CAAC;;CAAC,cAAc,GAAE;AAAC,GAAC,KAAK,yBAAO,IAAI,KAAG,EAAE,IAAIA,EAAE,EAAU,KAAK,eAAd,KAAK,KAAqB,KAAK,eAAaA,EAAE,iBAAiB;;CAAC,iBAAiB,GAAE;AAAC,OAAK,MAAM,OAAOA,EAAE;;CAAC,OAAM;EAAC,IAAMA,oBAAE,IAAI,KAAG,EAACE,IAAE,KAAK,YAAY;AAAkB,OAAI,IAAMb,KAAKa,EAAE,MAAM,CAAC,MAAK,eAAeb,EAAE,KAAGW,EAAE,IAAIX,GAAE,KAAKA,GAAG,EAAC,OAAO,KAAKA;AAAI,IAAE,OAAK,MAAI,KAAK,OAAKW;;CAAG,mBAAkB;EAAC,IAAMA,IAAE,KAAK,cAAY,KAAK,aAAa,KAAK,YAAY,kBAAkB;AAAC,SAAOE,IAAEF,GAAE,KAAK,YAAY,cAAc,EAACA;;CAAE,oBAAmB;AAAC,OAAK,eAAa,KAAK,kBAAkB,EAAC,KAAK,eAAe,CAAC,EAAE,EAAC,KAAK,MAAM,SAAQ,MAAGA,EAAE,iBAAiB,CAAC;;CAAC,eAAe,GAAE;CAAE,uBAAsB;AAAC,OAAK,MAAM,SAAQ,MAAGA,EAAE,oBAAoB,CAAC;;CAAC,yBAAyB,GAAE,GAAE,GAAE;AAAC,OAAK,KAAKA,GAAEX,EAAE;;CAAC,KAAK,GAAE,GAAE;EAAC,IAAMA,IAAE,KAAK,YAAY,kBAAkB,IAAIW,EAAE,EAACV,IAAE,KAAK,YAAY,KAAKU,GAAEX,EAAE;AAAC,MAAYC,MAAT,KAAK,KAAO,CAAC,MAAID,EAAE,SAAQ;GAAC,IAAME,KAAYF,EAAE,WAAW,gBAAtB,KAAK,IAAyCY,MAAZZ,EAAE,WAAa,YAAYa,GAAEb,EAAE,KAAK;AAAC,QAAK,OAAKW,GAAQT,KAAN,OAAQ,KAAK,gBAAgBD,EAAE,GAAC,KAAK,aAAaA,GAAEC,EAAE,EAAC,KAAK,OAAK;;;CAAM,KAAK,GAAE,GAAE;EAAC,IAAMF,IAAE,KAAK,aAAYC,IAAED,EAAE,KAAK,IAAIW,EAAE;AAAC,MAAYV,MAAT,KAAK,KAAO,KAAK,SAAOA,GAAE;GAAC,IAAMU,IAAEX,EAAE,mBAAmBC,EAAE,EAACC,IAAc,OAAOS,EAAE,aAArB,aAA+B,EAAC,eAAcA,EAAE,WAAU,GAAUA,EAAE,WAAW,kBAAtB,KAAK,IAA2CC,MAAZD,EAAE;AAAY,QAAK,OAAKV;GAAE,IAAME,IAAED,EAAE,cAAcW,GAAEF,EAAE,KAAK;AAAC,QAAKV,KAAGE,KAAG,KAAK,MAAM,IAAIF,EAAE,IAAEE,GAAE,KAAK,OAAK;;;CAAM,cAAc,GAAE,GAAE,GAAE,IAAE,CAAC,GAAE,GAAE;AAAC,MAAYQ,MAAT,KAAK,GAAM;GAAC,IAAMR,IAAE,KAAK;AAAY,OAAG,CAAC,MAAIF,MAAI,IAAE,KAAKU,KAAI,MAAIR,EAAE,mBAAmBQ,EAAE,EAAC,GAAGX,EAAE,cAAYc,KAAGZ,GAAEW,EAAE,IAAEb,EAAE,cAAYA,EAAE,WAASE,MAAI,KAAK,MAAM,IAAIS,EAAE,IAAE,CAAC,KAAK,aAAaR,EAAE,KAAKQ,GAAEX,EAAE,CAAC,EAAE;AAAO,QAAK,EAAEW,GAAEE,GAAEb,EAAE;;AAAC,GAAC,MAAI,KAAK,oBAAkB,KAAK,OAAK,KAAK,MAAM;;CAAE,EAAE,GAAE,GAAE,EAAC,YAAWA,GAAE,SAAQC,GAAE,SAAQC,KAAG,GAAE;AAAC,OAAG,EAAE,KAAK,yBAAO,IAAI,KAAG,EAAE,IAAIS,EAAE,KAAG,KAAK,KAAK,IAAIA,GAAER,KAAGU,KAAG,KAAKF,GAAG,EAAC,CAAC,MAAIT,KAAYC,MAAT,KAAK,OAAS,KAAK,KAAK,IAAIQ,EAAE,KAAG,KAAK,cAAYX,MAAI,IAAE,KAAK,IAAG,KAAK,KAAK,IAAIW,GAAEE,EAAE,GAAE,CAAC,MAAIZ,KAAG,KAAK,SAAOU,MAAI,KAAK,yBAAO,IAAI,KAAG,EAAE,IAAIA,EAAE;;CAAE,MAAM,OAAM;AAAC,OAAK,kBAAgB,CAAC;AAAE,MAAG;AAAC,SAAM,KAAK;WAAWA,GAAE;AAAC,WAAQ,OAAOA,EAAE;;EAAC,IAAMA,IAAE,KAAK,gBAAgB;AAAC,SAAaA,KAAN,QAAS,MAAMA,GAAE,CAAC,KAAK;;CAAgB,iBAAgB;AAAC,SAAO,KAAK,eAAe;;CAAC,gBAAe;AAAC,MAAG,CAAC,KAAK,gBAAgB;AAAO,MAAG,CAAC,KAAK,YAAW;AAAC,OAAG,KAAK,eAAa,KAAK,kBAAkB,EAAC,KAAK,MAAK;AAAC,SAAI,IAAK,CAACA,GAAEE,MAAK,KAAK,KAAK,MAAKF,KAAGE;AAAE,SAAK,OAAK,KAAK;;GAAE,IAAMF,IAAE,KAAK,YAAY;AAAkB,OAAGA,EAAE,OAAK,EAAE,MAAI,IAAK,CAACE,GAAEb,MAAKW,GAAE;IAAC,IAAK,EAAC,SAAQA,MAAGX,GAAEC,IAAE,KAAKY;AAAG,KAAC,MAAIF,KAAG,KAAK,KAAK,IAAIE,EAAE,IAAWZ,MAAT,KAAK,KAAO,KAAK,EAAEY,GAAE,KAAK,GAAEb,GAAEC,EAAE;;;EAAE,IAAIU,IAAE,CAAC,GAAQE,IAAE,KAAK;AAAK,MAAG;AAAC,OAAE,KAAK,aAAaA,EAAE,EAACF,KAAG,KAAK,WAAWE,EAAE,EAAC,KAAK,MAAM,SAAQ,MAAGF,EAAE,cAAc,CAAC,EAAC,KAAK,OAAOE,EAAE,IAAE,KAAK,MAAM;WAAOA,GAAE;AAAC,SAAM,IAAE,CAAC,GAAE,KAAK,MAAM,EAACA;;AAAE,OAAG,KAAK,KAAKA,EAAE;;CAAC,WAAW,GAAE;CAAE,KAAK,GAAE;AAAC,OAAK,MAAM,SAAQ,MAAGF,EAAE,eAAe,CAAC,EAAC,KAAK,eAAa,KAAK,aAAW,CAAC,GAAE,KAAK,aAAaA,EAAE,GAAE,KAAK,QAAQA,EAAE;;CAAC,OAAM;AAAC,OAAK,uBAAK,IAAI,KAAG,EAAC,KAAK,kBAAgB,CAAC;;CAAE,IAAI,iBAAgB;AAAC,SAAO,KAAK,mBAAmB;;CAAC,oBAAmB;AAAC,SAAO,KAAK;;CAAK,aAAa,GAAE;AAAC,SAAM,CAAC;;CAAE,OAAO,GAAE;AAAC,OAAK,SAAO,KAAK,KAAK,SAAQ,MAAG,KAAK,KAAKA,GAAE,KAAKA,GAAG,CAAC,EAAC,KAAK,MAAM;;CAAC,QAAQ,GAAE;CAAE,aAAa,GAAE;;AAAG,EAAE,gBAAc,EAAE,EAAC,EAAE,oBAAkB,EAAC,MAAK,QAAO,EAAC,EAAED,IAAE,oBAAoB,oBAAE,IAAI,KAAG,EAAC,EAAEA,IAAE,YAAY,oBAAE,IAAI,KAAG,EAACD,MAAI,EAAC,iBAAgB,GAAE,CAAC,GAAE,IAAE,4BAA0B,EAAE,EAAE,KAAK,QAAQ;;;;;;ACAjyL,IAAMO,MAAE,YAAWC,OAAE,MAAGD,GAAEE,MAAEF,IAAE,cAAaG,MAAED,MAAEA,IAAE,aAAa,YAAW,EAAC,aAAW,MAAGF,GAAE,CAAC,GAAC,KAAK,GAAEI,MAAE,SAAQC,MAAE,OAAO,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,IAAGC,MAAE,MAAID,KAAEE,MAAE,IAAID,IAAE,IAAGE,MAAE,UAASC,YAAMD,IAAE,cAAc,GAAG,EAACE,OAAE,MAAUV,MAAP,QAAoB,OAAOA,KAAjB,YAAgC,OAAOA,KAAnB,YAAqBW,MAAE,MAAM,SAAQC,OAAE,MAAGD,IAAEX,EAAE,IAAc,OAAOA,IAAI,OAAO,aAA9B,YAAwCa,MAAE,cAAcC,MAAE,uDAAsD,IAAE,QAAOC,MAAE,MAAKC,MAAE,OAAO,KAAKH,IAAE,oBAAoBA,IAAE,IAAIA,IAAE,sCAAqC,IAAI,EAAC,IAAE,MAAK,IAAE,MAAKI,MAAE,sCAAwF,MAAjD,OAAI,GAAE,GAAGf,OAAK;CAAC,YAAWF;CAAE,SAAQC;CAAE,QAAOC;CAAE,GAAM,EAAE,EAAe,IAAE,OAAO,IAAI,eAAe,EAAC,IAAE,OAAO,IAAI,cAAc,EAAC,oBAAE,IAAI,SAAO,EAAC,IAAEM,IAAE,iBAAiBA,KAAE,IAAI;AAAC,SAAS,EAAE,GAAE,GAAE;AAAC,KAAG,CAACG,IAAEX,EAAE,IAAE,CAACA,EAAE,eAAe,MAAM,CAAC,OAAM,MAAM,iCAAiC;AAAC,QAAgBG,QAAT,KAAK,IAAsBF,IAAhBE,IAAE,WAAWF,EAAE;;AAAG,IAAM,KAAG,GAAE,MAAI;CAAC,IAAMC,IAAEF,EAAE,SAAO,GAAEG,IAAE,EAAE,EAAKG,GAAEE,IAAMP,MAAJ,IAAM,UAAYA,MAAJ,IAAM,WAAS,IAAGQ,IAAEK;AAAE,MAAI,IAAIb,IAAE,GAAEA,IAAEC,GAAE,KAAI;EAAC,IAAMA,IAAEF,EAAEC,IAAOS,GAAEC,GAAEC,IAAE,IAAGC,IAAE;AAAE,SAAKA,IAAEX,EAAE,WAAS,EAAE,YAAUW,GAAE,IAAEJ,EAAE,KAAKP,EAAE,EAAQS,MAAP,OAAW,KAAEF,EAAE,WAAUA,MAAIK,MAAUH,EAAE,OAAV,QAAa,IAAE,IAAWA,EAAE,OAAX,KAAK,IAAsBA,EAAE,OAAX,KAAK,IAAgEA,EAAE,OAAX,KAAK,MAAW,IAAEK,QAA/DC,IAAE,KAAKN,EAAE,GAAG,KAAG,IAAE,OAAO,OAAKA,EAAE,IAAG,IAAI,GAAE,IAAEK,OAA7D,IAAED,MAAmFN,MAAIO,MAAQL,EAAE,OAAR,OAAY,IAAEL,KAAGQ,KAAE,IAAE,MAAaH,EAAE,OAAX,KAAK,IAAS,IAAE,MAAI,IAAEF,EAAE,YAAUE,EAAE,GAAG,QAAO,IAAEA,EAAE,IAAG,IAAWA,EAAE,OAAX,KAAK,IAASK,MAAQL,EAAE,OAAR,OAAW,IAAE,KAAGF,MAAI,KAAGA,MAAI,IAAE,IAAEO,MAAEP,MAAI,KAAGA,MAAIM,MAAE,IAAED,OAAG,IAAEE,KAAE,IAAE,KAAK;EAAG,IAAME,IAAET,MAAIO,OAAGhB,EAAEC,IAAE,GAAG,WAAW,KAAK,GAAC,MAAI;AAAG,OAAGQ,MAAIK,MAAEZ,IAAEK,MAAEK,KAAG,KAAGT,EAAE,KAAKO,EAAE,EAACR,EAAE,MAAM,GAAEU,EAAE,GAACR,MAAEF,EAAE,MAAMU,EAAE,GAACP,MAAEa,KAAGhB,IAAEG,OAAQO,MAAL,KAAOX,IAAEiB;;AAAG,QAAM,CAAC,EAAElB,GAAEQ,KAAGR,EAAEE,MAAI,UAAYD,MAAJ,IAAM,WAAaA,MAAJ,IAAM,YAAU,IAAI,EAACE,EAAE;GAAQ,IAAN,MAAM,EAAC;CAAC,YAAY,EAAC,SAAQH,GAAE,YAAWC,KAAG,GAAE;EAAC,IAAIM;AAAE,OAAK,QAAM,EAAE;EAAC,IAAIC,IAAE,GAAEE,IAAE,GAAQC,IAAEX,EAAE,SAAO,GAAEY,IAAE,KAAK,OAAM,CAACC,GAAEC,KAAG,EAAEd,GAAEC,EAAE;AAAC,MAAG,KAAK,KAAG,EAAE,cAAcY,GAAEV,EAAE,EAAC,EAAE,cAAY,KAAK,GAAG,SAAYF,MAAJ,KAAWA,MAAJ,GAAM;GAAC,IAAMD,IAAE,KAAK,GAAG,QAAQ;AAAW,KAAE,YAAY,GAAGA,EAAE,WAAW;;AAAC,UAAa,IAAE,EAAE,UAAU,MAAtB,QAAyBY,EAAE,SAAOD,IAAG;AAAC,OAAOJ,EAAE,aAAN,GAAe;AAAC,QAAGA,EAAE,eAAe,CAAC,MAAI,IAAMP,KAAKO,EAAE,mBAAmB,CAAC,KAAGP,EAAE,SAASI,IAAE,EAAC;KAAC,IAAMH,IAAEa,EAAE,MAAKZ,IAAEK,EAAE,aAAaP,EAAE,CAAC,MAAMK,IAAE,EAACF,IAAE,eAAe,KAAKF,EAAE;AAAC,OAAE,KAAK;MAAC,MAAK;MAAE,OAAMO;MAAE,MAAKL,EAAE;MAAG,SAAQD;MAAE,MAAWC,EAAE,OAAR,MAAW,IAAQA,EAAE,OAAR,MAAW,IAAQA,EAAE,OAAR,MAAW,IAAE;MAAE,CAAC,EAACI,EAAE,gBAAgBP,EAAE;UAAM,GAAE,WAAWK,IAAE,KAAGO,EAAE,KAAK;KAAC,MAAK;KAAE,OAAMJ;KAAE,CAAC,EAACD,EAAE,gBAAgBP,EAAE;AAAE,QAAGiB,IAAE,KAAKV,EAAE,QAAQ,EAAC;KAAC,IAAMP,IAAEO,EAAE,YAAY,MAAMF,IAAE,EAACJ,IAAED,EAAE,SAAO;AAAE,SAAGC,IAAE,GAAE;AAAC,QAAE,cAAYC,MAAEA,IAAE,cAAY;AAAG,WAAI,IAAIA,IAAE,GAAEA,IAAED,GAAE,IAAI,GAAE,OAAOD,EAAEE,IAAGO,KAAG,CAAC,EAAC,EAAE,UAAU,EAACG,EAAE,KAAK;OAAC,MAAK;OAAE,OAAM,EAAEJ;OAAE,CAAC;AAAC,QAAE,OAAOR,EAAEC,IAAGQ,KAAG,CAAC;;;cAAeF,EAAE,aAAN,EAAe,KAAGA,EAAE,SAAOD,IAAE,GAAE,KAAK;IAAC,MAAK;IAAE,OAAME;IAAE,CAAC;QAAK;IAAC,IAAIR,IAAE;AAAG,YAAW,IAAEO,EAAE,KAAK,QAAQF,KAAEL,IAAE,EAAE,MAA7B,IAAgC,GAAE,KAAK;KAAC,MAAK;KAAE,OAAMQ;KAAE,CAAC,EAAC,KAAGH,IAAE,SAAO;;AAAE;;;CAAK,OAAO,cAAc,GAAE,GAAE;EAAC,IAAMH,IAAEM,IAAE,cAAc,WAAW;AAAC,SAAO,EAAE,YAAUR,GAAEE;;;AAAG,SAASiB,IAAE,GAAE,GAAE,IAAEnB,GAAE,GAAE;AAAC,KAAGC,MAAI,EAAE,QAAOA;CAAE,IAAIG,IAAWD,MAAT,KAAK,IAAkBD,EAAE,OAAdA,EAAE,OAAOC,IAAgBE,IAAEK,IAAET,EAAE,GAAC,KAAK,IAAEA,EAAE;AAAgB,QAAOG,GAAG,gBAAcC,MAAID,GAAG,OAAO,CAAC,EAAE,EAAUC,MAAT,KAAK,IAAM,IAAE,KAAK,KAAG,IAAE,IAAIA,EAAEL,EAAE,EAACI,EAAE,KAAKJ,GAAEE,GAAEC,EAAE,GAAWA,MAAT,KAAK,IAAyB,EAAE,OAAKC,IAA1B,CAAC,EAAE,SAAO,EAAE,EAAED,KAAGC,IAAqBA,MAAT,KAAK,MAAQ,IAAEe,IAAEnB,GAAEI,EAAE,KAAKJ,GAAEC,EAAE,OAAO,EAACG,GAAED,EAAE,GAAEF;;AAAE,IAAM,IAAN,MAAO;CAAC,YAAY,GAAE,GAAE;AAAC,OAAK,OAAK,EAAE,EAAC,KAAK,OAAK,KAAK,GAAE,KAAK,OAAKD,GAAE,KAAK,OAAKC;;CAAE,IAAI,aAAY;AAAC,SAAO,KAAK,KAAK;;CAAW,IAAI,OAAM;AAAC,SAAO,KAAK,KAAK;;CAAK,EAAE,GAAE;EAAC,IAAK,EAAC,IAAG,EAAC,SAAQA,KAAG,OAAMC,MAAG,KAAK,MAAKC,KAAGH,GAAG,iBAAeQ,KAAG,WAAWP,GAAE,CAAC,EAAE;AAAC,IAAE,cAAYE;EAAE,IAAIC,IAAE,EAAE,UAAU,EAACC,IAAE,GAAEC,IAAE,GAAEC,IAAEL,EAAE;AAAG,SAAcK,MAAT,KAAK,IAAO;AAAC,OAAGF,MAAIE,EAAE,OAAM;IAAC,IAAIN;AAAE,IAAIM,EAAE,SAAN,IAAW,IAAE,IAAI,EAAEH,GAAEA,EAAE,aAAY,MAAKJ,EAAE,GAAKO,EAAE,SAAN,IAAW,IAAE,IAAIA,EAAE,KAAKH,GAAEG,EAAE,MAAKA,EAAE,SAAQ,MAAKP,EAAE,GAAKO,EAAE,SAAN,MAAa,IAAE,IAAI,EAAEH,GAAE,MAAKJ,EAAE,GAAE,KAAK,KAAK,KAAKC,EAAE,EAAC,IAAEC,EAAE,EAAEI;;AAAG,SAAIC,GAAG,UAAQ,IAAE,EAAE,UAAU,EAAC;;AAAK,SAAO,EAAE,cAAYC,KAAEL;;CAAE,EAAE,GAAE;EAAC,IAAIF,IAAE;AAAE,OAAI,IAAMC,KAAK,KAAK,KAAK,CAASA,MAAT,KAAK,MAAiBA,EAAE,YAAX,KAAK,IAAoDA,EAAE,KAAKF,EAAEC,GAAG,IAAjDC,EAAE,KAAKF,GAAEE,GAAED,EAAE,EAAC,KAAGC,EAAE,QAAQ,SAAO,KAAiB;;GAAW,IAAN,MAAM,EAAC;CAAC,IAAI,OAAM;AAAC,SAAO,KAAK,MAAM,QAAM,KAAK;;CAAK,YAAY,GAAE,GAAE,GAAE,GAAE;AAAC,OAAK,OAAK,GAAE,KAAK,OAAK,GAAE,KAAK,OAAK,KAAK,GAAE,KAAK,OAAKF,GAAE,KAAK,OAAKC,GAAE,KAAK,OAAKC,GAAE,KAAK,UAAQC,GAAE,KAAK,OAAKA,GAAG,eAAa,CAAC;;CAAE,IAAI,aAAY;EAAC,IAAIH,IAAE,KAAK,KAAK,YAAiBC,IAAE,KAAK;AAAK,SAAgBA,MAAT,KAAK,KAAYD,GAAG,aAAR,OAAmB,IAAEC,EAAE,aAAYD;;CAAE,IAAI,YAAW;AAAC,SAAO,KAAK;;CAAK,IAAI,UAAS;AAAC,SAAO,KAAK;;CAAK,KAAK,GAAE,IAAE,MAAK;AAAC,MAAEmB,IAAE,MAAKnB,GAAEC,EAAE,EAACS,IAAEV,EAAE,GAACA,MAAI,KAASA,KAAN,QAAcA,MAAL,MAAQ,KAAK,SAAO,KAAG,KAAK,MAAM,EAAC,KAAK,OAAK,KAAGA,MAAI,KAAK,QAAMA,MAAI,KAAG,KAAK,EAAEA,EAAE,GAAUA,EAAE,eAAX,KAAK,IAAoCA,EAAE,aAAX,KAAK,IAAyBY,IAAEZ,EAAE,GAAC,KAAK,EAAEA,EAAE,GAAC,KAAK,EAAEA,EAAE,GAAlC,KAAK,EAAEA,EAAE,GAAvC,KAAK,EAAEA,EAAE;;CAAwD,EAAE,GAAE;AAAC,SAAO,KAAK,KAAK,WAAW,aAAaA,GAAE,KAAK,KAAK;;CAAC,EAAE,GAAE;AAAC,OAAK,SAAOA,MAAI,KAAK,MAAM,EAAC,KAAK,OAAK,KAAK,EAAEA,EAAE;;CAAE,EAAE,GAAE;AAAC,OAAK,SAAO,KAAGU,IAAE,KAAK,KAAK,GAAC,KAAK,KAAK,YAAY,OAAKV,IAAE,KAAK,EAAEQ,IAAE,eAAeR,EAAE,CAAC,EAAC,KAAK,OAAKA;;CAAE,EAAE,GAAE;EAAC,IAAK,EAAC,QAAOC,GAAE,YAAWC,MAAGF,GAAEG,IAAY,OAAOD,KAAjB,WAAmB,KAAK,KAAKF,EAAE,IAAWE,EAAE,OAAX,KAAK,MAAW,EAAE,KAAG,EAAE,cAAc,EAAEA,EAAE,GAAEA,EAAE,EAAE,GAAG,EAAC,KAAK,QAAQ,GAAEA;AAAG,MAAG,KAAK,MAAM,SAAOC,EAAE,MAAK,KAAK,EAAEF,EAAE;OAAK;GAAC,IAAMD,IAAE,IAAI,EAAEG,GAAE,KAAK,EAACD,IAAEF,EAAE,EAAE,KAAK,QAAQ;AAAC,KAAE,EAAEC,EAAE,EAAC,KAAK,EAAEC,EAAE,EAAC,KAAK,OAAKF;;;CAAG,KAAK,GAAE;EAAC,IAAIC,IAAE,EAAE,IAAID,EAAE,QAAQ;AAAC,SAAgBC,MAAT,KAAK,KAAO,EAAE,IAAID,EAAE,SAAQ,IAAE,IAAI,EAAEA,EAAE,CAAC,EAACC;;CAAE,EAAE,GAAE;AAAC,MAAE,KAAK,KAAK,KAAG,KAAK,OAAK,EAAE,EAAC,KAAK,MAAM;EAAE,IAAMA,IAAE,KAAK,MAASC,GAAEC,IAAE;AAAE,OAAI,IAAMC,KAAKJ,EAAE,OAAIC,EAAE,SAAOA,EAAE,KAAK,IAAE,IAAI,EAAE,KAAK,EAAEQ,KAAG,CAAC,EAAC,KAAK,EAAEA,KAAG,CAAC,EAAC,MAAK,KAAK,QAAQ,CAAC,GAAC,IAAER,EAAEE,IAAGD,EAAE,KAAKE,EAAE,EAAC;AAAI,MAAEH,EAAE,WAAS,KAAK,KAAKC,KAAGA,EAAE,KAAK,aAAYC,EAAE,EAAC,EAAE,SAAOA;;CAAG,KAAK,IAAE,KAAK,KAAK,aAAY,GAAE;AAAC,OAAI,KAAK,OAAO,CAAC,GAAE,CAAC,GAAED,EAAE,EAACF,MAAI,KAAK,OAAM;GAAC,IAAME,IAAED,IAAED,EAAE,CAAC;AAAY,OAAEA,EAAE,CAAC,QAAQ,EAAC,IAAEE;;;CAAG,aAAa,GAAE;AAAC,EAAS,KAAK,SAAd,KAAK,MAAgB,KAAK,OAAKF,GAAE,KAAK,OAAOA,EAAE;;GAAS,IAAN,MAAO;CAAC,IAAI,UAAS;AAAC,SAAO,KAAK,QAAQ;;CAAQ,IAAI,OAAM;AAAC,SAAO,KAAK,KAAK;;CAAK,YAAY,GAAE,GAAE,GAAE,GAAE,GAAE;AAAC,OAAK,OAAK,GAAE,KAAK,OAAK,GAAE,KAAK,OAAK,KAAK,GAAE,KAAK,UAAQA,GAAE,KAAK,OAAKC,GAAE,KAAK,OAAKE,GAAE,KAAK,UAAQC,GAAEF,EAAE,SAAO,KAAQA,EAAE,OAAP,MAAgBA,EAAE,OAAP,MAAW,KAAK,OAAK,MAAMA,EAAE,SAAO,EAAE,CAAC,qBAAK,IAAI,QAAM,CAAC,EAAC,KAAK,UAAQA,KAAG,KAAK,OAAK;;CAAE,KAAK,GAAE,IAAE,MAAK,GAAE,GAAE;EAAC,IAAME,IAAE,KAAK,SAAYC,IAAE,CAAC;AAAE,MAAYD,MAAT,KAAK,EAAM,KAAEe,IAAE,MAAKnB,GAAEC,GAAE,EAAE,EAAC,IAAE,CAACS,IAAEV,EAAE,IAAEA,MAAI,KAAK,QAAMA,MAAI,GAAEK,MAAI,KAAK,OAAKL;OAAO;GAAC,IAAMG,IAAEH,GAAMM,GAAEC;AAAE,QAAI,IAAEH,EAAE,IAAG,IAAE,GAAEE,IAAEF,EAAE,SAAO,GAAE,IAAI,KAAEe,IAAE,MAAKhB,EAAED,IAAEI,IAAGL,GAAEK,EAAE,EAACC,MAAI,MAAI,IAAE,KAAK,KAAKD,KAAI,MAAI,CAACI,IAAEH,EAAE,IAAEA,MAAI,KAAK,KAAKD,IAAGC,MAAI,IAAE,IAAE,IAAEP,MAAI,MAAI,MAAIO,KAAG,MAAIH,EAAEE,IAAE,KAAI,KAAK,KAAKA,KAAGC;;AAAE,OAAG,CAACJ,KAAG,KAAK,EAAEH,EAAE;;CAAC,EAAE,GAAE;AAAC,QAAI,IAAE,KAAK,QAAQ,gBAAgB,KAAK,KAAK,GAAC,KAAK,QAAQ,aAAa,KAAK,MAAKA,KAAG,GAAG;;GAAQ,IAAN,cAAgB,EAAC;CAAC,cAAa;AAAC,QAAM,GAAG,UAAU,EAAC,KAAK,OAAK;;CAAE,EAAE,GAAE;AAAC,OAAK,QAAQ,KAAK,QAAMA,MAAI,IAAE,KAAK,IAAEA;;GAAS,IAAN,cAAgB,EAAC;CAAC,cAAa;AAAC,QAAM,GAAG,UAAU,EAAC,KAAK,OAAK;;CAAE,EAAE,GAAE;AAAC,OAAK,QAAQ,gBAAgB,KAAK,MAAK,CAAC,CAACA,KAAGA,MAAI,EAAE;;GAAQ,IAAN,cAAgB,EAAC;CAAC,YAAY,GAAE,GAAE,GAAE,GAAE,GAAE;AAAC,QAAMA,GAAEC,GAAEC,GAAEC,GAAEC,EAAE,EAAC,KAAK,OAAK;;CAAE,KAAK,GAAE,IAAE,MAAK;AAAC,OAAI,IAAEe,IAAE,MAAKnB,GAAEC,GAAE,EAAE,IAAE,OAAK,EAAE;EAAO,IAAMC,IAAE,KAAK,MAAKC,IAAEH,MAAI,KAAGE,MAAI,KAAGF,EAAE,YAAUE,EAAE,WAASF,EAAE,SAAOE,EAAE,QAAMF,EAAE,YAAUE,EAAE,SAAQE,IAAEJ,MAAI,MAAIE,MAAI,KAAGC;AAAG,OAAG,KAAK,QAAQ,oBAAoB,KAAK,MAAK,MAAKD,EAAE,EAACE,KAAG,KAAK,QAAQ,iBAAiB,KAAK,MAAK,MAAKJ,EAAE,EAAC,KAAK,OAAKA;;CAAE,YAAY,GAAE;AAAC,EAAY,OAAO,KAAK,QAAxB,aAA6B,KAAK,KAAK,KAAK,KAAK,SAAS,QAAM,KAAK,SAAQA,EAAE,GAAC,KAAK,KAAK,YAAYA,EAAE;;GAAQ,IAAN,MAAO;CAAC,YAAY,GAAE,GAAE,GAAE;AAAC,OAAK,UAAQA,GAAE,KAAK,OAAK,GAAE,KAAK,OAAK,KAAK,GAAE,KAAK,OAAKC,GAAE,KAAK,UAAQC;;CAAE,IAAI,OAAM;AAAC,SAAO,KAAK,KAAK;;CAAK,KAAK,GAAE;AAAC,MAAE,MAAKF,EAAE;;GAAQ,IAAE;CAAC,GAAEI;CAAE,GAAEC;CAAE,GAAEC;CAAE,GAAE;CAAE,GAAE;CAAE;CAAE,GAAEM;CAAE,GAAEO;CAAE,GAAE;CAAE;CAAE,GAAE;CAAE,GAAE;CAAE,GAAE;CAAE,GAAE;CAAE,EAAC,IAAEnB,IAAE;AAAuB,IAAI,GAAE,EAAE,GAAE,IAAE,oBAAkB,EAAE,EAAE,KAAK,QAAQ;AAAC,IAAM,KAAG,GAAE,GAAE,MAAI;CAAC,IAAMG,IAAED,GAAG,gBAAcD,GAAMG,IAAED,EAAE;AAAW,KAAYC,MAAT,KAAK,GAAM;EAAC,IAAMJ,IAAEE,GAAG,gBAAc;AAAK,IAAE,aAAW,IAAE,IAAI,EAAED,EAAE,aAAaQ,KAAG,EAACT,EAAE,EAACA,GAAE,KAAK,GAAEE,KAAG,EAAE,CAAC;;AAAC,QAAOE,EAAE,KAAKJ,EAAE,EAACI;GCAz6NgB,MAAE,YAAiB,IAAN,cAAgBC,EAAC;CAAC,cAAa;AAAC,QAAM,GAAG,UAAU,EAAC,KAAK,gBAAc,EAAC,MAAK,MAAK,EAAC,KAAK,OAAK,KAAK;;CAAE,mBAAkB;EAAC,IAAMA,IAAE,MAAM,kBAAkB;AAAC,SAAO,KAAK,cAAc,iBAAeA,EAAE,YAAWA;;CAAE,OAAO,GAAE;EAAC,IAAMC,IAAE,KAAK,QAAQ;AAAC,OAAK,eAAa,KAAK,cAAc,cAAY,KAAK,cAAa,MAAM,OAAOD,EAAE,EAAC,KAAK,OAAKE,EAAED,GAAE,KAAK,YAAW,KAAK,cAAc;;CAAC,oBAAmB;AAAC,QAAM,mBAAmB,EAAC,KAAK,MAAM,aAAa,CAAC,EAAE;;CAAC,uBAAsB;AAAC,QAAM,sBAAsB,EAAC,KAAK,MAAM,aAAa,CAAC,EAAE;;CAAC,SAAQ;AAAC,SAAOA;;;AAAG,EAAE,gBAAc,CAAC,GAAE,EAAE,YAAa,CAAC,GAAEF,IAAE,2BAA2B,EAAC,YAAW,GAAE,CAAC;AAAC,IAAMI,MAAEJ,IAAE;AAA0BI,MAAI,EAAC,YAAW,GAAE,CAAC,GAAuD,IAAE,uBAAqB,EAAE,EAAE,KAAK,QAAQ;;;;;;ACAhyB,IAAM,KAAE,OAAI,GAAE,MAAI;AAAC,CAASC,MAAT,KAAK,IAAyD,eAAe,OAAOC,GAAEC,EAAE,GAA7EF,EAAE,qBAAmB;AAAC,iBAAe,OAAOC,GAAEC,EAAE;GAAE;GCAvEC,MAAE;CAAC,WAAU,CAAC;CAAE,MAAK;CAAO,WAAUC;CAAE,SAAQ,CAAC;CAAE,YAAWC;CAAE,EAACC,OAAG,IAAEH,KAAE,GAAE,MAAI;CAAC,IAAK,EAAC,MAAKI,GAAE,UAASC,MAAGF,GAAMG,IAAE,WAAW,oBAAoB,IAAID,EAAE;AAAC,KAAYC,MAAT,KAAK,KAAO,WAAW,oBAAoB,IAAID,GAAE,oBAAE,IAAI,KAAG,CAAC,EAAYD,MAAX,aAAe,CAAC,IAAE,OAAO,OAAOF,EAAE,EAAE,UAAQ,CAAC,IAAGI,EAAE,IAAIH,EAAE,MAAKD,EAAE,EAAcE,MAAb,YAAe;EAAC,IAAK,EAAC,MAAKJ,MAAGG;AAAE,SAAM;GAAC,IAAI,GAAE;IAAC,IAAMC,IAAEH,EAAE,IAAI,KAAK,KAAK;AAAC,MAAE,IAAI,KAAK,MAAKE,EAAE,EAAC,KAAK,cAAcH,GAAEI,GAAEF,GAAE,CAAC,GAAEC,EAAE;;GAAE,KAAK,GAAE;AAAC,WAAgBF,MAAT,KAAK,KAAO,KAAK,EAAED,GAAE,KAAK,GAAEE,GAAED,EAAE,EAACA;;GAAG;;AAAC,KAAcG,MAAX,UAAa;EAAC,IAAK,EAAC,MAAKJ,MAAGG;AAAE,SAAO,SAAS,GAAE;GAAC,IAAMC,IAAE,KAAKJ;AAAG,KAAE,KAAK,MAAKG,EAAE,EAAC,KAAK,cAAcH,GAAEI,GAAEF,GAAE,CAAC,GAAEC,EAAE;;;AAAE,OAAM,MAAM,qCAAmCC,EAAE;;AAAE,SAAS,EAAE,GAAE;AAAC,SAAO,GAAE,MAAc,OAAOJ,KAAjB,WAAmBG,IAAED,GAAED,GAAED,EAAE,KAAG,GAAE,GAAE,MAAI;EAAC,IAAMG,IAAEF,EAAE,eAAeD,EAAE;AAAC,SAAOC,EAAE,YAAY,eAAeD,GAAEE,EAAE,EAACC,IAAE,OAAO,yBAAyBF,GAAED,EAAE,GAAC,KAAK;IAAIE,GAAED,GAAED,EAAE;;;;;;GCA5yB,SAAS,EAAE,GAAE;AAAC,QAAOO,EAAE;EAAC,GAAGC;EAAE,OAAM,CAAC;EAAE,WAAU,CAAC;EAAE,CAAC;;;;;;;ACAvD,IAAMC,OAAG,GAAE,GAAE,OAAK,EAAE,eAAa,CAAC,GAAE,EAAE,aAAW,CAAC,GAAE,QAAQ,YAAoB,OAAOC,KAAjB,YAAoB,OAAO,eAAeD,GAAEC,GAAEC,EAAE,EAACA;;;;;GCApH,SAASC,IAAE,GAAE,GAAE;AAAC,SAAO,GAAE,GAAE,MAAI;EAAC,IAAMC,KAAE,MAAGC,EAAE,YAAY,cAAcF,EAAE,IAAE;AAAK,MAAGG,GAAE;GAAC,IAAK,EAAC,KAAIH,GAAE,KAAIG,MAAa,OAAOC,KAAjB,WAAmBC,IAAEC,YAAQ;IAAC,IAAMJ,IAAE,QAAQ;AAAC,WAAM;KAAC,MAAK;AAAC,aAAO,KAAKA;;KAAI,IAAI,GAAE;AAAC,WAAKA,KAAGF;;KAAG;OAAI;AAAC,UAAOE,IAAEG,GAAED,GAAE,EAAC,MAAK;IAAC,IAAIF,IAAEF,EAAE,KAAK,KAAK;AAAC,WAAgBE,MAAT,KAAK,MAAQ,IAAED,EAAE,KAAK,GAASC,MAAP,QAAU,KAAK,eAAaC,EAAE,KAAK,MAAKD,EAAE,GAAEA;MAAG,CAAC;;AAAC,SAAOA,IAAEG,GAAED,GAAE,EAAC,MAAK;AAAC,UAAOH,EAAE,KAAK;KAAE,CAAC;;;ACH3W,MAAa,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GCAZ,WAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;GCAZ,WAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACGlB,IAAA,kBAAA,cAA8B,EAAW;;8BAGxB;;2BAFN;CAIhB,SAAS;AACP,SAAO,CAAI;uBACQ,KAAK,QAAQ,gBAAgB,KAAK,WAAW,SAAS;;;;;;YAJ1E,GAAU,CAAA,EAAA,gBAAA,WAAA,WAAA,KAAA,EAAA,gCAJZ,EAAc,oBAAoB,CAAA,EAAA,gBAAA;ACFnC,MAAa,WAAW,CAAI;;;;SAMf,WAAW,CAAI;;;;SAMf,WAAW,CAAI;;;;SAMf,aAAa,CAAI;;;;SAMjB,WAAW,CAAI;;;SAKf,cAAc,CAAI;;;;;SAOlB,WAAW,CAAI;;;;AC/BrB,IAAA,aAAA,cAAyB,EAAW;;4BAGL;;2BAFpB;CAIhB,mBAA2B;AACzB,OAAK,cAAc,IAAI,YAAY,cAAc;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;;CAGtF,uBAA+B;AAC7B,OAAK,cAAc,IAAI,YAAY,kBAAkB;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;;CAG1F,SAAS;AACP,SAAO,CAAI;;cAED,KAAK,MAAM;;kEAEyC,KAAK,qBAAqB;kBAC1E,YAAY;;8DAEgC,KAAK,iBAAiB;kBAClE,SAAS;;;;;;;YAnBxB,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,WAAA,WAAA,SAAA,KAAA,EAAA,2BAJ5B,EAAc,oBAAoB,CAAA,EAAA,WAAA;ACJnC,MAAa,WAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GCAZ,WAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GCikBZ,cAAc,IA5jB3B,MAAyB;CAMrB,cAAc;mBALkC,KAAK,KAAK,kCAAkC;;CAa5F,aAAoB,GAAmB,GAAsB;AACpD,SACL;OAAI,EAAW,kBAAkB,KAAA,EAAW,QAAO,EAAW;AAC9D,OAAI,EAAW,kBAAkB,KAAA,EAAW,QAAO,EAAW;AAC9D,OAAI,EAAW,mBAAmB,KAAA,EAAW,QAAO,EAAW;AAC/D,OAAI,EAAW,iBAAiB,KAAA,EAAW,QAAO,EAAW;AAE7D,OAAI,EAAW,MAAM;IACjB,IAAM,IAAU,KAAK,UAAU,aAAa,CAAC,IAAI,EAAU;AAC3D,QAAI,GAAS;KAET,IAAM,IAAU,EAAW,KAAK,WAAW,IAAI,GAAG,EAAW,KAAK,UAAU,EAAE,GAAG,EAAW,MACtF,IAAM,EAAQ,UAAU,IAAI,EAAQ;AAC1C,SAAI,MAAQ,KAAA,EAAW,QAAO;;AAGlC,YAAQ,KAAK,uCAAuC,EAAW,KAAK,eAAe,IAAY;;;;CAKvG,WAAmB,GAAwD;AACvE,MAAI,EAAQ,SAAS,eAAe,CAAC,EAAQ,UACzC,OAAU,MAAM,+CAA+C;EAGnE,IAAMM,IAAqD,EAAE;AAE7D,OAAK,IAAM,KAAY,EAAQ,WAAW;AACtC,OAAI,EAAS,SAAS,cAAc,CAAC,EAAS,SAC1C;GAGJ,IAAM,IAAW,EAAS,SAAS,MAC7B,IAAO,KAAK,mBAAmB,EAAS,SAAS,WAAW,EAAS;AACtE,UAIL;QAAI,MAAa,wBAAwB;KACrC,IAAM,IAAiB,KAAK,kBAAkB,EAAK;AACnD,KAAI,KACA,EAAe,KAAK,EAAE,mBAAgB,CAAC;AAE3C;;AAGJ,QAAI,MAAa,uBAAuB;KACpC,IAAM,IAAgB,KAAK,iBAAiB,EAAK;AACjD,KAAI,KACA,EAAe,KAAK,EAAE,kBAAe,CAAC;AAE1C;;AAGJ,QAAI,MAAa,0BAA0B;KACvC,IAAM,IAAkB,KAAK,mBAAmB,EAAK;AACrD,KAAI,KACA,EAAe,KAAK,EAAE,oBAAiB,CAAC;AAE5C;;AAGJ,QAAI,MAAa,uBAAuB;KACpC,IAAM,IAAgB,KAAK,iBAAiB,EAAK;AACjD,KAAI,KACA,EAAe,KAAK,EAAE,kBAAe,CAAC;AAE1C;;;;AAIR,SAAO;;CAGX,mBAA2B,GAAkB,GAAkD;AAC3F,MAAI,KAAW,KAEX,QADA,QAAQ,KAAK,sCAAsC,IAAW,EACvD;AAGX,MAAI,OAAO,KAAY,UAAU;GAC7B,IAAM,IAAc,EAAQ,MAAM;AAClC,OAAI,MAAgB,GAChB,QAAO,EAAE;AAEb,OAAI;AACA,WAAO,KAAK,MAAM,EAAY;YACzB,GAAO;AAEZ,WADA,QAAQ,KAAK,8CAA8C,KAAY,EAAM,EACtE;;;AASf,SALI,OAAO,KAAY,WACZ,KAGX,QAAQ,KAAK,+CAA+C,IAAW,EAChE;;CAGX,kBAA0B,GAAwE;EAC9F,IAAM,IAAY,KAAK,aAAa,EAAK,EACnC,IAAO,KAAK,mBAAmB,EAAK;AAE1C,MAAI,CAAC,KAAa,CAAC,EAEf,QADA,QAAQ,KAAK,6DAA6D,EACnE;EAGX,IAAM,IAAU,OAAO,EAAK,UAAW,YAAY,EAAK,SAAW,EAAK,SAAoC,KAAA;AAC5G,SAAO,IAAS;GAAE;GAAW;GAAM,QAAA;GAAQ,GAAG;GAAE;GAAW;GAAM;;CAGrE,iBAAyB,GAAuE;EAC5F,IAAM,IAAY,KAAK,aAAa,EAAK;AAQzC,SANK,IAME;GACH;GACY,YAHG,MAAM,QAAQ,EAAK,WAAW,GAAG,EAAK,aAAa,EAAE;GAIvE,IARG,QAAQ,KAAK,oDAAoD,EAC1D;;CAUf,mBAA2B,GAAkE;EACzF,IAAM,IAAY,KAAK,aAAa,EAAK;AAEzC,MAAI,CAAC,EAED,QADA,QAAQ,KAAK,uDAAuD,EAC7D;EAIX,IAAMC,IAA8C;GAChD;GACA,UAHa,KAAK,uBAAuB,EAAK,SAAS;GAI1D;AAMD,SAJI,OAAO,EAAK,QAAS,aACrB,EAAgB,OAAO,EAAK,OAGzB;;CAGX,yBAAiC,GAAgE;EAC7F,IAAM,IAAY,EAAO,aAAc,EAAe,YAChDC,IAAyC;GAC3C;GACA,UAAU,KAAK,uBAAuB,EAAO,SAAS;GACzD;AAOD,SALI,OAAO,EAAO,QAAS,aACvB,EAAW,OAAO,EAAO,OAG7B,QAAQ,IAAI,+CAA+C,KAAa,EAAW,EAC5E;;CAGX,iBAAyB,GAAuE;EAC5F,IAAM,IAAY,KAAK,aAAa,EAAK;AAOzC,SALK,IAKE,EAAE,cAAW,IAJhB,QAAQ,KAAK,oDAAoD,EAC1D;;CAMf,aAAqB,GAA8C;EAC/D,IAAM,IAAY,EAAK,aAAa,EAAK;AAUzC,SARI,OAAO,KAAc,YAAY,EAAU,MAAM,GAC1C,IAGP,OAAO,KAAc,WACd,OAAO,EAAU,GAGrB;;CAGX,mBAA2B,GAA8C;EACrE,IAAM,IACF,EAAK,QACL,EAAK,mBACL,EAAK,kBACL,EAAK;AAUT,SARI,OAAO,KAAS,YAAY,EAAK,MAAM,GAChC,IAGP,OAAO,KAAS,WACT,OAAO,EAAK,GAGhB;;CAGX,uBAA+B,GAA0C;AAKrE,SAJK,MAAM,QAAQ,EAAS,GAIrB,EACF,QAAQ,MAAU,KAAS,OAAO,KAAU,aAAa,SAAS,KAAS,UAAU,GAAO,CAC5F,KAAK,MAAU,KAAK,uBAAuB,EAAiC,CAAC,GALvE,EAAE;;CAQjB,uBAA+B,GAAqD;EAChF,IAAMC,IAAsC,EAAE,GAAG,GAAO;AA0BxD,MAxBI,kBAAkB,MAClB,EAAW,cAAc,EAAM,eAE/B,iBAAiB,MACjB,EAAW,cAAc,EAAM,cAE/B,kBAAkB,MAClB,EAAW,cAAc,EAAM,eAE/B,iBAAiB,MACjB,EAAW,cAAc,EAAM,cAE/B,mBAAmB,MACnB,EAAW,eAAe,EAAM,gBAEhC,kBAAkB,MAClB,EAAW,eAAe,EAAM,eAIhC,EAAE,SAAS,MAAe,UAAU,MACpC,EAAW,MAAM,EAAM,OAGvB,EAAE,iBAAiB,MAAe,EAAE,iBAAiB,MAAe,EAAE,kBAAkB,MAAe,WAAW,GAAO;GACzH,IAAM,IAAM,EAAM;AAClB,GAAI,OAAO,KAAQ,WAAU,EAAW,cAAc,IAC7C,OAAO,KAAQ,WAAU,EAAW,cAAc,IAClD,OAAO,KAAQ,cAAW,EAAW,eAAe;;EAGjE,IAAM,IAAW,EAAM,YAAe,EAAM;AAU5C,EATI,MAAa,KAAA,MACb,EAAW,WAAW,KAAK,uBAAuB,EAAS,GAG/D,OAAO,EAAW,cAClB,OAAO,EAAW,cAClB,OAAO,EAAW,eAClB,OAAO,EAAW,WAEd,OAAO,EAAW,OAAQ,aAC1B,EAAW,MAAM,OAAO,EAAW,OAAO,GAAG;EAIjD,IAAI,IAAM,EAAW;AAKrB,SAJI,EAAI,WAAW,IAAI,KACnB,EAAW,MAAM,EAAI,UAAU,EAAE,GAG9B;;CAGX,wBAAgC,GAA+D;AAC3F,MAAI,CAAC,KAAW,OAAO,KAAY,SAC/B,QAAO;EAGX,IAAM,IAAY,GACZ,IAAU,EAAU,SACpB,IAAqC,OAAO,KAAY,cAAvC,MACnB,oBAAoB,KACpB,mBAAmB;AAGvB,SACI,oBAAoB,KACpB,qBAAqB,KACrB,mBAAmB,KACnB,oBAAoB,KACpB,qBAAqB,KACrB,uBAAuB,KACvB,mBAAmB,KACnB,oBAAoB,KACpB;;CAIR,uBAA+B,GAAuG;EAClI,IAAM,IAAgB;AACtB,MAAI,oBAAoB,KAAiB,mBAAmB,KAAiB,qBAAqB,KAAiB,mBAAmB,GAAe;GACjJ,IAAM,IAAW;AAIjB,UAHI,EAAS,kBACF;IAAE,GAAG;IAAU,iBAAiB,KAAK,yBAAyB,EAAS,gBAAgB;IAAE,GAE7F;;EAGX,IAAMC,IAA+C,EAAE,EAEjD,IAAqB,EAAc;AACzC,MAAI,KAAsB,OAAO,KAAuB,UAAU;GAC9D,IAAM,IAAiB,KAAK,kBAAkB,EAA8C;AAC5F,GAAI,MACA,EAAW,iBAAiB;;EAIpC,IAAM,IAAoB,EAAc;AACxC,MAAI,KAAqB,OAAO,KAAsB,UAAU;GAC5D,IAAM,IAAgB,KAAK,iBAAiB,EAA6C;AACzF,GAAI,MACA,EAAW,gBAAgB;;EAInC,IAAM,IAAsB,EAAc;AAC1C,MAAI,KAAuB,OAAO,KAAwB,UAAU;GAChE,IAAM,IAAkB,KAAK,mBAAmB,EAA+C;AAC/F,GAAI,MACA,EAAW,kBAAkB;;EAIrC,IAAM,IAAoB,EAAc;AACxC,MAAI,KAAqB,OAAO,KAAsB,UAAU;GAC5D,IAAM,IAAgB,KAAK,iBAAiB,EAA6C;AACzF,GAAI,MACA,EAAW,gBAAgB;;AAInC,SAAO;;CAGX,gBAAgB,GAAuB;EACnC,IAAMJ,IAAqD,EAAE;AAE7D,OAAK,IAAM,KAAW,GAAU;AAE5B,OAAI,KAAK,wBAAwB,EAAQ,EAAE;AACvC,MAAe,KAAK,KAAK,uBAAuB,EAAQ,CAAC;AACzD;;AAIJ,OAAI,EAAQ,SAAS,UAAU,OAAO,EAAQ,WAAY,UAAU;AAChE,QAAI;KACA,IAAM,IAAS,KAAK,MAAM,EAAQ,QAAQ;AAC1C,SAAI,EAAO,SAAS,cAAc,EAAO,kBAAkB,UAAU,EAAO,SAAS;MACjF,IAAM,IAAU,EAAO;AACvB,UAAI,KAAK,wBAAwB,EAAQ,CACrC,GAAe,KAAK,KAAK,uBAAuB,EAAQ,CAAC;WACtD;OACH,IAAM,IAAQ,MAAM,QAAQ,EAAQ,GAAG,IAAU,CAAC,EAAQ;AAC1D,YAAK,IAAM,KAAQ,EACf,CAAI,KAAK,wBAAwB,EAAK,IAClC,EAAe,KAAK,KAAK,uBAAuB,EAAK,CAAC;;;YAK9D;AAGZ;;GAIJ,IAAM,IAAM;AACZ,OAAI,EAAI,SAAS,cAAc,EAAI,iBAAiB,UAAU,EAAI,SAAS;AACvE,QAAI,KAAK,wBAAwB,EAAI,QAAQ,CACzC,GAAe,KAAK,KAAK,uBAAuB,EAAI,QAAQ,CAAC;SAC1D;KAEH,IAAM,IAAU,EAAI,SACd,IAAQ,MAAM,QAAQ,EAAQ,GAAG,IAAU,CAAC,EAAQ;AAC1D,UAAK,IAAM,KAAQ,EACf,CAAI,KAAK,wBAAwB,EAAK,IAClC,EAAe,KAAK,KAAK,uBAAuB,EAAK,CAAC;;AAIlE;;AAGJ,GAAI,EAAQ,SAAS,eAAe,EAAQ,aACxC,EAAe,KAAK,GAAG,KAAK,WAAW,EAAQ,CAAC;;AAIpD,QAAe,WAAW,EAK9B,QADA,QAAQ,IAAI,4CAA4C,KAAK,UAAU,GAAgB,MAAM,EAAE,CAAC,EACzF,KAAK,UAAU,gBAAgB,EAAe;;CAGzD,eAAe,GAAoB;AAC/B,OAAK,gBAAgB,CAAC,EAAQ,CAAC;;CAOnC,gBAAgB,GAA8B;AAC1C,MAAI,EAAM,iBAAiB,UAAU,EAAM,SAAS;GAChD,IAAM,IAAU,EAAM,SAChB,IAAc,MAAM,QAAQ,EAAQ,GAAG,IAAU,CAAC,EAAQ,EAC1D,IAAa,KAAK,uBAAuB,EAAM,EAI/C,IAAkB,EAAM,YAAY,KACyB,EAAE,GAAjE,EAAW,KAAI,OAAO,EAAE,eAAe,EAAE,WAAW,GAAI,EAAE,EAAE,EAI1D,IAAW,EAAY,KAAI,MAAK;AAClC,QAAI,EAAE,iBAAiB,EAAE,gBAAgB;KACrC,IAAM,IAAS,EAAE,iBAAiB,EAAE,gBAC9B,IAAY,EAAO,aAAa,EAAO,YACvC,IAAa,EAAO,cAAc,EAAE;AAE1C,SAAI,KAAa,EAAW,SAAS,GAAG;MAEpC,IAAM,IADU,KAAK,UAAU,aAAa,CAAC,IAAI,EAAU,EAC5B;AAK/B,UAAI,CAFe,EAAW,MAAM,MAAW,EAAE,OAAO,EAAc,IAEnD,CAAC,GAAe;OAE/B,IAAM,IAAe,EAAW,GAAG;AAInC,cAHA,QAAQ,KAAK,sDAAsD,EAAU,oBAAoB,IAAe,EAGzG,CACH,EAAE,gBAAgB;QAAE;QAAW,MAAM;QAAc,EAAE,EACrD,EACH;;;;AAIb,WAAO;KACT,CAAC,MAAM,EAEH,IAAgB,CAAC,GAAG,GAAgB,GAAG,EAAS,CAAC,KAAI,MAAK,KAAK,uBAAuB,EAAS,CAAC;AAEtG,GADA,QAAQ,IAAI,yDAAyD,KAAK,UAAU,GAAe,MAAM,EAAE,CAAC,EAC5G,KAAK,UAAU,gBAAgB,EAAc;GAG7C,IAAM,IAAW,MAAM,KAAK,KAAK,UAAU,aAAa,CAAC,SAAS,CAAC;AACnE,WAAQ,IAAI,sDAAsD,EAAS,KAAK,CAAC,GAAI,QAAQ;IACzF;IACA,MAAM,EAAE;IACR,YAAY,EAAE,WAAW;IACzB,SAAS,CAAC,CAAC,EAAE;IAChB,EAAE,CAAC;;;CAIZ,uBAAuB,GAAwC;AAC3D,MAAI,EAAM,iBAAiB,UAAU,CAAC,EAAM,QAAS,QAAO,EAAE;EAC9D,IAAM,IAAU,EAAM,SAChB,IAAW,MAAM,QAAQ,EAAQ,GAAG,IAAU,CAAC,EAAQ,EACvD,oBAAM,IAAI,KAAa;AAQ7B,SANA,EAAS,SAAQ,MAAK;GAClB,IAAM,IAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAC/G,IAAM,GAAS,aAAa,GAAS;AAC3C,GAAI,KAAK,EAAI,IAAI,EAAI;IACvB,EAEK,MAAM,KAAK,EAAI;;CAM1B,qBAAqB,GAA6B;EAC9C,IAAM,IAAW,KAAK,gBAAgB,EAAQ;AAE9C,SADI,EAAS,WAAW,IAAU,KAC3B,EAAS,OAAM,MAAK;GACvB,IAAM,IAAW,CAAC,CAAC,EAAE,gBACf,IAAW,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE;AACjE,UAAO,KAAY,CAAC;IACtB;;CAMN,cAAc,GAA6B;AAEvC,MADI,EAAQ,SAAS,cAAe,EAAgB,iBAAiB,UACjE,EAAQ,SAAS,eAAe,EAAQ,aAAa,EAAQ,UAAU,MAAK,MAAM,EAAG,UAAU,KAAK,WAAW,QAAQ,CAAC,CAAE,QAAO;AAErI,MAAI,EAAQ,SAAS,UAAU,OAAO,EAAQ,WAAY,SACtD,KAAI;GACA,IAAM,IAAS,KAAK,MAAM,EAAQ,QAAQ;AAC1C,UAAO,EAAO,SAAS,cAAc,EAAO,kBAAkB;UAC1D;AACJ,UAAO;;AAGf,SAAO;;CAMX,gBAAgB,GAAwD;EACpE,IAAMK,IAA+C,EAAE;AAEvD,MAAI,EAAQ,SAAS,eAAe,EAAQ,UACxC,GAAS,KAAK,GAAG,KAAK,WAAW,EAAQ,CAAC;WACnC,EAAQ,SAAS,cAAe,EAAgB,iBAAiB,UAAU,EAAQ,SAAS;GACnG,IAAM,IAAU,EAAQ;AAExB,IADc,MAAM,QAAQ,EAAQ,GAAG,IAAU,CAAC,EAAQ,EACpD,SAAQ,MAAQ;AAClB,IAAI,KAAK,wBAAwB,EAAK,IAClC,EAAS,KAAK,KAAK,uBAAuB,EAAK,CAAC;KAEtD;aACK,EAAQ,SAAS,UAAU,OAAO,EAAQ,WAAY,SAC7D,KAAI;GACA,IAAM,IAAS,KAAK,MAAM,EAAQ,QAAQ;AAC1C,OAAI,EAAO,SAAS,cAAc,EAAO,kBAAkB,UAAU,EAAO,SAAS;IACjF,IAAM,IAAU,EAAO;AAEvB,KADc,MAAM,QAAQ,EAAQ,GAAG,IAAU,CAAC,EAAQ,EACpD,SAAQ,MAAQ;AAClB,KAAI,KAAK,wBAAwB,EAAK,IAClC,EAAS,KAAK,KAAK,uBAAuB,EAAK,CAAC;MAEtD;;UAEF;AAGZ,SAAO;;GAI6B;ACzjBrC,IAAA,cAAA,cAA0B,EAAW;;6BAIJ,uBACK,uBACD;;2BAL1B;CAOhB,QAAQ,GAAqC;AAC3C,EAAI,EAAkB,IAAI,UAAU,KAClC,KAAK,aAAa,QAAQ,KAAK,QAAQ,KAAK,EAC5C,KAAK,eAAe;;CAIxB,cAAsB;EACpB,IAAM,IAAa,OAAO,KAAK,QAAQ,WAAY,WAC/C,KAAK,QAAQ,UACb,KAAK,UAAU,KAAK,QAAQ,WAAW,GAAG;AAC9C,YAAU,UAAU,UAAU,EAAW;;CAI3C,gBAAwB;AACtB,OAAK,cAAc,IAAI,YAAY,kBAAkB;GAAE,QAAQ,EAAE,IAAI,KAAK,QAAQ,IAAI;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;;CAG3H,SAAS;EACP,IAAM,IAAS,KAAK,QAAQ,SAAS;AAGrC,MAFe,YAAY,cAAc,KAAK,QAAQ,EAE1C;AACV,eAAY,gBAAgB,CAAC,KAAK,QAAQ,CAAC;GAC3C,IAAM,IAAW,MAAM,KAAK,YAAY,UAAU,aAAa,CAAC,SAAS,CAAC,EACpE,IAAY,YAAY;AAE9B,OAAI,EAAS,SAAS,EACpB,QAAO,CAAI;;cAEL,KAAK,cACL,CAAI,aAAa,KAAK,YAAY,kCAClC,CAAI,8BACP;;gBAEK,EAAS,KAAK,CAAC,GAAW,OACvB,CAAI;;kCAEW,EAAU;kCACV,EAAU;gCACZ,EAAQ;6CACK,GAAK;;kBAGtC,CAAC;;;;;AAOT,SAAO,CAAI;;UAEJ,IAKC,KALQ,CAAI;cACV,KAAK,cACP,CAAI,aAAa,KAAK,YAAY,kCAClC,CAAI,8BACP;UACM;;;+BAGgB,KAAK,cAAc,cAAc,GAAG,IAAI,KAAK,QAAQ,aAC1E,CAAI;;;;;;kBAOJ,KAAK,QAAQ,QAAQ;;YAElB,IASC,KATQ,CAAI;;4DAEkC,KAAK,YAAY;sBACvD,SAAS;;8DAE+B,KAAK,cAAc;sBAC3D,WAAW;;;YAGhB;;;;;;YAtFd,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,YAAA,WAAA,WAAA,KAAA,EAAA,cAC1B,EAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,YAAA,WAAA,UAAA,KAAA,EAAA,cAC3B,EAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,YAAA,WAAA,eAAA,KAAA,EAAA,cAC3B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,YAAA,WAAA,eAAA,KAAA,EAAA,4BAP5B,EAAc,qBAAqB,CAAA,EAAA,YAAA;ACD7B,IAAA,aAAA,cAAyB,EAAW;;+BAGU,EAAE,mBACZ,uBACC,qBACF;;2BALxB;CAShB,QAAQ,GAAqC;AAC3C,EAAI,EAAkB,IAAI,WAAW,KACnC,YAAY,gBAAgB,KAAK,SAAS,EAC1C,KAAK,gBAAgB;;CAIzB,MAAM,iBAAiB;AAGrB,EAFA,MAAM,KAAK,iBACS,KAAK,YAAY,cAAc,kCAAkC,GACxE,eAAe;GAAE,UAAU;GAAU,OAAO;GAAO,CAAC;;CAGnE,SAAS;AAaP,SAZI,KAAK,SAAS,WAAW,IACpB,CAAI;;kBAEC,KAAK,cACX,CAAI,aAAa,KAAK,YAAY,kDAClC,CAAI,qCACP;wCAC+B,KAAK,UAAU;;YAK5C,CAAI;;UAEL,KAAK,SACN,QAAO,MAEF,YAAY,cAAc,EAAI,IAChC,QAAQ,IAAI,8BAA8B,EAAI,EACvC,CAAC,YAAY,qBAAqB,EAAI,IAExC,GAEP,CACD,KAAK,GAAK,GAAO,MAAgB,CAAI;;uBAEvB,EAAI;sBACL,MAAU,EAAY,SAAS,EAAE;2BAC5B,KAAK,aAAa,MAAU,EAAY,SAAS,EAAE;4BAClD,KAAK,YAAY;;UAEnC,CAAC;;;;;YApDR,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,EAAA,WAAA,WAAA,YAAA,KAAA,EAAA,cACzB,EAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,WAAA,WAAA,aAAA,KAAA,EAAA,cAC3B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,WAAA,WAAA,eAAA,KAAA,EAAA,cAC1B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,WAAA,WAAA,aAAA,KAAA,EAAA,2BAP5B,EAAc,oBAAoB,CAAA,EAAA,WAAA;ACLnC,MAAa,WAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACKlB,IAAA,eAAA,cAA2B,EAAW;;gCAGA,sBACA,uBACC,mBACc,EAAE,gBAEhC;;2BAPV;CAUhB,aAAqB,GAAU;AAG3B,EADA,KAAK,SADU,EAAE,OACI,OACrB,KAAK,eAAe;;CAGxB,eAAuB,GAAkB;AACrC,EAAI,EAAE,QAAQ,WAAW,CAAC,EAAE,aACxB,EAAE,gBAAgB,EAClB,KAAK,eAAe;;CAI5B,gBAAwB;AACf,OAAK,cACV,KAAK,UAAU,MAAM,SAAS,QAC9B,KAAK,UAAU,MAAM,SAAS,GAAG,KAAK,IAAI,KAAK,UAAU,cAAc,IAAI,CAAC;;CAGhF,mBAA2B,GAAyB;AAGhD,EAFA,KAAK,SAAS,EAAO,SACrB,KAAK,UAAU,OAAO,EACtB,iBAAiB,KAAK,eAAe,EAAE,EAAE;;CAG7C,MAAM,gBAAgB;AACb,OAAK,OAAO,MAAM,KAEvB,KAAK,cAAc,IAAI,YAAY,QAAQ;GAAE,QAAQ,EAAE,SAAS,KAAK,QAAQ;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC,EAChH,KAAK,SAAS,IACd,MAAM,KAAK,gBACX,KAAK,UAAU,MAAM,SAAS;;CAGlC,cAAsB;AAClB,OAAK,cAAc,IAAI,YAAY,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;;CAGpF,SAAS;AACL,SAAO,CAAI;QACX,KAAK,QAAQ,SAAS,IAAI,CAAI;;YAE1B,KAAK,QAAQ,KAAI,MAAU,CAAI;wDACa,KAAK,mBAAmB,EAAO,CAAC;gBACxE,EAAO,QAAQ;;YAEnB,CAAC;;UAEH,GAAG;;;2BAGc,KAAK,YAAY;sBACtB,KAAK,OAAO;sBACZ,KAAK,aAAa;wBAChB,KAAK,eAAe;yBACnB,KAAK,UAAU;;;;UAI9B,KAAK,YACG,CAAI,yCAAyC,KAAK,YAAY,IAAI,SAAS,aAC3E,CAAI,4CAA4C,CAAC,KAAK,OAAO,MAAM,CAAC,YAAY,KAAK,cAAc,IAAI,SAAS,WACrH;;;UAGH,KAAK,WAAW;;;;;YAzErB,EAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,aAAA,WAAA,aAAA,KAAA,EAAA,cAC3B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,aAAA,WAAA,cAAA,KAAA,EAAA,cAC1B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,aAAA,WAAA,eAAA,KAAA,EAAA,cAC1B,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,EAAA,aAAA,WAAA,WAAA,KAAA,EAAA,cAEzB,GAAO,CAAA,EAAA,aAAA,WAAA,UAAA,KAAA,EAAA,cACP,IAAM,WAAW,CAAA,EAAA,aAAA,WAAA,aAAA,KAAA,EAAA,6BAVrB,EAAc,sBAAsB,CAAA,EAAA,aAAA;ACNrC,IAAI,YAAY,OAAO,gBACnB,mBAAmB,GAAK,GAAK,MAAU,KAAO,IAAM,UAAU,GAAK,GAAK;CAAE,YAAY;CAAM,cAAc;CAAM,UAAU;CAAM;CAAO,CAAC,GAAG,EAAI,KAAO,GACtJ,iBAAiB,GAAK,GAAK,OAC7B,gBAAgB,GAAK,OAAO,KAAQ,WAAsB,IAAX,IAAM,IAAU,EAAM,EAC9D,IAEL,iBAAiB,GAAK,GAAQ,MAAQ;AACxC,KAAI,CAAC,EAAO,IAAI,EAAI,CAClB,OAAM,UAAU,YAAY,EAAI;GAEhC,eAAe,GAAQ,MAAQ;AACjC,KAAI,OAAO,EAAI,KAAK,EAClB,OAAM,UAAU,+CAA6C;AAC/D,QAAO,EAAO,IAAI,EAAI;GAEpB,gBAAgB,GAAK,GAAQ,MAAU;AACzC,KAAI,EAAO,IAAI,EAAI,CACjB,OAAM,UAAU,oDAAoD;AACtE,cAAkB,UAAU,EAAO,IAAI,EAAI,GAAG,EAAO,IAAI,GAAK,EAAM;GAElE,mBAAmB,GAAK,GAAQ,OAClC,cAAc,GAAK,GAAQ,wBAAwB,EAC5C;;;;;;;;AAST,SAAS,cAAc,GAAG,GAAG;AAC3B,QAAO,OAAO,GAAGC,GAAGC,EAAE;;;;;;;;;AASxB,IAAI,iBAAiB,MACjB,sBAAsB,IACtB,QAAQ,GACN,SAAyB,uBAAO,SAAS;AAC/C,SAAS,kBAAkB,GAAU;CACnC,IAAM,IAAO;AAEb,QADA,iBAAiB,GACV;;AAET,SAAS,oBAAoB;AAC3B,QAAO;;AAET,SAAS,wBAAwB;AAC/B,QAAO;;AAET,IAAM,gBAAgB;CACpB,SAAS;CACT,gBAAgB;CAChB,OAAO;CACP,cAAc,KAAK;CACnB,yBAAyB,KAAK;CAC9B,qBAAqB,KAAK;CAC1B,mBAAmB;CACnB,kBAAkB,KAAK;CACvB,yBAAyB,KAAK;CAC9B,2BAA2B;CAC3B,sBAAsB;CACtB,6BAA6B;CAC7B,8BAA8B;CAE9B,2BAA2B;CAE3B,4BAA4B;CAE7B;AACD,SAAS,iBAAiB,GAAM;AAC9B,KAAI,oBACF,OAAU,MACR,OAAO,YAAc,OAAe,YAAY,2DAA2D,GAC5G;AAEH,KAAI,mBAAmB,KACrB;AAEF,gBAAe,qBAAqB,EAAK;CACzC,IAAM,IAAM,eAAe;AAE3B,KADA,mBAAmB,eAAe,EAC9B,IAAM,eAAe,aAAa,UAAU,eAAe,aAAa,OAAS,KAC/E,eAAe,eAAe,EAAE;EAClC,IAAM,IAAgB,eAAe,aAAa;AAClD,oCAAkC,GAAe,eAAe,oBAAoB,GAAK;;AAO7F,CAJI,eAAe,aAAa,OAAS,MACvC,eAAe,aAAa,KAAO,GACnC,eAAe,oBAAoB,KAAO,eAAe,eAAe,GAAG,wBAAwB,GAAM,gBAAgB,EAAI,GAAG,IAElI,eAAe,wBAAwB,KAAO,EAAK;;AAErD,SAAS,yBAAyB;AAChC;;AAEF,SAAS,2BAA2B,GAAM;AACpC,QAAC,EAAK,SAAS,EAAK,mBAAmB,QAG3C;MAAI,CAAC,EAAK,sBAAsB,EAAK,IAAI,CAAC,+BAA+B,EAAK,EAAE;AAE9E,GADA,EAAK,QAAQ,IACb,EAAK,iBAAiB;AACtB;;AAIF,EAFA,EAAK,uBAAuB,EAAK,EACjC,EAAK,QAAQ,IACb,EAAK,iBAAiB;;;AAExB,SAAS,wBAAwB,GAAM;AACrC,KAAI,EAAK,qBAAqB,KAAK,EACjC;CAEF,IAAM,IAAO;AACb,uBAAsB;AACtB,KAAI;AACF,OAAK,IAAM,KAAY,EAAK,iBAC1B,CAAK,EAAS,SACZ,kBAAkB,EAAS;WAGvB;AACR,wBAAsB;;;AAG1B,SAAS,yBAAyB;AAChC,QAAQ,gBAAiD,8BAA+B;;AAE1F,SAAS,kBAAkB,GAAM;CAC/B,IAAI;AAGJ,CAFA,EAAK,QAAQ,IACb,wBAAwB,EAAK,GAC5B,IAAK,EAAK,wBAAwB,QAAgB,EAAG,KAAK,EAAK,WAAW,EAAK;;AAElF,SAAS,0BAA0B,GAAM;AAEvC,QADA,MAAS,EAAK,oBAAoB,IAC3B,kBAAkB,EAAK;;AAEhC,SAAS,yBAAyB,GAAM,GAAc;AACpD,uBAAkB,EAAa,EAC3B,GAAC,KAAQ,EAAK,iBAAiB,KAAK,KAAK,EAAK,wBAAwB,KAAK,KAAK,EAAK,4BAA4B,KAAK,IAG1H;MAAI,eAAe,EAAK,CACtB,MAAK,IAAIC,IAAI,EAAK,mBAAmBA,IAAI,EAAK,aAAa,QAAQ,IACjE,mCAAkC,EAAK,aAAaA,IAAI,EAAK,oBAAoBA,GAAG;AAGxF,SAAO,EAAK,aAAa,SAAS,EAAK,mBAGrC,CAFA,EAAK,aAAa,KAAK,EACvB,EAAK,wBAAwB,KAAK,EAClC,EAAK,oBAAoB,KAAK;;;AAGlC,SAAS,+BAA+B,GAAM;AAC5C,oBAAmB,EAAK;AACxB,MAAK,IAAIA,IAAI,GAAGA,IAAI,EAAK,aAAa,QAAQ,KAAK;EACjD,IAAM,IAAW,EAAK,aAAaA,IAC7B,IAAc,EAAK,wBAAwBA;AAKjD,MAJI,MAAgB,EAAS,YAG7B,2BAA2B,EAAS,EAChC,MAAgB,EAAS,SAC3B,QAAO;;AAGX,QAAO;;AAET,SAAS,wBAAwB,GAAM,GAAU,GAAa;CAC5D,IAAI;AAGJ,KAFA,mBAAmB,EAAK,EACxB,mBAAmB,EAAK,EACpB,EAAK,iBAAiB,WAAW,GAAG;AACtC,GAAC,IAAK,EAAK,YAAY,QAAgB,EAAG,KAAK,EAAK,QAAQ;AAC5D,OAAK,IAAIA,IAAI,GAAGA,IAAI,EAAK,aAAa,QAAQ,IAC5C,GAAK,oBAAoBA,KAAK,wBAAwB,EAAK,aAAaA,IAAI,GAAMA,EAAE;;AAIxF,QADA,EAAK,wBAAwB,KAAK,EAAY,EACvC,EAAK,iBAAiB,KAAK,EAAS,GAAG;;AAEhD,SAAS,kCAAkC,GAAM,GAAK;CACpD,IAAI;AAGJ,KAFA,mBAAmB,EAAK,EACxB,mBAAmB,EAAK,EACpB,OAAO,YAAc,OAAe,aAAa,KAAO,EAAK,iBAAiB,OAChF,OAAU,MACR,0CAA0C,EAAI,uBAAuB,EAAK,iBAAiB,OAAO,aACnG;AAEH,KAAI,EAAK,iBAAiB,WAAW,GAAG;AACtC,GAAC,IAAK,EAAK,cAAc,QAAgB,EAAG,KAAK,EAAK,QAAQ;AAC9D,OAAK,IAAIA,IAAI,GAAGA,IAAI,EAAK,aAAa,QAAQ,IAC5C,mCAAkC,EAAK,aAAaA,IAAI,EAAK,oBAAoBA,GAAG;;CAGxF,IAAM,IAAU,EAAK,iBAAiB,SAAS;AAK/C,KAJA,EAAK,iBAAiB,KAAO,EAAK,iBAAiB,IACnD,EAAK,wBAAwB,KAAO,EAAK,wBAAwB,IACjE,EAAK,iBAAiB,UACtB,EAAK,wBAAwB,UACzB,IAAM,EAAK,iBAAiB,QAAQ;EACtC,IAAM,IAAc,EAAK,wBAAwB,IAC3C,IAAW,EAAK,iBAAiB;AAEvC,EADA,mBAAmB,EAAS,EAC5B,EAAS,oBAAoB,KAAe;;;AAGhD,SAAS,eAAe,GAAM;AAE5B,QAAO,EAAK,yBAAgC,GAA6B,kBAAwC,UAAW,KAAK;;AAEnI,SAAS,mBAAmB,GAAM;AAGhC,CAFA,AAAsB,EAAK,iBAAe,EAAE,EAC5C,AAA6B,EAAK,wBAAsB,EAAE,EAC1D,AAAiC,EAAK,4BAA0B,EAAE;;AAEpE,SAAS,mBAAmB,GAAM;AAEhC,CADA,AAA0B,EAAK,qBAAmB,EAAE,EACpD,AAAiC,EAAK,4BAA0B,EAAE;;;;;;;;;AASpE,SAAS,YAAY,GAAM;AAGzB,KAFA,2BAA2B,EAAK,EAChC,iBAAiB,EAAK,EAClB,EAAK,UAAU,QACjB,OAAM,EAAK;AAEb,QAAO,EAAK;;AAEd,SAAS,eAAe,GAAa;CACnC,IAAM,IAAO,OAAO,OAAO,cAAc;AACzC,GAAK,cAAc;CACnB,IAAM,UAAiB,YAAY,EAAK;AAExC,QADA,EAAS,UAAU,GACZ;;AAET,IAAM,QAAwB,uBAAO,QAAQ,EACvC,YAA4B,uBAAO,YAAY,EAC/C,UAA0B,uBAAO,UAAU,EAC3C,gBAAgC,wBAC7B;CACL,GAAG;CACH,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,sBAAsB,GAAM;AAC1B,SAAO,EAAK,UAAU,SAAS,EAAK,UAAU;;CAEhD,uBAAuB,GAAM;AAC3B,MAAI,EAAK,UAAU,UACjB,OAAU,MAAM,kCAAkC;EAEpD,IAAM,IAAW,EAAK;AACtB,IAAK,QAAQ;EACb,IAAM,IAAe,0BAA0B,EAAK,EAChD,GACA,IAAW;AACf,MAAI;AAGF,GAFA,IAAW,EAAK,YAAY,KAAK,EAAK,QAAQ,EAE9C,IADc,MAAa,SAAS,MAAa,WAC7B,EAAK,MAAM,KAAK,EAAK,SAAS,GAAU,EAAS;WAC9D,GAAK;AAEZ,GADA,IAAW,SACX,EAAK,QAAQ;YACL;AACR,4BAAyB,GAAM,EAAa;;AAE9C,MAAI,GAAU;AACZ,KAAK,QAAQ;AACb;;AAGF,EADA,EAAK,QAAQ,GACb,EAAK;;CAER,IACC;;;;;;;;AAQJ,SAAS,oBAAoB;AAC3B,OAAU,OAAO;;AAEnB,IAAI,mCAAmC;AACvC,SAAS,iCAAiC;AACxC,mCAAkC;;;;;;;;;AASpC,SAAS,aAAa,GAAc;CAClC,IAAM,IAAO,OAAO,OAAO,YAAY;AACvC,GAAK,QAAQ;CACb,IAAM,WACJ,iBAAiB,EAAK,EACf,EAAK;AAGd,QADA,EAAO,UAAU,GACV;;AAET,SAAS,cAAc;AAErB,QADA,iBAAiB,KAAK,EACf,KAAK;;AAEd,SAAS,YAAY,GAAM,GAAU;AAInC,CAHK,wBAAwB,IAC3B,gCAAgC,EAE7B,EAAK,MAAM,KAAK,EAAK,SAAS,EAAK,OAAO,EAAS,KACtD,EAAK,QAAQ,GACb,mBAAmB,EAAK;;AAG5B,IAAM,cAA8B,wBAC3B;CACL,GAAG;CACH,OAAO;CACP,OAAO,KAAK;CACb,IACC;AACJ,SAAS,mBAAmB,GAAM;AAGhC,CAFA,EAAK,WACL,wBAAwB,EACxB,wBAAwB,EAAK;;;;;;;;;;;;;;;;;;AAkB/B,IAAM,OAAO,OAAO,OAAO,EACvB;EACF,MAAY;CACZ,IAAI,GAAI,GAAkB,GAAI;CAC9B,MAAM,EAAM;EACV,YAAY,GAAc,IAAU,EAAE,EAAE;AAEtC,GADA,aAAa,MAAM,EAAO,EAC1B,cAAc,MAAM,EAAG;GAEvB,IAAM,IADM,aAAa,EAAa,CACrB;AAGjB,OAFA,KAAK,QAAQ,GACb,EAAK,UAAU,MACX,GAAS;IACX,IAAM,IAAS,EAAQ;AAKvB,IAJI,MACF,EAAK,QAAQ,IAEf,EAAK,UAAU,EAAQ,EAAQ,OAAO,UACtC,EAAK,YAAY,EAAQ,EAAQ,OAAO;;;EAG5C,MAAM;AACJ,OAAI,EAAE,GAAG,EAAQ,SAAS,KAAK,CAC7B,OAAU,UAAU,qDAAqD;AAC3E,UAAO,YAAY,KAAK,KAAK,MAAM;;EAErC,IAAI,GAAU;AACZ,OAAI,EAAE,GAAG,EAAQ,SAAS,KAAK,CAC7B,OAAU,UAAU,qDAAqD;AAC3E,OAAI,uBAAuB,CACzB,OAAU,MAAM,0DAA0D;GAE5E,IAAM,IAAM,KAAK;AACjB,eAAY,GAAK,EAAS;;;AAQ9B,CALA,IAAK,MACL,oBAAS,IAAI,SAAS,EAGtB,EAAQ,WAAW,MAAM,OAAOC,KAAM,YAAY,YAAY,GAAQA,EAAE,EACxE,EAAQ,QAAQ;CAChB,MAAM,EAAS;EAGb,YAAY,GAAa,GAAS;AAEhC,GADA,aAAa,MAAM,EAAQ,EAC3B,cAAc,MAAM,EAAG;GAEvB,IAAM,IADM,eAAe,EAAY,CACtB;AAIjB,OAHA,EAAK,4BAA4B,IACjC,KAAK,QAAQ,GACb,EAAK,UAAU,MACX,GAAS;IACX,IAAM,IAAS,EAAQ;AAKvB,IAJI,MACF,EAAK,QAAQ,IAEf,EAAK,UAAU,EAAQ,EAAQ,OAAO,UACtC,EAAK,YAAY,EAAQ,EAAQ,OAAO;;;EAG5C,MAAM;AACJ,OAAI,EAAE,GAAG,EAAQ,YAAY,KAAK,CAChC,OAAU,UAAU,wDAAwD;AAC9E,UAAO,YAAY,KAAK,MAAM;;;AASlC,CANA,IAAK,MACL,oBAAU,IAAI,SAAS,EAGvB,EAAQ,cAAc,MAAM,OAAOC,KAAM,YAAY,YAAY,GAASA,EAAE,EAC5E,EAAQ,WAAW,KACjB,MAAY;EACZ,IAAI,GAAK,GAAoB,GAAgB;EAC7C,SAAS,EAAQ,GAAI;GACnB,IAAI,GACA,IAAqB;AACzB,OAAI;AAEF,IADA,IAAqB,kBAAkB,KAAK,EAC5C,IAAS,GAAI;aACL;AACR,sBAAkB,EAAmB;;AAEvC,UAAO;;AAET,IAAQ,UAAU;EAClB,SAAS,EAAkB,GAAM;AAE/B,OAAI,EAAE,GAAG,EAAQ,YAAY,EAAK,IAAI,EAAE,GAAG,EAAQ,WAAW,EAAK,CACjE,OAAU,UAAU,kEAAkE;AAExF,UAAe,EAAK,MAAM,cAAqC,KAAK,MAAMC,EAAE,QAAQ,IAAK,EAAE;;AAE7F,IAAQ,oBAAoB;EAC5B,SAAS,EAAgB,GAAQ;AAE/B,OAAI,EAAE,GAAG,EAAQ,YAAY,EAAO,IAAI,EAAE,GAAG,EAAQ,SAAS,EAAO,CACnE,OAAU,UAAU,mDAAmD;AAEzE,UAAe,EAAO,MAAM,kBAAyC,KAAK,MAAMA,EAAE,QAAQ,IAAK,EAAE;;AAEnG,IAAQ,kBAAkB;EAC1B,SAAS,EAAS,GAAQ;AACxB,OAAI,EAAE,GAAG,EAAQ,YAAY,EAAO,IAAI,EAAE,GAAG,EAAQ,SAAS,EAAO,CACnE,OAAU,UAAU,4CAA4C;GAElE,IAAM,IAAmB,EAAO,MAAM;AAGtC,UAFK,IAEE,EAAiB,SAAS,IADxB;;AAGX,IAAQ,WAAW;EACnB,SAAS,EAAW,GAAQ;AAC1B,OAAI,EAAE,GAAG,EAAQ,YAAY,EAAO,IAAI,EAAE,GAAG,EAAQ,WAAW,EAAO,CACrE,OAAU,UAAU,2DAA2D;GAEjF,IAAM,IAAe,EAAO,MAAM;AAGlC,UAFK,IAEE,EAAa,SAAS,IADpB;;AAGX,IAAQ,aAAa;EACrB,MAAM,EAAQ;GAIZ,YAAY,GAAQ;AAGlB,IAFA,aAAa,MAAM,EAAQ,EAC3B,aAAa,MAAM,EAAe,EAClC,cAAc,MAAM,EAAI;IACxB,IAAI,IAAO,OAAO,OAAO,cAAc;AAMvC,IALA,EAAK,UAAU,MACf,EAAK,sBAAsB,GAC3B,EAAK,uBAAuB,IAC5B,EAAK,4BAA4B,IACjC,EAAK,eAAe,EAAE,EACtB,KAAK,QAAQ;;GAMf,MAAM,GAAG,GAAS;AAChB,QAAI,EAAE,GAAG,EAAQ,WAAW,KAAK,CAC/B,OAAU,UAAU,0CAA0C;AAEhE,oBAAgB,MAAM,GAAgB,EAAiB,CAAC,KAAK,MAAM,EAAQ;IAC3E,IAAM,IAAO,KAAK;AAClB,MAAK,QAAQ;IACb,IAAM,IAAO,kBAAkB,EAAK;AACpC,SAAK,IAAM,KAAU,EACnB,kBAAiB,EAAO,MAAM;AAEhC,sBAAkB,EAAK;;GAGzB,QAAQ,GAAG,GAAS;AAClB,QAAI,EAAE,GAAG,EAAQ,WAAW,KAAK,CAC/B,OAAU,UAAU,0CAA0C;AAEhE,oBAAgB,MAAM,GAAgB,EAAiB,CAAC,KAAK,MAAM,EAAQ;IAC3E,IAAM,IAAO,KAAK;AAClB,uBAAmB,EAAK;AACxB,SAAK,IAAIH,IAAI,EAAK,aAAa,SAAS,GAAGA,KAAK,GAAG,IACjD,KAAI,EAAQ,SAAS,EAAK,aAAaA,GAAG,QAAQ,EAAE;AAClD,uCAAkC,EAAK,aAAaA,IAAI,EAAK,oBAAoBA,GAAG;KACpF,IAAM,IAAU,EAAK,aAAa,SAAS;AAM3C,SALA,EAAK,aAAaA,KAAK,EAAK,aAAa,IACzC,EAAK,oBAAoBA,KAAK,EAAK,oBAAoB,IACvD,EAAK,aAAa,UAClB,EAAK,oBAAoB,UACzB,EAAK,qBACDA,IAAI,EAAK,aAAa,QAAQ;MAChC,IAAM,IAAc,EAAK,oBAAoBA,IACvC,IAAW,EAAK,aAAaA;AAEnC,MADA,mBAAmB,EAAS,EAC5B,EAAS,wBAAwB,KAAeA;;;;GAOxD,aAAa;AACX,QAAI,EAAE,GAAG,EAAQ,WAAW,KAAK,CAC/B,OAAU,UAAU,6CAA6C;AAGnE,WADa,KAAK,MACN,aAAa,QAAQ,MAAMG,EAAE,MAAM,CAAC,KAAK,MAAMA,EAAE,QAAQ;;;AAgBzE,EAbA,IAAM,MACN,oBAAU,IAAI,SAAS,EAGvB,oBAAiB,IAAI,SAAS,EAC9B,IAAmB,SAAS,GAAS;AACnC,QAAK,IAAM,KAAU,EACnB,KAAI,EAAE,GAAG,EAAQ,YAAY,EAAO,IAAI,EAAE,GAAG,EAAQ,SAAS,EAAO,CACnE,OAAU,UAAU,4DAA4D;KAItF,EAAQ,aAAa,MAAM,YAAY,GAASC,EAAE,EAClD,EAAQ,UAAU;EAClB,SAAS,IAAkB;AAEzB,UAAc,mBAAmB,EAAyB;;AAI5D,EAFA,EAAQ,kBAAkB,GAC1B,EAAQ,UAAU,OAAO,UAAU,EACnC,EAAQ,YAAY,OAAO,YAAY;IACtC,AAAmB,EAAQ,WAAS,EAAE,CAAE;GAC1C,AAAW,WAAS,EAAE,CAAE;;;;;GC9jBxB,IAAMC,MAAE,OAAO,qBAAqB,EAACC,MAAE,IAAI,uBAAuB,EAAC,SAAQC,GAAE,QAAOF,QAAK;AAAC,GAAE,QAAQA,EAAE;GAAG,EAACG,sBAAE,IAAI,SAAO;AAAC,SAAS,EAAE,GAAE;AAAC,QAAM,CAAC,MAAIC,EAAEJ,QAAI,QAAQ,KAAK,wEAAwE,EAACI,KAAG,cAAcA,EAAC;EAAC,cAAa;AAAC,SAAM,GAAG,UAAU,EAAC,KAAK,OAAK,IAAIF,OAAE,MAAM,EAAE,EAAC,KAAK,OAAK,CAAC,GAAE,KAAK,OAAK,CAAC,GAAE,KAAK,uBAAK,IAAI,KAAG;;EAAC,OAAM;AAAC,OAAY,KAAK,SAAd,KAAK,EAAc;AAAO,QAAK,OAAK,IAAIA,OAAE,gBAAc;AAAC,SAAK,KAAK,KAAK,EAAC,MAAM,eAAe;MAAG;GAAC,IAAMF,IAAE,KAAK,OAAK,IAAIE,OAAE,OAAO,SAAS,WAAU;IAAC,IAAMA,IAAEC,IAAE,IAAI,KAAK;AAAC,IAASD,MAAT,KAAK,MAAQ,CAAC,MAAIA,EAAE,QAAMA,EAAE,eAAe,EAAC,KAAK,OAAO;MAAI;AAAC,OAAE,IAAIF,GAAE,KAAK,EAACC,IAAE,SAAS,MAAK;IAAC,SAAQD;IAAE,QAAO,KAAK;IAAK,CAAC,EAACA,EAAE,MAAM,KAAK,KAAK;;EAAC,OAAM;AAAC,GAAS,KAAK,SAAd,KAAK,MAAgB,KAAK,KAAK,QAAQ,KAAK,KAAK,EAAC,KAAK,OAAK,KAAK,GAAE,KAAK,OAAK,KAAK;;EAAG,gBAAe;AAAC,QAAK,oBAAkB,KAAK,MAAM,EAAC,KAAK,OAAK,CAAC,GAAE,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,GAAC,EAAE,EAAC,KAAK,OAAK,CAAC,GAAE,KAAK,KAAK,KAAK;;EAAE,OAAO,GAAE;AAAC,OAAG;AAAC,SAAK,QAAM,KAAK,OAAK,CAAC,GAAE,MAAM,OAAOE,EAAE,IAAE,KAAK,KAAK,UAAS,MAAGA,EAAE,QAAQ,EAAE;aAAQ;AAAC,SAAK,kBAAgB,CAAC,GAAE,KAAK,KAAK,OAAO;;;EAAE,cAAc,GAAE,GAAE,GAAE;AAAC,QAAK,OAAK,CAAC,GAAE,MAAM,cAAcA,GAAEF,GAAEC,EAAE;;EAAC,oBAAmB;AAAC,SAAM,mBAAmB,EAAC,KAAK,eAAe;;EAAC,uBAAsB;AAAC,SAAM,sBAAsB,EAAC,sBAAoB;AAAC,KAAC,MAAI,KAAK,eAAa,KAAK,MAAM;MAAG;;EAAC,EAAE,GAAE;AAAC,QAAK,KAAK,IAAIC,EAAE;GAAC,IAAMF,IAAE,KAAK;AAAK,QAAK,eAAe,EAAC,KAAK,OAAKA;;EAAE,EAAE,GAAE;AAAC,QAAK,KAAK,OAAOE,EAAE;;;;;;;;;ACAj2C,IAAMG,MAAE;CAAC,WAAU;CAAE,OAAM;CAAE,UAAS;CAAE,mBAAkB;CAAE,OAAM;CAAE,SAAQ;CAAE,ECAtE,EAAC,GAAEG,QAAGC,GCALc,OAAG,GAAE,MAAI;CAAC,IAAMC,IAAEC,EAAE;AAAK,KAAYD,MAAT,KAAK,EAAM,QAAM,CAAC;AAAE,MAAI,IAAMC,KAAKD,EAAE,GAAE,OAAOE,GAAE,CAAC,EAAE,EAACH,IAAEE,GAAEC,EAAE;AAAC,QAAM,CAAC;GAAGC,OAAE,MAAG;CAAC,IAAID,GAAEF;AAAE,IAAE;AAAC,OAAa,IAAEC,EAAE,UAAd,KAAK,EAAe;AAAM,MAAEC,EAAE,MAAKF,EAAE,OAAOC,EAAE,EAAC,IAAEC;UAAYF,GAAG,SAAP;GAAcI,OAAE,MAAG;AAAC,MAAI,IAAIF,GAAE,IAAED,EAAE,MAAK,IAAEC,GAAE;EAAC,IAAIF,IAAEE,EAAE;AAAK,MAAYF,MAAT,KAAK,EAAM,GAAE,OAAK,oBAAE,IAAI,KAAG;WAASA,EAAE,IAAIC,EAAE,CAAC;AAAM,IAAE,IAAIA,EAAE,EAAC,EAAEC,EAAE;;;AAAG,SAASG,IAAE,GAAE;AAAC,CAAS,KAAK,SAAd,KAAK,IAA4C,KAAK,OAAKJ,KAAvCE,IAAE,KAAK,EAAC,KAAK,OAAKF,GAAEG,IAAE,KAAK;;AAAc,SAASE,IAAE,GAAE,IAAE,CAAC,GAAE,IAAE,GAAE;CAAC,IAAMF,IAAE,KAAK,MAAKC,IAAE,KAAK;AAAK,KAAYA,MAAT,KAAK,KAAWA,EAAE,SAAN,EAAW,KAAGH,EAAE,KAAG,MAAM,QAAQE,EAAE,CAAC,MAAI,IAAIH,IAAED,GAAEC,IAAEG,EAAE,QAAO,IAAI,KAAEA,EAAEH,IAAG,CAAC,EAAE,EAACE,IAAEC,EAAEH,GAAG;KAAM,CAAMG,KAAN,SAAUL,IAAEK,GAAE,CAAC,EAAE,EAACD,IAAEC,EAAE;KAAO,KAAE,MAAKH,EAAE;;AAAC,IAAM,KAAE,MAAG;AAAC,GAAE,QAAMD,IAAE,UAAQ,EAAE,SAAOM,KAAE,EAAE,SAAOD;;AGA1mBc,OAAE,OAAQA,OAAE;;;;;;ACAvB,IAAM,IAAN,cAAgB,MAAK;CAAC,YAAY,GAAE,GAAE,GAAE,GAAE;AAAC,QAAM,mBAAkB;GAAC,SAAQ,CAAC;GAAE,UAAS,CAAC;GAAE,CAAC,EAAC,KAAK,UAAQK,GAAE,KAAK,gBAAcC,GAAE,KAAK,WAASC,GAAE,KAAK,YAAUC,KAAG,CAAC;;GCA9JC,MAAN,MAAO;CAAC,IAAI,QAAO;AAAC,SAAO,KAAK;;CAAE,IAAI,MAAM,GAAE;AAAC,OAAK,SAASA,EAAE;;CAAC,SAAS,GAAE,IAAE,CAAC,GAAE;EAAC,IAAMC,IAAEC,KAAG,CAAC,OAAO,GAAGF,GAAE,KAAK,EAAE;AAAC,OAAK,IAAEA,GAAEC,KAAG,KAAK,iBAAiB;;CAAC,YAAY,GAAE;AAAC,OAAK,gCAAc,IAAI,KAAG,EAAC,KAAK,wBAAoB;AAAC,QAAI,IAAK,CAACD,GAAE,EAAC,UAASE,QAAM,KAAK,cAAc,GAAE,KAAK,GAAEA,EAAE;KAAWF,MAAT,KAAK,MAAQ,KAAK,QAAMA;;CAAG,YAAY,GAAE,GAAE,GAAE;AAAC,MAAG,CAACC,EAAE,QAAO,KAAKD,EAAE,KAAK,MAAM;AAAC,OAAK,cAAc,IAAIA,EAAE,IAAE,KAAK,cAAc,IAAIA,GAAE;GAAC,gBAAa;AAAC,SAAK,cAAc,OAAOA,EAAE;;GAAE,cAAaE;GAAE,CAAC;EAAC,IAAK,EAAC,UAASC,MAAG,KAAK,cAAc,IAAIH,EAAE;AAAC,IAAE,KAAK,OAAMG,EAAE;;CAAC,iBAAgB;AAAC,OAAK,cAAc,OAAO;;GCAljBC,MAAN,cAAgB,MAAK;CAAC,YAAY,GAAE,GAAE;AAAC,QAAM,oBAAmB;GAAC,SAAQ,CAAC;GAAE,UAAS,CAAC;GAAE,CAAC,EAAC,KAAK,UAAQC,GAAE,KAAK,gBAAcC;;GAASC,MAAN,cAAgBD,IAAC;CAAC,YAAY,GAAE,GAAE,GAAE;AAAC,QAAeF,EAAE,YAAX,KAAK,IAA6BG,IAAfH,EAAE,aAAe,EAAC,KAAK,oBAAiB,MAAG;AAAC,OAAGC,EAAE,YAAU,KAAK,QAAQ;GAAO,IAAMC,IAAED,EAAE,iBAAeA,EAAE,cAAc,CAAC;AAAG,SAAI,KAAK,SAAOA,EAAE,iBAAiB,EAAC,KAAK,YAAYA,EAAE,UAASC,GAAED,EAAE,UAAU;KAAG,KAAK,qBAAkB,MAAG;AAAoC,OAAhCC,EAAE,YAAU,KAAK,YAAmBA,EAAE,iBAAeA,EAAE,cAAc,CAAC,QAAM,KAAK,KAAK;GAAO,IAAMF,oBAAE,IAAI,KAAG;AAAC,QAAI,IAAK,CAACE,GAAE,EAAC,cAAaC,QAAM,KAAK,cAAc,GAAE,IAAID,EAAE,KAAGF,EAAE,IAAIE,EAAE,EAACC,EAAE,cAAc,IAAIF,EAAE,KAAK,SAAQE,GAAED,GAAE,CAAC,EAAE,CAAC;AAAE,KAAE,iBAAiB;KAAE,KAAK,OAAKA,GAAWF,EAAE,YAAX,KAAK,IAAqC,KAAK,UAAQA,IAApC,KAAK,UAAQA,EAAE,SAAuB,KAAK,iBAAiB,EAAC,KAAK,KAAK,gBAAgB,KAAK;;CAAC,kBAAiB;AAAC,OAAK,KAAK,iBAAiB,mBAAkB,KAAK,iBAAiB,EAAC,KAAK,KAAK,iBAAiB,oBAAmB,KAAK,kBAAkB;;CAAC,gBAAe;AAAC,OAAK,KAAK,cAAc,IAAIA,IAAE,KAAK,SAAQ,KAAK,KAAK,CAAC;;;;;;;GCA5/B,SAASI,IAAE,EAAC,SAAQA,KAAG;AAAC,SAAO,GAAE,MAAI;EAAC,IAAMC,oBAAE,IAAI,SAAO;AAAC,MAAa,OAAOC,KAAjB,SAAmB,QAAM;GAAC,MAAK;AAAC,WAAOC,EAAE,IAAI,KAAK,KAAK;;GAAE,IAAI,GAAE;AAAC,WAAOF,EAAE,IAAI,KAAK,CAAC,SAASG,EAAE,EAACD,EAAE,IAAI,KAAK,MAAKC,EAAE;;GAAE,KAAK,GAAE;AAAC,WAAOH,EAAE,IAAI,MAAK,IAAIG,IAAE,MAAK;KAAC,SAAQJ;KAAE,cAAaG;KAAE,CAAC,CAAC,EAACA;;GAAG;EAAC;AAAC,KAAE,YAAY,iBAAgB,MAAG;AAAC,MAAE,IAAIA,GAAE,IAAIC,IAAED,GAAE,EAAC,SAAQH,GAAE,CAAC,CAAC;MAAG;GAAC,IAAMK,IAAE,OAAO,yBAAyBF,GAAED,EAAE,EAAKI;AAAE,OAAYD,MAAT,KAAK,GAAM;IAAC,IAAMD,oBAAE,IAAI,SAAO;AAAC,QAAE;KAAC,MAAK;AAAC,aAAOA,EAAE,IAAI,KAAK;;KAAE,IAAI,GAAE;AAAC,QAAE,IAAI,KAAK,CAAC,SAASJ,EAAE,EAACI,EAAE,IAAI,MAAKJ,EAAE;;KAAE,cAAa,CAAC;KAAE,YAAW,CAAC;KAAE;UAAK;IAAC,IAAMI,IAAEC,EAAE;AAAI,QAAE;KAAC,GAAGA;KAAE,IAAI,GAAE;AAAC,QAAE,IAAI,KAAK,CAAC,SAASL,EAAE,EAACI,GAAG,KAAK,MAAKJ,EAAE;;KAAE;;AAAa,UAAO,eAAeG,GAAED,GAAEI,EAAE;AAAxC;;;;ACgBzkB,IAAM,IAAI;CACR,mBAAmB;CACnB,mBAAmB;CACnB,oBAAoB;CACpB,eAAe;CACf,mBAAmB;CACnB,eAAe;CAChB,EAEK,QAAQ,EACZ,gBAAgB,IACjB,EAEK,OAAO;CACX,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,eAAe;CACf,eAAe;CACf,oBAAoB;CACpB,eAAe;CAChB,EAEK,SAAS;CACb,mBAAmB;CACnB,mBAAmB;CACnB,oBAAoB;CACpB,eAAe;CACf,eAAe;CACf,eAAe;CACf,eAAe;CACf,eAAe;CACf,eAAe;CACf,eAAe;CACf,gBAAgB;CAChB,eAAe;CACf,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CACnB,EAEK,UAAU;CACd,mBAAmB;CACnB,mBAAmB;CACnB,oBAAoB;CACpB,eAAe;CACf,eAAe;CACf,eAAe;CAChB,EAEK,KAAK;CACT,GAAG;CACH,oBAAoB;CACrB,EAEK,KAAK;CACT,GAAG;CACH,oBAAoB;CACrB,EAEK,KAAK;CACT,GAAG;CACH,oBAAoB;CACrB,EAEK,SAAS,EACb,iBAAiB,IAClB,EAEK,QAAQ;CACZ,mBAAmB;CACnB,mBAAmB;CACnB,oBAAoB;CACpB,eAAe;CACf,eAAe;CACf,eAAe;CACf,eAAe;CACf,eAAe;CACf,eAAe;CACf,gBAAgB;CAChB,eAAe;CACf,eAAe;CACf,eAAe;CAChB,EAEK,IAAI;CACR,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,cAAc;CACd,oBAAoB;CACpB,eAAe;CACf,eAAe;CAChB,EAEK,cAAc;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,cAAc;CACd,oBAAoB;CACpB,eAAe;CAChB,EAEK,gBAAgB;CACpB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,cAAc;CACd,oBAAoB;CACpB,eAAe;CAChB,EAEK,WAAW;CACf,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,cAAc;CACd,oBAAoB;CACpB,eAAe;CAChB,EAEK,MAAM;CACV,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,oBAAoB;CACpB,mBAAmB;CACnB,eAAe;CAChB,EAEK,WAAW;CACf,GAAG;CACH,iBAAiB;CACjB,eAAe;CAChB,EAEK,QAAQ,EACZ,gBAAgB,IACjB,EAEK,SAAS,KAAK,OAAO,MAAM,GAAG,EAAE,eAAe,IAAM,CAAC,EACtD,aAAa,KAAK,OAAO,MAAM,OAAO,EAAE,cAAc,IAAM,CAAC,EAC7D,gBAAgB,KAAK,OAAO,MAAM,UAAU,EAAE,cAAc,IAAM,CAAC,EACnE,cAAc,KAAK,OAAO,MAAM,QAAQ,EAAE,gBAAgB,IAAM,CAAC,EACjE,UAAU,KAAK,OAAO,MAAM,IAAI,EAAE,cAAc,IAAM,CAAC,EACvD,UAAU,KAAK,OAAO,MAAM,IAAI,EAAE,cAAc,IAAM,CAAC,EACvD,UAAU,KAAK,OAAO,MAAM,IAAI,EAAE,cAAc,IAAM,CAAC,EACvD,YAAY,KAAK,OAAO,MAAM,MAAM,EAAE,cAAc,IAAM,CAAC,EAC3D,SAAS,KAAK,OAAO,MAAM,GAAG,EAAE,eAAe,IAAM,CAAC,EACtD,WAAW,KAAK,OAAO,MAAM,KAAK,EAAE,eAAe,IAAM,CAAC,EAC1D,mBAAmB,KAAK,OAAO,MAAM,aAAa,EACtD,eAAe,IAChB,CAAC,EACI,qBAAqB,KAAK,OAAO,MAAM,eAAe,EAC1D,eAAe,IAChB,CAAC,EACI,gBAAgB,KAAK,OAAO,MAAM,UAAU,EAChD,eAAe,IAChB,CAAC,EAEIC,mBAA2C;CAC/C,kBAAkB;CAClB,iBAAiB;CACjB,sBAAsB;CACtB,UAAU;CACV,UAAU;CACV,UAAU;CACV,WAAW;CACX,UAAU;CACV,UAAU;CACV,SAAS;CACT,UAAU;CACV,UAAU;CACV,UAAU;CACV,UAAU;CACV,UAAU;CACV,UAAU;CACV,UAAU;CACV,WAAW;CACZ;AAED,MAAaC,eAAiC;CAC5C,kBAAkB;EAChB,MAAM;GACJ,GAAG;GACH,aAAa;GACd;EACD,QAAQ;GACN,GAAG;GACH,UAAU;GACX;EACD,UAAU,EACR,GAAG,kBACJ;EACD,QAAQ,EACN,GAAG,kBACJ;EACD,eAAe,EACb,GAAG,kBACJ;EACD,SAAS,EACP,GAAG,kBACJ;EACD,MAAM,EACJ,GAAG,kBACJ;EACD,OAAO;GACL,GAAG;GACH,aAAa;GACb,cAAc;GACd,YAAY;GACZ,aAAa;GACd;EACD,MAAM,EACJ,GAAG,kBACJ;EACD,OAAO,EACL,GAAG,kBACJ;EACD,gBAAgB,EACd,GAAG,kBACJ;EACD,KAAK,EACH,GAAG,kBACJ;EACD,QAAQ,EACN,GAAG,kBACJ;EACD,MAAM,EACJ,GAAG,kBACJ;EACD,MAAM,EACJ,GAAG,kBACJ;EACD,WAAW,EACT,GAAG,kBACJ;EACD,OAAO,EACL,GAAG,kBACJ;EACD,aAAa,EACX,GAAG,kBACJ;EACF;CACD,YAAY;EACV,aAAa,EAAE;EACf,QAAQ;GACN,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GACf,iBAAiB;GACjB,gBAAgB;GAChB,kBAAkB;GACnB;EACD,MAAM;GACJ,eAAe;GACf,kBAAkB;GAClB,gBAAgB;GAChB,eAAe;GACf,eAAe;GACf,gBAAgB;GAChB,gBAAgB;GAChB,eAAe;GACf,eAAe;GAChB;EACD,UAAU;GACR,SAAS;IACP,cAAc;IACd,eAAe;IACf,cAAc;IACd,eAAe;IACf,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IAChB;GACD,OAAO;IACL,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB;IACrB;GACD,WAAW;IACT,oBAAoB;IACpB,eAAe;IAChB;GACF;EACD,QAAQ,EAAE;EACV,eAAe;GACb,WAAW,EAAE;GACb,OAAO,EAAE;GACT,SAAS;IACP,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IAChB;GACF;EACD,SAAS;GACP,iBAAiB;GACjB,eAAe;GACf,eAAe;GAChB;EACD,OAAO;GACL,KAAK;IACH,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,eAAe;IACf,eAAe;IACf,eAAe;IAChB;GACD,QAAQ,EAAE;GACV,QAAQ,EAAE;GACV,MAAM,EAAE;GACR,cAAc,EAAE;GAChB,eAAe,EAAE;GACjB,cAAc,EAAE;GACjB;EACD,MAAM;GACJ,eAAe;GACf,cAAc;GACd,iBAAiB;GACjB,sBAAsB;GACtB,eAAe;GACf,eAAe;GAChB;EACD,MAAM;GACJ,cAAc;GACd,cAAc;GACf;EACD,OAAO;GACL,UAAU,EAAE,qBAAqB,IAAM;GACvC,SAAS;IACP,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,eAAe;IACf,gBAAgB;IACjB;GACF;EACD,gBAAgB;GACd,WAAW,EAAE;GACb,OAAO,EAAE;GACT,SAAS,EAAE;GACZ;EACD,KAAK;GACH,cAAc;GACd,eAAe;GAChB;EACD,QAAQ;GACN,WAAW,EAAE;GACb,OAAO,EAAE;GACT,SAAS,EAAE;GACZ;EACD,MAAM;GACJ,WAAW,EAAE;GACb,UAAU;IAAE,KAAK,EAAE;IAAE,UAAU,EAAE;IAAE;GACnC,SAAS,EAAE;GACZ;EACD,MAAM;GACJ,KAAK;IACH,gBAAgB;IAChB,cAAc;IACd,eAAe;IAChB;GACD,IAAI;IACF,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,oBAAoB;IACrB;GACD,IAAI;IACF,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,oBAAoB;IACrB;GACD,IAAI;IACF,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,oBAAoB;IACrB;GACD,IAAI;IACF,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,oBAAoB;IACrB;GACD,IAAI;IACF,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,eAAe;IACf,oBAAoB;IACpB,eAAe;IAChB;GACD,MAAM,EAAE;GACR,SAAS,EAAE;GACZ;EACD,WAAW;GACT,WAAW;IACT,oBAAoB;IACpB,gBAAgB;IAChB,cAAc;IACd,sBAAsB;IACtB,eAAe;IAChB;GACD,OAAO,EACL,gBAAgB,IACjB;GACD,SAAS;IACP,oBAAoB;IACpB,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IAChB;GACF;EACD,OAAO;GACL,eAAe;GACf,gBAAgB;GACjB;EACF;CACD,UAAU;EACR,GAAG;EACH;EACA,MAAM;EACN,QAAQ;EACR,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI,EAAE;EACN,IAAI,EAAE;EACN;EACA,OAAO;EACP,GAAG;EACH,KAAK;EACL,UAAU;EACV;EACD;CACD,UAAU;EACR,GAAG,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC;EAC3B,IAAI,CAAC,GAAG,OAAO,KAAK,QAAQ,CAAC;EAC7B,IAAI,CAAC,GAAG,OAAO,KAAK,QAAQ,CAAC;EAC7B,IAAI,CAAC,GAAG,OAAO,KAAK,QAAQ,CAAC;EAC7B,IAAI,EAAE;EACN,IAAI,EAAE;EACN,IAAI,CAAC,GAAG,OAAO,KAAK,mBAAmB,CAAC;EACxC,IAAI,CAAC,GAAG,OAAO,KAAK,iBAAiB,CAAC;EACtC,IAAI,CAAC,GAAG,OAAO,KAAK,cAAc,CAAC;EACnC,GAAG,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC;EAC3B,QAAQ,EAAE;EACV,IAAI,EAAE;EACP;CACF;AChgBM,IAAA,oBAAA,cAAgC,EAAc,EAAW,CAAC;;4BAEnC,+BAGN,gCASY;;2BAEhB,GAAG;;;;;CAMnB,SAAS;AACL,MAAI,CAAC,KAAK,aAAa,CAAC,KAAK,UACzB,QAAO,CAAI;EAIf,IAAM,IAAU,KAAK,WAAW,KAAK,UAAU,aAAa,CAAC,IAAI,KAAK,UAAU;AAOhF,SALK,IAKE,CAAI;;qBAEE,KAAK,UAAU;mBACjB,EAAQ;qBACN,KAAK,UAAU;gCACJ,KAAK,qBAAqB;;SAT9C,QAAQ,KAAK,8BAA8B,KAAK,UAAU,0BAA0B,KAAK,UAAU,aAAa,CAAC,EAC1G,CAAI,gBAAgB,KAAK,UAAU;;;YA/BjD,IAAQ,EAAE,SAAS,GAAG,QAAQ,cAAc,CAAC,CAAA,EAAA,kBAAA,WAAA,SAAA,KAAA,EAAA,cAG7C,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,kBAAA,WAAA,aAAA,KAAA,EAAA,cAG1B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,kBAAA,WAAA,WAAA,KAAA,EAAA,cAG1B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,kBAAA,WAAA,aAAA,KAAA,EAAA,cAG1B,EAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,kBAAA,WAAA,wBAAA,KAAA,EAAA,kCAd/B,EAAc,sBAAsB,CAAA,EAAA,kBAAA;ACfrC,MAAa,WAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACIlB,IAAA,kBAAA,cAA8B,EAAW;;oCAGsB,EAAE,cACjB;;2BAHnC;CAKhB,cAAsB,GAAmC;AACrD,OAAK,cAAc,IAAI,YAAY,iBAAiB;GAChD,QAAQ,EAAE,iBAAc;GACxB,SAAS;GACT,UAAU;GACb,CAAC,CAAC;;CAGP,SAAS;AACL,SAAO,CAAI;;;;;kBAKD,KAAK,cAAc,WAAW,IAC9B,CAAI,mEACJ,KAAK,cAAc,KAAI,MAAQ,CAAI;yDACI,KAAK,cAAc,EAAK,CAAC;8BACpD,EAAK,MAAM;;sBAEnB,CAAC;;;;;YAvBlB,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,EAAA,gBAAA,WAAA,iBAAA,KAAA,EAAA,cACzB,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,gBAAA,WAAA,QAAA,KAAA,EAAA,gCAL9C,EAAc,0BAA0B,CAAA,EAAA,gBAAA;ACqEzC,MAAa,mBAAmB,IAjEhC,cAAsC,YAAY;;+BACR,oBACJ,uBACH,EAAE,iBACG,EAAE;;CAEtC,IAAI,UAAU;AAAE,SAAO,KAAK;;CAC5B,IAAI,QAAQ;AAAE,SAAO,KAAK;;CAC1B,IAAI,WAAW;AAAE,SAAO,KAAK;;CAC7B,IAAI,SAAS;AAAE,SAAO,KAAK;;CAM3B,WAAW,GAA4B;AAEnC,EADA,KAAK,WAAW,GAChB,KAAK,QAAQ;;CAOjB,SAAS,GAAwB;AAE7B,EADA,KAAK,SAAS,GACd,KAAK,QAAQ;;CASjB,YAAY,GAAqB;AAE7B,EADA,KAAK,YAAY,CAAC,GAAG,EAAS,EAC9B,KAAK,QAAQ;;CAQjB,SAAS,GAAe,GAAc;AAIlC,EADA,KAAK,UAAU,CAAC;GAAE;GAAO;GAAS,uBAFtB,IAAI,MAAM,EACL,cAAc,CAAC,MAAM,IAAI,CAAC;GACH,EAAE,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,EACxE,KAAK,QAAQ;;CAMjB,cAAc;AAEV,EADA,KAAK,UAAU,EAAE,EACjB,KAAK,QAAQ;;CAGjB,SAAiB;AACb,OAAK,cAAc,IAAI,YAAY,mBAAmB,CAAC;;GAIT,ECxEzC,WAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACIlB,IAAA,kBAAA,cAA8B,EAAW;;iCAG6B,0BAC1C,uBACC,uBACE,EAAE,iBACJ,EAAE,oBACN,uBACC,uBAET,uBACA,qBACM,oBACA,oBACA,oBACA,mBACD,mBACA,wBAEK,yBACC,wBAiBT,MAAkB;AACxC,GAAI,KAAK,cACP,KAAK,MAAM,EAAE,GACJ,KAAK,eACd,KAAK,QAAQ,EAAE;6BAIQ;AACzB,GAAI,KAAK,cACP,KAAK,UAAU,GACN,KAAK,eACd,KAAK,YAAY;qCAIc;AACjC,QAAK,aAAa;;;2BAtDJ;CAsBhB,oBAAoB;AAKlB,EAJA,MAAM,mBAAmB,EACzB,iBAAiB,iBAAiB,oBAAoB,KAAK,mBAAmB,EAC9E,OAAO,iBAAiB,aAAa,KAAK,aAAa,EACvD,OAAO,iBAAiB,WAAW,KAAK,WAAW,EACnD,KAAK,aAAa;;CAGpB,uBAAuB;AAIrB,EAHA,MAAM,sBAAsB,EAC5B,iBAAiB,oBAAoB,oBAAoB,KAAK,mBAAmB,EACjF,OAAO,oBAAoB,aAAa,KAAK,aAAa,EAC1D,OAAO,oBAAoB,WAAW,KAAK,WAAW;;CAuBxD,cAAsB;AAKpB,EAJA,KAAK,WAAW,iBAAiB,SACjC,KAAK,YAAY,iBAAiB,OAClC,KAAK,YAAY,iBAAiB,UAClC,KAAK,UAAU,iBAAiB,QAChC,KAAK,eAAe;;CAGtB,eAAuB;AACrB,OAAK,cAAc,IAAI,YAAY,QAAQ,CAAC;;CAG9C,WAAmB,GAA4B;AACzC,IAAE,UAAW,EAAE,OAAuB,QAAQ,gBAAgB,KAE9D,EAAE,SAAS,gBACb,KAAK,YAAa,EAAiB,QAAQ,GAAG,UAAU,KAAK,UAC7D,KAAK,YAAa,EAAiB,QAAQ,GAAG,UAAU,KAAK,aAE7D,KAAK,YAAa,EAAiB,UAAU,KAAK,UAClD,KAAK,YAAa,EAAiB,UAAU,KAAK,WAGpD,KAAK,cAAc;;CAGrB,MAAc,GAA4B;AACxC,EAAI,KAAK,gBACH,EAAE,SAAS,eAAa,EAAE,gBAAgB,EAE1C,EAAE,SAAS,eACb,KAAK,YAAa,EAAiB,QAAQ,GAAG,UAAU,KAAK,WAC7D,KAAK,YAAa,EAAiB,QAAQ,GAAG,UAAU,KAAK,cAE7D,KAAK,YAAa,EAAiB,UAAU,KAAK,WAClD,KAAK,YAAa,EAAiB,UAAU,KAAK,YAGpD,KAAK,WAAW,KAAK,WACrB,KAAK,WAAW,KAAK,WAErB,KAAK,cAAc,KAAK,WAAW,KAAK,UAAU;;CAItD,WAAmB;AAGjB,EAFA,KAAK,YAAY,KAAK,WACtB,KAAK,YAAY,KAAK,WACtB,KAAK,cAAc;;CAGrB,aAAqB,GAAe;AAOlC,EANA,EAAE,gBAAgB,EAClB,EAAE,iBAAiB,EACnB,KAAK,cAAc,IACnB,KAAK,YAAY,EAAE,SACnB,KAAK,YAAY,EAAE,SACnB,KAAK,gBAAgB,KAAK,uBAAuB,CAAC,OAClD,KAAK,iBAAiB,KAAK,uBAAuB,CAAC;;CAGrD,QAAgB,GAAe;AAC7B,MAAI,KAAK,aAAa;GACpB,IAAM,IAAS,EAAE,UAAU,KAAK,WAC1B,IAAS,EAAE,UAAU,KAAK;AAEhC,GADA,KAAK,MAAM,QAAQ,GAAG,KAAK,gBAAgB,EAAO,KAClD,KAAK,MAAM,SAAS,GAAG,KAAK,iBAAiB,EAAO;;;CAIxD,aAAqB;AACnB,OAAK,cAAc;;CAGrB,cAAsB,GAAc,GAAc;AAChD,OAAK,MAAM,YAAY,eAAe,EAAK,MAAM,EAAK;;CAGxD,SAAS;AACP,SAAO,CAAI;;sBAEO,KAAK,WAAW;uBACf,KAAK,WAAW;sBACjB,KAAK,MAAM;qBACZ,KAAK,SAAS;;;+CAGY,KAAK,aAAa;;;;;0BAKvC,KAAK,eAAe,YAAY,WAAW,GAAG,kBAAkB,KAAK,aAAa,UAAU;0BAC5F,KAAK,eAAe,UAAU,WAAW,GAAG,kBAAkB,KAAK,aAAa,QAAQ;0BACxF,KAAK,eAAe,aAAa,WAAW,GAAG,kBAAkB,KAAK,aAAa,WAAW;0BAC9F,KAAK,eAAe,WAAW,WAAW,GAAG,kBAAkB,KAAK,aAAa,SAAS;;;UAG1G,KAAK,gBAAgB,CAAC;;+CAEe,KAAK,aAAa;;;CAI/D,iBAAyB;AACvB,UAAQ,KAAK,YAAb;GACE,KAAK,UACH,QAAO,KAAK,uBAAuB,WAAW,KAAK,SAAS;GAC9D,KAAK,QACH,QAAO,KAAK,uBAAuB,SAAS,KAAK,UAAU;GAC7D,KAAK,WACH,QAAO,CAAI,QAAQ,KAAK,UAAU,KAAK,WAAW,MAAM,EAAE,CAAC;GAC7D,KAAK,SACH,QAAO,CAAI;;cAEL,KAAK,QAAQ,KAAI,MAAQ,CAAI;;;6CAGE,EAAK,MAAM;6CACX,EAAK,KAAK;;;;;2BAK5B,KAAK,UAAU,EAAK,SAAS,MAAM,EAAE,CAAC;;;;cAInD,CAAC;cACD,KAAK,QAAQ,WAAW,IAAI,CAAI,wFAAwF,GAAG;;;;;CAMvI,uBAA+B,GAA2B,GAAW;AAgBnE,SAfI,KAAK,aACA,CAAI;;;;sBAIK,KAAK,YAAY;uBAChB,MAAW,KAAK,cAAc,EAAE,OAAO,MAAM;;;oDAGhB,KAAK,kBAAkB;wDACnB,KAAK,YAAY,EAAK,CAAC;;;UAKpE,CAAI;;wBAES,MAAS,YAAY,mBAAmB,gBAAgB;oDAC5B,KAAK,YAAY,EAAK,CAAC;;aAE9D,KAAK,UAAU,GAAM,MAAM,EAAE,CAAC;;;CAIzC,YAAoB,GAAW;AAE7B,EADA,KAAK,cAAc,KAAK,UAAU,GAAM,MAAM,EAAE,EAChD,KAAK,aAAa;;CAGpB,oBAA4B;AAC1B,OAAK,aAAa;;CAGpB,YAAoB,GAA2B;AAC7C,MAAI;GACF,IAAM,IAAS,KAAK,MAAM,KAAK,YAAY,EACrC,IAAY,MAAS,YAAY,mBAAmB;AAM1D,GALA,KAAK,cAAc,IAAI,YAAY,GAAW;IAC5C,QAAQ;IACR,SAAS;IACT,UAAU;IACX,CAAC,CAAC,EACH,KAAK,aAAa;WACX,GAAG;AACV,SAAM,mBAAoB,EAAY,QAAQ;;;;YA3OjD,GAAO,CAAA,EAAA,gBAAA,WAAA,cAAA,KAAA,EAAA,cACP,GAAO,CAAA,EAAA,gBAAA,WAAA,YAAA,KAAA,EAAA,cACP,GAAO,CAAA,EAAA,gBAAA,WAAA,aAAA,KAAA,EAAA,cACP,GAAO,CAAA,EAAA,gBAAA,WAAA,aAAA,KAAA,EAAA,cACP,GAAO,CAAA,EAAA,gBAAA,WAAA,WAAA,KAAA,EAAA,cACP,GAAO,CAAA,EAAA,gBAAA,WAAA,cAAA,KAAA,EAAA,cACP,GAAO,CAAA,EAAA,gBAAA,WAAA,eAAA,KAAA,EAAA,gCAVT,EAAc,yBAAyB,CAAA,EAAA,gBAAA;ACIxC,IAAMC,cAA6C;CAC/C,QAAU;CACV,SAAW;CACX,UAAY;CACZ,UAAY;CACZ,MAAQ;CACR,YAAc;CACd,kBAAoB;CACvB;AAED,SAAgB,WAAW,GAAiC;AAIxD,QAAO,GAHQ,YAAY,GAGV,GADE,OAAO,YAAY,CAAC,QAAQ,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE;;ACnBxE,IAAa,oBAAb,MAAa,UAA0B,YAAqC;CAOxE,cAAsB;EAClB,OAAO,kBAP2B,+CACG,IAAI,KAAK,6BAGmC;;CAMrF,OAAc,cAAiC;AAI3C,SAHA,AACI,EAAkB,cAAY,IAAI,GAAmB,EAElD,EAAkB;;CAG7B,eAAe,GAAqB,GAAiF;AAMjH,EALA,QAAQ,IAAI,2BAA2B,EAAQ,EAC/C,KAAK,WAAW,GACZ,GAAU,gBACV,KAAK,sBAAsB,EAAS,cAExC,KAAK,cAAc,IAAI,YAAY,qBAAqB,EAAE,QAAQ,GAAS,CAAC,CAAC;;CAGjF,kBAAkB,GAAqB;AAEnC,EADA,KAAK,oBAAoB,IAAI,IAAI,EAAI,EACrC,KAAK,cAAc,IAAI,YAAY,mBAAmB,EAAE,QAAQ,GAAK,CAAC,CAAC;;CAG3E,MAAM,YAAY,GAA0C;AACxD,MAAI,EAAK,SAAS,QAAQ;GACtB,IAAM,IAAS,EAAa;AAC5B,WAAQ,IAAI,qDAAqD,EAAM,OAAO,SAAS;AACvF,QAAK,IAAM,KAAQ,GAAO;IACtB,IAAM,IAAS,MAAM,KAAK,YAAY,EAAK;AAC3C,QAAI,EAAO,WAAW,QAClB,QAAO;;AAGf,UAAO,EAAE,QAAQ,MAAM;;AAG3B,MAAI,EAAK,SAAS,WAAW,EAAK,SAAS,YAAY;GACnD,IAAM,IAAY,EAAa;AAG/B,OAFA,QAAQ,IAAI,0CAA0C,EAAS,gBAAgB,EAAK,KAAK,MAAM,EAE3F,CADU,MAAM,KAAK,eAAe,EAAS,CAE7C,QAAO;IAAE,QAAQ;IAAS,SAAS,WAAW,EAAS;IAA4C;;AAc3G,SAVI,KAAK,sBACE,KAAK,oBAAoB,EAAK,GAGpC,KAAK,YAKV,QAAQ,IAAI,gCAAgC,EAAK,EAC1C,EAAE,QAAQ,MAAM,KALnB,QAAQ,KAAK,6CAA6C,EACnD;GAAE,QAAQ;GAAS,SAAS;GAAwB;;CAOnE,eAAuB,GAAkB,IAAU,KAAyB;AAKxE,SAJI,KAAK,kBAAkB,IAAI,EAAS,GAC7B,QAAQ,QAAQ,GAAK,GAGzB,IAAI,SAAS,MAAY;GAC5B,IAAM,IAAQ,iBAAiB;AAE3B,IADA,KAAK,oBAAoB,mBAAmB,EAAQ,EACpD,EAAQ,GAAM;MACf,EAAQ,EAEL,UAAgB;AAClB,IAAI,KAAK,kBAAkB,IAAI,EAAS,KACpC,aAAa,EAAM,EACnB,KAAK,oBAAoB,mBAAmB,EAAQ,EACpD,EAAQ,GAAK;;AAIrB,QAAK,iBAAiB,mBAAmB,EAAQ;IACnD;;CAGN,IAAW,UAA6B;AACpC,SAAO,KAAK;;CAMhB,IAAW,QAA2B;AAElC,SAAO,KAAK;;;AAIpB,MAAa,oBAAoB,kBAAkB,aAAa;AC1EhE,IAAa,iBAAb,MAAuD;CAGnD,YAAY,GAAsB;AAC9B,OAAK,UAAU;;CAGnB,mBAAmB,GAA2E;AAE1F,EADA,iBAAiB,SAAS,sBAAsB,EAAO,MAAM,EAC7D,KAAK,QAAQ,4BAA4B;;CAG7C,kBAAkB,GAA4D;AAG1E,EAFA,iBAAiB,SAAS,qBAAqB,EAAO,MAAM,EAE5D,KAAK,QAAQ,uBAAuB;;CAGxC,gBAAgB,GAA0D;AAItE,EAHA,iBAAiB,SAAS,mBAAmB,EAAO,MAAM,EAE1D,QAAQ,MAAM,6BAA6B,EAAO,MAAM,EACxD,KAAK,QAAQ,4BAA4B;;CAG7C,mBAAmB,GAA6D;AAC5E,mBAAiB,SAAS,sBAAsB,EAAO,MAAM;;CAGjE,oBAAoB,GAA8D;AAC9E,mBAAiB,SAAS,uBAAuB,EAAO,MAAM;;CAGlE,wBAAwB,GAAkE;AAGtF,EAFA,iBAAiB,SAAS,2BAA2B,EAAO,MAAM,EAElE,KAAK,QAAQ,2BAA2B,EAAO,MAAM,UAAU;;CAGnE,0BAA0B,GAA+F;AACrH,mBAAiB,SAAS,6BAA6B,EAAO,MAAM;EAGpE,IAAM,IAAU,EAAO,MAAM,SAAS;AACtC,OAAK,QAAQ,qBAAqB,EAAO,MAAM,WAAW,EAAQ;;CAItE,sBAAsB,GAAgE;AAClF,mBAAiB,SAAS,yBAAyB,EAAO,MAAM;;CAGpE,wBAAwB,GAAkE;AACtF,mBAAiB,SAAS,2BAA2B,EAAO,MAAM;EAGlE,IAAMC,IAAwB,EAAO,MAAM,SACtC,QAAO,MAAO;AAEX,OAAI,EAAI,SAAS,OAAQ,QAAO;AAGhC,OAAI,EAAI,SAAS,eAAe,EAAI,aAAa,EAAI,UAAU,SAAS,GAAG;IACvE,IAAM,IAAc,EAAI,UAAU,MAAK,MAAM,EAAG,UAAU,MAAM,WAAW,QAAQ,CAAC,EAC9E,IAAa,OAAO,EAAI,WAAY,YAAY,EAAI,QAAQ,MAAM,CAAC,SAAS;AAGlF,QAAI,CAAC,KAAe,CAAC,EAAY,QAAO;;AAG5C,UAAO;IACT,CACD,KAAI,OAAQ;GACT,GAAG;GACH,WAAY,EAAY,aAAa,KAAK,KAAK;GAClD,EAAE;AACP,OAAK,QAAQ,YAAY,EAAS;;CAGtC,qBAAqB,GAA+D;AAChF,mBAAiB,SAAS,wBAAwB,EAAO,MAAM;;CAGnE,oBAAoB,GAA8D;AAC9E,mBAAiB,SAAS,uBAAuB,EAAO,MAAM;;CAGlE,MAAM,mBAAmB,GAIE;AAGvB,MAFA,iBAAiB,SAAS,sBAAsB,EAAO,MAAM,EAEzD,EAAO,iBAAiB,eAAe;AACvC,WAAQ,IAAI,kDAAkD,EAAO,aAAa;GAClF,IAAM,IAAS,MAAM,kBAAkB,YAAY,EAAO,aAAuB;AACjF,WAAQ,IAAI,sCAAsC,EAAO;;AAG7D,MAAI,EAAO,iBAAiB,iBAAiB;AACzC,WAAQ,IAAI,oDAAoD,EAAO,aAAa;GACpF,IAAM,IAAS,MAAM,kBAAkB,YAAY;IAC/C,MAAM;IACN,QAAQ,EAAO,aAAa;IAC5B,QAAQ,EAAO,aAAa;IAC/B,CAAC;AACF,WAAQ,IAAI,wCAAwC,EAAO;;AAG/D,MAAI,EAAO,iBAAiB,iBAAiB;AACzC,WAAQ,IAAI,oDAAoD,EAAO,aAAa;GACpF,IAAM,IAAS,MAAM,kBAAkB,YAAY;IAC/C,MAAM;IACN,UAAU,EAAO,aAAa;IAC9B,QAAQ,EAAO,aAAa;IAC/B,CAAC;AACF,WAAQ,IAAI,wCAAwC,EAAO;;AAG/D,MAAI,EAAO,iBAAiB,aAAa;AACrC,WAAQ,IAAI,gDAAgD,EAAO,aAAa;GAChF,IAAM,IAAS,MAAM,kBAAkB,YAAY;IAC/C,MAAM;IACN,UAAU,EAAO,aAAa;IAC9B,OAAO,EAAO,aAAa;IAC3B,QAAQ,EAAO,aAAa;IAC/B,CAAC;AACF,WAAQ,IAAI,oCAAoC,EAAO;;AAG3D,MAAI,EAAO,iBAAiB,qBAAqB,EAAO,iBAAiB,eAAe;AACpF,WAAQ,IAAI,8CAA8C,EAAO,aAAa;GAC9E,IAAM,IAAS,MAAM,kBAAkB,YAAY,EAAO,aAAuB;AACjF,WAAQ,IAAI,kCAAkC,EAAO;;;CAI7D,sBAAsB,GAAgE;AAClF,mBAAiB,SAAS,yBAAyB,EAAO,MAAM;;CAGpE,qBAAqB,GAA+D;AAChF,mBAAiB,SAAS,wBAAwB,EAAO,MAAM;;CAGnE,kBAAkB,GAA4D;AAC1E,mBAAiB,SAAS,qBAAqB,EAAO,MAAM;;CAGhE,wBAAwB,GAAkE;AAGtF,EAFA,iBAAiB,SAAS,2BAA2B,EAAO,MAAM,EAE9D,EAAO,MAAM,iBAAiB,SAC9B,YAAY,gBAAgB,EAAO,MAAM,GAClC;GAAC;GAAc;GAAS;GAAY;GAAO,CAAC,SAAS,EAAO,MAAM,aAAa,IACtF,kBAAkB,YAAY,EAAO,MAAM,QAAkB;;CAIrE,qBAAqB,GAA+D;AAChF,mBAAiB,SAAS,wBAAwB,EAAO,MAAM;;CAInE,cAAc,GAA0D;AACpE,mBAAiB,SAAS,iBAAiB,EAAO,MAAM;;CAG5D,MAAM,iBAAiB,GAAuG;AAG1H,EADA,iBAAiB,SAAS,oBAAoB,EAAO,MAAM,EACvD,EAAO,aAAa,kBACpB,QAAQ,IAAI,yDAAyD,EAAO,KAAK,EACjF,MAAM,kBAAkB,YAAY,EAAO,KAAe;;CAKlE,QAAQ,GAAsD;AAE1D,mBAAiB,SAAS,WAAW,EAAO,MAAM,QAAQ,EAAO,MAAM;;CAG3E,WAAW,GAAgD;AAEvD,mBAAiB,SAAS,cAAc,EAAO,MAAM;;GCpNhD,sBAAb,MAAiC;CAG7B,cAAc;AAGV,OAAK,UAAU;;CAOnB,WAAW,GAAgB;AACvB,OAAK,UAAU,GAAG,EAAO;;CAO7B,MAAM,mBAA4C;EAC9C,IAAM,IAAW,MAAM,MAAM,GAAG,KAAK,UAAU;AAC/C,MAAI,CAAC,EAAS,GACV,OAAU,MAAM,kCAAkC,EAAS,aAAa;AAE5E,SAAO,EAAS,MAAM;;CAQ1B,MAAM,gBAAgB,GAAmC;EACrD,IAAM,IAAW,MAAM,MAAM,GAAG,KAAK,QAAQ,GAAG,IAAK;AACrD,MAAI,CAAC,EAAS,GACV,OAAU,MAAM,iCAAiC,EAAS,aAAa;AAE3E,SAAO,EAAS,MAAM;;CAQ1B,MAAM,mBAAmB,GAAkF;EACvG,IAAM,IAAU;GACZ,GAAG;GACH,OAAO,EAAK,SAAS;GACxB,EAEK,IAAW,MAAM,MAAM,KAAK,SAAS;GACvC,QAAQ;GACR,SAAS,EACL,gBAAgB,oBACnB;GACD,MAAM,KAAK,UAAU,EAAQ;GAChC,CAAC;AAEF,MAAI,CAAC,EAAS,GACV,OAAU,MAAM,kCAAkC,EAAS,aAAa;AAG5E,SAAO,EAAS,MAAM;;CAS1B,MAAM,mBAAmB,GAAY,GAA4D;EAC7F,IAAM,IAAW,MAAM,MAAM,GAAG,KAAK,QAAQ,GAAG,KAAM;GAClD,QAAQ;GACR,SAAS,EACL,gBAAgB,oBACnB;GACD,MAAM,KAAK,UAAU,EAAa;GACrC,CAAC;AAEF,MAAI,CAAC,EAAS,GACV,OAAU,MAAM,kCAAkC,EAAS,aAAa;AAG5E,SAAO,EAAS,MAAM;;CAO1B,MAAM,mBAAmB,GAA2B;EAChD,IAAM,IAAW,MAAM,MAAM,GAAG,KAAK,QAAQ,GAAG,KAAM,EAClD,QAAQ,UACX,CAAC;AAEF,MAAI,CAAC,EAAS,GACV,OAAU,MAAM,kCAAkC,EAAS,aAAa;;;AAKpF,MAAa,sBAAsB,IAAI,qBAAqB;ACnG5D,IAAM,sBAAsB,sBACtB,wBAAwB,2BACxB,qBAAqB;AAga3B,MAAa,cAAc,IA/Z3B,cAAiC,YAAY;CAYzC,IAAI,YAAY;AACZ,SAAO,KAAK,OAAO,aAAa;;CAGpC,IAAI,WAAW;AACX,SAAO,KAAK,OAAO,YAAY,EAAE;;CAGrC,IAAI,mBAAmB;AACnB,SAAO,KAAK;;CAGhB,IAAI,cAAc;AACd,SAAO,KAAK;;CAMhB,cAAc;AAKV,EAJA,OAAO,wBA9BqC,EAAE,qBACT,uBACX;GAC1B,GAAG;GACH,UAAU,EAAE,MAAM,IAAI;GACtB,IAAI,EAAE,uBAAuB,EAAE,EAAE;GACpC,2BAC8C,EAAE,sBACjB,IAuB5B,KAAK,aAAa,IAAI,eAAe,KAAK,EAG1C,kBAAkB,iBAAiB,sBAAsB,MAAa;GAClE,IAAM,IAAU,EAA8B;AAE9C,GADA,QAAQ,IAAI,wCAAwC,EAAO,EAC3D,KAAK,cAAc,EAAO;IAC5B;;CAON,MAAM,WAAW,GAA+F;EAC5G,IAAM,IAAiB,aAAa,QAAQ,sBAAsB;AA2BlE,EAzBA,KAAK,QAAQ,IAAI,UAAU;GACvB,KAAK,GAAG,EAAO,aAAa;GAC5B,UAAU,KAAkB;GAC/B,CAAC,EACF,oBAAoB,WAAW,EAAO,WAAW,EAG7C,kBAAkB,UAClB,KAAK,cAAc,kBAAkB,UAErC,KAAK,cAAc;GACf,GAAG;GACH,MAAM;IACF,MAAM,EAAO;IACb,QAAQ,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU,MAAM;IACzE;GACJ,EAGD,KACA,MAAM,KAAK,iBAAiB,EAAe,EAG/C,iBAAiB,WAAW,KAAK,YAAY,EAC7C,iBAAiB,SAAS,KAAK,UAAU,EACzC,iBAAiB,YAAY,KAAK,OAAO,YAAY,EAAE,CAAC;;CAO5D,MAAM,iBAAiB,GAAY;AAC/B,MAAI;GACA,IAAM,IAAe,MAAM,oBAAoB,gBAAgB,EAAG;AAMlE,GALI,KAAK,UACL,KAAK,MAAM,WAAW,EAAa,IACnC,KAAK,MAAM,WAAY,EAAa,YAAY,EAAE,EAClD,aAAa,QAAQ,uBAAuB,EAAa,GAAG,GAEhE,KAAK,QAAQ;WACR,GAAO;AAQZ,GAPA,QAAQ,MAAM,+BAA+B,EAAM,EAE/C,KAAK,UACL,KAAK,MAAM,WAAW,qBACtB,KAAK,MAAM,WAAW,EAAE,EACxB,aAAa,WAAW,sBAAsB,GAElD,KAAK,QAAQ;;;CAIrB,IAAI,gBAAgB;AAChB,SAAO,KAAK;;CAQhB,cAAc,GAAqB;AAG/B,EAFA,KAAK,cAAc,GACnB,iBAAiB,WAAW,KAAK,YAAY,EAC7C,KAAK,QAAQ;;CASjB,YAAY,GAAiB;AAMzB,EALA,KAAK,YAAY,GACjB,iBAAiB,SAAS,KAAK,UAAU,EACrC,EAAM,IAAI,yBACV,kBAAkB,kBAAkB,EAAM,GAAG,sBAAsB,EAEvE,KAAK,QAAQ;;CAOjB,eAAe,GAA4B;AAEvC,EADA,KAAK,YAAY;GAAE,GAAG,KAAK;GAAW,GAAG;GAAS,EAClD,KAAK,QAAQ;;CAGjB,eAAe,GAAgC;AAE3C,EADA,KAAK,UAAU,WAAW,GAC1B,KAAK,QAAQ;;CAGjB,SAAS,GAAoB;AAKzB,EAJA,KAAK,UAAU,KAAK,GAChB,GAAI,yBACJ,kBAAkB,kBAAkB,EAAG,sBAAsB,EAEjE,KAAK,QAAQ;;CAGjB,YAAY,GAA0B;AAElC,EADA,KAAK,UAAU,QAAQ,GACvB,KAAK,QAAQ;;CAOjB,oBAAoB,GAA4B;AAM5C,EALA,KAAK,oBAAoB,EAAQ,KAAI,OAAM;GACvC,GAAG;GACH,SAAS,EAAE,QAAQ,MAAM,GAAG,GAAG;GAClC,EAAE,EACH,KAAK,eAAe,IACpB,KAAK,QAAQ;;CAMjB,uBAAuB;AAEnB,EADA,KAAK,eAAe,IACpB,KAAK,QAAQ;;CAIjB,MAAM,YAAY,GAAiB,IAA4E,QAAQ;AACnH,MAAI,CAAC,KAAK,OAAO;AACb,WAAQ,MAAM,wDAAwD;AACtE;;EAIJ,IAAM,IAAK,WAAW,UAAU,EAC1B,IAAY,KAAK,KAAK,EACxBC;AAEJ,UAAQ,GAAR;GACI,KAAK;AACD,QAAU;KAAE;KAAI,MAAM;KAAY,cAAc;KAAW,SAAS,EAAE,MAAM,GAAS;KAAE;KAAW;AAClG;GACJ,KAAK;AACD,QAAU;KAAE;KAAI,MAAM;KAAQ;KAAS,YAAY,WAAW,WAAW;KAAE;KAAW;AACtF;GACJ,KAAK;AACD,QAAU;KAAE;KAAI,MAAM;KAAQ;KAAS;KAAW;AAClD;GACJ,KAAK;AACD,QAAU;KAAE;KAAI,MAAM;KAAa;KAAS;KAAW;AACvD;GACJ,KAAK;AACD,QAAU;KAAE;KAAI,MAAM;KAAU;KAAS;KAAW;AACpD;GACJ,KAAK;AACD,QAAU;KAAE;KAAI,MAAM;KAAa;KAAS;KAAW;AACvD;;AAKR,EAFA,KAAK,MAAM,WAAW,EAAmB,EAEzC,KAAK,QAAQ;AAEb,MAAI;AAYA,GAXI,KAAK,OAAO,YAAY,uBACxB,MAAM,KAAK,qBAAqB,EAIpC,KAAK,MAAM,QAAQ,EACf,UAAU,KAAK,WAClB,EAID,MAAM,KAAK,MAAM,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,WAAW;WAIpD,GAAO;AACZ,WAAQ,MAAM,0BAA0B,EAAM;YAExC;AAEN,GADA,KAAK,eAAe,IACpB,KAAK,QAAQ;;;CAIrB,MAAM,sBAAsB;AACxB,MAAI,CAAC,KAAK,MACN,OAAU,MAAM,wBAAwB;AAE5C,MAAI,KAAK,OAAO,YAAY,qBAAqB;GAC7C,IAAM,IAAe,MAAM,oBAAoB,mBAAmB,EAC9D,YAAY,KAAK,eAAe,KAAA,GACnC,CAAC;AAEF,GADA,KAAK,MAAM,WAAW,EAAa,IACnC,aAAa,QAAQ,uBAAuB,EAAa,GAAG;;;CAIpE,wBAAwB;AACpB,MAAI,CAAC,KAAK,MACN,OAAU,MAAM,wBAAwB;EAE5C,IAAMC,IAAyB;GAC3B,IAAI;GACJ,MAAM;GACN,SAAS;GACT,WAAW,KAAK,KAAK;GACrB,YAAY;GACf;AAED,EADA,KAAK,MAAM,WAAW,CAAC,GAAI,KAAK,MAAM,YAAY,EAAE,EAAG,EAAY,EACnE,KAAK,QAAQ;;CAGjB,6BAA6B;AACzB,MAAI,CAAC,KAAK,MAAO;EACjB,IAAM,IAAW,KAAK,MAAM,SAAS,QAAO,MAAK,EAAE,OAAO,uBAAuB;AACjF,EAAI,EAAS,WAAW,KAAK,MAAM,SAAS,WACxC,KAAK,MAAM,WAAW,GACtB,KAAK,QAAQ;;CAIrB,2BAA2B,GAAe;AACtC,MAAI,CAAC,KAAK,MACN,OAAU,MAAM,wBAAwB;AAY5C,EAVA,KAAK,MAAM,WAAW,KAAK,MAAM,SAAS,KAAI,MACtC,EAAI,OAAO,0BAA0B,KAAK,YACnC;GACH,GAAG;GACH,IAAI;GACJ,YAAY;GACf,GAEE,EACT,EACF,KAAK,QAAQ;;CAGjB,qBAAqB,GAAY,GAAiB;AAC9C,MAAI,CAAC,KAAK,MACN,OAAU,MAAM,wBAAwB;AAW5C,EATA,KAAK,MAAM,WAAW,KAAK,MAAM,SAAS,KAAI,MACtC,EAAI,OAAO,KAAM,OAAO,EAAI,WAAY,WACjC;GACH,GAAG;GACH,UAAU,EAAI,WAAW,MAAM;GAClC,GAEE,EACT,EACF,KAAK,QAAQ;;CAGjB,YAAY,GAAqB;AAC7B,MAAI,CAAC,KAAK,MACN,OAAU,MAAM,wBAAwB;EAI5C,IAAM,IAAqB,KAAK,MAAM,SAAS,QAAO,MAAK,EAAE,SAAU,WAAmB,EACpF,IAAc,IAAI,IAAI,EAAS,KAAI,MAAK,EAAE,GAAG,CAAC,EAC9C,IAAoB,EAAmB,QAAO,MAAK,CAAC,EAAY,IAAI,EAAE,GAAG,CAAC;AAUhF,EARA,QAAQ,IAAI,oDAAoD,EAAkB,OAAO,EAGzF,KAAK,MAAM,WAAW,CAAC,GAAI,GAA0B,GAAG,EAAkB,EAG1E,KAAK,MAAM,SAAS,MAAM,GAAG,OAAQ,EAAU,aAAa,MAAO,EAAU,aAAa,GAAG,EAE7F,KAAK,QAAQ;;CAGjB,eAAe,GAA8B;AACzC,MAAI,CAAC,KAAK,MACN,OAAU,MAAM,wBAAwB;EAI5C,IAAI,IAAU,EAAM;AACpB,MAAI,OAAO,KAAY,SACnB,KAAI;AACA,OAAU,KAAK,MAAM,EAAQ;WACxB,GAAG;AACR,WAAQ,MAAM,wDAAwD,EAAE;;EAMhF,IAAMC,IAAyB;GAC3B,IAAI,EAAM;GACV,MAAM;GACN,cAAc,EAAM;GACpB,SAAS,EAAM;GACf,WAAW,KAAK,KAAK;GACxB,EAIK,IAAW,KAAK,MAAM,SAAS,QAAO,MAAK,EAAE,OAAO,EAAM,UAAU;AAG1E,EAFA,KAAK,MAAM,WAAW,CAAC,GAAG,GAAU,EAAY,EAEhD,KAAK,QAAQ;;CAGjB,MAAM,iBAAiB;AAanB,EAZA,aAAa,WAAW,sBAAsB,EAC9C,QAAQ,IAAI,8BAA8B,EACtC,KAAK,UACL,KAAK,MAAM,WAAW,qBACtB,KAAK,MAAM,WAAW,EAAE,EACxB,KAAK,MAAM,YAAY,KAGvB,KAAK,kBAAkB,SAAS,MAChC,KAAK,eAAe,KAGxB,KAAK,QAAQ;;CAOjB,MAAM,mBAAmD;AAErD,SADA,MAAM,KAAK,sBAAsB,EAC1B,KAAK;;CAMhB,MAAM,uBAAuB;AACzB,MAAI;AAMA,GAJA,KAAK,kBADiB,MAAM,oBAAoB,kBAAkB,EAC9B,KAAI,OAAM;IAC1C,IAAI,EAAE;IACN,OAAO,EAAE;IACZ,EAAE,EACH,KAAK,QAAQ;WACR,GAAO;AACZ,WAAQ,MAAM,mCAAmC,EAAM;;;CAI/D,SAAiB;AAGb,EAFA,iBAAiB,YAAY,KAAK,OAAO,YAAY,EAAE,CAAC,EACxD,iBAAiB,SAAS,KAAK,UAAU,EACzC,KAAK,cAAc,IAAI,YAAY,eAAe,CAAC;;GAIf;ACla5C,IAAa,iBAAb,MAA0D;CAGtD,YAAY,GAA8B;AAEtC,8BAsJ2B;AAC3B,QAAK,MAAM,eAAe;KAxJ1B,KAAK,QAAQ,GACb,KAAK,MAAM,cAAc,KAAK;;CAOlC,WAAW,GAA+F;AACtG,SAAO,YAAY,WAAW,EAAO;;CAOzC,gBAAgB;AACZ,cAAY,iBAAiB,gBAAgB,KAAK,eAAe;;CAOrE,mBAAmB;AACf,cAAY,oBAAoB,gBAAgB,KAAK,eAAe;;CAMxE,IAAI,YAAY;AACZ,SAAO,YAAY;;CAMvB,IAAI,WAAW;AACX,SAAO,YAAY;;CAMvB,IAAI,gBAAgB;AAChB,SAAO,YAAY;;CAMvB,IAAI,mBAAmB;AACnB,SAAO,YAAY;;CAMvB,IAAI,cAAc;AACd,SAAO,YAAY;;CAQvB,YAAY,GAAiB,IAAsD,QAAQ;AACvF,SAAO,YAAY,YAAY,GAAS,EAAK;;CAMjD,iBAAiB;AAEb,SADA,QAAQ,IAAI,sBAAsB,EAC3B,YAAY,gBAAgB;;CAOvC,iBAAiB,GAAY;AACzB,SAAO,YAAY,iBAAiB,EAAG;;CAO3C,cAAc,GAAqB;AAC/B,SAAO,YAAY,cAAc,EAAQ;;CAO7C,YAAY,GAAiB;AACzB,SAAO,YAAY,YAAY,EAAM;;CAGzC,eAAe,GAAgC;AAC3C,SAAO,YAAY,eAAe,EAAS;;CAG/C,SAAS,GAAoB;AACzB,SAAO,YAAY,SAAS,EAAG;;CAGnC,YAAY,GAA0B;AAClC,SAAO,YAAY,YAAY,EAAM;;CAOzC,oBAAoB,GAA4B;AAC5C,SAAO,YAAY,oBAAoB,EAAQ;;CAMnD,uBAAuB;AACnB,SAAO,YAAY,sBAAsB;;CAQ7C,uBAAuB;AACnB,SAAO,YAAY,sBAAsB;;CAM7C,mBAAmB;AACf,SAAO,YAAY,kBAAkB;;GC5JhC,0BAAb,MAAqC;;uBACT,OAAO,MAAM,KAAK,OAAO,oBAC5B;;CAMrB,IAAW,YAAqB;AAC5B,SAAO,KAAK;;CAQhB,OAAoB;AAChB,MAAI,KAAK,WAAY;EAErB,IAAM,IAAO;AAqBb,EApBA,OAAO,QAAQ,eAAgB,GAA0B,GAAuC;AAC5F,OAAI;IAEA,IAAM,IAAU,IAAI,QAAQ,GAAM,WAAW,EAAE,CAAC;AAUhD,WALc,EAAQ,IAAI,gBAAgB,IACtC,EAAQ,OAAO,iBAAiB,w9IAAkB,EAI/C,EAAK,cAAc,GAAO;KAAE,GAAG;KAAM;KAAS,CAAC;YACjD,GAAO;AACZ,WAAO,QAAQ,OAAO,EAAM;;KAIpC,KAAK,aAAa,IAClB,QAAQ,IAAI,wFAAwF;;CAMxG,UAAuB;AACnB,EAAI,KAAK,eACL,OAAO,QAAQ,KAAK,eACpB,KAAK,aAAa,IAClB,QAAQ,IAAI,uDAAuD;;;AAQ/E,MAAa,0BAA0B,IAAI,yBAAyB;AC1C7D,IAAA,YAAA,cAAwB,EAAW;;sCAGZ,IAAI,eAAe,KAAK,oBAsCiB,mBACN,uCACgB,uBACR,sBACH,qFACD,kDACG,gDACC,2BACD,uBACC,wBAErC,0BACE,6BACG;;2BArDrB;CAIhB,IAAW,aAAa;AACpB,SAAO,KAAK;;CAGhB,eAAyB;AACrB,OAAK,cAAc,IAAI,YAAY,oBAAoB,EACnD,QAAQ,KAAK,iBAChB,CAAC,CAAC;;CAGP,oBAAoB;AAGhB,EAFA,MAAM,mBAAmB,EACzB,KAAK,cAAc,EACnB,KAAK,iBAAiB,cAAc,KAAK,kBAAmC;;CAGhF,eAAuB;AACL,GACV,wHACA,sHACH,CAEK,SAAQ,MAAO;AACjB,OAAI,CAAC,SAAS,cAAc,cAAc,EAAI,IAAI,EAAE;IAChD,IAAM,IAAO,SAAS,cAAc,OAAO;AAG3C,IAFA,EAAK,MAAM,cACX,EAAK,OAAO,GACZ,SAAS,KAAK,YAAY,EAAK;;IAErC;;CAGN,uBAAuB;AAEnB,EADA,KAAK,oBAAoB,cAAc,KAAK,kBAAmC,EAC/E,MAAM,sBAAsB;;CAiBhC,WAAW,GAAqC;AAS5C,EAPI,EAAkB,IAAI,cAAc,KAChC,KAAK,cACL,KAAK,wBAAwB,GAE7B,wBAAwB,SAAS,IAGrC,EAAkB,IAAI,aAAa,IAChC,EAAkB,IAAI,UAAU,IAChC,EAAkB,IAAI,kBAAkB,MAC3C,KAAK,gBAAgB,WAAW;GAC5B,YAAY,KAAK;GACjB,SAAS,KAAK;GACd,iBAAiB,KAAK;GACtB,WAAW,KAAK,aAAa,YAAY,IAAK,KAAa;GAC9D,CAAC,EACF,KAAK,oBAAoB,KAAK,aAAa,YAAY,IAAK,KAAa;;CASjF,yBAAgC;AAIxB,UAAQ,KAAK,2DAA2D;;CAIhF,YAAoB,GAAgB;AAChC,OAAK,gBAAgB,YAAY,EAAE,OAAO,QAAQ;;CAGtD,mBAA2B;AACvB,OAAK,gBAAgB,gBAAgB;;CAOzC,cAAqB,GAAwB;AACzC,OAAK,gBAAgB,cAAc,EAAW;;CAOlD,YAAmB,GAAoB;AACnC,OAAK,gBAAgB,YAAY,EAAS;;CAG9C,eAAsB,GAAgC;AAClD,OAAK,gBAAgB,eAAe,EAAS;;CAGjD,SAAgB,GAAoB;AAChC,OAAK,gBAAgB,SAAS,EAAG;;CAGrC,YAAmB,GAA0B;AACzC,OAAK,gBAAgB,YAAY,EAAM;;CAO3C,oBAA2B,GAA4B;AACnD,OAAK,gBAAgB,oBAAoB,EAAQ;;CAIrD,iBAAyB;AAErB,EADA,KAAK,eAAe,CAAC,KAAK,cACtB,KAAK,gBACL,KAAK,gBAAgB,sBAAsB;;CAInD,oBAA4B,GAAgB;AAGxC,EAFA,QAAQ,IAAI,0BAA0B,EAAE,OAAO,aAAa,EAC5D,KAAK,gBAAgB,iBAAiB,EAAE,OAAO,aAAa,GAAG,EAC/D,KAAK,eAAe;;CAGxB,mBAA2B;AACvB,OAAK,iBAAiB,CAAC,KAAK;;CAGhC,SAAS;AACL,SAAO,CAAI;;UAER,KAAK,aAMJ,KANiB,CAAI;;0BAEP,KAAK,YAAY;+BACZ,KAAK,iBAAiB;mCAClB,KAAK,eAAe;;UAExC;;8BAEe,KAAK,gBAAgB,cAAc;qBAC5C,KAAK,aAAa;8BACT,KAAK,oBAAoB;;;yBAG9B,KAAK,gBAAgB,SAAS;0BAC7B,KAAK,gBAAgB,UAAU;4BAC7B,KAAK,YAAY;0BACnB,KAAK,UAAU;;;0BAGf,KAAK,gBAAgB,UAAU;2BAC9B,KAAK,WAAW;4BACf,KAAK,YAAY;wBACrB,KAAK,gBAAgB,cAAc,KAAK,gBAAgB,mBAAmB,EAAE,CAAC;qBACjF,KAAK,YAAY;;;UAG5B,KAAK,oBAAoB,CAAI;qDACc,KAAK,iBAAiB;cAC7D,SAAS;;YAEX,GAAG;;UAEL,KAAK,iBAAiB,CAAI;;sBAEd,KAAK,iBAAiB;+BACb,KAAK,qBAAqB;6BAC5B,KAAK,mBAAmB;;YAEzC,GAAG;;;;CAKX,qBAA6B,GAAgB;AACzC,OAAK,cAAc,EAAE,OAAO;;CAGhC,kBAA0B,GAAgB;EACtC,IAAM,EAAE,WAAQ,iBAAc,EAAE;AAChC,MAAI,CAAC,EAAQ;AAEb,UAAQ,IAAI,oCAAoC,GAAQ,YAAY,EAAU;EAG9E,IAAM,IAAkB,KAAa,MAAM,KAAK,YAAY,UAAU,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM;AAGlG,MAAI,EAAO,SAAS,YAAY;AAC5B,QAAK,oBAAoB,GAAQ,EAAgB;AACjD;;AAIJ,OAAK,wBAAwB,GAAQ,EAAgB;;CAQzD,oBAA4B,GAAa,GAAmB;EACxD,IAAM,IAAU,EAAO,WAAW,EAAE,EAC9B,IAAgB,EAAQ,MAAM,MAAW,EAAE,QAAQ,eAAe,EAClE,IAAW,YAAY,aAAa,GAAW,GAAe,MAAM,EAEpE,IAAW,EAAQ,MAAM,MAAW;GAAC;GAAO;GAAQ;GAAQ;GAAM,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC,CAAC,EAClG,IAAM,YAAY,aAAa,GAAW,GAAU,MAAM;AAIhE,MAFA,QAAQ,IAAI,4CAA4C,KAAY,EAAO,EAEvE,MAAa,QAAQ;AAErB,GADA,QAAQ,IAAI,sCAAsC,EAClD,KAAK,gBAAgB,YACjB,oCAAoC,EAAO,KAAK,KAChD,OACH;AACD;;AAGJ,MAAI,MAAa,UACb,KAAI,GAAK;AACL,WAAQ,IAAI,yDAAyD,IAAM;GAC3E,IAAM,IAAM,OAAO,KAAK,GAAK,SAAS;AAEtC,OAAI,GAAK;IACL,IAAM,IAAc,kBAAkB;AAClC,KAAI,EAAI,WACJ,cAAc,EAAY,EAC1B,QAAQ,IAAI,kDAAkD,EAC9D,KAAK,gBAAgB,YACjB,8BAA8B,EAAO,KAAK,kCAC1C,OACH;OAEN,IAAK;SAER,SAAQ,MAAM,sCAAsC;QAKxD,CADA,QAAQ,IAAI,8CAA8C,EAC1D,KAAK,gBAAgB,YACjB,uCAAuC,EAAO,KAAK,KACnD,OACH;;CAQb,wBAAgC,GAAa,GAAmB;EAC5D,IAAM,IAAW,EAAO,SAAS,MAAM,MACnC;GAAC;GAAO;GAAQ;GAAQ;GAAM,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC,CAChE,EACK,IAAM,YAAY,aAAa,GAAW,GAAU,MAAM;AAEhE,EAAI,KACA,QAAQ,IAAI,mCAAmC,IAAM,EACrD,OAAO,KAAK,GAAK,SAAS,IACnB,EAAO,SAAS,aACvB,QAAQ,KAAK,qEAAqE,EAAO,GAEzF,QAAQ,KAAK,iEAAiE,EAAO;;CAI7F,mBAA2B,GAAgB;AACvC,OAAK,YAAY,EAAE,OAAO;;;YA/P7B,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAe,CAAC,CAAA,EAAA,UAAA,WAAA,cAAA,KAAA,EAAA,cACpD,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAY,CAAC,CAAA,EAAA,UAAA,WAAA,WAAA,KAAA,EAAA,cACjD,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAoB,CAAC,CAAA,EAAA,UAAA,WAAA,mBAAA,KAAA,EAAA,cACzD,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAgB,CAAC,CAAA,EAAA,UAAA,WAAA,eAAA,KAAA,EAAA,cACrD,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAc,CAAC,CAAA,EAAA,UAAA,WAAA,cAAA,KAAA,EAAA,cACnD,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAc,CAAC,CAAA,EAAA,UAAA,WAAA,aAAA,KAAA,EAAA,cACnD,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAe,CAAC,CAAA,EAAA,UAAA,WAAA,eAAA,KAAA,EAAA,cACpD,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAgB,CAAC,CAAA,EAAA,UAAA,WAAA,eAAA,KAAA,EAAA,cACrD,EAAS;CAAE,MAAM;CAAS,WAAW;CAAe,CAAC,CAAA,EAAA,UAAA,WAAA,cAAA,KAAA,EAAA,cACrD,EAAS;CAAE,MAAM;CAAS,WAAW;CAAe,CAAC,CAAA,EAAA,UAAA,WAAA,eAAA,KAAA,EAAA,cAErD,GAAO,CAAA,EAAA,UAAA,WAAA,gBAAA,KAAA,EAAA,cACP,GAAO,CAAA,EAAA,UAAA,WAAA,kBAAA,KAAA,EAAA,cACP,GAAO,CAAA,EAAA,UAAA,WAAA,qBAAA,KAAA,EAAA,0BAvDX,EAAc,aAAa,CAAA,EAAA,UAAA;ACH5B,SAAgB,MAAM,GAAsB,IAAe,EAAE,EAAE;CAC3D,IAAM,IAAO,SAAS,cAAc,aAAa;AAYjD,QARA,OAAO,KAAK,EAAQ,CAAC,SAAQ,MAAO;AAChC,EAAI,KAAO,MAEP,EAAK,KAAO,EAAQ;GAE1B,EAEF,EAAQ,YAAY,EAAK,EAClB;;AAOX,SAAgB,WAAW"}
|