@auticlabs/bulut 1.0.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.
- package/README.md +179 -0
- package/dist/embed.cjs +8 -0
- package/dist/embed.cjs.map +1 -0
- package/dist/embed.js +7930 -0
- package/dist/embed.js.map +1 -0
- package/dist/icons/close.svg +3 -0
- package/dist/icons/microphone.svg +3 -0
- package/dist/icons/restart.svg +3 -0
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/index.d.ts +28 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed.cjs","sources":["../node_modules/preact/dist/preact.module.js","../node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../node_modules/preact/hooks/dist/hooks.module.js","../src/styles/constants.ts","../src/assets.ts","../src/assets/icons/microphone.svg?raw","../src/assets/icons/close.svg?raw","../src/components/SvgIcon.tsx","../src/components/ChatButton.tsx","../src/api/client.ts","../src/agent/context.ts","../src/agent/tools.ts","../src/components/ChatWindow.tsx","../src/assets/icons/bulut_logo.svg?raw","../src/assets/icons/restart.svg?raw","../node_modules/core-js-pure/internals/global-this.js","../node_modules/core-js-pure/internals/fails.js","../node_modules/core-js-pure/internals/function-bind-native.js","../node_modules/core-js-pure/internals/function-apply.js","../node_modules/core-js-pure/internals/function-uncurry-this.js","../node_modules/core-js-pure/internals/classof-raw.js","../node_modules/core-js-pure/internals/function-uncurry-this-clause.js","../node_modules/core-js-pure/internals/is-callable.js","../node_modules/core-js-pure/internals/descriptors.js","../node_modules/core-js-pure/internals/function-call.js","../node_modules/core-js-pure/internals/object-property-is-enumerable.js","../node_modules/core-js-pure/internals/create-property-descriptor.js","../node_modules/core-js-pure/internals/environment-v8-version.js","../node_modules/core-js-pure/internals/indexed-object.js","../node_modules/core-js-pure/internals/is-null-or-undefined.js","../node_modules/core-js-pure/internals/require-object-coercible.js","../node_modules/core-js-pure/internals/to-indexed-object.js","../node_modules/core-js-pure/internals/is-object.js","../node_modules/core-js-pure/internals/path.js","../node_modules/core-js-pure/internals/get-built-in.js","../node_modules/core-js-pure/internals/object-is-prototype-of.js","../node_modules/core-js-pure/internals/environment-user-agent.js","../node_modules/core-js-pure/internals/symbol-constructor-detection.js","../node_modules/core-js-pure/internals/use-symbol-as-uid.js","../node_modules/core-js-pure/internals/is-symbol.js","../node_modules/core-js-pure/internals/try-to-string.js","../node_modules/core-js-pure/internals/a-callable.js","../node_modules/core-js-pure/internals/get-method.js","../node_modules/core-js-pure/internals/ordinary-to-primitive.js","../node_modules/core-js-pure/internals/define-global-property.js","../node_modules/core-js-pure/internals/shared-store.js","../node_modules/core-js-pure/internals/shared.js","../node_modules/core-js-pure/internals/to-object.js","../node_modules/core-js-pure/internals/has-own-property.js","../node_modules/core-js-pure/internals/uid.js","../node_modules/core-js-pure/internals/well-known-symbol.js","../node_modules/core-js-pure/internals/to-primitive.js","../node_modules/core-js-pure/internals/to-property-key.js","../node_modules/core-js-pure/internals/document-create-element.js","../node_modules/core-js-pure/internals/ie8-dom-define.js","../node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","../node_modules/core-js-pure/internals/is-forced.js","../node_modules/core-js-pure/internals/function-bind-context.js","../node_modules/core-js-pure/internals/v8-prototype-define-bug.js","../node_modules/core-js-pure/internals/an-object.js","../node_modules/core-js-pure/internals/object-define-property.js","../node_modules/core-js-pure/internals/create-non-enumerable-property.js","../node_modules/core-js-pure/internals/export.js","../node_modules/core-js-pure/internals/is-array.js","../node_modules/core-js-pure/modules/es.array.is-array.js","../node_modules/core-js-pure/es/array/is-array.js","../node_modules/core-js-pure/internals/math-trunc.js","../node_modules/core-js-pure/internals/to-integer-or-infinity.js","../node_modules/core-js-pure/internals/to-length.js","../node_modules/core-js-pure/internals/length-of-array-like.js","../node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js","../node_modules/core-js-pure/internals/create-property.js","../node_modules/core-js-pure/internals/array-set-length.js","../node_modules/core-js-pure/internals/to-string-tag-support.js","../node_modules/core-js-pure/internals/classof.js","../node_modules/core-js-pure/internals/inspect-source.js","../node_modules/core-js-pure/internals/is-constructor.js","../node_modules/core-js-pure/internals/array-species-constructor.js","../node_modules/core-js-pure/internals/array-species-create.js","../node_modules/core-js-pure/internals/array-method-has-species-support.js","../node_modules/core-js-pure/modules/es.array.concat.js","../node_modules/core-js-pure/internals/to-string.js","../node_modules/core-js-pure/internals/array-includes.js","../node_modules/core-js-pure/internals/to-absolute-index.js","../node_modules/core-js-pure/internals/hidden-keys.js","../node_modules/core-js-pure/internals/object-keys-internal.js","../node_modules/core-js-pure/internals/enum-bug-keys.js","../node_modules/core-js-pure/internals/object-keys.js","../node_modules/core-js-pure/internals/object-define-properties.js","../node_modules/core-js-pure/internals/html.js","../node_modules/core-js-pure/internals/object-create.js","../node_modules/core-js-pure/internals/shared-key.js","../node_modules/core-js-pure/internals/object-get-own-property-names.js","../node_modules/core-js-pure/internals/array-slice.js","../node_modules/core-js-pure/internals/object-get-own-property-names-external.js","../node_modules/core-js-pure/internals/object-get-own-property-symbols.js","../node_modules/core-js-pure/internals/define-built-in.js","../node_modules/core-js-pure/internals/define-built-in-accessor.js","../node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","../node_modules/core-js-pure/internals/well-known-symbol-define.js","../node_modules/core-js-pure/internals/internal-state.js","../node_modules/core-js-pure/internals/symbol-define-to-primitive.js","../node_modules/core-js-pure/internals/object-to-string.js","../node_modules/core-js-pure/internals/set-to-string-tag.js","../node_modules/core-js-pure/internals/weak-map-basic-detection.js","../node_modules/core-js-pure/internals/array-iteration.js","../node_modules/core-js-pure/modules/es.symbol.constructor.js","../node_modules/core-js-pure/internals/symbol-registry-detection.js","../node_modules/core-js-pure/modules/es.symbol.for.js","../node_modules/core-js-pure/modules/es.symbol.key-for.js","../node_modules/core-js-pure/internals/is-raw-json.js","../node_modules/core-js-pure/internals/parse-json-string.js","../node_modules/core-js-pure/internals/native-raw-json.js","../node_modules/core-js-pure/modules/es.json.stringify.js","../node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js","../node_modules/core-js-pure/modules/es.symbol.async-dispose.js","../node_modules/core-js-pure/modules/es.symbol.async-iterator.js","../node_modules/core-js-pure/modules/es.symbol.dispose.js","../node_modules/core-js-pure/modules/es.symbol.has-instance.js","../node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","../node_modules/core-js-pure/modules/es.symbol.iterator.js","../node_modules/core-js-pure/modules/es.symbol.match.js","../node_modules/core-js-pure/modules/es.symbol.match-all.js","../node_modules/core-js-pure/modules/es.symbol.replace.js","../node_modules/core-js-pure/modules/es.symbol.search.js","../node_modules/core-js-pure/modules/es.symbol.species.js","../node_modules/core-js-pure/modules/es.symbol.split.js","../node_modules/core-js-pure/modules/es.symbol.to-primitive.js","../node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","../node_modules/core-js-pure/modules/es.symbol.unscopables.js","../node_modules/core-js-pure/modules/es.json.to-string-tag.js","../node_modules/core-js-pure/es/symbol/index.js","../node_modules/core-js-pure/internals/iterators-core.js","../node_modules/core-js-pure/internals/iterators.js","../node_modules/core-js-pure/internals/function-name.js","../node_modules/core-js-pure/internals/correct-prototype-getter.js","../node_modules/core-js-pure/internals/object-get-prototype-of.js","../node_modules/core-js-pure/internals/iterator-create-constructor.js","../node_modules/core-js-pure/internals/iterator-define.js","../node_modules/core-js-pure/internals/create-iter-result-object.js","../node_modules/core-js-pure/modules/es.array.iterator.js","../node_modules/core-js-pure/internals/dom-iterables.js","../node_modules/core-js-pure/modules/web.dom-collections.iterator.js","../node_modules/core-js-pure/stable/symbol/index.js","../node_modules/core-js-pure/modules/esnext.function.metadata.js","../node_modules/core-js-pure/modules/esnext.symbol.metadata.js","../node_modules/core-js-pure/actual/symbol/index.js","../node_modules/core-js-pure/internals/symbol-is-registered.js","../node_modules/core-js-pure/modules/esnext.symbol.is-registered-symbol.js","../node_modules/core-js-pure/internals/symbol-is-well-known.js","../node_modules/core-js-pure/modules/esnext.symbol.is-well-known-symbol.js","../node_modules/core-js-pure/modules/esnext.symbol.custom-matcher.js","../node_modules/core-js-pure/modules/esnext.symbol.observable.js","../node_modules/core-js-pure/modules/esnext.symbol.is-registered.js","../node_modules/core-js-pure/modules/esnext.symbol.is-well-known.js","../node_modules/core-js-pure/modules/esnext.symbol.matcher.js","../node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js","../node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","../node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","../node_modules/core-js-pure/full/symbol/index.js","../node_modules/core-js-pure/internals/string-multibyte.js","../node_modules/core-js-pure/modules/es.string.iterator.js","../node_modules/core-js-pure/internals/get-iterator-method.js","../node_modules/core-js-pure/es/get-iterator-method.js","../node_modules/core-js-pure/modules/es.array.push.js","../node_modules/core-js-pure/internals/get-built-in-prototype-method.js","../node_modules/core-js-pure/es/array/virtual/push.js","../node_modules/core-js-pure/es/instance/push.js","../node_modules/core-js-pure/modules/es.array.slice.js","../node_modules/core-js-pure/es/array/virtual/slice.js","../node_modules/core-js-pure/es/instance/slice.js","../node_modules/core-js-pure/stable/instance/slice.js","../node_modules/core-js-pure/actual/instance/slice.js","../node_modules/core-js-pure/internals/iterator-close.js","../node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js","../node_modules/core-js-pure/internals/is-array-iterator-method.js","../node_modules/core-js-pure/internals/get-iterator.js","../node_modules/core-js-pure/internals/array-from.js","../node_modules/core-js-pure/internals/check-correctness-of-iteration.js","../node_modules/core-js-pure/modules/es.array.from.js","../node_modules/core-js-pure/es/array/from.js","../node_modules/@babel/runtime-corejs3/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime-corejs3/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime-corejs3/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime-corejs3/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime-corejs3/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime-corejs3/helpers/esm/nonIterableRest.js","../node_modules/core-js-pure/modules/es.object.define-property.js","../node_modules/core-js-pure/es/object/define-property.js","../node_modules/core-js-pure/es/symbol/iterator.js","../node_modules/@babel/runtime-corejs3/helpers/esm/typeof.js","../node_modules/core-js-pure/es/symbol/to-primitive.js","../node_modules/@babel/runtime-corejs3/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime-corejs3/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime-corejs3/helpers/esm/createClass.js","../node_modules/@babel/runtime-corejs3/helpers/esm/defineProperty.js","../node_modules/core-js-pure/modules/es.array.filter.js","../node_modules/core-js-pure/es/array/virtual/filter.js","../node_modules/core-js-pure/es/instance/filter.js","../node_modules/core-js-pure/modules/es.object.keys.js","../node_modules/core-js-pure/es/object/keys.js","../node_modules/core-js-pure/internals/array-method-is-strict.js","../node_modules/core-js-pure/internals/array-for-each.js","../node_modules/core-js-pure/modules/es.array.for-each.js","../node_modules/core-js-pure/es/array/virtual/for-each.js","../node_modules/core-js-pure/stable/instance/for-each.js","../node_modules/core-js-pure/stable/array/virtual/for-each.js","../node_modules/core-js-pure/modules/es.array.reverse.js","../node_modules/core-js-pure/es/array/virtual/reverse.js","../node_modules/core-js-pure/es/instance/reverse.js","../node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","../node_modules/core-js-pure/es/array/virtual/concat.js","../node_modules/core-js-pure/es/instance/concat.js","../node_modules/streaming-json/dist/index.mjs","../node_modules/@babel/runtime-corejs3/helpers/esm/classCallCheck.js","../src/utils/streamingJson.ts","../src/index.tsx"],"sourcesContent":["var n,l,u,t,i,o,r,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,d=Array.isArray;function w(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,o,r,e={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:e[r]=u[r];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===e[r]&&(e[r]=l.defaultProps[r]);return m(l,e,i,o,null)}function m(n,t,i,o,r){var e={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||o!=l.debounceRendering)&&((o=l.debounceRendering)||r)($)}function $(){for(var n,u,t,o,r,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,o=void 0,r=(o=(u=n).__v).__e,f=[],c=[],u.__P&&((t=w({},o)).__v=o.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,o,u.__n,u.__P.namespaceURI,32&o.__u?[r]:null,f,null==r?S(o):r,!!(32&o.__u),c),t.__v=o.__v,t.__.__k[t.__i]=t,N(f,t,c),o.__e=o.__=null,t.__e!=r&&C(t)));$.__r=0}function I(n,l,u,t,i,o,r,e,f,c,s){var a,h,y,d,w,g,_,m=t&&t.__k||v,b=l.length;for(f=P(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:m[y.__i]||p,y.__i=a,g=O(n,y,h,i,o,r,e,f,c,s),d=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&B(h.ref,null,y),s.push(y.ref,y.__c||d,y)),null==w&&null!=d&&(w=d),(_=!!(4&y.__u))||h.__k===y.__k?f=A(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:d&&(f=d.nextSibling),y.__u&=-7);return u.__e=w,f}function P(n,l,u,t,i){var o,r,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),o=0;o<i;o++)null!=(r=l[o])&&\"boolean\"!=typeof r&&\"function\"!=typeof r?(\"string\"==typeof r||\"number\"==typeof r||\"bigint\"==typeof r||r.constructor==String?r=n.__k[o]=m(null,r,null,null,null):d(r)?r=n.__k[o]=m(k,{children:r},null,null,null):void 0===r.constructor&&r.__b>0?r=n.__k[o]=m(r.type,r.props,r.key,r.ref?r.ref:null,r.__v):n.__k[o]=r,f=o+h,r.__=n,r.__b=n.__b+1,e=null,-1!=(c=r.__i=L(r,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof r.type&&(r.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,r.__u|=4))):n.__k[o]=null;if(a)for(o=0;o<s;o++)null!=(e=u[o])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),D(e,e));return t}function A(n,l,u,t){var i,o;if(\"function\"==typeof n.type){for(i=n.__k,o=0;i&&o<i.length;o++)i[o]&&(i[o].__=n,l=A(i[o],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(d(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,o,r,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==e||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,o=u+1;i>=0||o<l.length;)if(null!=(c=l[r=i>=0?i--:o++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return r;return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var o,r;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])o=l!=(l=l.replace(f,\"$1\")),r=l.toLowerCase(),l=r in n||\"onFocusOut\"==l||\"onFocusIn\"==l?r.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,o?a:s,o)):n.removeEventListener(l,o?a:s,o);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,o,r,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),r=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=E),C&&C.sub(h),h.state||(h.state={}),h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=w({},h.__s)),w(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),u.__v==t.__v||!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=w(w({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=V(a.props.children)),f=I(n,d(L)?L:[L],u,t,i,o,r,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=r)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;r[r.indexOf(f)]=null,u.__e=f}else{for(T=r.length;T--;)g(r[T]);z(u)}else u.__e=t.__e,u.__k=t.__k,n.then||z(u);l.__e(n,u,t)}else null==r&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=q(t.__e,u,t,i,o,r,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n){n&&n.__c&&(n.__c.__e=!0),n&&n.__k&&n.__k.forEach(z)}function N(n,u,t){for(var i=0;i<t.length;i++)B(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function V(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:d(n)?n.map(V):w({},n)}function q(u,t,i,o,r,e,f,c,s){var a,h,v,y,w,_,m,b=i.props||p,k=t.props,x=t.type;if(\"svg\"==x?r=\"http://www.w3.org/2000/svg\":\"math\"==x?r=\"http://www.w3.org/1998/Math/MathML\":r||(r=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((w=e[a])&&\"setAttribute\"in w==!!x&&(x?w.localName==x:3==w.nodeType)){u=w,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(r,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(w=u.attributes[a]).name]=w.value;for(a in b)if(w=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=w;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,w,r)}for(a in k)w=k[a],\"children\"==a?y=w:\"dangerouslySetInnerHTML\"==a?h=w:\"value\"==a?_=w:\"checked\"==a?m=w:c&&\"function\"!=typeof w||b[a]===w||j(u,a,w,b[a],r);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,d(y)?y:[y],t,i,o,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":r,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],r),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],r))}return u}function B(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function D(n,u,t){var i,o;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||B(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(o=0;o<i.length;o++)i[o]&&D(i[o],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function E(n,l,u){return this.constructor(n,u)}function G(u,t,i){var o,r,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),r=(o=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!o&&i||t).__k=_(k,null,[u]),r||p,p,t.namespaceURI,!o&&i?[i]:r?null:t.firstChild?n.call(t.childNodes):null,e,!o&&i?i:r?r.__e:t.firstChild,o,f),N(e,u,f)}function J(n,l){G(n,l,J)}function K(l,u,t){var i,o,r,e,f=w({},l.props);for(r in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=void 0===u[r]&&null!=e?e[r]:u[r];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,o||l.ref,null)}function Q(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&void 0===n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=w({},this.state),\"function\"==typeof n&&(n=n(w({},u),this.props)),n&&w(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,K as cloneElement,Q as createContext,_ as createElement,b as createRef,_ as h,J as hydrate,t as isValidElement,l as options,G as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\""\";break;case 38:f=\"&\";break;case 60:f=\"<\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(t=function(r){return null!==r&&\"object\"==typeof r&&\"function\"==typeof r.valueOf?r.valueOf():r}(t),\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+n(i)+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(\"\"+t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","// Widget dimensions\r\nexport const BUTTON_SIZE = 60;\r\nexport const WINDOW_WIDTH = 350;\r\nexport const WINDOW_HEIGHT = 500;\r\n\r\n// Positioning\r\nexport const POSITION_BOTTOM = 20;\r\nexport const POSITION_RIGHT = 20;\r\n\r\n// Colors\r\nexport const COLORS = {\r\n primary: \"#006BF8\",\r\n primaryHover: \"#0056C7\",\r\n background: \"#ffffff\",\r\n text: \"#1F1F1F\",\r\n textSecondary: \"#1F1F1F\",\r\n border: \"#e5e7eb\",\r\n messageBot: \"\",\r\n messageUser: \"#6C03C1\",\r\n messageUserText: \"#ffffff\",\r\n};\r\n\r\nconst normalizeHexColor = (hex: string): string => {\r\n const trimmed = hex.trim();\r\n if (!/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(trimmed)) {\r\n return \"#000000\";\r\n }\r\n if (trimmed.length === 4) {\r\n const r = trimmed[1];\r\n const g = trimmed[2];\r\n const b = trimmed[3];\r\n return `#${r}${r}${g}${g}${b}${b}`;\r\n }\r\n return trimmed;\r\n};\r\n\r\nexport const getContrastIconFilter = (backgroundHex: string): string => {\r\n const hex = normalizeHexColor(backgroundHex).slice(1);\r\n const r = parseInt(hex.slice(0, 2), 16);\r\n const g = parseInt(hex.slice(2, 4), 16);\r\n const b = parseInt(hex.slice(4, 6), 16);\r\n\r\n // Relative luminance approximation for quick contrast choice.\r\n const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\r\n return luminance > 0.62 ? \"brightness(0) invert(0)\" : \"brightness(0) invert(1)\";\r\n};\r\n\r\n// Border radius\r\nexport const BORDER_RADIUS = {\r\n button: '50%',\r\n window: '17px',\r\n message: '14px'\r\n};\r\n\r\n// Shadows\r\nexport const SHADOW = \"0 0 15px rgba(0, 0, 0, 0.15)\";\r\n\r\n// Transitions\r\nexport const TRANSITIONS = {\r\n fast: '150ms ease-in-out',\r\n medium: '250ms ease-in-out'\r\n};\r\n","import microphoneIcon from \"./assets/icons/microphone.svg?inline\";\r\nimport microphoneIconRaw from \"./assets/icons/microphone.svg?raw\";\r\nimport restartIcon from \"./assets/icons/restart.svg?inline\";\r\nimport restartIconRaw from \"./assets/icons/restart.svg?raw\";\r\nimport closeIcon from \"./assets/icons/close.svg?inline\";\r\nimport closeIconRaw from \"./assets/icons/close.svg?raw\";\r\nimport bulutLogo from \"./assets/icons/bulut_logo.svg\";\r\nimport bulutLogoRaw from \"./assets/icons/bulut_logo.svg?raw\";\r\n\r\nexport const microphoneIconUrl = microphoneIcon;\r\nexport const microphoneIconContent = microphoneIconRaw;\r\nexport const restartIconUrl = restartIcon;\r\nexport const restartIconContent = restartIconRaw;\r\nexport const closeIconUrl = closeIcon;\r\nexport const closeIconContent = closeIconRaw;\r\nexport const logoUrl = bulutLogo;\r\nexport const logoContent = bulutLogoRaw;\r\n","export default \"<svg width=\\\"50\\\" height=\\\"50\\\" viewBox=\\\"0 0 50 50\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\r\\n<path d=\\\"M17.6667 47H32.3333M39.6666 19.5001V23.1667C39.6666 31.2334 33.0666 37.8334 25 37.8334M25 37.8334C16.9333 37.8334 10.3334 31.2334 10.3334 23.1667V19.5001M25 37.8334V47M25 3.00009C24.0356 2.99523 23.0798 3.1816 22.1879 3.54841C21.296 3.91523 20.4857 4.45521 19.8037 5.13714C19.1218 5.81907 18.5818 6.62942 18.215 7.52133C17.8482 8.41325 17.6618 9.36903 17.6667 10.3334V23.0521C17.6667 27.0855 20.9896 30.5 25 30.5C29.0104 30.5 32.3333 27.1771 32.3333 23.0521V10.3334C32.3333 6.20842 29.125 3.00009 25 3.00009Z\\\" stroke=\\\"black\\\" stroke-width=\\\"3\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\r\\n</svg>\\r\\n\"","export default \"<svg width=\\\"50\\\" height=\\\"50\\\" viewBox=\\\"0 0 50 50\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\r\\n<path d=\\\"M42.5 42.5L7.5 7.5M42.5 7.5L7.5 42.5\\\" stroke=\\\"black\\\" stroke-width=\\\"3\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\r\\n</svg>\\r\\n\"","\r\nimport type { CSSProperties, JSX } from \"preact\";\r\nimport { useMemo } from \"preact/hooks\";\r\n\r\nexport type SvgIconProps = Omit<JSX.IntrinsicElements[\"svg\"], \"style\"> & {\r\n src: string;\r\n title?: string;\r\n /**\r\n * If true, replaces fill and stroke attributes with \"currentColor\" in the inner SVG content.\r\n * Default: true\r\n */\r\n stripColors?: boolean;\r\n style?: CSSProperties;\r\n // Explicitly add common props to ensure destructuring works smoothly\r\n className?: string;\r\n fill?: string;\r\n stroke?: string;\r\n strokeWidth?: string | number;\r\n width?: string | number;\r\n height?: string | number;\r\n};\r\n\r\nexport function SvgIcon({\r\n src,\r\n width,\r\n height,\r\n title,\r\n stripColors = true,\r\n className,\r\n style,\r\n fill,\r\n stroke,\r\n strokeWidth,\r\n ...props\r\n}: SvgIconProps) {\r\n const { viewBox, content } = useMemo(() => {\r\n if (!src) return { viewBox: \"0 0 24 24\", content: \"\" };\r\n\r\n const trimmedSrc = src.trim();\r\n // Extract viewBox\r\n const viewBoxMatch = trimmedSrc.match(/viewBox=\"([^\"]*)\"/);\r\n const viewBox = viewBoxMatch ? viewBoxMatch[1] : \"0 0 24 24\";\r\n\r\n // Extract inner content by removing the outer <svg> wrapper\r\n // We remove the opening <svg ...> tag and the closing </svg> tag only.\r\n let content = trimmedSrc.replace(/^<svg[^>]*>/i, \"\").replace(/<\\/svg>\\s*$/i, \"\");\r\n\r\n return { viewBox, content };\r\n }, [src]);\r\n\r\n const cleanContent = useMemo(() => {\r\n if (!content) return \"\";\r\n let nextContent = content;\r\n\r\n if (stripColors) {\r\n // Force inner nodes to use props instead of hardcoded SVG values.\r\n nextContent = nextContent\r\n .replace(/fill=\"[^\"]*\"/gi, `fill=\"${fill}\"`)\r\n .replace(/stroke=\"[^\"]*\"/gi, `stroke=\"${stroke}\"`);\r\n }\r\n\r\n if (strokeWidth !== undefined) {\r\n const strokeWidthValue = String(strokeWidth);\r\n nextContent = /stroke-width=\"[^\"]*\"/i.test(nextContent)\r\n ? nextContent.replace(/stroke-width=\"[^\"]*\"/gi, `stroke-width=\"${strokeWidthValue}\"`)\r\n : nextContent.replace(\r\n /<(path|circle|ellipse|line|polyline|polygon|rect)\\b/gi,\r\n `<$1 stroke-width=\"${strokeWidthValue}\"`,\r\n );\r\n }\r\n\r\n return nextContent;\r\n }, [content, stripColors, fill, stroke, strokeWidth]);\r\n\r\n return (\r\n <svg\r\n viewBox={viewBox}\r\n width={width}\r\n height={height}\r\n className={className}\r\n style={{\r\n display: \"inline-block\",\r\n verticalAlign: \"middle\",\r\n flexShrink: 0,\r\n ...style,\r\n }}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n dangerouslySetInnerHTML={{ __html: cleanContent }}\r\n >\r\n {title && <title>{title}</title>}\r\n </svg>\r\n );\r\n}\r\n","import {\r\n BUTTON_SIZE,\r\n POSITION_BOTTOM,\r\n POSITION_RIGHT,\r\n COLORS,\r\n SHADOW,\r\n TRANSITIONS,\r\n BORDER_RADIUS,\r\n getContrastIconFilter,\r\n} from \"../styles/constants\";\r\nimport {\r\n closeIconContent,\r\n microphoneIconContent,\r\n} from \"../assets\";\r\nimport { SvgIcon } from \"./SvgIcon\";\r\n\r\ninterface ChatButtonProps {\r\n onMicClick: () => void;\r\n onCancelRecording: () => void;\r\n onAccessibilityToggle: () => void;\r\n isRecording: boolean;\r\n showBubble: boolean;\r\n onBubbleClick: () => void;\r\n previewMessage: string | null;\r\n onPreviewClick: () => void;\r\n onPreviewClose: () => void;\r\n accessibilityEnabled: boolean;\r\n}\r\n\r\nexport const ChatButton = ({\r\n onMicClick,\r\n onCancelRecording,\r\n onAccessibilityToggle,\r\n isRecording,\r\n showBubble,\r\n onBubbleClick,\r\n previewMessage,\r\n onPreviewClick,\r\n onPreviewClose,\r\n accessibilityEnabled,\r\n}: ChatButtonProps) => {\r\n const bgColor = COLORS.primary;\r\n\r\n const containerStyle: { [key: string]: string } = {\r\n position: \"fixed\",\r\n right: `${POSITION_RIGHT}px`,\r\n bottom: `${POSITION_BOTTOM}px`,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-end\",\r\n gap: \"8px\",\r\n zIndex: \"9999\",\r\n };\r\n\r\n const controlsRowStyle: { [key: string]: string } = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"10px\",\r\n };\r\n\r\n const buttonStyle: { [key: string]: string } = {\r\n width: `${BUTTON_SIZE}px`,\r\n height: `${BUTTON_SIZE}px`,\r\n borderRadius: BORDER_RADIUS.button,\r\n backgroundColor: bgColor,\r\n color: \"#ffffff\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n transition: `background-color ${TRANSITIONS.fast}, transform ${TRANSITIONS.fast}`,\r\n position: \"relative\",\r\n };\r\n\r\n const iconStyle: { [key: string]: string } = {\r\n width: \"24px\",\r\n height: \"24px\",\r\n display: \"block\",\r\n filter: getContrastIconFilter(bgColor),\r\n };\r\n\r\n const handleClick = () => {\r\n if (isRecording) {\r\n onCancelRecording();\r\n } else {\r\n onMicClick();\r\n }\r\n };\r\n\r\n // Shared close button style\r\n const closeBtnStyle: { [key: string]: string } = {\r\n position: \"absolute\",\r\n top: \"6px\",\r\n right: \"6px\",\r\n width: \"20px\",\r\n height: \"20px\",\r\n borderRadius: \"50%\",\r\n border: \"none\",\r\n background: \"rgba(0,0,0,0.08)\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n fontSize: \"12px\",\r\n lineHeight: \"1\",\r\n color: COLORS.text,\r\n padding: \"0\",\r\n };\r\n\r\n const renderPopup = (\r\n content: preact.ComponentChildren,\r\n onClick: () => void,\r\n onClose: (() => void) | null,\r\n extraClass: string,\r\n scrollable: boolean,\r\n ) => (\r\n <div\r\n className={`bulut-popup ${extraClass}`}\r\n style={{ cursor: \"pointer\" }}\r\n onClick={onClick}\r\n >\r\n {/* Close button */}\r\n {onClose && (\r\n <button\r\n type=\"button\"\r\n style={closeBtnStyle}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onClose();\r\n }}\r\n aria-label=\"Kapat\"\r\n >\r\n <SvgIcon\r\n strokeWidth={3}\r\n src={closeIconContent}\r\n stroke={\"currentColor\"}\r\n height={14}\r\n />\r\n </button>\r\n )}\r\n\r\n {/* Text content */}\r\n <div\r\n style={{\r\n paddingRight: onClose ? \"22px\" : \"0\",\r\n wordBreak: \"break-word\",\r\n ...(scrollable ? { maxHeight: \"96px\", overflowY: \"auto\" } : {}),\r\n }}\r\n >\r\n {content}\r\n </div>\r\n </div>\r\n );\r\n\r\n return (\r\n <>\r\n <style>{`\r\n .bulut-popup {\r\n background: #ffffff;\r\n color: ${COLORS.text};\r\n padding: 10px 14px;\r\n border-radius: 12px;\r\n font-size: 13px;\r\n line-height: 1.4;\r\n position: relative;\r\n overflow: visible;\r\n box-shadow: ${SHADOW};\r\n border: 1px solid ${COLORS.border};\r\n }\r\n .bulut-popup-bubble {\r\n animation: bulut-bubbleIn 400ms ease-out;\r\n }\r\n .bulut-popup-preview {\r\n animation: bulut-popIn ${TRANSITIONS.medium};\r\n }\r\n\r\n /* Desktop: limit width, lean to right */\r\n .bulut-popup {\r\n max-width: 320px;\r\n }\r\n\r\n /* Mobile: fill available width */\r\n @media (max-width: 600px) {\r\n .bulut-popup {\r\n max-width: none;\r\n left: 16px;\r\n }\r\n }\r\n\r\n @keyframes bulut-popIn {\r\n from { opacity: 0; transform: translateX(10px); }\r\n to { opacity: 1; transform: translateX(0); }\r\n }\r\n @keyframes bulut-bubbleIn {\r\n 0% { opacity: 0; transform: translateX(10px) scale(0.95); }\r\n 60% { opacity: 1; transform: translateX(-4px) scale(1.02); }\r\n 100% { opacity: 1; transform: translateX(0) scale(1); }\r\n }\r\n @keyframes bulut-badgeIn {\r\n from { opacity: 0; transform: translateY(-4px); }\r\n to { opacity: 1; transform: translateY(0); }\r\n }\r\n `}</style>\r\n\r\n <div style={containerStyle}>\r\n <div style={controlsRowStyle}>\r\n {/* Welcome bubble */}\r\n {showBubble &&\r\n !isRecording &&\r\n !previewMessage &&\r\n renderPopup(\r\n \"Destek lazımsa hemen konuşmaya başlayabiliriz!\",\r\n onBubbleClick,\r\n null,\r\n \"bulut-popup-bubble\",\r\n false,\r\n )}\r\n\r\n {/* New-message preview */}\r\n {previewMessage &&\r\n renderPopup(\r\n previewMessage,\r\n onPreviewClick,\r\n onPreviewClose,\r\n \"bulut-popup-preview\",\r\n true,\r\n )}\r\n\r\n {/* Main mic / cancel button */}\r\n <button\r\n style={buttonStyle}\r\n onClick={handleClick}\r\n onMouseEnter={(e) => {\r\n Object.assign(e.currentTarget.style, {\r\n backgroundColor: COLORS.primaryHover,\r\n transform: \"scale(1.05)\",\r\n });\r\n }}\r\n onMouseLeave={(e) => {\r\n Object.assign(e.currentTarget.style, {\r\n\r\n transform: \"scale(1)\",\r\n });\r\n }}\r\n aria-label={isRecording ? \"Kaydı iptal et\" : \"Konuşmaya başla\"}\r\n >\r\n <span\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n onAccessibilityToggle();\r\n }}\r\n title={\r\n accessibilityEnabled ? \"Sesli mod açık\" : \"Sesli mod kapalı\"\r\n }\r\n aria-label={\r\n accessibilityEnabled ? \"Sesli modu kapat\" : \"Sesli modu aç\"\r\n }\r\n style={{\r\n position: \"absolute\",\r\n top: \"3px\",\r\n right: \"3px\",\r\n width: \"15px\",\r\n height: \"15px\",\r\n borderRadius: \"50%\",\r\n border: `2px solid ${accessibilityEnabled ? \"white\" : COLORS.primaryHover}`,\r\n backgroundColor: accessibilityEnabled\r\n ? COLORS.primaryHover\r\n : \"rgba(255,255,255,1)\",\r\n cursor: \"pointer\",\r\n }}\r\n />\r\n <SvgIcon\r\n src={isRecording ? closeIconContent : microphoneIconContent}\r\n aria-hidden=\"true\"\r\n fill-opacity={0}\r\n stroke={\"currentColor\"}\r\n style={iconStyle}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n","export type ChatRole = \"system\" | \"user\" | \"assistant\";\r\n\r\nexport interface ChatMessage {\r\n role: ChatRole;\r\n content: string;\r\n}\r\n\r\ninterface ApiErrorBody {\r\n detail?: string;\r\n error?: string;\r\n message?: string;\r\n}\r\n\r\ninterface SseEventPayload {\r\n type?: string;\r\n session_id?: string;\r\n user_text?: string;\r\n assistant_text?: string;\r\n delta?: string;\r\n audio?: string;\r\n format?: string;\r\n mime_type?: string;\r\n sample_rate?: number;\r\n error?: string;\r\n}\r\n\r\ninterface TtsWsEventPayload {\r\n type?: string;\r\n request_id?: string;\r\n seq?: number;\r\n audio?: string;\r\n format?: string;\r\n mime_type?: string;\r\n sample_rate?: number;\r\n error?: string;\r\n retryable?: boolean;\r\n last_seq?: number;\r\n}\r\n\r\nexport type AudioStreamState = \"rendering\" | \"playing\" | \"done\" | \"fallback\";\r\nexport const TTS_WS_RETRY_DELAYS_MS = [250, 750, 1500];\r\nconst FORCED_TTS_VOICE = \"zeynep\";\r\n\r\nconst normalizeBaseUrl = (baseUrl: string): string => {\r\n const trimmed = baseUrl.trim().replace(/\\/+$/, \"\");\r\n if (/^https?:\\/\\//i.test(trimmed)) {\r\n return trimmed;\r\n }\r\n // Treat host-only values like \"api.bulut.lu\" as HTTPS absolute URLs.\r\n return `https://${trimmed}`;\r\n};\r\nconst toWebSocketUrl = (baseUrl: string, path: string): string => {\r\n const normalized = normalizeBaseUrl(baseUrl);\r\n const url = new URL(normalized);\r\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\r\n url.pathname = `${url.pathname.replace(/\\/$/, \"\")}${path}`;\r\n url.search = \"\";\r\n url.hash = \"\";\r\n return url.toString();\r\n};\r\n\r\nconst createRequestId = (): string => {\r\n if (typeof crypto !== \"undefined\" && \"randomUUID\" in crypto) {\r\n return crypto.randomUUID();\r\n }\r\n return `tts-${Date.now()}-${Math.random().toString(16).slice(2)}`;\r\n};\r\n\r\nexport const parseTtsWsEventPayload = (\r\n value: unknown,\r\n): TtsWsEventPayload | null => {\r\n try {\r\n if (typeof value !== \"string\") {\r\n return null;\r\n }\r\n return JSON.parse(value) as TtsWsEventPayload;\r\n } catch {\r\n return null;\r\n }\r\n};\r\n\r\nexport const shouldAcceptAudioSeq = (\r\n incomingSeq: number,\r\n highestSeqSeen: number,\r\n): boolean => incomingSeq > highestSeqSeen;\r\n\r\nexport const shouldFallbackToSse = (error: unknown): boolean => {\r\n if (typeof error === \"object\" && error !== null && \"retryable\" in error) {\r\n return Boolean((error as { retryable?: boolean }).retryable);\r\n }\r\n return true;\r\n};\r\n\r\nconst parseErrorBody = async (response: Response): Promise<string> => {\r\n try {\r\n const data = (await response.json()) as ApiErrorBody;\r\n const detail = data.detail;\r\n if (typeof detail === \"string\") return detail;\r\n if (detail && typeof detail === \"object\") return JSON.stringify(detail);\r\n return data.error || data.message || response.statusText;\r\n } catch {\r\n return response.statusText;\r\n }\r\n};\r\n\r\nconst sleep = (ms: number): Promise<void> =>\r\n new Promise((resolve) => {\r\n setTimeout(resolve, ms);\r\n });\r\n\r\nexport const base64ToUint8Array = (base64: string): Uint8Array<ArrayBuffer> => {\r\n // Strip potential data URI prefix if present\r\n const cleanBase64 = base64.replace(/^data:audio\\/\\w+;base64,/, \"\");\r\n const binaryString = atob(cleanBase64);\r\n const bytes = new Uint8Array(binaryString.length) as Uint8Array<ArrayBuffer>;\r\n for (let i = 0; i < binaryString.length; i += 1) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n return bytes;\r\n};\r\n\r\nconst createWavHeader = (\r\n length: number,\r\n sampleRate: number = 16000,\r\n): Uint8Array<ArrayBuffer> => {\r\n const buffer = new ArrayBuffer(44);\r\n const view = new DataView(buffer);\r\n const channels = 1;\r\n\r\n // RIFF chunk descriptor\r\n view.setUint32(0, 0x52494646, false); // \"RIFF\"\r\n view.setUint32(4, 36 + length, true); // file length - 8\r\n view.setUint32(8, 0x57415645, false); // \"WAVE\"\r\n\r\n // fmt sub-chunk\r\n view.setUint32(12, 0x666d7420, false); // \"fmt \"\r\n view.setUint32(16, 16, true); // Subchunk1Size (16 for PCM)\r\n view.setUint16(20, 1, true); // AudioFormat (1 for PCM)\r\n view.setUint16(22, channels, true); // NumChannels\r\n view.setUint32(24, sampleRate, true); // SampleRate\r\n view.setUint32(28, sampleRate * channels * 2, true); // ByteRate\r\n view.setUint16(32, channels * 2, true); // BlockAlign\r\n view.setUint16(34, 16, true); // BitsPerSample\r\n\r\n // data sub-chunk\r\n view.setUint32(36, 0x64617461, false); // \"data\"\r\n view.setUint32(40, length, true); // Subchunk2Size\r\n\r\n return new Uint8Array(buffer) as Uint8Array<ArrayBuffer>;\r\n};\r\nconst waitForPlaybackEnd = async (\r\n audioElement: HTMLAudioElement,\r\n): Promise<void> => {\r\n if (audioElement.ended) {\r\n return;\r\n }\r\n\r\n await new Promise<void>((resolve, reject) => {\r\n const watchdog = window.setInterval(() => {\r\n if (!audioElement.ended) {\r\n console.info(\"[Bulut] playback watchdog: still playing...\");\r\n }\r\n }, 30000);\r\n\r\n const onEnded = () => {\r\n cleanup();\r\n resolve();\r\n };\r\n\r\n const onError = () => {\r\n cleanup();\r\n reject(new Error(\"Ses oynatma hatası oluştu.\"));\r\n };\r\n\r\n const cleanup = () => {\r\n window.clearInterval(watchdog);\r\n audioElement.removeEventListener(\"ended\", onEnded);\r\n audioElement.removeEventListener(\"error\", onError);\r\n };\r\n\r\n audioElement.addEventListener(\"ended\", onEnded);\r\n audioElement.addEventListener(\"error\", onError);\r\n });\r\n};\r\n\r\n\r\n\r\nconst playBufferedAudio = async (\r\n chunks: Uint8Array<ArrayBuffer>[],\r\n mimeType: string,\r\n sampleRate: number = 16000,\r\n onAudioStateChange?: (state: AudioStreamState) => void,\r\n): Promise<void> => {\r\n if (chunks.length === 0) {\r\n onAudioStateChange?.(\"done\");\r\n return;\r\n }\r\n\r\n // Debug info\r\n const totalBytes = chunks.reduce((acc, c) => acc + c.byteLength, 0);\r\n console.log(`[Bulut] Playing buffered audio: ${chunks.length} chunks, ${totalBytes} bytes, type=${mimeType}`);\r\n\r\n onAudioStateChange?.(\"fallback\");\r\n\r\n const blobParts: ArrayBuffer[] = chunks.map((chunk) => {\r\n const copied = new Uint8Array(chunk.byteLength) as Uint8Array<ArrayBuffer>;\r\n copied.set(chunk);\r\n return copied.buffer;\r\n });\r\n\r\n // Verify magic numbers and detect MIME type\r\n let detectedMime = mimeType;\r\n if (chunks.length > 0 && chunks[0].length >= 4) {\r\n const header = Array.from(chunks[0].slice(0, 4))\r\n .map(b => b.toString(16).padStart(2, '0').toUpperCase())\r\n .join(' ');\r\n console.log(`[Bulut] Audio header (hex): ${header}`);\r\n\r\n // Magic number detection\r\n if (header.startsWith(\"49 44 33\")) { // ID3\r\n detectedMime = \"audio/mpeg\";\r\n } else if (header.startsWith(\"FF F3\") || header.startsWith(\"FF F2\")) { // MP3 Sync\r\n detectedMime = \"audio/mpeg\";\r\n } else if (header.startsWith(\"52 49 46 46\")) { // RIFF (WAV)\r\n detectedMime = \"audio/wav\";\r\n } else if (header.startsWith(\"1A 45 DF A3\")) { // EBML (WebM)\r\n detectedMime = \"audio/webm\";\r\n }\r\n }\r\n\r\n // Ensure valid MIME type\r\n // Ensure valid MIME type or wrap raw PCM\r\n let safeMimeType = detectedMime && detectedMime.includes(\"/\") ? detectedMime : \"audio/mpeg\";\r\n let finalBlobParts: BlobPart[] = blobParts;\r\n\r\n if (mimeType === \"audio/pcm\") {\r\n // Wrap raw PCM in WAV container\r\n const totalLength = chunks.reduce((acc, c) => acc + c.byteLength, 0);\r\n const header = createWavHeader(totalLength, sampleRate);\r\n finalBlobParts = [header.buffer, ...blobParts];\r\n safeMimeType = \"audio/wav\";\r\n console.log(`[Bulut] Wrapped raw PCM in WAV (rate=${sampleRate})`);\r\n }\r\n\r\n console.log(`[Bulut] Creating blob with type: ${safeMimeType} (original: ${mimeType})`);\r\n const blob = new Blob(finalBlobParts, { type: safeMimeType });\r\n\r\n const audioElement = new Audio();\r\n const objectUrl = URL.createObjectURL(blob);\r\n\r\n try {\r\n audioElement.preload = \"auto\";\r\n audioElement.autoplay = true;\r\n // Some browsers need this\r\n audioElement.setAttribute(\"playsinline\", \"true\");\r\n audioElement.src = objectUrl;\r\n\r\n await audioElement.play();\r\n onAudioStateChange?.(\"playing\");\r\n await waitForPlaybackEnd(audioElement);\r\n onAudioStateChange?.(\"done\");\r\n } catch (err) {\r\n console.error(`[Bulut] Playback failed: ${err}`, { mimeType: safeMimeType, size: blob.size });\r\n onAudioStateChange?.(\"done\"); // Signal done to unblock UI even on error\r\n throw err;\r\n } finally {\r\n audioElement.pause();\r\n audioElement.removeAttribute(\"src\");\r\n audioElement.load();\r\n URL.revokeObjectURL(objectUrl);\r\n }\r\n};\r\n\r\nexport interface VoiceChatEvents {\r\n onTranscription?: (data: {\r\n session_id: string;\r\n user_text: string;\r\n }) => void;\r\n onAssistantDelta?: (delta: string) => void;\r\n onAssistantDone?: (assistantText: string) => void;\r\n onAudioStateChange?: (state: AudioStreamState) => void;\r\n onError?: (error: string) => void;\r\n // Backward compatibility for old callers.\r\n onMetadata?: (data: {\r\n session_id: string;\r\n user_text: string;\r\n assistant_text: string;\r\n }) => void;\r\n}\r\n\r\nexport interface StreamController {\r\n stop: () => void;\r\n done: Promise<void>;\r\n}\r\n\r\nexport const parseSseEventPayload = (eventBlock: string): SseEventPayload | null => {\r\n const dataLines = eventBlock\r\n .split(/\\r?\\n/)\r\n .map((line) => line.trim())\r\n .filter((line) => line.startsWith(\"data:\"))\r\n .map((line) => line.slice(5).trimStart());\r\n\r\n if (dataLines.length === 0) {\r\n return null;\r\n }\r\n\r\n const dataStr = dataLines.join(\"\\n\");\r\n if (dataStr === \"[DONE]\") {\r\n return { type: \"done\" };\r\n }\r\n\r\n try {\r\n return JSON.parse(dataStr) as SseEventPayload;\r\n } catch (error) {\r\n console.warn(\"Error parsing SSE chunk:\", error);\r\n return null;\r\n }\r\n};\r\n\r\nexport const isAudioSsePayload = (\r\n payload: SseEventPayload,\r\n): payload is SseEventPayload & { audio: string } =>\r\n typeof payload.audio === \"string\" &&\r\n (payload.type === undefined || payload.type === \"audio\");\r\n\r\n// ── Separated Endpoint Helpers ──────────────────────────────────────\r\n\r\nexport async function transcribeAudio(\r\n baseUrl: string,\r\n file: File,\r\n projectId: string,\r\n sessionId: string | null,\r\n language: string\r\n): Promise<{ text: string; session_id: string }> {\r\n const url = `${normalizeBaseUrl(baseUrl)}/chat/stt`;\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n formData.append(\"project_id\", projectId);\r\n if (sessionId) formData.append(\"session_id\", sessionId);\r\n formData.append(\"language\", language);\r\n\r\n const response = await fetch(url, { method: \"POST\", body: formData });\r\n if (!response.ok) {\r\n throw new Error(await parseErrorBody(response));\r\n }\r\n return response.json();\r\n}\r\n\r\ninterface TtsCollectResult {\r\n chunks: Uint8Array<ArrayBuffer>[];\r\n mimeType: string;\r\n sampleRate: number;\r\n}\r\n\r\nconst buildError = (message: string, retryable: boolean = true): Error & { retryable: boolean } => {\r\n const error = new Error(message) as Error & { retryable: boolean };\r\n error.retryable = retryable;\r\n return error;\r\n};\r\n\r\nconst collectTtsViaSse = async (\r\n baseUrl: string,\r\n assistantText: string,\r\n accessibilityMode: boolean,\r\n isStopped: () => boolean,\r\n setReader: (reader: ReadableStreamDefaultReader<Uint8Array> | undefined) => void,\r\n): Promise<TtsCollectResult> => {\r\n const ttsFormData = new FormData();\r\n ttsFormData.append(\"text\", assistantText);\r\n ttsFormData.append(\"voice\", FORCED_TTS_VOICE);\r\n ttsFormData.append(\"accessibility_mode\", String(accessibilityMode));\r\n\r\n const ttsResponse = await fetch(`${normalizeBaseUrl(baseUrl)}/chat/tts`, {\r\n method: \"POST\",\r\n body: ttsFormData,\r\n });\r\n\r\n if (!ttsResponse.ok) {\r\n throw buildError(await parseErrorBody(ttsResponse), false);\r\n }\r\n\r\n const reader = ttsResponse.body?.getReader();\r\n if (!reader) {\r\n throw buildError(\"TTS response body is not readable\", false);\r\n }\r\n\r\n setReader(reader);\r\n\r\n const chunks: Uint8Array<ArrayBuffer>[] = [];\r\n let mimeType = \"audio/mpeg\";\r\n let sampleRate = 16000;\r\n const decoder = new TextDecoder();\r\n let buffer = \"\";\r\n\r\n while (true) {\r\n if (isStopped()) {\r\n break;\r\n }\r\n\r\n const { done, value } = await reader.read();\r\n if (done) {\r\n break;\r\n }\r\n\r\n buffer += decoder.decode(value, { stream: true });\r\n const blocks = buffer.split(/\\r?\\n\\r?\\n/);\r\n buffer = blocks.pop() || \"\";\r\n\r\n for (const block of blocks) {\r\n const payload = parseSseEventPayload(block);\r\n if (!payload) {\r\n continue;\r\n }\r\n\r\n if (isAudioSsePayload(payload)) {\r\n const format = payload.format || \"mp3\";\r\n mimeType = payload.mime_type || (format === \"webm\" ? \"audio/webm\" : \"audio/mpeg\");\r\n chunks.push(base64ToUint8Array(payload.audio));\r\n if (payload.sample_rate) {\r\n sampleRate = payload.sample_rate;\r\n }\r\n }\r\n }\r\n }\r\n\r\n reader.releaseLock();\r\n setReader(undefined);\r\n\r\n return { chunks, mimeType, sampleRate };\r\n};\r\n\r\nconst collectTtsViaWebSocket = async (\r\n baseUrl: string,\r\n assistantText: string,\r\n accessibilityMode: boolean,\r\n isStopped: () => boolean,\r\n setSocket: (socket: WebSocket | null) => void,\r\n): Promise<TtsCollectResult> => {\r\n const wsUrl = toWebSocketUrl(baseUrl, \"/chat/tts/ws\");\r\n const requestId = createRequestId();\r\n const chunks: Uint8Array<ArrayBuffer>[] = [];\r\n let mimeType = \"audio/mpeg\";\r\n let sampleRate = 16000;\r\n let highestSeqSeen = 0;\r\n\r\n const connectOnce = (): Promise<void> =>\r\n new Promise((resolve, reject) => {\r\n if (isStopped()) {\r\n reject(buildError(\"stream_stopped\", false));\r\n return;\r\n }\r\n\r\n let done = false;\r\n let finalError: (Error & { retryable?: boolean }) | null = null;\r\n const socket = new WebSocket(wsUrl);\r\n setSocket(socket);\r\n\r\n const finalize = (\r\n mode: \"resolve\" | \"reject\",\r\n error?: Error & { retryable?: boolean },\r\n ) => {\r\n socket.onopen = null;\r\n socket.onmessage = null;\r\n socket.onerror = null;\r\n socket.onclose = null;\r\n setSocket(null);\r\n if (mode === \"resolve\") {\r\n resolve();\r\n return;\r\n }\r\n reject(error || buildError(\"tts_ws_closed\", true));\r\n };\r\n\r\n socket.onopen = () => {\r\n console.info(\r\n `[Bulut] TTS WS connected request_id=${requestId} resume_seq=${highestSeqSeen}`,\r\n );\r\n socket.send(\r\n JSON.stringify({\r\n type: \"start\",\r\n request_id: requestId,\r\n text: assistantText,\r\n voice: FORCED_TTS_VOICE,\r\n accessibility_mode: accessibilityMode,\r\n last_seq: highestSeqSeen,\r\n }),\r\n );\r\n };\r\n\r\n socket.onmessage = (event) => {\r\n const payload = parseTtsWsEventPayload(String(event.data));\r\n if (!payload) {\r\n console.warn(\"[Bulut] TTS WS invalid JSON payload\");\r\n return;\r\n }\r\n\r\n if (payload.type === \"audio\" && typeof payload.audio === \"string\") {\r\n const seq = typeof payload.seq === \"number\" ? payload.seq : 0;\r\n if (shouldAcceptAudioSeq(seq, highestSeqSeen)) {\r\n chunks.push(base64ToUint8Array(payload.audio));\r\n highestSeqSeen = seq;\r\n if (payload.mime_type) {\r\n mimeType = payload.mime_type;\r\n }\r\n if (typeof payload.sample_rate === \"number\") {\r\n sampleRate = payload.sample_rate;\r\n }\r\n } else {\r\n console.info(\r\n `[Bulut] TTS WS duplicate chunk ignored request_id=${requestId} seq=${seq} seen=${highestSeqSeen}`,\r\n );\r\n }\r\n\r\n if (socket.readyState === WebSocket.OPEN) {\r\n socket.send(\r\n JSON.stringify({\r\n type: \"ack\",\r\n request_id: requestId,\r\n last_seq: highestSeqSeen,\r\n }),\r\n );\r\n }\r\n return;\r\n }\r\n\r\n if (payload.type === \"done\") {\r\n const streamLastSeq =\r\n typeof payload.last_seq === \"number\" ? payload.last_seq : highestSeqSeen;\r\n if (streamLastSeq > highestSeqSeen) {\r\n finalError = buildError(\"tts_ws_sequence_gap\", true);\r\n done = false;\r\n socket.close();\r\n return;\r\n }\r\n done = true;\r\n socket.close();\r\n return;\r\n }\r\n\r\n if (payload.type === \"error\") {\r\n finalError = buildError(payload.error || \"tts_ws_error\", payload.retryable !== false);\r\n done = false;\r\n socket.close();\r\n }\r\n };\r\n\r\n socket.onerror = () => {\r\n if (!finalError) {\r\n finalError = buildError(\"tts_ws_transport_error\", true);\r\n }\r\n };\r\n\r\n socket.onclose = () => {\r\n if (isStopped()) {\r\n finalize(\"reject\", buildError(\"stream_stopped\", false));\r\n return;\r\n }\r\n if (done) {\r\n finalize(\"resolve\");\r\n return;\r\n }\r\n finalize(\"reject\", finalError || buildError(\"tts_ws_closed_before_done\", true));\r\n };\r\n });\r\n\r\n for (let attempt = 0; attempt <= TTS_WS_RETRY_DELAYS_MS.length; attempt += 1) {\r\n if (attempt > 0) {\r\n const delay = TTS_WS_RETRY_DELAYS_MS[attempt - 1];\r\n console.warn(\r\n `[Bulut] TTS WS retry attempt=${attempt} delay_ms=${delay} last_seq=${highestSeqSeen}`,\r\n );\r\n await sleep(delay);\r\n }\r\n\r\n try {\r\n await connectOnce();\r\n return { chunks, mimeType, sampleRate };\r\n } catch (error) {\r\n const retryable =\r\n shouldFallbackToSse(error);\r\n const message = error instanceof Error ? error.message : String(error);\r\n console.warn(\r\n `[Bulut] TTS WS attempt failed attempt=${attempt} retryable=${retryable} error=${message}`,\r\n );\r\n if (!retryable || attempt === TTS_WS_RETRY_DELAYS_MS.length) {\r\n throw error;\r\n }\r\n }\r\n }\r\n\r\n throw buildError(\"tts_ws_exhausted\", true);\r\n};\r\n\r\n// ── Orchestrator ────────────────────────────────────────────────────\r\n\r\nexport const voiceChatStream = (\r\n baseUrl: string,\r\n audioFile: File,\r\n projectId: string,\r\n sessionId: string | null,\r\n config: {\r\n model: string;\r\n voice: string;\r\n pageContext?: string;\r\n accessibilityMode?: boolean;\r\n },\r\n events: VoiceChatEvents,\r\n): StreamController => {\r\n let isStopped = false;\r\n let activeReader: ReadableStreamDefaultReader<Uint8Array> | undefined;\r\n let activeSocket: WebSocket | null = null;\r\n\r\n const donePromise = new Promise<void>(async (resolve, reject) => {\r\n try {\r\n // 1. STT\r\n if (isStopped) return resolve();\r\n const sttResult = await transcribeAudio(baseUrl, audioFile, projectId, sessionId, \"tr\");\r\n\r\n const currentSessionId = sttResult.session_id;\r\n const userText = sttResult.text;\r\n\r\n events.onTranscription?.({\r\n session_id: currentSessionId,\r\n user_text: userText,\r\n });\r\n\r\n // 2. LLM\r\n if (isStopped) return resolve();\r\n\r\n const llmFormData = new FormData();\r\n llmFormData.append(\"project_id\", projectId);\r\n llmFormData.append(\"session_id\", currentSessionId);\r\n llmFormData.append(\"user_text\", userText);\r\n llmFormData.append(\"model\", config.model);\r\n if (config.pageContext) llmFormData.append(\"page_context\", config.pageContext);\r\n llmFormData.append(\"accessibility_mode\", String(Boolean(config.accessibilityMode)));\r\n\r\n const llmResponse = await fetch(`${normalizeBaseUrl(baseUrl)}/chat/llm`, {\r\n method: \"POST\",\r\n body: llmFormData,\r\n });\r\n\r\n if (!llmResponse.ok) {\r\n throw new Error(await parseErrorBody(llmResponse));\r\n }\r\n\r\n activeReader = llmResponse.body?.getReader();\r\n if (!activeReader) throw new Error(\"LLM response body is not readable\");\r\n\r\n const decoder = new TextDecoder();\r\n let buffer = \"\";\r\n let assistantText = \"\";\r\n\r\n while (true) {\r\n if (isStopped) break;\r\n const { done, value } = await activeReader.read();\r\n if (done) break;\r\n\r\n buffer += decoder.decode(value, { stream: true });\r\n const chunks = buffer.split(/\\r?\\n\\r?\\n/);\r\n buffer = chunks.pop() || \"\";\r\n\r\n for (const chunk of chunks) {\r\n const data = parseSseEventPayload(chunk);\r\n if (!data) continue;\r\n\r\n // Capture auto-created session_id from the LLM stream\r\n if (data.type === \"session\" && data.session_id) {\r\n events.onTranscription?.({\r\n session_id: data.session_id,\r\n user_text: sttResult.text,\r\n });\r\n continue;\r\n }\r\n\r\n if (data.type === \"llm_delta\" && typeof data.delta === \"string\") {\r\n events.onAssistantDelta?.(data.delta);\r\n continue;\r\n }\r\n\r\n if (data.type === \"llm_done\") {\r\n assistantText = data.assistant_text || \"\";\r\n events.onAssistantDone?.(assistantText);\r\n continue;\r\n }\r\n\r\n if (data.type === \"error\") {\r\n throw new Error(data.error || \"LLM Error\");\r\n }\r\n }\r\n }\r\n\r\n // Release LLM reader\r\n if (activeReader) {\r\n activeReader.releaseLock();\r\n activeReader = undefined;\r\n }\r\n\r\n // 3. TTS\r\n if (isStopped || !assistantText) {\r\n // If no assistant text (error?), we can't speak\r\n return resolve();\r\n }\r\n console.info(\r\n `[Bulut] TTS start mode=voice requested_voice=${config.voice} forced_voice=${FORCED_TTS_VOICE} accessibility_mode=${Boolean(config.accessibilityMode)}`,\r\n );\r\n\r\n // Notify we are starting to render audio (or waiting for it)\r\n events.onAudioStateChange?.(\"rendering\");\r\n let ttsResult: TtsCollectResult;\r\n try {\r\n ttsResult = await collectTtsViaWebSocket(\r\n baseUrl,\r\n assistantText,\r\n Boolean(config.accessibilityMode),\r\n () => isStopped,\r\n (socket) => {\r\n activeSocket = socket;\r\n },\r\n );\r\n } catch (wsError) {\r\n if (isStopped) {\r\n return resolve();\r\n }\r\n console.warn(\r\n `[Bulut] TTS WS failed, falling back to SSE: ${wsError instanceof Error ? wsError.message : String(wsError)}`,\r\n );\r\n ttsResult = await collectTtsViaSse(\r\n baseUrl,\r\n assistantText,\r\n Boolean(config.accessibilityMode),\r\n () => isStopped,\r\n (reader) => {\r\n activeReader = reader;\r\n },\r\n );\r\n }\r\n\r\n if (!isStopped && ttsResult.chunks.length > 0) {\r\n await playBufferedAudio(\r\n ttsResult.chunks,\r\n ttsResult.mimeType,\r\n ttsResult.sampleRate,\r\n events.onAudioStateChange,\r\n );\r\n } else {\r\n events.onAudioStateChange?.(\"done\");\r\n }\r\n\r\n resolve();\r\n } catch (err) {\r\n const msg = err instanceof Error ? err.message : String(err);\r\n events.onError?.(msg);\r\n reject(err);\r\n } finally {\r\n activeReader?.cancel().catch(() => { });\r\n if (activeSocket && activeSocket.readyState <= WebSocket.OPEN) {\r\n activeSocket.close();\r\n }\r\n activeSocket = null;\r\n }\r\n });\r\n\r\n return {\r\n stop: () => {\r\n isStopped = true;\r\n if (activeReader) {\r\n activeReader.cancel().catch(() => { });\r\n }\r\n if (activeSocket && activeSocket.readyState <= WebSocket.OPEN) {\r\n activeSocket.close();\r\n }\r\n },\r\n done: donePromise,\r\n };\r\n};\r\n\r\n// ── Text-only orchestrator (browser STT path) ───────────────────────\r\n// Skips /chat/stt — accepts pre-transcribed text and goes straight to\r\n// LLM + TTS. Session is auto-created on the backend when sessionId\r\n// is null.\r\n\r\nexport const textChatStream = (\r\n baseUrl: string,\r\n userText: string,\r\n projectId: string,\r\n sessionId: string | null,\r\n config: {\r\n model: string;\r\n voice: string;\r\n pageContext?: string;\r\n accessibilityMode?: boolean;\r\n },\r\n events: VoiceChatEvents,\r\n): StreamController => {\r\n let isStopped = false;\r\n let activeReader: ReadableStreamDefaultReader<Uint8Array> | undefined;\r\n let activeSocket: WebSocket | null = null;\r\n\r\n const donePromise = new Promise<void>(async (resolve, reject) => {\r\n try {\r\n // 1. LLM\r\n if (isStopped) return resolve();\r\n\r\n const llmFormData = new FormData();\r\n llmFormData.append(\"project_id\", projectId);\r\n if (sessionId) llmFormData.append(\"session_id\", sessionId);\r\n llmFormData.append(\"user_text\", userText);\r\n llmFormData.append(\"model\", config.model);\r\n if (config.pageContext) llmFormData.append(\"page_context\", config.pageContext);\r\n llmFormData.append(\"accessibility_mode\", String(Boolean(config.accessibilityMode)));\r\n\r\n const llmResponse = await fetch(`${normalizeBaseUrl(baseUrl)}/chat/llm`, {\r\n method: \"POST\",\r\n body: llmFormData,\r\n });\r\n\r\n if (!llmResponse.ok) {\r\n throw new Error(await parseErrorBody(llmResponse));\r\n }\r\n\r\n activeReader = llmResponse.body?.getReader();\r\n if (!activeReader) throw new Error(\"LLM response body is not readable\");\r\n\r\n const decoder = new TextDecoder();\r\n let buffer = \"\";\r\n let assistantText = \"\";\r\n\r\n while (true) {\r\n if (isStopped) break;\r\n const { done, value } = await activeReader.read();\r\n if (done) break;\r\n\r\n buffer += decoder.decode(value, { stream: true });\r\n const chunks = buffer.split(/\\r?\\n\\r?\\n/);\r\n buffer = chunks.pop() || \"\";\r\n\r\n for (const chunk of chunks) {\r\n const data = parseSseEventPayload(chunk);\r\n if (!data) continue;\r\n\r\n // Capture auto-created session_id\r\n if (data.type === \"session\" && data.session_id) {\r\n events.onTranscription?.({\r\n session_id: data.session_id,\r\n user_text: userText,\r\n });\r\n continue;\r\n }\r\n\r\n if (data.type === \"llm_delta\" && typeof data.delta === \"string\") {\r\n events.onAssistantDelta?.(data.delta);\r\n continue;\r\n }\r\n\r\n if (data.type === \"llm_done\") {\r\n assistantText = data.assistant_text || \"\";\r\n events.onAssistantDone?.(assistantText);\r\n continue;\r\n }\r\n\r\n if (data.type === \"error\") {\r\n throw new Error(data.error || \"LLM Error\");\r\n }\r\n }\r\n }\r\n\r\n if (activeReader) {\r\n activeReader.releaseLock();\r\n activeReader = undefined;\r\n }\r\n\r\n // 2. TTS\r\n if (isStopped || !assistantText) {\r\n return resolve();\r\n }\r\n console.info(\r\n `[Bulut] TTS start mode=text requested_voice=${config.voice} forced_voice=${FORCED_TTS_VOICE} accessibility_mode=${Boolean(config.accessibilityMode)}`,\r\n );\r\n\r\n events.onAudioStateChange?.(\"rendering\");\r\n let ttsResult: TtsCollectResult;\r\n try {\r\n ttsResult = await collectTtsViaWebSocket(\r\n baseUrl,\r\n assistantText,\r\n Boolean(config.accessibilityMode),\r\n () => isStopped,\r\n (socket) => {\r\n activeSocket = socket;\r\n },\r\n );\r\n } catch (wsError) {\r\n if (isStopped) {\r\n return resolve();\r\n }\r\n console.warn(\r\n `[Bulut] TTS WS failed, falling back to SSE: ${wsError instanceof Error ? wsError.message : String(wsError)}`,\r\n );\r\n ttsResult = await collectTtsViaSse(\r\n baseUrl,\r\n assistantText,\r\n Boolean(config.accessibilityMode),\r\n () => isStopped,\r\n (reader) => {\r\n activeReader = reader;\r\n },\r\n );\r\n }\r\n\r\n if (!isStopped && ttsResult.chunks.length > 0) {\r\n await playBufferedAudio(\r\n ttsResult.chunks,\r\n ttsResult.mimeType,\r\n ttsResult.sampleRate,\r\n events.onAudioStateChange,\r\n );\r\n } else {\r\n events.onAudioStateChange?.(\"done\");\r\n }\r\n\r\n resolve();\r\n } catch (err) {\r\n const msg = err instanceof Error ? err.message : String(err);\r\n events.onError?.(msg);\r\n reject(err);\r\n } finally {\r\n activeReader?.cancel().catch(() => { });\r\n if (activeSocket && activeSocket.readyState <= WebSocket.OPEN) {\r\n activeSocket.close();\r\n }\r\n activeSocket = null;\r\n }\r\n });\r\n\r\n return {\r\n stop: () => {\r\n isStopped = true;\r\n if (activeReader) {\r\n activeReader.cancel().catch(() => { });\r\n }\r\n if (activeSocket && activeSocket.readyState <= WebSocket.OPEN) {\r\n activeSocket.close();\r\n }\r\n },\r\n done: donePromise,\r\n };\r\n};\r\n\r\n// ── Agent-mode Types ────────────────────────────────────────────────\r\n\r\nexport interface AgentToolCallInfo {\r\n call_id: string;\r\n tool: string;\r\n args: Record<string, unknown>;\r\n}\r\n\r\nexport interface AgentVoiceChatEvents extends VoiceChatEvents {\r\n /** Called when the agent requests tool execution on the frontend. */\r\n onToolCalls?: (calls: AgentToolCallInfo[]) => void;\r\n /** Called after each tool has been executed with the result. */\r\n onToolResult?: (callId: string, toolName: string, result: string) => void;\r\n /** Called at the start of each agent iteration. */\r\n onIteration?: (iteration: number, maxIterations: number) => void;\r\n /** Called when the backend confirms / creates a session ID. */\r\n onSessionId?: (sessionId: string) => void;\r\n}\r\n\r\n// ── Agent Voice Chat Stream (STT → Agent WS → TTS) ─────────────────\r\n\r\nexport const agentVoiceChatStream = (\r\n baseUrl: string,\r\n audioFile: File,\r\n projectId: string,\r\n sessionId: string | null,\r\n config: {\r\n model: string;\r\n voice: string;\r\n pageContext?: string;\r\n accessibilityMode?: boolean;\r\n },\r\n events: AgentVoiceChatEvents,\r\n executeTool: (call: AgentToolCallInfo) => Promise<{ call_id: string; result: string }>,\r\n): StreamController => {\r\n let isStopped = false;\r\n let activeSocket: WebSocket | null = null;\r\n let activeReader: ReadableStreamDefaultReader<Uint8Array> | undefined;\r\n let errorEmitted = false;\r\n\r\n const donePromise = new Promise<void>(async (resolve, reject) => {\r\n try {\r\n // ── 1. STT ────────────────────────────────────────────────\r\n if (isStopped) return resolve();\r\n const sttResult = await transcribeAudio(\r\n baseUrl, audioFile, projectId, sessionId, \"tr\",\r\n );\r\n\r\n const currentSessionId = sttResult.session_id;\r\n const userText = sttResult.text;\r\n\r\n events.onTranscription?.({\r\n session_id: currentSessionId,\r\n user_text: userText,\r\n });\r\n\r\n if (isStopped) return resolve();\r\n\r\n // ── 2. Agent loop via WebSocket ───────────────────────────\r\n const assistantText = await new Promise<string>((agentResolve, agentReject) => {\r\n if (isStopped) { agentResolve(\"\"); return; }\r\n\r\n const wsUrl = toWebSocketUrl(baseUrl, \"/chat/agent/ws\");\r\n const socket = new WebSocket(wsUrl);\r\n activeSocket = socket;\r\n\r\n let finalReply = \"\";\r\n let resolved = false;\r\n\r\n const finish = (reply: string) => {\r\n if (resolved) return;\r\n resolved = true;\r\n agentResolve(reply);\r\n };\r\n\r\n const fail = (error: Error) => {\r\n if (resolved) return;\r\n resolved = true;\r\n agentReject(error);\r\n };\r\n\r\n socket.onopen = () => {\r\n console.info(\"[Bulut] Agent WS connected\");\r\n socket.send(JSON.stringify({\r\n type: \"start\",\r\n project_id: projectId,\r\n session_id: currentSessionId,\r\n user_text: userText,\r\n model: config.model,\r\n page_context: config.pageContext,\r\n accessibility_mode: config.accessibilityMode,\r\n }));\r\n };\r\n\r\n socket.onmessage = async (event) => {\r\n let data: Record<string, unknown>;\r\n try {\r\n data = JSON.parse(String(event.data));\r\n } catch {\r\n console.warn(\"[Bulut] Agent WS invalid JSON\");\r\n return;\r\n }\r\n\r\n const msgType = data.type as string;\r\n\r\n if (msgType === \"session\" && typeof data.session_id === \"string\") {\r\n // Only update session ID – do NOT re-emit user text\r\n events.onSessionId?.(data.session_id as string);\r\n return;\r\n }\r\n\r\n if (msgType === \"iteration\") {\r\n events.onIteration?.(\r\n data.iteration as number,\r\n data.max_iterations as number,\r\n );\r\n return;\r\n }\r\n\r\n if (msgType === \"reply_delta\" && typeof data.delta === \"string\") {\r\n events.onAssistantDelta?.(data.delta);\r\n return;\r\n }\r\n\r\n if (msgType === \"tool_calls\" && Array.isArray(data.calls)) {\r\n const calls = data.calls as AgentToolCallInfo[];\r\n events.onToolCalls?.(calls);\r\n\r\n // Execute tools on the frontend and collect results\r\n const results: { call_id: string; result: string }[] = [];\r\n for (const call of calls) {\r\n const result = await executeTool(call);\r\n events.onToolResult?.(call.call_id, call.tool, result.result);\r\n results.push(result);\r\n }\r\n\r\n // Send results back to the agent\r\n if (socket.readyState === WebSocket.OPEN) {\r\n socket.send(JSON.stringify({\r\n type: \"tool_results\",\r\n results,\r\n }));\r\n }\r\n return;\r\n }\r\n\r\n if (msgType === \"agent_done\") {\r\n finalReply = (data.final_reply as string) || \"\";\r\n events.onAssistantDone?.(finalReply);\r\n // Session ID update only (no re-emit of user text)\r\n if (typeof data.session_id === \"string\") {\r\n events.onSessionId?.(data.session_id as string);\r\n }\r\n finish(finalReply);\r\n return;\r\n }\r\n\r\n if (msgType === \"error\") {\r\n const errMsg = (data.error as string) || \"Agent error\";\r\n errorEmitted = true;\r\n events.onError?.(errMsg);\r\n fail(new Error(errMsg));\r\n return;\r\n }\r\n };\r\n\r\n socket.onerror = () => {\r\n console.error(\"[Bulut] Agent WS error\");\r\n errorEmitted = true;\r\n events.onError?.(\"Agent WebSocket connection error\");\r\n fail(new Error(\"Agent WebSocket connection error\"));\r\n };\r\n\r\n socket.onclose = () => {\r\n console.info(\"[Bulut] Agent WS closed\");\r\n finish(finalReply);\r\n };\r\n });\r\n\r\n activeSocket = null;\r\n\r\n // ── 3. TTS ────────────────────────────────────────────────\r\n if (isStopped || !assistantText) {\r\n return resolve();\r\n }\r\n\r\n console.info(\r\n `[Bulut] TTS start mode=agent forced_voice=${FORCED_TTS_VOICE}`,\r\n );\r\n\r\n events.onAudioStateChange?.(\"rendering\");\r\n let ttsResult: TtsCollectResult;\r\n\r\n try {\r\n ttsResult = await collectTtsViaWebSocket(\r\n baseUrl,\r\n assistantText,\r\n Boolean(config.accessibilityMode),\r\n () => isStopped,\r\n (socket) => { activeSocket = socket; },\r\n );\r\n } catch (wsError) {\r\n if (isStopped) return resolve();\r\n console.warn(\r\n `[Bulut] TTS WS failed, falling back to SSE: ${wsError instanceof Error ? wsError.message : String(wsError)}`,\r\n );\r\n ttsResult = await collectTtsViaSse(\r\n baseUrl,\r\n assistantText,\r\n Boolean(config.accessibilityMode),\r\n () => isStopped,\r\n (reader) => { activeReader = reader; },\r\n );\r\n }\r\n\r\n if (!isStopped && ttsResult.chunks.length > 0) {\r\n await playBufferedAudio(\r\n ttsResult.chunks,\r\n ttsResult.mimeType,\r\n ttsResult.sampleRate,\r\n events.onAudioStateChange,\r\n );\r\n } else {\r\n events.onAudioStateChange?.(\"done\");\r\n }\r\n\r\n resolve();\r\n } catch (err) {\r\n // Only emit onError if it hasn't been emitted already by the WS handler\r\n if (!errorEmitted) {\r\n const msg = err instanceof Error ? err.message : String(err);\r\n events.onError?.(msg);\r\n }\r\n reject(err);\r\n } finally {\r\n activeReader?.cancel().catch(() => { });\r\n if (activeSocket && activeSocket.readyState <= WebSocket.OPEN) {\r\n activeSocket.close();\r\n }\r\n activeSocket = null;\r\n }\r\n });\r\n\r\n return {\r\n stop: () => {\r\n isStopped = true;\r\n if (activeReader) {\r\n activeReader.cancel().catch(() => { });\r\n }\r\n if (activeSocket && activeSocket.readyState <= WebSocket.OPEN) {\r\n activeSocket.close();\r\n }\r\n },\r\n done: donePromise,\r\n };\r\n};\r\n\r\n// ── Agent Text Chat Stream (no STT, Agent WS → TTS) ────────────────\r\n\r\nexport const agentTextChatStream = (\r\n baseUrl: string,\r\n userText: string,\r\n projectId: string,\r\n sessionId: string | null,\r\n config: {\r\n model: string;\r\n voice: string;\r\n pageContext?: string;\r\n accessibilityMode?: boolean;\r\n },\r\n events: AgentVoiceChatEvents,\r\n executeTool: (call: AgentToolCallInfo) => Promise<{ call_id: string; result: string }>,\r\n): StreamController => {\r\n let isStopped = false;\r\n let activeSocket: WebSocket | null = null;\r\n let activeReader: ReadableStreamDefaultReader<Uint8Array> | undefined;\r\n let errorEmitted = false;\r\n\r\n const donePromise = new Promise<void>(async (resolve, reject) => {\r\n try {\r\n if (isStopped) return resolve();\r\n\r\n // ── 1. Agent loop via WebSocket ───────────────────────────\r\n const assistantText = await new Promise<string>((agentResolve, agentReject) => {\r\n if (isStopped) { agentResolve(\"\"); return; }\r\n\r\n const wsUrl = toWebSocketUrl(baseUrl, \"/chat/agent/ws\");\r\n const socket = new WebSocket(wsUrl);\r\n activeSocket = socket;\r\n\r\n let finalReply = \"\";\r\n let resolved = false;\r\n\r\n const finish = (reply: string) => {\r\n if (resolved) return;\r\n resolved = true;\r\n agentResolve(reply);\r\n };\r\n\r\n const fail = (error: Error) => {\r\n if (resolved) return;\r\n resolved = true;\r\n agentReject(error);\r\n };\r\n\r\n socket.onopen = () => {\r\n socket.send(JSON.stringify({\r\n type: \"start\",\r\n project_id: projectId,\r\n session_id: sessionId,\r\n user_text: userText,\r\n model: config.model,\r\n page_context: config.pageContext,\r\n accessibility_mode: config.accessibilityMode,\r\n }));\r\n };\r\n\r\n socket.onmessage = async (event) => {\r\n let data: Record<string, unknown>;\r\n try {\r\n data = JSON.parse(String(event.data));\r\n } catch { return; }\r\n\r\n const msgType = data.type as string;\r\n\r\n if (msgType === \"session\" && typeof data.session_id === \"string\") {\r\n // Only update session ID – do NOT re-emit user text\r\n events.onSessionId?.(data.session_id as string);\r\n return;\r\n }\r\n\r\n if (msgType === \"iteration\") {\r\n events.onIteration?.(\r\n data.iteration as number,\r\n data.max_iterations as number,\r\n );\r\n return;\r\n }\r\n\r\n if (msgType === \"reply_delta\" && typeof data.delta === \"string\") {\r\n events.onAssistantDelta?.(data.delta);\r\n return;\r\n }\r\n\r\n if (msgType === \"tool_calls\" && Array.isArray(data.calls)) {\r\n const calls = data.calls as AgentToolCallInfo[];\r\n events.onToolCalls?.(calls);\r\n\r\n const results: { call_id: string; result: string }[] = [];\r\n for (const call of calls) {\r\n const result = await executeTool(call);\r\n events.onToolResult?.(call.call_id, call.tool, result.result);\r\n results.push(result);\r\n }\r\n\r\n if (socket.readyState === WebSocket.OPEN) {\r\n socket.send(JSON.stringify({\r\n type: \"tool_results\",\r\n results,\r\n }));\r\n }\r\n return;\r\n }\r\n\r\n if (msgType === \"agent_done\") {\r\n finalReply = (data.final_reply as string) || \"\";\r\n events.onAssistantDone?.(finalReply);\r\n if (typeof data.session_id === \"string\") {\r\n events.onSessionId?.(data.session_id as string);\r\n }\r\n finish(finalReply);\r\n return;\r\n }\r\n\r\n if (msgType === \"error\") {\r\n const errMsg = (data.error as string) || \"Agent error\";\r\n errorEmitted = true;\r\n events.onError?.(errMsg);\r\n fail(new Error(errMsg));\r\n return;\r\n }\r\n };\r\n\r\n socket.onerror = () => {\r\n errorEmitted = true;\r\n events.onError?.(\"Agent WebSocket error\");\r\n fail(new Error(\"Agent WebSocket error\"));\r\n };\r\n socket.onclose = () => finish(finalReply);\r\n });\r\n\r\n activeSocket = null;\r\n\r\n // ── 2. TTS ────────────────────────────────────────────────\r\n if (isStopped || !assistantText) return resolve();\r\n\r\n events.onAudioStateChange?.(\"rendering\");\r\n let ttsResult: TtsCollectResult;\r\n\r\n try {\r\n ttsResult = await collectTtsViaWebSocket(\r\n baseUrl, assistantText, Boolean(config.accessibilityMode),\r\n () => isStopped,\r\n (socket) => { activeSocket = socket; },\r\n );\r\n } catch (wsError) {\r\n if (isStopped) return resolve();\r\n ttsResult = await collectTtsViaSse(\r\n baseUrl, assistantText, Boolean(config.accessibilityMode),\r\n () => isStopped,\r\n (reader) => { activeReader = reader; },\r\n );\r\n }\r\n\r\n if (!isStopped && ttsResult.chunks.length > 0) {\r\n await playBufferedAudio(\r\n ttsResult.chunks, ttsResult.mimeType, ttsResult.sampleRate,\r\n events.onAudioStateChange,\r\n );\r\n } else {\r\n events.onAudioStateChange?.(\"done\");\r\n }\r\n\r\n resolve();\r\n } catch (err) {\r\n if (!errorEmitted) {\r\n const msg = err instanceof Error ? err.message : String(err);\r\n events.onError?.(msg);\r\n }\r\n reject(err);\r\n } finally {\r\n activeReader?.cancel().catch(() => { });\r\n if (activeSocket && activeSocket.readyState <= WebSocket.OPEN) {\r\n activeSocket.close();\r\n }\r\n activeSocket = null;\r\n }\r\n });\r\n\r\n return {\r\n stop: () => {\r\n isStopped = true;\r\n if (activeReader) activeReader.cancel().catch(() => { });\r\n if (activeSocket && activeSocket.readyState <= WebSocket.OPEN) {\r\n activeSocket.close();\r\n }\r\n },\r\n done: donePromise,\r\n };\r\n};\r\n","export interface PageContext {\r\n links: string[];\r\n interactables: string[];\r\n summary: string;\r\n}\r\n\r\nexport interface CachedPageContextEntry {\r\n url: string;\r\n summary: string;\r\n links: string[];\r\n interactables: string[];\r\n capturedAt: number;\r\n version: number;\r\n}\r\n\r\nexport interface PageContextSummaryInput {\r\n url: string;\r\n title: string;\r\n lang: string;\r\n headings: string[];\r\n landmarks: string[];\r\n links: string[];\r\n interactables: string[];\r\n interactionSignals: string[];\r\n pageBlueprint: string[];\r\n textSnippets: string[];\r\n outerHtmlDigest: string;\r\n}\r\n\r\ninterface InteractableCandidate {\r\n line: string;\r\n score: number;\r\n order: number;\r\n}\r\n\r\ninterface PageSignalSnapshot {\r\n links: string[];\r\n interactables: string[];\r\n interactionSignals: string[];\r\n pageBlueprint: string[];\r\n}\r\n\r\nconst MAX_LINKS = 20;\r\nconst MAX_INTERACTABLES = 24;\r\nconst MAX_HEADINGS = 10;\r\nconst MAX_TEXT_SNIPPETS = 4;\r\nconst MAX_OUTER_HTML_DIGEST = 760;\r\nconst MAX_CACHED_PAGES = 20;\r\nconst MAX_PAGE_SCAN_ELEMENTS = 2000;\r\nconst MAX_EVENT_HINTS_PER_ELEMENT = 4;\r\nconst MAX_BRANCH_SAMPLES = 4;\r\nconst MAX_BRANCH_DEPTH = 2;\r\nexport const MAX_CONTEXT_SUMMARY_CHARS = 3400;\r\nconst MAX_CONTEXT_WITH_HISTORY_CHARS = 4200;\r\nexport const PAGE_CONTEXT_CACHE_VERSION = 2;\r\nexport const PAGE_CONTEXT_CACHE_KEY = \"auticbot_page_context_cache_v2\";\r\n\r\nconst NON_CONTENT_TAGS = new Set([\r\n \"script\",\r\n \"style\",\r\n \"noscript\",\r\n \"template\",\r\n \"link\",\r\n \"meta\",\r\n]);\r\n\r\nconst NATIVE_INTERACTIVE_TAGS = new Set([\r\n \"a\",\r\n \"button\",\r\n \"input\",\r\n \"textarea\",\r\n \"select\",\r\n \"summary\",\r\n \"details\",\r\n \"option\",\r\n]);\r\n\r\nconst INTERACTIVE_ROLES = new Set([\r\n \"button\",\r\n \"link\",\r\n \"tab\",\r\n \"menuitem\",\r\n \"option\",\r\n \"checkbox\",\r\n \"radio\",\r\n \"switch\",\r\n \"combobox\",\r\n \"textbox\",\r\n \"searchbox\",\r\n \"slider\",\r\n \"spinbutton\",\r\n \"treeitem\",\r\n]);\r\n\r\nconst TRACKED_DISPLAY_VALUES = new Set([\r\n \"block\",\r\n \"inline\",\r\n \"inline-block\",\r\n \"flex\",\r\n \"inline-flex\",\r\n \"grid\",\r\n \"inline-grid\",\r\n]);\r\n\r\nconst TRACKED_POSITION_VALUES = new Set([\r\n \"relative\",\r\n \"absolute\",\r\n \"fixed\",\r\n \"sticky\",\r\n]);\r\n\r\nconst EVENT_HINT_NAMES = [\r\n \"click\",\r\n \"dblclick\",\r\n \"mousedown\",\r\n \"mouseup\",\r\n \"pointerdown\",\r\n \"pointerup\",\r\n \"touchstart\",\r\n \"touchend\",\r\n \"keydown\",\r\n \"keyup\",\r\n \"keypress\",\r\n \"input\",\r\n \"change\",\r\n \"submit\",\r\n \"focus\",\r\n \"blur\",\r\n];\r\n\r\nconst ARIA_INTERACTION_ATTRS = [\r\n \"aria-controls\",\r\n \"aria-expanded\",\r\n \"aria-haspopup\",\r\n \"aria-pressed\",\r\n \"aria-selected\",\r\n];\r\n\r\nconst DATA_INTERACTION_PATTERN =\r\n /(action|click|press|toggle|target|trigger|nav|open|close|menu|modal|command|submit)/i;\r\n\r\nconst pageContextCache = new Map<string, CachedPageContextEntry>();\r\nlet cacheHydrated = false;\r\n\r\nconst normalizeWhitespace = (value: string): string =>\r\n value.replace(/\\s+/g, \" \").trim();\r\n\r\nconst truncate = (value: string, maxChars: number): string => {\r\n if (value.length <= maxChars) {\r\n return value;\r\n }\r\n\r\n const suffix = \"\\n...[truncated]\";\r\n return `${value.slice(0, Math.max(0, maxChars - suffix.length))}${suffix}`;\r\n};\r\n\r\nconst truncateInline = (value: string, maxChars: number): string => {\r\n if (value.length <= maxChars) {\r\n return value;\r\n }\r\n return `${value.slice(0, Math.max(0, maxChars - 3))}...`;\r\n};\r\n\r\nconst canonicalUrl = (rawUrl: string): string => {\r\n try {\r\n return new URL(rawUrl, rawUrl).href;\r\n } catch {\r\n return rawUrl;\r\n }\r\n};\r\n\r\nconst isCacheEntry = (value: unknown): value is CachedPageContextEntry => {\r\n if (typeof value !== \"object\" || value === null) {\r\n return false;\r\n }\r\n\r\n const obj = value as Record<string, unknown>;\r\n return (\r\n typeof obj.url === \"string\" &&\r\n typeof obj.summary === \"string\" &&\r\n Array.isArray(obj.links) &&\r\n Array.isArray(obj.interactables) &&\r\n typeof obj.capturedAt === \"number\" &&\r\n typeof obj.version === \"number\"\r\n );\r\n};\r\n\r\nconst bumpCount = (map: Map<string, number>, key: string): void => {\r\n if (!key) {\r\n return;\r\n }\r\n map.set(key, (map.get(key) ?? 0) + 1);\r\n};\r\n\r\nconst formatTopCounts = (map: Map<string, number>, maxItems: number): string => {\r\n if (map.size === 0) {\r\n return \"none\";\r\n }\r\n\r\n return Array.from(map.entries())\r\n .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))\r\n .slice(0, maxItems)\r\n .map(([name, count]) => `${name}*${count}`)\r\n .join(\", \");\r\n};\r\n\r\nconst parseTabIndex = (value: string | null): number | null => {\r\n if (value === null) {\r\n return null;\r\n }\r\n\r\n const parsed = Number.parseInt(value, 10);\r\n return Number.isNaN(parsed) ? null : parsed;\r\n};\r\n\r\nconst compactToken = (value: string, maxChars: number = 18): string => {\r\n const compact = value.replace(/\\s+/g, \"-\").replace(/[^a-zA-Z0-9_-]/g, \"\");\r\n return compact ? truncateInline(compact, maxChars) : \"\";\r\n};\r\n\r\nconst getElementDepth = (element: Element): number => {\r\n let depth = 0;\r\n let cursor: Element | null = element;\r\n while (cursor?.parentElement) {\r\n depth += 1;\r\n cursor = cursor.parentElement;\r\n if (cursor === document.body) {\r\n break;\r\n }\r\n }\r\n return depth;\r\n};\r\n\r\nconst getPrimaryRole = (element: Element): string => {\r\n const rawRole = normalizeWhitespace(element.getAttribute(\"role\") || \"\")\r\n .toLowerCase()\r\n .split(\" \")[0];\r\n return rawRole || \"\";\r\n};\r\n\r\nconst hydrateCacheFromStorage = (): void => {\r\n if (cacheHydrated || typeof sessionStorage === \"undefined\") {\r\n return;\r\n }\r\n\r\n cacheHydrated = true;\r\n\r\n try {\r\n const raw = sessionStorage.getItem(PAGE_CONTEXT_CACHE_KEY);\r\n if (!raw) {\r\n return;\r\n }\r\n\r\n const parsed = JSON.parse(raw);\r\n if (!Array.isArray(parsed)) {\r\n return;\r\n }\r\n\r\n for (const value of parsed) {\r\n if (!isCacheEntry(value)) {\r\n continue;\r\n }\r\n if (value.version !== PAGE_CONTEXT_CACHE_VERSION) {\r\n continue;\r\n }\r\n pageContextCache.set(value.url, value);\r\n }\r\n if (pageContextCache.size > 0) {\r\n console.info(\r\n `[Autic] context cache restored entries=${pageContextCache.size}`,\r\n );\r\n }\r\n } catch (error) {\r\n console.warn(\"[Autic] context cache restore failed\", error);\r\n }\r\n};\r\n\r\nconst persistCacheToStorage = (): void => {\r\n if (typeof sessionStorage === \"undefined\") {\r\n return;\r\n }\r\n\r\n try {\r\n const serialized = JSON.stringify(\r\n Array.from(pageContextCache.values()).sort(\r\n (a, b) => a.capturedAt - b.capturedAt,\r\n ),\r\n );\r\n sessionStorage.setItem(PAGE_CONTEXT_CACHE_KEY, serialized);\r\n } catch (error) {\r\n console.warn(\"[Autic] context cache persist failed\", error);\r\n }\r\n};\r\n\r\nconst pruneOldestCacheEntries = (): void => {\r\n if (pageContextCache.size <= MAX_CACHED_PAGES) {\r\n return;\r\n }\r\n\r\n const sorted = Array.from(pageContextCache.values()).sort(\r\n (a, b) => a.capturedAt - b.capturedAt,\r\n );\r\n const overflow = sorted.length - MAX_CACHED_PAGES;\r\n for (let i = 0; i < overflow; i += 1) {\r\n pageContextCache.delete(sorted[i].url);\r\n }\r\n};\r\n\r\nconst buildSummaryWithHistory = (\r\n current: CachedPageContextEntry,\r\n): string => {\r\n const recentPages = Array.from(pageContextCache.values())\r\n .filter((entry) => entry.url !== current.url)\r\n .sort((a, b) => b.capturedAt - a.capturedAt)\r\n .slice(0, 3);\r\n\r\n if (recentPages.length === 0) {\r\n return current.summary;\r\n }\r\n\r\n const historySection = [\r\n \"Recent Page Memory:\",\r\n ...recentPages.map((entry) => {\r\n const compactSummary = normalizeWhitespace(entry.summary).slice(0, 180);\r\n return `- ${entry.url} :: ${compactSummary}`;\r\n }),\r\n ].join(\"\\n\");\r\n\r\n return truncate(\r\n `${current.summary}\\n\\n${historySection}`,\r\n MAX_CONTEXT_WITH_HISTORY_CHARS,\r\n );\r\n};\r\n\r\nconst isVisible = (element: Element): boolean => {\r\n if (element.getAttribute(\"aria-hidden\") === \"true\") {\r\n return false;\r\n }\r\n\r\n if (element instanceof HTMLElement && element.hidden) {\r\n return false;\r\n }\r\n\r\n const style = window.getComputedStyle(element);\r\n if (style.display === \"none\" || style.visibility === \"hidden\") {\r\n return false;\r\n }\r\n\r\n const rect = element.getBoundingClientRect();\r\n return rect.width > 0 && rect.height > 0;\r\n};\r\n\r\nconst toAbsoluteUrl = (href: string): string => {\r\n try {\r\n return new URL(href, window.location.href).href;\r\n } catch {\r\n return href;\r\n }\r\n};\r\n\r\nconst escapeCssValue = (value: string): string => {\r\n if (typeof CSS !== \"undefined\" && typeof CSS.escape === \"function\") {\r\n return CSS.escape(value);\r\n }\r\n\r\n return value.replace(/([ #;&,.+*~':\"!^$\\[\\]()=>|\\/@])/g, \"\\\\$1\");\r\n};\r\n\r\nconst buildSelector = (element: Element): string => {\r\n const tag = element.tagName.toLowerCase();\r\n\r\n if (element.id) {\r\n return `#${escapeCssValue(element.id)}`;\r\n }\r\n\r\n const name = element.getAttribute(\"name\");\r\n if (name) {\r\n return `${tag}[name=\"${escapeCssValue(name)}\"]`;\r\n }\r\n\r\n const ariaLabel = element.getAttribute(\"aria-label\");\r\n if (ariaLabel) {\r\n return `${tag}[aria-label=\"${escapeCssValue(ariaLabel)}\"]`;\r\n }\r\n\r\n const classes = Array.from(element.classList)\r\n .filter(Boolean)\r\n .slice(0, 2)\r\n .map((className) => `.${escapeCssValue(className)}`)\r\n .join(\"\");\r\n if (classes) {\r\n return `${tag}${classes}`;\r\n }\r\n\r\n const parent = element.parentElement;\r\n if (!parent) {\r\n return tag;\r\n }\r\n\r\n const siblingsOfTag = Array.from(parent.children).filter(\r\n (sibling) => sibling.tagName === element.tagName,\r\n );\r\n const index = siblingsOfTag.indexOf(element) + 1;\r\n return `${tag}:nth-of-type(${index})`;\r\n};\r\n\r\nconst getElementLabel = (element: Element): string => {\r\n const text = normalizeWhitespace(\r\n (element instanceof HTMLElement ? element.innerText : element.textContent) ||\r\n \"\",\r\n );\r\n const ariaLabel = normalizeWhitespace(element.getAttribute(\"aria-label\") || \"\");\r\n const title = normalizeWhitespace(element.getAttribute(\"title\") || \"\");\r\n const placeholder = normalizeWhitespace(\r\n element.getAttribute(\"placeholder\") || \"\",\r\n );\r\n const name = normalizeWhitespace(element.getAttribute(\"name\") || \"\");\r\n const value =\r\n element instanceof HTMLInputElement ||\r\n element instanceof HTMLTextAreaElement ||\r\n element instanceof HTMLButtonElement\r\n ? normalizeWhitespace(element.value || \"\")\r\n : \"\";\r\n\r\n const classHint = Array.from(element.classList)\r\n .map((item) => compactToken(item, 16))\r\n .find(Boolean);\r\n const fallback =\r\n (element.id && `#${element.id}`) ||\r\n (classHint && `.${classHint}`) ||\r\n buildSelector(element);\r\n\r\n const label =\r\n text || ariaLabel || title || placeholder || value || name || fallback;\r\n\r\n if (element.tagName.toLowerCase() === \"input\") {\r\n const inputType = element.getAttribute(\"type\") || \"text\";\r\n return `${inputType} ${label || \"input\"}`;\r\n }\r\n\r\n return label || \"untitled\";\r\n};\r\n\r\nconst getEventHints = (element: Element): string[] => {\r\n const record = element as unknown as Record<string, unknown>;\r\n const eventHints: string[] = [];\r\n\r\n for (const eventName of EVENT_HINT_NAMES) {\r\n const handlerKey = `on${eventName}`;\r\n const hasInlineHandler = Boolean(element.getAttribute(handlerKey));\r\n const hasPropertyHandler = typeof record[handlerKey] === \"function\";\r\n\r\n if (!hasInlineHandler && !hasPropertyHandler) {\r\n continue;\r\n }\r\n\r\n eventHints.push(eventName);\r\n if (eventHints.length >= MAX_EVENT_HINTS_PER_ELEMENT) {\r\n break;\r\n }\r\n }\r\n\r\n return eventHints;\r\n};\r\n\r\nconst getAriaInteractionHints = (element: Element): string[] =>\r\n ARIA_INTERACTION_ATTRS.filter((attrName) => element.hasAttribute(attrName)).map(\r\n (attrName) => attrName.replace(\"aria-\", \"\"),\r\n );\r\n\r\nconst getDataInteractionHints = (element: Element): string[] =>\r\n element\r\n .getAttributeNames()\r\n .filter(\r\n (attrName) =>\r\n attrName.startsWith(\"data-\") && DATA_INTERACTION_PATTERN.test(attrName),\r\n )\r\n .slice(0, 2)\r\n .map((attrName) => attrName.replace(\"data-\", \"\"));\r\n\r\nconst getStyleHints = (style: CSSStyleDeclaration): string[] => {\r\n const styleHints: string[] = [];\r\n\r\n if (style.cursor === \"pointer\") {\r\n styleHints.push(\"cursor:pointer\");\r\n }\r\n\r\n if (\r\n style.display === \"flex\" ||\r\n style.display === \"grid\" ||\r\n style.display === \"inline-flex\" ||\r\n style.display === \"inline-grid\"\r\n ) {\r\n styleHints.push(`display:${style.display}`);\r\n }\r\n\r\n if (style.position === \"fixed\" || style.position === \"sticky\") {\r\n styleHints.push(`position:${style.position}`);\r\n }\r\n\r\n return styleHints.slice(0, 2);\r\n};\r\n\r\nconst buildBlueprintToken = (element: Element): string => {\r\n const tag = element.tagName.toLowerCase();\r\n const idToken = element.id ? `#${compactToken(element.id)}` : \"\";\r\n const classToken = Array.from(element.classList)\r\n .map((item) => compactToken(item, 16))\r\n .find(Boolean);\r\n\r\n return `${tag}${idToken}${classToken ? `.${classToken}` : \"\"}`;\r\n};\r\n\r\nconst buildBranchDigest = (element: Element, depth: number): string => {\r\n const token = buildBlueprintToken(element);\r\n if (depth <= 0) {\r\n return token;\r\n }\r\n\r\n const children = Array.from(element.children)\r\n .filter((child) => !NON_CONTENT_TAGS.has(child.tagName.toLowerCase()))\r\n .filter((child) => isVisible(child));\r\n if (children.length === 0) {\r\n return token;\r\n }\r\n\r\n const sampled = children\r\n .slice(0, 3)\r\n .map((child) => buildBranchDigest(child, depth - 1));\r\n const overflow =\r\n children.length > sampled.length ? `+${children.length - sampled.length}` : \"\";\r\n\r\n return `${token}>${sampled.join(\"+\")}${overflow}`;\r\n};\r\n\r\nconst collectDomBranchDigest = (): string[] => {\r\n const root = document.body ?? document.documentElement;\r\n const topLevelNodes = Array.from(root.children)\r\n .filter((child) => !NON_CONTENT_TAGS.has(child.tagName.toLowerCase()))\r\n .filter((child) => isVisible(child))\r\n .slice(0, MAX_BRANCH_SAMPLES);\r\n\r\n return topLevelNodes.map((child) =>\r\n truncateInline(buildBranchDigest(child, MAX_BRANCH_DEPTH), 140),\r\n );\r\n};\r\n\r\nconst formatSection = (title: string, lines: string[]): string => {\r\n if (lines.length === 0) {\r\n return `${title}:\\n- none`;\r\n }\r\n\r\n return `${title}:\\n${lines.join(\"\\n\")}`;\r\n};\r\n\r\nconst buildOuterHtmlDigest = (): string => {\r\n const raw = document.body?.outerHTML || document.documentElement.outerHTML;\r\n\r\n const withoutScripts = raw\r\n .replace(/<script[\\s\\S]*?<\\/script>/gi, \"\")\r\n .replace(/<style[\\s\\S]*?<\\/style>/gi, \"\")\r\n .replace(/<noscript[\\s\\S]*?<\\/noscript>/gi, \"\")\r\n .replace(/<!--[\\s\\S]*?-->/g, \"\")\r\n .replace(/\\s+/g, \" \")\r\n .trim();\r\n\r\n const structural = withoutScripts\r\n .replace(/>[^<]*</g, \"><\")\r\n .replace(/\\s+/g, \" \")\r\n .trim();\r\n\r\n return truncate(structural, MAX_OUTER_HTML_DIGEST);\r\n};\r\n\r\nconst collectTextSnippets = (): string[] => {\r\n const root =\r\n document.querySelector(\"main, article, [role='main']\") ?? document.body;\r\n const snippets: string[] = [];\r\n const seen = new Set<string>();\r\n\r\n const candidates = Array.from(root.querySelectorAll(\"p, li, h1, h2, h3\"));\r\n for (const node of candidates) {\r\n if (!isVisible(node)) {\r\n continue;\r\n }\r\n\r\n const text = normalizeWhitespace(node.textContent || \"\");\r\n if (!text || text.length < 20) {\r\n continue;\r\n }\r\n\r\n const compact = truncateInline(text, 180);\r\n if (seen.has(compact)) {\r\n continue;\r\n }\r\n\r\n seen.add(compact);\r\n snippets.push(`- ${compact}`);\r\n if (snippets.length >= MAX_TEXT_SNIPPETS) {\r\n break;\r\n }\r\n }\r\n\r\n return snippets;\r\n};\r\n\r\nconst collectLandmarkSnapshot = (): string[] => {\r\n const probes: Array<{ label: string; selector: string }> = [\r\n { label: \"main\", selector: \"main, [role='main']\" },\r\n { label: \"nav\", selector: \"nav, [role='navigation']\" },\r\n { label: \"section\", selector: \"section\" },\r\n { label: \"article\", selector: \"article\" },\r\n { label: \"form\", selector: \"form\" },\r\n { label: \"a\", selector: \"a\" },\r\n { label: \"button\", selector: \"button\" },\r\n { label: \"input\", selector: \"input\" },\r\n { label: \"role=button/link\", selector: \"[role='button'], [role='link']\" },\r\n { label: \"onclick attrs\", selector: \"[onclick]\" },\r\n {\r\n label: \"other event attrs\",\r\n selector:\r\n \"[onpointerdown], [onpointerup], [onkeydown], [onkeyup], [onchange], [onsubmit]\",\r\n },\r\n { label: \"tabindex\", selector: \"[tabindex]\" },\r\n { label: \"contenteditable\", selector: \"[contenteditable='true']\" },\r\n { label: \"inline cursor styles\", selector: \"[style*='cursor']\" },\r\n ];\r\n\r\n return probes.map(\r\n ({ label, selector }) => `- ${label}: ${document.querySelectorAll(selector).length}`,\r\n );\r\n};\r\n\r\nconst collectPageSignalSnapshot = (): PageSignalSnapshot => {\r\n const allElements = Array.from(document.querySelectorAll(\"*\"));\r\n const sampledElements = allElements.slice(0, MAX_PAGE_SCAN_ELEMENTS);\r\n\r\n const links: string[] = [];\r\n const linkSet = new Set<string>();\r\n const interactableCandidates = new Map<string, InteractableCandidate>();\r\n const tagCounts = new Map<string, number>();\r\n const roleCounts = new Map<string, number>();\r\n const eventCounts = new Map<string, number>();\r\n const displayCounts = new Map<string, number>();\r\n const positionCounts = new Map<string, number>();\r\n\r\n let visibleElements = 0;\r\n let maxDepth = 0;\r\n let semanticInteractables = 0;\r\n let nonSemanticInteractables = 0;\r\n let eventHintElements = 0;\r\n let tabStopElements = 0;\r\n let pointerCursorElements = 0;\r\n let dataHintElements = 0;\r\n let ariaHintElements = 0;\r\n let contentEditableElements = 0;\r\n\r\n for (let order = 0; order < sampledElements.length; order += 1) {\r\n const element = sampledElements[order];\r\n const tag = element.tagName.toLowerCase();\r\n\r\n if (NON_CONTENT_TAGS.has(tag)) {\r\n continue;\r\n }\r\n\r\n if (!isVisible(element)) {\r\n continue;\r\n }\r\n\r\n visibleElements += 1;\r\n bumpCount(tagCounts, tag);\r\n\r\n const role = getPrimaryRole(element);\r\n if (role) {\r\n bumpCount(roleCounts, role);\r\n }\r\n\r\n const depth = getElementDepth(element);\r\n if (depth > maxDepth) {\r\n maxDepth = depth;\r\n }\r\n\r\n const style = window.getComputedStyle(element);\r\n if (TRACKED_DISPLAY_VALUES.has(style.display)) {\r\n bumpCount(displayCounts, style.display);\r\n }\r\n if (TRACKED_POSITION_VALUES.has(style.position)) {\r\n bumpCount(positionCounts, style.position);\r\n }\r\n\r\n const eventHints = getEventHints(element);\r\n if (eventHints.length > 0) {\r\n eventHintElements += 1;\r\n for (const eventName of eventHints) {\r\n bumpCount(eventCounts, eventName);\r\n }\r\n }\r\n\r\n const tabIndex = parseTabIndex(element.getAttribute(\"tabindex\"));\r\n const hasTabStop = tabIndex !== null && tabIndex >= 0;\r\n if (hasTabStop) {\r\n tabStopElements += 1;\r\n }\r\n\r\n const hasPointerCursor = style.cursor === \"pointer\";\r\n if (hasPointerCursor) {\r\n pointerCursorElements += 1;\r\n }\r\n\r\n const dataHints = getDataInteractionHints(element);\r\n if (dataHints.length > 0) {\r\n dataHintElements += 1;\r\n }\r\n\r\n const ariaHints = getAriaInteractionHints(element);\r\n if (ariaHints.length > 0) {\r\n ariaHintElements += 1;\r\n }\r\n\r\n const isContentEditable = element.getAttribute(\"contenteditable\") === \"true\";\r\n if (isContentEditable) {\r\n contentEditableElements += 1;\r\n }\r\n\r\n const href = element.getAttribute(\"href\");\r\n const isNativeInteractive = NATIVE_INTERACTIVE_TAGS.has(tag) && (tag !== \"a\" || Boolean(href));\r\n const isRoleInteractive = INTERACTIVE_ROLES.has(role);\r\n const isDisabled =\r\n element.hasAttribute(\"disabled\") ||\r\n element.getAttribute(\"aria-disabled\") === \"true\";\r\n\r\n if (\r\n tag === \"a\" &&\r\n href &&\r\n !href.startsWith(\"#\") &&\r\n !href.startsWith(\"javascript:\")\r\n ) {\r\n const absoluteHref = toAbsoluteUrl(href);\r\n const label = getElementLabel(element) || absoluteHref;\r\n const line = `- ${truncateInline(label, 90)} -> ${truncateInline(absoluteHref, 140)}`;\r\n\r\n if (!linkSet.has(line)) {\r\n linkSet.add(line);\r\n links.push(line);\r\n if (links.length >= MAX_LINKS) {\r\n // Keep scanning other elements for page blueprint and interactables.\r\n }\r\n }\r\n }\r\n\r\n const hasInteractionSignals =\r\n isNativeInteractive ||\r\n isRoleInteractive ||\r\n isContentEditable ||\r\n eventHints.length > 0 ||\r\n hasTabStop ||\r\n hasPointerCursor ||\r\n dataHints.length > 0 ||\r\n ariaHints.length > 0;\r\n\r\n if (!hasInteractionSignals || isDisabled) {\r\n continue;\r\n }\r\n\r\n if (isNativeInteractive) {\r\n semanticInteractables += 1;\r\n } else {\r\n nonSemanticInteractables += 1;\r\n }\r\n\r\n const selector = buildSelector(element);\r\n const label = truncateInline(getElementLabel(element), 90);\r\n const styleHints = getStyleHints(style);\r\n const signalTokens: string[] = [];\r\n\r\n if (eventHints.length > 0) {\r\n signalTokens.push(`evt:${eventHints.join(\"|\")}`);\r\n }\r\n if (isRoleInteractive) {\r\n signalTokens.push(`role:${role}`);\r\n }\r\n if (hasTabStop) {\r\n signalTokens.push(`tab:${tabIndex}`);\r\n }\r\n if (dataHints.length > 0) {\r\n signalTokens.push(`data:${dataHints.join(\"|\")}`);\r\n }\r\n if (ariaHints.length > 0) {\r\n signalTokens.push(`aria:${ariaHints.join(\"|\")}`);\r\n }\r\n if (styleHints.length > 0) {\r\n signalTokens.push(`css:${styleHints.join(\"|\")}`);\r\n } else if (hasPointerCursor) {\r\n signalTokens.push(\"css:cursor:pointer\");\r\n }\r\n\r\n const signalBlock =\r\n signalTokens.length > 0 ? ` [${signalTokens.join(\"; \")}]` : \"\";\r\n const line = truncateInline(\r\n `- ${tag} ${selector}${signalBlock} (${label})`,\r\n 240,\r\n );\r\n\r\n const score =\r\n eventHints.length * 5 +\r\n (isNativeInteractive ? 5 : 0) +\r\n (isRoleInteractive ? 4 : 0) +\r\n (hasTabStop ? 2 : 0) +\r\n (hasPointerCursor ? 2 : 0) +\r\n (dataHints.length > 0 ? 2 : 0) +\r\n (ariaHints.length > 0 ? 1 : 0) +\r\n (isContentEditable ? 2 : 0);\r\n\r\n const existing = interactableCandidates.get(line);\r\n if (!existing || score > existing.score) {\r\n interactableCandidates.set(line, { line, score, order });\r\n }\r\n }\r\n\r\n const interactables = Array.from(interactableCandidates.values())\r\n .sort((a, b) => b.score - a.score || a.order - b.order)\r\n .slice(0, MAX_INTERACTABLES)\r\n .map((candidate) => candidate.line);\r\n\r\n const interactiveRoleCounts = new Map(\r\n Array.from(roleCounts.entries()).filter(([role]) =>\r\n INTERACTIVE_ROLES.has(role),\r\n ),\r\n );\r\n\r\n const interactionSignals = [\r\n `- coverage: semantic=${semanticInteractables}, non-semantic=${nonSemanticInteractables}, contenteditable=${contentEditableElements}`,\r\n `- listener hints: ${formatTopCounts(eventCounts, 8)}`,\r\n `- interaction cues: tabindex>=0=${tabStopElements}, pointer-cursor=${pointerCursorElements}, data-hints=${dataHintElements}, aria-hints=${ariaHintElements}`,\r\n `- role hints: ${formatTopCounts(interactiveRoleCounts, 8)}`,\r\n \"- listener scope: inline/on* handlers are detected directly; addEventListener handlers are inferred via cues.\",\r\n ].map((line) => truncateInline(line, 250));\r\n\r\n const branchDigest = collectDomBranchDigest();\r\n const pageBlueprint = [\r\n `- nodes: total=${allElements.length}, scanned=${sampledElements.length}, visible=${visibleElements}, max-depth=${maxDepth}${allElements.length > sampledElements.length ? \", sampling=on\" : \"\"}`,\r\n `- tag density: ${formatTopCounts(tagCounts, 10)}`,\r\n `- role density: ${formatTopCounts(roleCounts, 8)}`,\r\n `- layout density: display(${formatTopCounts(displayCounts, 6)}), position(${formatTopCounts(positionCounts, 4)})`,\r\n `- branch digest: ${branchDigest.length > 0 ? branchDigest.join(\" || \") : \"none\"}`,\r\n ].map((line) => truncateInline(line, 260));\r\n\r\n return {\r\n links: links.slice(0, MAX_LINKS),\r\n interactables,\r\n interactionSignals,\r\n pageBlueprint,\r\n };\r\n};\r\n\r\nexport const buildPageContextSummary = (\r\n input: PageContextSummaryInput,\r\n maxChars: number = MAX_CONTEXT_SUMMARY_CHARS,\r\n): string => {\r\n const sections = [\r\n formatSection(\"Meta\", [\r\n `- URL: ${input.url || \"unknown\"}`,\r\n `- Title: ${input.title || \"unknown\"}`,\r\n `- Lang: ${input.lang || \"unknown\"}`,\r\n ]),\r\n formatSection(\"Headings\", input.headings),\r\n formatSection(\"Landmark Snapshot\", input.landmarks),\r\n formatSection(\"Interaction Signals\", input.interactionSignals),\r\n formatSection(\"Compressed Page Blueprint\", input.pageBlueprint),\r\n formatSection(\"Top Links\", input.links),\r\n formatSection(\"Top Interactables\", input.interactables),\r\n formatSection(\"Main Content Snippets\", input.textSnippets),\r\n formatSection(\"OuterHTML Skeleton\", [\r\n `- ${input.outerHtmlDigest || \"unavailable\"}`,\r\n ]),\r\n ];\r\n\r\n return truncate(sections.join(\"\\n\\n\"), maxChars);\r\n};\r\n\r\nexport const clearPageContextCache = (): void => {\r\n pageContextCache.clear();\r\n cacheHydrated = false;\r\n if (typeof sessionStorage !== \"undefined\") {\r\n sessionStorage.removeItem(PAGE_CONTEXT_CACHE_KEY);\r\n }\r\n};\r\n\r\nexport const getCachedPageContexts = (): CachedPageContextEntry[] => {\r\n hydrateCacheFromStorage();\r\n return Array.from(pageContextCache.values()).sort(\r\n (a, b) => b.capturedAt - a.capturedAt,\r\n );\r\n};\r\n\r\nexport const getPageContext = (): PageContext => {\r\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\r\n return {\r\n links: [],\r\n interactables: [],\r\n summary: \"\",\r\n };\r\n }\r\n\r\n hydrateCacheFromStorage();\r\n const url = canonicalUrl(window.location.href);\r\n const cached = pageContextCache.get(url);\r\n if (cached) {\r\n console.info(`[Autic] context cache hit url=${url}`);\r\n return {\r\n links: cached.links,\r\n interactables: cached.interactables,\r\n summary: buildSummaryWithHistory(cached),\r\n };\r\n }\r\n\r\n console.info(`[Autic] context cache miss url=${url}`);\r\n\r\n const snapshot = collectPageSignalSnapshot();\r\n const headings = Array.from(document.querySelectorAll(\"h1, h2, h3\"))\r\n .filter((element) => isVisible(element))\r\n .map((element) =>\r\n `- ${truncateInline(normalizeWhitespace(element.textContent || \"\"), 120)}`,\r\n )\r\n .filter((line) => line !== \"- \")\r\n .slice(0, MAX_HEADINGS);\r\n\r\n const summary = buildPageContextSummary({\r\n url,\r\n title: document.title,\r\n lang: document.documentElement.lang,\r\n headings,\r\n landmarks: collectLandmarkSnapshot(),\r\n links: snapshot.links,\r\n interactables: snapshot.interactables,\r\n interactionSignals: snapshot.interactionSignals,\r\n pageBlueprint: snapshot.pageBlueprint,\r\n textSnippets: collectTextSnippets(),\r\n outerHtmlDigest: buildOuterHtmlDigest(),\r\n });\r\n\r\n const entry: CachedPageContextEntry = {\r\n url,\r\n summary,\r\n links: snapshot.links,\r\n interactables: snapshot.interactables,\r\n capturedAt: Date.now(),\r\n version: PAGE_CONTEXT_CACHE_VERSION,\r\n };\r\n\r\n pageContextCache.set(url, entry);\r\n pruneOldestCacheEntries();\r\n persistCacheToStorage();\r\n console.info(\r\n `[Autic] context cache stored url=${url} size=${pageContextCache.size}`,\r\n );\r\n\r\n return {\r\n links: entry.links,\r\n interactables: entry.interactables,\r\n summary: buildSummaryWithHistory(entry),\r\n };\r\n};\r\n","import { getPageContext } from \"./context\";\r\nimport { COLORS } from \"../styles/constants\";\r\n\r\nconst AGENT_CURSOR_ID = \"auticbot-agent-cursor\";\r\nconst CURSOR_STORAGE_KEY = \"auticbot_agent_cursor_state\";\r\nexport const CURSOR_MOVE_DURATION_MS = 900;\r\nexport const SCROLL_DURATION_MS = 900;\r\nconst CURSOR_EASING = \"cubic-bezier(0.4, 0, 0.2, 1)\";\r\nconst CURSOR_HOVER_RADIUS_PX = 14;\r\n\r\ninterface PersistedCursorState {\r\n url: string;\r\n x: number;\r\n y: number;\r\n visible: boolean;\r\n}\r\n\r\ntype InteractAction = \"move\" | \"click\" | \"type\" | \"submit\";\r\n\r\ninterface InteractToolCall {\r\n tool: \"interact\";\r\n action: InteractAction;\r\n selector?: string;\r\n text?: string;\r\n x?: number;\r\n y?: number;\r\n}\r\n\r\ninterface NavigateToolCall {\r\n tool: \"navigate\";\r\n url: string;\r\n}\r\n\r\ninterface GetPageContextToolCall {\r\n tool: \"getPageContext\";\r\n}\r\n\r\ninterface ScrollToolCall {\r\n tool: \"scroll\";\r\n selector: string;\r\n}\r\n\r\nexport type AgentToolCall =\r\n | InteractToolCall\r\n | NavigateToolCall\r\n | GetPageContextToolCall\r\n | ScrollToolCall;\r\n\r\nexport interface ParsedAgentResponse {\r\n reply: string;\r\n toolCalls: AgentToolCall[];\r\n}\r\n\r\ninterface JsonObject {\r\n [key: string]: unknown;\r\n}\r\n\r\ninterface ResolvedTarget {\r\n element?: HTMLElement;\r\n x: number;\r\n y: number;\r\n}\r\n\r\nconst isObject = (value: unknown): value is JsonObject =>\r\n typeof value === \"object\" && value !== null && !Array.isArray(value);\r\n\r\nconst asString = (value: unknown): string | undefined =>\r\n typeof value === \"string\" && value.trim() ? value.trim() : undefined;\r\n\r\nconst asNumber = (value: unknown): number | undefined =>\r\n typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\r\n\r\nconst extractJsonCandidate = (raw: string): string => {\r\n const trimmed = raw.trim();\r\n const fencedMatch = trimmed.match(/```(?:json)?\\s*([\\s\\S]*?)\\s*```/i);\r\n if (fencedMatch?.[1]) {\r\n return fencedMatch[1].trim();\r\n }\r\n return trimmed;\r\n};\r\n\r\nconst extractFirstJsonObject = (input: string): string | null => {\r\n const start = input.indexOf(\"{\");\r\n if (start < 0) {\r\n return null;\r\n }\r\n\r\n let depth = 0;\r\n let inString = false;\r\n let isEscaped = false;\r\n\r\n for (let i = start; i < input.length; i += 1) {\r\n const char = input[i];\r\n\r\n if (inString) {\r\n if (isEscaped) {\r\n isEscaped = false;\r\n } else if (char === \"\\\\\") {\r\n isEscaped = true;\r\n } else if (char === '\"') {\r\n inString = false;\r\n }\r\n continue;\r\n }\r\n\r\n if (char === '\"') {\r\n inString = true;\r\n continue;\r\n }\r\n\r\n if (char === \"{\") {\r\n depth += 1;\r\n continue;\r\n }\r\n\r\n if (char === \"}\") {\r\n depth -= 1;\r\n if (depth === 0) {\r\n return input.slice(start, i + 1);\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst parseJsonFromRaw = (raw: string): unknown => {\r\n const candidate = extractJsonCandidate(raw);\r\n try {\r\n return JSON.parse(candidate);\r\n } catch {\r\n const objectCandidate = extractFirstJsonObject(candidate);\r\n if (!objectCandidate) {\r\n return null;\r\n }\r\n try {\r\n return JSON.parse(objectCandidate);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n};\r\n\r\nconst sanitizeToolCalls = (value: unknown): AgentToolCall[] => {\r\n if (!Array.isArray(value)) {\r\n return [];\r\n }\r\n\r\n const toolCalls: AgentToolCall[] = [];\r\n\r\n for (const item of value) {\r\n if (!isObject(item)) {\r\n continue;\r\n }\r\n\r\n if (item.tool === \"interact\") {\r\n const action = asString(item.action) as InteractAction | undefined;\r\n if (!action || ![\"move\", \"click\", \"type\", \"submit\"].includes(action)) {\r\n continue;\r\n }\r\n\r\n toolCalls.push({\r\n tool: \"interact\",\r\n action,\r\n selector: asString(item.selector),\r\n text: typeof item.text === \"string\" ? item.text : undefined,\r\n x: asNumber(item.x),\r\n y: asNumber(item.y),\r\n });\r\n continue;\r\n }\r\n\r\n if (item.tool === \"navigate\") {\r\n const url = asString(item.url);\r\n if (!url) {\r\n continue;\r\n }\r\n\r\n toolCalls.push({\r\n tool: \"navigate\",\r\n url,\r\n });\r\n continue;\r\n }\r\n\r\n if (item.tool === \"getPageContext\") {\r\n toolCalls.push({\r\n tool: \"getPageContext\",\r\n });\r\n continue;\r\n }\r\n\r\n if (item.tool === \"scroll\") {\r\n const selector = asString(item.selector);\r\n if (!selector) {\r\n continue;\r\n }\r\n\r\n toolCalls.push({\r\n tool: \"scroll\",\r\n selector,\r\n });\r\n }\r\n }\r\n\r\n return toolCalls;\r\n};\r\n\r\nexport const parseAgentResponse = (raw: string): ParsedAgentResponse => {\r\n const parsed = parseJsonFromRaw(raw);\r\n if (!isObject(parsed)) {\r\n return {\r\n reply: raw.trim(),\r\n toolCalls: [],\r\n };\r\n }\r\n\r\n const reply = asString(parsed.reply) || \"\";\r\n const toolCalls = sanitizeToolCalls(parsed.tool_calls ?? parsed.toolCalls);\r\n\r\n return {\r\n reply,\r\n toolCalls,\r\n };\r\n};\r\n\r\nexport const clamp = (value: number, min: number, max: number): number =>\r\n Math.min(max, Math.max(min, value));\r\n\r\nexport const easeInOutCubic = (progress: number): number => {\r\n if (progress < 0.5) {\r\n return 4 * progress * progress * progress;\r\n }\r\n return 1 - Math.pow(-2 * progress + 2, 3) / 2;\r\n};\r\n\r\nexport const easeInOutSine = (progress: number): number =>\r\n -(Math.cos(Math.PI * progress) - 1) / 2;\r\n\r\nexport const isRectOutsideViewport = (\r\n rect: Pick<DOMRect, \"top\" | \"bottom\">,\r\n viewportHeight: number,\r\n): boolean => rect.top < 0 || rect.bottom > viewportHeight;\r\n\r\nexport const computeCenteredScrollTop = (\r\n currentScrollY: number,\r\n rectTop: number,\r\n rectHeight: number,\r\n viewportHeight: number,\r\n maxScrollTop: number,\r\n): number => {\r\n const desired =\r\n currentScrollY + rectTop - (viewportHeight / 2 - rectHeight / 2);\r\n return clamp(desired, 0, Math.max(0, maxScrollTop));\r\n};\r\n\r\nexport const animateWindowScrollTo = async (\r\n targetY: number,\r\n durationMs: number = SCROLL_DURATION_MS,\r\n): Promise<void> => {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n\r\n const startY = window.scrollY;\r\n const delta = targetY - startY;\r\n if (Math.abs(delta) < 1) {\r\n return;\r\n }\r\n\r\n await new Promise<void>((resolve) => {\r\n const raf =\r\n window.requestAnimationFrame ||\r\n ((callback: FrameRequestCallback) => window.setTimeout(() => callback(performance.now()), 16));\r\n\r\n const startTime = performance.now();\r\n\r\n const step = (now: number) => {\r\n const elapsed = now - startTime;\r\n const progress = clamp(elapsed / durationMs, 0, 1);\r\n const eased = easeInOutSine(progress);\r\n window.scrollTo(0, startY + delta * eased);\r\n\r\n if (progress < 1) {\r\n raf(step);\r\n } else {\r\n resolve();\r\n }\r\n };\r\n\r\n raf(step);\r\n });\r\n};\r\n\r\nconst getPersistedCursorState = (): PersistedCursorState | null => {\r\n if (typeof localStorage === \"undefined\") {\r\n return null;\r\n }\r\n\r\n try {\r\n const raw = localStorage.getItem(CURSOR_STORAGE_KEY);\r\n if (!raw) {\r\n return null;\r\n }\r\n\r\n const parsed = JSON.parse(raw) as Partial<PersistedCursorState>;\r\n if (\r\n typeof parsed.url !== \"string\" ||\r\n typeof parsed.x !== \"number\" ||\r\n !Number.isFinite(parsed.x) ||\r\n typeof parsed.y !== \"number\" ||\r\n !Number.isFinite(parsed.y)\r\n ) {\r\n return null;\r\n }\r\n\r\n return {\r\n url: parsed.url,\r\n x: parsed.x,\r\n y: parsed.y,\r\n visible: parsed.visible !== false,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n};\r\n\r\nconst persistCursorState = (x: number, y: number, visible: boolean) => {\r\n if (typeof localStorage === \"undefined\") {\r\n return;\r\n }\r\n\r\n try {\r\n const payload: PersistedCursorState = {\r\n url: window.location.href,\r\n x,\r\n y,\r\n visible,\r\n };\r\n localStorage.setItem(CURSOR_STORAGE_KEY, JSON.stringify(payload));\r\n } catch {\r\n // No-op: localStorage may be unavailable or blocked.\r\n }\r\n};\r\n\r\nconst setCursorPosition = (cursor: HTMLElement, x: number, y: number) => {\r\n cursor.style.left = `${x}px`;\r\n cursor.style.top = `${y}px`;\r\n};\r\n\r\nconst getCursorPosition = (cursor: HTMLElement): { x: number; y: number } => ({\r\n x: Number.parseFloat(cursor.style.left) || 0,\r\n y: Number.parseFloat(cursor.style.top) || 0,\r\n});\r\n\r\nconst setCursorVisibility = (cursor: HTMLElement, visible: boolean) => {\r\n cursor.style.opacity = visible ? \"1\" : \"0\";\r\n};\r\n\r\nlet cursorHoverTrackingInitialized = false;\r\nconst initializeCursorHoverTracking = () => {\r\n if (cursorHoverTrackingInitialized) {\r\n return;\r\n }\r\n cursorHoverTrackingInitialized = true;\r\n\r\n document.addEventListener(\"mousemove\", (event) => {\r\n const cursor = document.getElementById(AGENT_CURSOR_ID);\r\n if (!(cursor instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n if (cursor.style.opacity !== \"1\") {\r\n return;\r\n }\r\n\r\n const { x, y } = getCursorPosition(cursor);\r\n const pointerX = event.pageX;\r\n const pointerY = event.pageY;\r\n const distance = Math.hypot(pointerX - x, pointerY - y);\r\n\r\n if (distance <= CURSOR_HOVER_RADIUS_PX) {\r\n setCursorVisibility(cursor, false);\r\n persistCursorState(x, y, false);\r\n }\r\n });\r\n};\r\n\r\nconst applyStoredCursorStateForCurrentUrl = (cursor: HTMLElement) => {\r\n const stored = getPersistedCursorState();\r\n if (!stored || stored.url !== window.location.href) {\r\n return;\r\n }\r\n\r\n setCursorPosition(cursor, stored.x, stored.y);\r\n setCursorVisibility(cursor, stored.visible);\r\n};\r\n\r\nconst ensureCursor = (): HTMLElement => {\r\n const existing = document.getElementById(AGENT_CURSOR_ID);\r\n if (existing) {\r\n initializeCursorHoverTracking();\r\n return existing as HTMLElement;\r\n }\r\n\r\n const cursor = document.createElement(\"div\");\r\n cursor.id = AGENT_CURSOR_ID;\r\n cursor.style.position = \"absolute\";\r\n cursor.style.left = \"0px\";\r\n cursor.style.top = \"0px\";\r\n cursor.style.opacity = \"0\";\r\n const width = 25;\r\n cursor.style.width = `${width}px`;\r\n cursor.style.height = `${width}px`;\r\n cursor.style.borderRadius = \"50%\";\r\n const baseColor = COLORS.primary;\r\n cursor.style.background = baseColor;\r\n const border = 25 * 16 / 100;\r\n cursor.style.border = `${border}px solid #ffffff`;\r\n cursor.style.boxShadow = \"0px 0px 10px rgba(0, 11, 26, 0.5)\";\r\n cursor.style.boxSizing = \"border-box\";\r\n cursor.style.zIndex = \"2147483647\";\r\n cursor.style.pointerEvents = \"none\";\r\n cursor.style.transform = \"translate(-50%, -50%)\";\r\n cursor.style.transition = `left ${CURSOR_MOVE_DURATION_MS}ms ${CURSOR_EASING}, top ${CURSOR_MOVE_DURATION_MS}ms ${CURSOR_EASING}, opacity 150ms ease-out`;\r\n document.body.appendChild(cursor);\r\n initializeCursorHoverTracking();\r\n applyStoredCursorStateForCurrentUrl(cursor);\r\n console.info(`[Autic] cursor created color=${baseColor} duration=${CURSOR_MOVE_DURATION_MS}ms`);\r\n return cursor;\r\n};\r\n\r\nconst moveCursor = async (x: number, y: number) => {\r\n const cursor = ensureCursor();\r\n setCursorPosition(cursor, x, y);\r\n setCursorVisibility(cursor, true);\r\n persistCursorState(x, y, true);\r\n await new Promise((resolve) => setTimeout(resolve, CURSOR_MOVE_DURATION_MS));\r\n};\r\n\r\nconst getElementCenter = (element: HTMLElement): { x: number; y: number } => {\r\n const rect = element.getBoundingClientRect();\r\n return {\r\n x: rect.left + window.scrollX + rect.width / 2,\r\n y: rect.top + window.scrollY + rect.height / 2,\r\n };\r\n};\r\n\r\nconst CONTAINS_SELECTOR_PATTERN = /^(.*?):contains\\((['\"])(.*?)\\2\\)\\s*$/;\r\n\r\nconst findElementBySelector = (selector: string): Element | null => {\r\n try {\r\n return document.querySelector(selector);\r\n } catch (error) {\r\n const containsMatch = selector.match(CONTAINS_SELECTOR_PATTERN);\r\n if (!containsMatch) {\r\n console.warn(`AuticBot selector invalid: ${selector}`, error);\r\n return null;\r\n }\r\n\r\n const baseSelector = containsMatch[1]?.trim() || \"*\";\r\n const expectedText = containsMatch[3]?.trim() || \"\";\r\n if (!expectedText) {\r\n console.warn(`AuticBot selector contains empty text: ${selector}`);\r\n return null;\r\n }\r\n\r\n try {\r\n const candidates = document.querySelectorAll(baseSelector);\r\n for (const candidate of candidates) {\r\n if (candidate.textContent?.includes(expectedText)) {\r\n return candidate;\r\n }\r\n }\r\n return null;\r\n } catch (fallbackError) {\r\n console.warn(`AuticBot selector fallback invalid: ${selector}`, fallbackError);\r\n return null;\r\n }\r\n }\r\n};\r\n\r\nconst resolveTarget = (call: InteractToolCall): ResolvedTarget | null => {\r\n if (call.selector) {\r\n const selected = findElementBySelector(call.selector);\r\n\r\n if (selected instanceof HTMLElement) {\r\n const center = getElementCenter(selected);\r\n return {\r\n element: selected,\r\n x: center.x,\r\n y: center.y,\r\n };\r\n }\r\n console.warn(`AuticBot interact: selector not found: ${call.selector}`);\r\n }\r\n\r\n if (typeof call.x === \"number\" && typeof call.y === \"number\") {\r\n return {\r\n x: call.x,\r\n y: call.y,\r\n };\r\n }\r\n\r\n console.warn(\"AuticBot interact: missing target selector or coordinates.\", call);\r\n return null;\r\n};\r\n\r\nconst dispatchMouseEvent = (\r\n element: HTMLElement,\r\n type: string,\r\n x: number,\r\n y: number,\r\n) => {\r\n element.dispatchEvent(\r\n new MouseEvent(type, {\r\n bubbles: true,\r\n cancelable: true,\r\n view: window,\r\n clientX: x - window.scrollX,\r\n clientY: y - window.scrollY,\r\n }),\r\n );\r\n};\r\n\r\nconst typeIntoElement = (element: HTMLElement, text: string) => {\r\n const tagName = element.tagName.toUpperCase();\r\n if (tagName === \"INPUT\" || tagName === \"TEXTAREA\") {\r\n (element as HTMLInputElement).focus();\r\n (element as HTMLInputElement).value = text;\r\n element.dispatchEvent(new Event(\"input\", { bubbles: true }));\r\n element.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n return;\r\n }\r\n\r\n if (element.isContentEditable) {\r\n element.focus();\r\n element.textContent = text;\r\n element.dispatchEvent(new Event(\"input\", { bubbles: true }));\r\n return;\r\n }\r\n\r\n console.warn(\r\n \"AuticBot interact: type action requires input, textarea, or contenteditable target.\",\r\n );\r\n};\r\n\r\nconst submitElement = (element: HTMLElement) => {\r\n if (element.tagName === \"FORM\") {\r\n (element as HTMLFormElement).requestSubmit();\r\n return;\r\n }\r\n\r\n if (element.tagName === \"BUTTON\" && (element as HTMLButtonElement).form) {\r\n (element as HTMLButtonElement).form?.requestSubmit();\r\n return;\r\n }\r\n\r\n const parentForm = element.closest(\"form\");\r\n if (parentForm) {\r\n parentForm.requestSubmit();\r\n return;\r\n }\r\n\r\n console.warn(\"AuticBot interact: submit action requires a form target.\");\r\n};\r\n\r\nconst slowScrollElementIntoView = async (element: HTMLElement): Promise<void> => {\r\n await slowScrollElementIntoViewWithMode(element, false);\r\n};\r\n\r\nconst slowScrollElementIntoViewWithMode = async (\r\n element: HTMLElement,\r\n forceCenter: boolean,\r\n): Promise<void> => {\r\n const rect = element.getBoundingClientRect();\r\n const viewportHeight = window.innerHeight;\r\n\r\n if (!forceCenter && !isRectOutsideViewport(rect, viewportHeight)) {\r\n return;\r\n }\r\n\r\n const maxScrollTop = Math.max(\r\n 0,\r\n Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) - viewportHeight,\r\n );\r\n const targetY = computeCenteredScrollTop(\r\n window.scrollY,\r\n rect.top,\r\n rect.height,\r\n viewportHeight,\r\n maxScrollTop,\r\n );\r\n\r\n await animateWindowScrollTo(targetY, SCROLL_DURATION_MS);\r\n};\r\n\r\nconst executeScroll = async (call: ScrollToolCall) => {\r\n const selected = findElementBySelector(call.selector);\r\n if (!(selected instanceof HTMLElement)) {\r\n console.warn(`AuticBot scroll: selector not found: ${call.selector}`);\r\n return;\r\n }\r\n\r\n await slowScrollElementIntoViewWithMode(selected, true);\r\n const center = getElementCenter(selected);\r\n await moveCursor(center.x, center.y);\r\n};\r\n\r\nconst executeInteract = async (call: InteractToolCall) => {\r\n const target = resolveTarget(call);\r\n if (!target) {\r\n return;\r\n }\r\n\r\n if (call.action === \"click\" && target.element) {\r\n await slowScrollElementIntoView(target.element);\r\n const center = getElementCenter(target.element);\r\n target.x = center.x;\r\n target.y = center.y;\r\n }\r\n\r\n await moveCursor(target.x, target.y);\r\n\r\n if (call.action === \"move\") {\r\n return;\r\n }\r\n\r\n if (!target.element) {\r\n console.warn(\"AuticBot interact: target element not available for action.\", call.action);\r\n return;\r\n }\r\n\r\n if (call.action === \"click\") {\r\n dispatchMouseEvent(target.element, \"pointerdown\", target.x, target.y);\r\n dispatchMouseEvent(target.element, \"mousedown\", target.x, target.y);\r\n dispatchMouseEvent(target.element, \"pointerup\", target.x, target.y);\r\n dispatchMouseEvent(target.element, \"mouseup\", target.x, target.y);\r\n target.element.click();\r\n return;\r\n }\r\n\r\n if (call.action === \"type\") {\r\n typeIntoElement(target.element, call.text ?? \"\");\r\n return;\r\n }\r\n\r\n submitElement(target.element);\r\n};\r\n\r\nconst isSamePageNavigation = (targetUrl: string): boolean => {\r\n try {\r\n const current = new URL(window.location.href);\r\n const target = new URL(targetUrl);\r\n return current.origin === target.origin && current.pathname === target.pathname;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * Find the best matching link element for a target URL.\r\n * Supports exact href match, partial path/query/hash match,\r\n * and text-content match for framework <Link> components.\r\n */\r\nconst findMatchingLinkForTarget = (targetUrl: string): HTMLElement | null => {\r\n let parsedTarget: URL | null = null;\r\n try {\r\n parsedTarget = new URL(targetUrl, window.location.href);\r\n } catch {\r\n // will fall through to text-based matching\r\n }\r\n\r\n const allLinks = Array.from(\r\n document.querySelectorAll('a[href], [role=\"link\"][href], [data-href]'),\r\n ) as HTMLElement[];\r\n\r\n // 1. Exact href match\r\n for (const el of allLinks) {\r\n if (el instanceof HTMLAnchorElement && el.href === parsedTarget?.href) {\r\n return el;\r\n }\r\n }\r\n\r\n if (parsedTarget) {\r\n // 2. Match by pathname + search + hash (ignoring origin)\r\n for (const el of allLinks) {\r\n if (!(el instanceof HTMLAnchorElement)) continue;\r\n try {\r\n const elUrl = new URL(el.href, window.location.href);\r\n if (\r\n elUrl.pathname === parsedTarget.pathname &&\r\n elUrl.search === parsedTarget.search &&\r\n elUrl.hash === parsedTarget.hash\r\n ) {\r\n return el;\r\n }\r\n } catch {\r\n continue;\r\n }\r\n }\r\n\r\n // 3. Match by pathname only (query/hash may differ)\r\n for (const el of allLinks) {\r\n if (!(el instanceof HTMLAnchorElement)) continue;\r\n try {\r\n const elUrl = new URL(el.href, window.location.href);\r\n if (elUrl.pathname === parsedTarget.pathname) {\r\n return el;\r\n }\r\n } catch {\r\n continue;\r\n }\r\n }\r\n\r\n // 4. Partial href attribute match (covers relative paths, query strings)\r\n const rawUrl = targetUrl.replace(/^\\//, \"\");\r\n for (const el of allLinks) {\r\n const href = el.getAttribute(\"href\") || el.getAttribute(\"data-href\") || \"\";\r\n if (href && (href === targetUrl || href === rawUrl || href === `/${rawUrl}`)) {\r\n return el;\r\n }\r\n }\r\n }\r\n\r\n // 5. Text-content match (for framework <Link> or <button> navigations)\r\n const urlSegments = targetUrl\r\n .replace(/^https?:\\/\\/[^/]+/, \"\")\r\n .replace(/[?#].*$/, \"\")\r\n .split(\"/\")\r\n .filter(Boolean);\r\n const lastSegment = urlSegments[urlSegments.length - 1] || \"\";\r\n\r\n if (lastSegment) {\r\n // Also search query param values (e.g., ?tab=interact → \"interact\")\r\n let searchTerms = [lastSegment];\r\n if (parsedTarget) {\r\n for (const [, value] of parsedTarget.searchParams.entries()) {\r\n if (value) searchTerms.push(value);\r\n }\r\n if (parsedTarget.hash) {\r\n searchTerms.push(parsedTarget.hash.replace(/^#/, \"\"));\r\n }\r\n }\r\n searchTerms = searchTerms.map((t) => t.toLowerCase());\r\n\r\n // Look across all clickable elements\r\n const clickables = Array.from(\r\n document.querySelectorAll(\r\n 'a, button, [role=\"link\"], [role=\"tab\"], [role=\"button\"], [data-tab], [onclick]',\r\n ),\r\n ) as HTMLElement[];\r\n\r\n for (const el of clickables) {\r\n const text = (el.textContent || \"\").trim().toLowerCase();\r\n const ariaLabel = (el.getAttribute(\"aria-label\") || \"\").toLowerCase();\r\n const dataTab = (el.getAttribute(\"data-tab\") || \"\").toLowerCase();\r\n for (const term of searchTerms) {\r\n if (\r\n text === term ||\r\n ariaLabel === term ||\r\n dataTab === term ||\r\n text.includes(term)\r\n ) {\r\n return el;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst executeNavigate = async (call: NavigateToolCall): Promise<boolean> => {\r\n try {\r\n const targetUrl = call.url;\r\n let resolvedUrl: string;\r\n try {\r\n resolvedUrl = new URL(targetUrl, window.location.href).href;\r\n } catch {\r\n resolvedUrl = targetUrl;\r\n }\r\n\r\n const matchingElement = findMatchingLinkForTarget(targetUrl);\r\n\r\n if (matchingElement) {\r\n console.log(\"AuticBot navigate: clicking element\", resolvedUrl, matchingElement.tagName);\r\n await slowScrollElementIntoView(matchingElement);\r\n\r\n const center = getElementCenter(matchingElement);\r\n await moveCursor(center.x, center.y);\r\n\r\n matchingElement.dispatchEvent(new MouseEvent(\"pointerdown\", { bubbles: true, view: window }));\r\n matchingElement.dispatchEvent(new MouseEvent(\"mousedown\", { bubbles: true, view: window }));\r\n matchingElement.dispatchEvent(new MouseEvent(\"pointerup\", { bubbles: true, view: window }));\r\n matchingElement.dispatchEvent(new MouseEvent(\"mouseup\", { bubbles: true, view: window }));\r\n matchingElement.click();\r\n\r\n return !isSamePageNavigation(resolvedUrl);\r\n }\r\n\r\n // 6. Fallback: direct browser navigation (query param, hash, or full URL)\r\n console.log(\"AuticBot navigate: no matching element found, using direct navigation\", resolvedUrl);\r\n\r\n // Hash-only navigation\r\n try {\r\n const parsed = new URL(resolvedUrl);\r\n if (\r\n parsed.origin === window.location.origin &&\r\n parsed.pathname === window.location.pathname &&\r\n parsed.hash\r\n ) {\r\n window.location.hash = parsed.hash;\r\n return false;\r\n }\r\n } catch { /* continue */ }\r\n\r\n // Query-param or same-origin navigation via History API\r\n try {\r\n const parsed = new URL(resolvedUrl);\r\n if (parsed.origin === window.location.origin) {\r\n // Use pushState + popstate to trigger SPA routers\r\n const newPath = parsed.pathname + parsed.search + parsed.hash;\r\n window.history.pushState({}, \"\", newPath);\r\n window.dispatchEvent(new PopStateEvent(\"popstate\", { state: {} }));\r\n return false;\r\n }\r\n } catch { /* continue */ }\r\n\r\n // Cross-origin: full page navigation\r\n window.location.href = resolvedUrl;\r\n return true;\r\n } catch (error) {\r\n console.warn(\"AuticBot navigate: error\", call.url, error);\r\n return false;\r\n }\r\n};\r\n\r\nconst executeGetPageContext = async () => {\r\n const context = getPageContext();\r\n console.info(\r\n `[Autic] getPageContext tool executed links=${context.links.length} interactables=${context.interactables.length} summary_len=${context.summary.length}`,\r\n );\r\n};\r\n\r\nexport const executeToolCalls = async (toolCalls: AgentToolCall[]) => {\r\n for (const toolCall of toolCalls) {\r\n if (toolCall.tool === \"interact\") {\r\n await executeInteract(toolCall);\r\n continue;\r\n }\r\n\r\n if (toolCall.tool === \"scroll\") {\r\n await executeScroll(toolCall);\r\n continue;\r\n }\r\n\r\n if (toolCall.tool === \"getPageContext\") {\r\n await executeGetPageContext();\r\n continue;\r\n }\r\n\r\n if (toolCall.tool === \"navigate\") {\r\n const terminalNavigation = await executeNavigate(toolCall);\r\n if (terminalNavigation) {\r\n break;\r\n }\r\n }\r\n }\r\n};\r\n\r\n// ── Agent-mode tool execution (returns results) ─────────────────────\r\n\r\nexport type ToolCallWithId = AgentToolCall & {\r\n call_id: string;\r\n};\r\n\r\nexport interface ToolCallResult {\r\n call_id: string;\r\n result: string;\r\n}\r\n\r\n/**\r\n * Execute a single tool call and return a result string.\r\n * Used by the agent loop to feed results back into the LLM.\r\n */\r\nexport const executeSingleToolCall = async (\r\n call: ToolCallWithId,\r\n): Promise<ToolCallResult> => {\r\n const callId = call.call_id;\r\n try {\r\n if (call.tool === \"interact\") {\r\n await executeInteract(call);\r\n return {\r\n call_id: callId,\r\n result: `Etkileşim başarılı: ${call.action}`,\r\n };\r\n }\r\n\r\n if (call.tool === \"scroll\") {\r\n await executeScroll(call);\r\n return {\r\n call_id: callId,\r\n result: \"Öğeye kaydırma başarılı.\",\r\n };\r\n }\r\n\r\n if (call.tool === \"getPageContext\") {\r\n const context = getPageContext();\r\n return {\r\n call_id: callId,\r\n result: context.summary,\r\n };\r\n }\r\n\r\n if (call.tool === \"navigate\") {\r\n await executeNavigate(call);\r\n // Wait for navigation / SPA routing to settle\r\n await new Promise((resolve) => setTimeout(resolve, 1500));\r\n const context = getPageContext();\r\n return {\r\n call_id: callId,\r\n result: `Navigasyon tamamlandı. Şu anki sayfa: ${window.location.href}\\nSayfa bağlamı: ${context.summary}`,\r\n };\r\n }\r\n\r\n return { call_id: callId, result: \"Bilinmeyen araç.\" };\r\n } catch (error) {\r\n const msg = error instanceof Error ? error.message : String(error);\r\n console.warn(`[Autic] Tool execution error: ${call.tool}`, error);\r\n return { call_id: callId, result: `Hata: ${msg}` };\r\n }\r\n};\r\n\r\nconst restoreCursorFromStorageForCurrentUrl = () => {\r\n if (typeof document === \"undefined\" || typeof window === \"undefined\") {\r\n return;\r\n }\r\n\r\n const stored = getPersistedCursorState();\r\n if (!stored || stored.url !== window.location.href) {\r\n return;\r\n }\r\n\r\n ensureCursor();\r\n};\r\n\r\nif (typeof document !== \"undefined\") {\r\n if (document.readyState === \"loading\") {\r\n document.addEventListener(\"DOMContentLoaded\", restoreCursorFromStorageForCurrentUrl, {\r\n once: true,\r\n });\r\n } else {\r\n restoreCursorFromStorageForCurrentUrl();\r\n }\r\n}\r\n","import { useEffect, useLayoutEffect, useRef, useState } from \"preact/hooks\";\r\nimport type { JSX } from \"preact\";\r\nimport type { BulutRuntimeConfig } from \"../index\";\r\nimport {\r\n agentVoiceChatStream,\r\n type AudioStreamState,\r\n type StreamController,\r\n type AgentToolCallInfo,\r\n} from \"../api/client\";\r\nimport {\r\n executeSingleToolCall,\r\n parseAgentResponse,\r\n type ToolCallWithId,\r\n} from \"../agent/tools\";\r\nimport { getPageContext } from \"../agent/context\";\r\nimport {\r\n WINDOW_WIDTH,\r\n WINDOW_HEIGHT,\r\n POSITION_BOTTOM,\r\n POSITION_RIGHT,\r\n COLORS,\r\n TRANSITIONS,\r\n BORDER_RADIUS,\r\n SHADOW,\r\n} from \"../styles/constants\";\r\nimport {\r\n closeIconContent,\r\n microphoneIconContent,\r\n restartIconContent,\r\n logoContent,\r\n} from \"../assets\";\r\nimport { StreamingJsonParser } from \"../utils/streamingJson\";\r\n\r\nimport { SvgIcon } from \"./SvgIcon\";\r\n\r\ninterface ChatWindowProps {\r\n onClose: () => void;\r\n config: BulutRuntimeConfig;\r\n targetWindow?: Window;\r\n accessibilityMode?: boolean;\r\n}\r\n\r\ninterface Message {\r\n id: number;\r\n text: string;\r\n isUser: boolean;\r\n /** \"message\" (default) | \"tool\" for tool call indicators */\r\n type?: \"message\" | \"tool\";\r\n}\r\n\r\ntype RecordingMode = \"vad\" | \"press\";\r\n\r\ntype StorageLike = {\r\n removeItem: (key: string) => void;\r\n};\r\n\r\nconst STORAGE_KEY = \"bulut_chat_history\";\r\nconst TIMESTAMP_KEY = \"bulut_chat_timestamp\";\r\nconst SESSION_ID_KEY = \"bulut_session_id\";\r\nconst TTL_MS = 5 * 60 * 1000;\r\nconst VAD_THRESHOLD = 0.06;\r\nconst SILENCE_DURATION_MS = 1000;\r\nexport const HOLD_THRESHOLD_MS = 250;\r\n\r\nconst STATUS_LABELS = {\r\n ready: \"Hazır\",\r\n loading: \"Yükleniyor\",\r\n listening: \"Dinliyor...\",\r\n transcribing: \"Metne dönüştürülüyor\",\r\n thinking: \"Düşünüyor...\",\r\n renderingAudio: \"Ses hazırlanıyor\",\r\n playingAudio: \"Ses oynatılıyor\",\r\n runningTools: \"Araç çalıştırılıyor\",\r\n} as const;\r\n\r\nexport const INITIAL_BOT_MESSAGE_TEXT =\r\n \"Merhaba, ben Bulut. Bu web sayfasında neler yapalım?\";\r\n\r\nexport interface StatusFlags {\r\n isBusy: boolean;\r\n isRecording: boolean;\r\n isTranscribing: boolean;\r\n isThinking: boolean;\r\n isRenderingAudio: boolean;\r\n isPlayingAudio: boolean;\r\n isRunningTools: boolean;\r\n}\r\n\r\nexport const resolveStatusText = (flags: StatusFlags): string => {\r\n if (flags.isRecording) return STATUS_LABELS.listening;\r\n if (flags.isRunningTools) return STATUS_LABELS.runningTools;\r\n if (flags.isPlayingAudio) return STATUS_LABELS.playingAudio;\r\n if (flags.isRenderingAudio) return STATUS_LABELS.renderingAudio;\r\n if (flags.isThinking) return STATUS_LABELS.thinking;\r\n if (flags.isTranscribing) return STATUS_LABELS.transcribing;\r\n if (flags.isBusy) return STATUS_LABELS.loading;\r\n return STATUS_LABELS.ready;\r\n};\r\n\r\nexport const formatDurationMs = (durationMs: number): string => {\r\n const totalSeconds = Math.max(0, Math.floor(durationMs / 1000));\r\n const minutes = Math.floor(totalSeconds / 60)\r\n .toString()\r\n .padStart(2, \"0\");\r\n const seconds = (totalSeconds % 60).toString().padStart(2, \"0\");\r\n return `${minutes}:${seconds}`;\r\n};\r\n\r\nexport const classifyMicGesture = (\r\n durationMs: number,\r\n thresholdMs: number = HOLD_THRESHOLD_MS,\r\n): \"tap\" | \"hold\" => (durationMs >= thresholdMs ? \"hold\" : \"tap\");\r\n\r\nexport const createInitialMessages = (): Message[] => [\r\n {\r\n id: 1,\r\n text: INITIAL_BOT_MESSAGE_TEXT,\r\n isUser: false,\r\n },\r\n];\r\n\r\nexport const clearPersistedChatState = (storage: StorageLike | null): void => {\r\n if (!storage) {\r\n return;\r\n }\r\n\r\n storage.removeItem(STORAGE_KEY);\r\n storage.removeItem(TIMESTAMP_KEY);\r\n storage.removeItem(SESSION_ID_KEY);\r\n};\r\n\r\nexport const scrollElementToBottom = (\r\n element: { scrollTop: number; scrollHeight: number } | null,\r\n): void => {\r\n if (!element) {\r\n return;\r\n }\r\n\r\n element.scrollTop = element.scrollHeight;\r\n};\r\n\r\nconst normalizeError = (error: unknown) => {\r\n if (error instanceof Error) {\r\n return error.message;\r\n }\r\n return \"Bilinmeyen hata\";\r\n};\r\n\r\nconst getNextMessageId = (messages: Message[]): number => {\r\n const maxId = messages.reduce((acc, message) => Math.max(acc, message.id), 0);\r\n return maxId + 1;\r\n};\r\n\r\nexport interface AssistantPayloadResolution {\r\n displayText: string;\r\n toolCalls: ReturnType<typeof parseAgentResponse>[\"toolCalls\"];\r\n}\r\n\r\nexport const resolveAssistantPayload = (\r\n assistantText: string,\r\n): AssistantPayloadResolution => {\r\n const parsed = parseAgentResponse(assistantText);\r\n return {\r\n displayText: parsed.reply || assistantText,\r\n toolCalls: parsed.toolCalls,\r\n };\r\n};\r\n\r\nexport const shouldAutoListenAfterAudio = (\r\n accessibilityMode: boolean,\r\n isRecording: boolean,\r\n isBusy: boolean,\r\n): boolean => accessibilityMode && !isRecording && !isBusy;\r\n\r\nexport const ChatWindow = ({\r\n onClose,\r\n config,\r\n accessibilityMode = false,\r\n}: ChatWindowProps) => {\r\n const [messages, setMessages] = useState<Message[]>(() => {\r\n if (typeof localStorage !== \"undefined\") {\r\n const saved = localStorage.getItem(STORAGE_KEY);\r\n const timestamp = localStorage.getItem(TIMESTAMP_KEY);\r\n\r\n if (saved && timestamp) {\r\n const timePassed = Date.now() - parseInt(timestamp, 10);\r\n if (timePassed < TTL_MS) {\r\n try {\r\n return JSON.parse(saved) as Message[];\r\n } catch {\r\n // Ignore parse error and continue with default.\r\n }\r\n } else {\r\n clearPersistedChatState(localStorage);\r\n }\r\n }\r\n }\r\n\r\n return createInitialMessages();\r\n });\r\n\r\n const [isBusy, setIsBusy] = useState(false);\r\n const [isRecording, setIsRecording] = useState(false);\r\n const [isTranscribing, setIsTranscribing] = useState(false);\r\n const [isThinking, setIsThinking] = useState(false);\r\n const [isRenderingAudio, setIsRenderingAudio] = useState(false);\r\n const [isPlayingAudio, setIsPlayingAudio] = useState(false);\r\n const [isRunningTools, setIsRunningTools] = useState(false);\r\n const [recordingDurationMs, setRecordingDurationMs] = useState(0);\r\n const [statusOverride, setStatusOverride] = useState<string | null>(null);\r\n\r\n const resolvedStatusText = resolveStatusText({\r\n isBusy,\r\n isRecording,\r\n isTranscribing,\r\n isThinking,\r\n isRenderingAudio,\r\n isPlayingAudio,\r\n isRunningTools,\r\n });\r\n const statusText = statusOverride ?? resolvedStatusText;\r\n\r\n const isBusyRef = useRef(isBusy);\r\n const isRecordingRef = useRef(isRecording);\r\n\r\n const nextMessageIdRef = useRef(getNextMessageId(messages));\r\n const recorderRef = useRef<MediaRecorder | null>(null);\r\n const streamRef = useRef<MediaStream | null>(null);\r\n const audioChunksRef = useRef<BlobPart[]>([]);\r\n const activeStreamControllerRef = useRef<StreamController | null>(null);\r\n const sessionIdRef = useRef<string | null>(\r\n typeof localStorage !== \"undefined\"\r\n ? (() => {\r\n const ts = localStorage.getItem(TIMESTAMP_KEY);\r\n if (ts && Date.now() - parseInt(ts, 10) < TTL_MS) {\r\n return localStorage.getItem(SESSION_ID_KEY);\r\n }\r\n return null;\r\n })()\r\n : null,\r\n );\r\n\r\n const silenceStartRef = useRef<number | null>(null);\r\n const vadIntervalRef = useRef<number | null>(null);\r\n const audioContextRef = useRef<AudioContext | null>(null);\r\n const sourceRef = useRef<MediaStreamAudioSourceNode | null>(null);\r\n\r\n const discardNextRecordingRef = useRef(false);\r\n\r\n const micPressStartRef = useRef<number | null>(null);\r\n const micHoldTimeoutRef = useRef<number | null>(null);\r\n const micHoldTriggeredRef = useRef(false);\r\n const pendingStopAfterStartRef = useRef(false);\r\n const startRecordingPendingRef = useRef(false);\r\n\r\n const assistantMessageIdRef = useRef<number | null>(null);\r\n const assistantTextBufferRef = useRef(\"\");\r\n const transcriptionReceivedRef = useRef(false);\r\n const assistantDoneReceivedRef = useRef(false);\r\n\r\n const recordingStartedAtRef = useRef<number | null>(null);\r\n const recordingTimerIntervalRef = useRef<number | null>(null);\r\n\r\n const messagesContainerRef = useRef<HTMLDivElement | null>(null);\r\n const messagesContentRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const pendingUserTextRef = useRef<string | null>(null);\r\n const pendingAssistantTextRef = useRef<string>(\"\");\r\n const streamingJsonParserRef = useRef<StreamingJsonParser | null>(null);\r\n const awaitingAssistantResponseRef = useRef(false);\r\n\r\n useEffect(() => {\r\n isBusyRef.current = isBusy;\r\n }, [isBusy]);\r\n\r\n useEffect(() => {\r\n isRecordingRef.current = isRecording;\r\n }, [isRecording]);\r\n\r\n useEffect(() => {\r\n if (typeof localStorage !== \"undefined\") {\r\n localStorage.setItem(STORAGE_KEY, JSON.stringify(messages));\r\n localStorage.setItem(TIMESTAMP_KEY, Date.now().toString());\r\n }\r\n }, [messages]);\r\n\r\n const scrollMessagesToBottom = () => {\r\n scrollElementToBottom(messagesContainerRef.current);\r\n };\r\n\r\n useLayoutEffect(() => {\r\n scrollMessagesToBottom();\r\n }, [messages, statusText, isBusy, isRecording]);\r\n\r\n useEffect(() => {\r\n const content = messagesContentRef.current;\r\n if (!content || typeof ResizeObserver === \"undefined\") {\r\n return;\r\n }\r\n\r\n const observer = new ResizeObserver(() => {\r\n scrollMessagesToBottom();\r\n });\r\n\r\n observer.observe(content);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const stopRecordingTimer = () => {\r\n if (recordingTimerIntervalRef.current !== null) {\r\n window.clearInterval(recordingTimerIntervalRef.current);\r\n recordingTimerIntervalRef.current = null;\r\n }\r\n recordingStartedAtRef.current = null;\r\n };\r\n\r\n const startRecordingTimer = () => {\r\n stopRecordingTimer();\r\n recordingStartedAtRef.current = Date.now();\r\n setRecordingDurationMs(0);\r\n\r\n recordingTimerIntervalRef.current = window.setInterval(() => {\r\n const startedAt = recordingStartedAtRef.current;\r\n if (startedAt === null) {\r\n setRecordingDurationMs(0);\r\n return;\r\n }\r\n setRecordingDurationMs(Date.now() - startedAt);\r\n }, 200);\r\n };\r\n\r\n const resetProcessingFlags = () => {\r\n setIsTranscribing(false);\r\n setIsThinking(false);\r\n setIsRenderingAudio(false);\r\n setIsPlayingAudio(false);\r\n setIsRunningTools(false);\r\n setStatusOverride(null);\r\n assistantMessageIdRef.current = null;\r\n assistantTextBufferRef.current = \"\";\r\n transcriptionReceivedRef.current = false;\r\n assistantDoneReceivedRef.current = false;\r\n awaitingAssistantResponseRef.current = false;\r\n pendingUserTextRef.current = null;\r\n pendingAssistantTextRef.current = \"\";\r\n };\r\n\r\n const clearMicHoldTimeout = () => {\r\n if (micHoldTimeoutRef.current !== null) {\r\n window.clearTimeout(micHoldTimeoutRef.current);\r\n micHoldTimeoutRef.current = null;\r\n }\r\n };\r\n\r\n const cleanupVAD = () => {\r\n if (vadIntervalRef.current !== null) {\r\n clearInterval(vadIntervalRef.current);\r\n vadIntervalRef.current = null;\r\n }\r\n\r\n if (sourceRef.current) {\r\n sourceRef.current.disconnect();\r\n sourceRef.current = null;\r\n }\r\n\r\n if (audioContextRef.current) {\r\n audioContextRef.current.close().catch(() => {});\r\n audioContextRef.current = null;\r\n }\r\n\r\n silenceStartRef.current = null;\r\n };\r\n\r\n const stopStreamTracks = () => {\r\n if (!streamRef.current) {\r\n return;\r\n }\r\n\r\n streamRef.current.getTracks().forEach((track) => track.stop());\r\n streamRef.current = null;\r\n };\r\n\r\n const stopActiveStream = () => {\r\n if (!activeStreamControllerRef.current) {\r\n return;\r\n }\r\n\r\n activeStreamControllerRef.current.stop();\r\n activeStreamControllerRef.current = null;\r\n };\r\n\r\n useEffect(\r\n () => () => {\r\n clearMicHoldTimeout();\r\n pendingStopAfterStartRef.current = false;\r\n\r\n stopActiveStream();\r\n cleanupVAD();\r\n stopStreamTracks();\r\n stopRecordingTimer();\r\n\r\n const recorder = recorderRef.current;\r\n if (recorder) {\r\n recorder.ondataavailable = null;\r\n recorder.onstop = null;\r\n recorder.onerror = null;\r\n if (recorder.state !== \"inactive\") {\r\n recorder.stop();\r\n }\r\n recorderRef.current = null;\r\n }\r\n },\r\n [],\r\n );\r\n\r\n const appendMessage = (text: string, isUser: boolean): number => {\r\n const id = nextMessageIdRef.current++;\r\n setMessages((previous) => [\r\n ...previous,\r\n {\r\n id,\r\n text,\r\n isUser,\r\n },\r\n ]);\r\n return id;\r\n };\r\n\r\n const updateMessageText = (id: number, text: string) => {\r\n setMessages((previous) =>\r\n previous.map((message) =>\r\n message.id === id ? { ...message, text } : message,\r\n ),\r\n );\r\n };\r\n\r\n const handleAudioStateChange = (state: AudioStreamState) => {\r\n if (state === \"rendering\") {\r\n setIsRenderingAudio(true);\r\n setIsPlayingAudio(false);\r\n return;\r\n }\r\n\r\n if (state === \"playing\") {\r\n setIsRenderingAudio(false);\r\n setIsPlayingAudio(true);\r\n return;\r\n }\r\n\r\n if (state === \"fallback\") {\r\n setIsRenderingAudio(true);\r\n setIsPlayingAudio(false);\r\n return;\r\n }\r\n\r\n if (state === \"done\") {\r\n setIsRenderingAudio(false);\r\n setIsPlayingAudio(false);\r\n return;\r\n }\r\n\r\n setIsRenderingAudio(false);\r\n setIsPlayingAudio(false);\r\n };\r\n\r\n const handleAudioBlob = async (blob: Blob) => {\r\n if (!config.projectId) {\r\n appendMessage(\"Hata: Project ID yapılandırılmamış.\", false);\r\n return;\r\n }\r\n\r\n setIsBusy(true);\r\n setIsTranscribing(true);\r\n setIsThinking(false);\r\n setIsRenderingAudio(false);\r\n setIsPlayingAudio(false);\r\n setIsRunningTools(false);\r\n resetProcessingFlags(); // Start fresh\r\n setStatusOverride(STATUS_LABELS.thinking);\r\n awaitingAssistantResponseRef.current = true;\r\n\r\n try {\r\n const fileType = blob.type || \"audio/webm\";\r\n const extension = fileType.includes(\"ogg\")\r\n ? \"ogg\"\r\n : fileType.includes(\"wav\")\r\n ? \"wav\"\r\n : fileType.includes(\"mpeg\") || fileType.includes(\"mp3\")\r\n ? \"mp3\"\r\n : \"webm\";\r\n const file = new File([blob], `voice-input.${extension}`, {\r\n type: fileType,\r\n });\r\n\r\n stopActiveStream();\r\n\r\n const pageContext = getPageContext().summary;\r\n\r\n // Helper: bridge an AgentToolCallInfo to a ToolCallWithId\r\n const handleToolExecution = async (\r\n call: AgentToolCallInfo,\r\n ): Promise<{ call_id: string; result: string }> => {\r\n const toolCall: ToolCallWithId = {\r\n tool: call.tool as\r\n | \"navigate\"\r\n | \"getPageContext\"\r\n | \"interact\"\r\n | \"scroll\",\r\n call_id: call.call_id,\r\n ...call.args,\r\n } as ToolCallWithId;\r\n return executeSingleToolCall(toolCall);\r\n };\r\n\r\n const controller = agentVoiceChatStream(\r\n config.backendBaseUrl,\r\n file,\r\n config.projectId,\r\n sessionIdRef.current,\r\n {\r\n model: config.model,\r\n voice: \"zeynep\",\r\n pageContext,\r\n accessibilityMode,\r\n },\r\n {\r\n onTranscription: (data) => {\r\n if (data.session_id && data.session_id !== sessionIdRef.current) {\r\n sessionIdRef.current = data.session_id;\r\n if (typeof localStorage !== \"undefined\") {\r\n localStorage.setItem(SESSION_ID_KEY, data.session_id);\r\n }\r\n }\r\n\r\n // Guard: only append user text once (STT callback fires once)\r\n if (\r\n data.user_text.trim() &&\r\n pendingUserTextRef.current !== data.user_text\r\n ) {\r\n pendingUserTextRef.current = data.user_text;\r\n appendMessage(data.user_text, true);\r\n }\r\n\r\n setIsTranscribing(false);\r\n setIsThinking(true);\r\n setStatusOverride(STATUS_LABELS.thinking);\r\n },\r\n onSessionId: (sid) => {\r\n if (sid && sid !== sessionIdRef.current) {\r\n sessionIdRef.current = sid;\r\n if (typeof localStorage !== \"undefined\") {\r\n localStorage.setItem(SESSION_ID_KEY, sid);\r\n }\r\n }\r\n },\r\n onAssistantDelta: (delta) => {\r\n setIsTranscribing(false);\r\n setIsThinking(true);\r\n if (awaitingAssistantResponseRef.current) {\r\n awaitingAssistantResponseRef.current = false;\r\n setStatusOverride(null);\r\n }\r\n\r\n // Agent returns plain text (not JSON), stream it directly\r\n pendingAssistantTextRef.current += delta;\r\n\r\n if (assistantMessageIdRef.current === null) {\r\n assistantMessageIdRef.current = appendMessage(\r\n pendingAssistantTextRef.current,\r\n false,\r\n );\r\n } else {\r\n updateMessageText(\r\n assistantMessageIdRef.current,\r\n pendingAssistantTextRef.current,\r\n );\r\n }\r\n },\r\n onAssistantDone: (assistantText) => {\r\n awaitingAssistantResponseRef.current = false;\r\n setStatusOverride(null);\r\n setIsThinking(false);\r\n setIsRenderingAudio(true);\r\n\r\n const finalDisplayText =\r\n assistantText || pendingAssistantTextRef.current;\r\n\r\n streamingJsonParserRef.current = null;\r\n pendingAssistantTextRef.current = finalDisplayText;\r\n\r\n if (assistantMessageIdRef.current !== null) {\r\n updateMessageText(\r\n assistantMessageIdRef.current,\r\n finalDisplayText,\r\n );\r\n } else {\r\n assistantMessageIdRef.current = appendMessage(\r\n finalDisplayText,\r\n false,\r\n );\r\n }\r\n },\r\n onToolCalls: (calls) => {\r\n setIsRunningTools(true);\r\n setStatusOverride(STATUS_LABELS.runningTools);\r\n\r\n // Show each tool call as a small indicator message\r\n for (const call of calls) {\r\n const toolLabel =\r\n call.tool === \"navigate\"\r\n ? `Sayfaya gidiliyor: ${call.args.url ?? \"\"}`\r\n : call.tool === \"getPageContext\"\r\n ? \"Sayfa bağlamı alınıyor…\"\r\n : call.tool === \"interact\"\r\n ? `Etkileşim: ${call.args.action ?? \"\"}`\r\n : call.tool === \"scroll\"\r\n ? \"Kaydırılıyor…\"\r\n : call.tool;\r\n\r\n appendMessage(`🔧 ${toolLabel}`, false);\r\n // Mark the tool message\r\n setMessages((prev) => {\r\n const last = prev[prev.length - 1];\r\n if (last && !last.isUser) {\r\n return [\r\n ...prev.slice(0, -1),\r\n { ...last, type: \"tool\" as const },\r\n ];\r\n }\r\n return prev;\r\n });\r\n }\r\n\r\n // Reset assistant message ref so next reply gets a new bubble\r\n assistantMessageIdRef.current = null;\r\n pendingAssistantTextRef.current = \"\";\r\n },\r\n onToolResult: (_callId, _toolName, _result) => {\r\n // Tool result sent back to agent automatically.\r\n // Could display detailed result here if needed.\r\n },\r\n onIteration: (_iteration, _maxIterations) => {\r\n // Agent started a new reasoning iteration\r\n setIsThinking(true);\r\n setStatusOverride(STATUS_LABELS.thinking);\r\n },\r\n onAudioStateChange: handleAudioStateChange,\r\n onError: (err) => {\r\n awaitingAssistantResponseRef.current = false;\r\n setStatusOverride(null);\r\n appendMessage(`Hata: ${err}`, false);\r\n },\r\n },\r\n handleToolExecution,\r\n );\r\n\r\n activeStreamControllerRef.current = controller;\r\n await controller.done;\r\n\r\n // Safety: Ensure messages are flushed if not already\r\n // (e.g. if audio 'done' event didn't fire for some reason or there was no audio)\r\n /* if (pendingUserTextRef.current || pendingAssistantTextRef.current) {\r\n // flushPendingMessages(); // Removed as we stream now\r\n } */\r\n } catch (error) {\r\n // Error already shown via onError callback — don't duplicate\r\n awaitingAssistantResponseRef.current = false;\r\n setStatusOverride(null);\r\n } finally {\r\n awaitingAssistantResponseRef.current = false;\r\n setStatusOverride(null);\r\n setIsBusy(false);\r\n setIsTranscribing(false);\r\n setIsThinking(false);\r\n setIsRenderingAudio(false);\r\n setIsPlayingAudio(false);\r\n // Reset for next message cycle\r\n pendingUserTextRef.current = null;\r\n pendingAssistantTextRef.current = \"\";\r\n assistantMessageIdRef.current = null;\r\n if (activeStreamControllerRef.current) {\r\n activeStreamControllerRef.current = null;\r\n }\r\n if (\r\n shouldAutoListenAfterAudio(\r\n accessibilityMode,\r\n isRecordingRef.current,\r\n isBusyRef.current,\r\n )\r\n ) {\r\n console.info(\r\n \"[Bulut] chat-window auto-listen trigger after stream completion\",\r\n );\r\n void startRecording(\"vad\");\r\n }\r\n }\r\n };\r\n\r\n const stopRecording = (options?: { discard?: boolean }) => {\r\n const recorder = recorderRef.current;\r\n if (!recorder || recorder.state === \"inactive\") {\r\n return;\r\n }\r\n\r\n if (options?.discard) {\r\n discardNextRecordingRef.current = true;\r\n }\r\n\r\n cleanupVAD();\r\n recorder.stop();\r\n };\r\n\r\n const setupVAD = (stream: MediaStream, recorder: MediaRecorder) => {\r\n const AudioCtx =\r\n window.AudioContext ||\r\n (window as Window & { webkitAudioContext?: typeof AudioContext })\r\n .webkitAudioContext;\r\n\r\n if (!AudioCtx) {\r\n return;\r\n }\r\n\r\n const context = new AudioCtx();\r\n audioContextRef.current = context;\r\n\r\n const analyser = context.createAnalyser();\r\n analyser.fftSize = 256;\r\n\r\n const source = context.createMediaStreamSource(stream);\r\n sourceRef.current = source;\r\n source.connect(analyser);\r\n\r\n const dataArray = new Uint8Array(analyser.frequencyBinCount);\r\n silenceStartRef.current = null;\r\n let speechDetected = false;\r\n\r\n vadIntervalRef.current = window.setInterval(() => {\r\n if (!isRecordingRef.current || recorder.state === \"inactive\") {\r\n cleanupVAD();\r\n return;\r\n }\r\n\r\n analyser.getByteFrequencyData(dataArray);\r\n\r\n let sum = 0;\r\n for (const value of dataArray) {\r\n sum += value;\r\n }\r\n const average = sum / dataArray.length;\r\n const volume = average / 255;\r\n\r\n if (volume < VAD_THRESHOLD) {\r\n if (silenceStartRef.current === null) {\r\n silenceStartRef.current = Date.now();\r\n return;\r\n }\r\n\r\n const silenceDuration = Date.now() - silenceStartRef.current;\r\n if (speechDetected && silenceDuration > SILENCE_DURATION_MS) {\r\n stopRecording();\r\n }\r\n return;\r\n }\r\n\r\n speechDetected = true;\r\n silenceStartRef.current = null;\r\n }, 50);\r\n };\r\n\r\n const startRecording = async (mode: RecordingMode) => {\r\n if (\r\n isBusyRef.current ||\r\n isRecordingRef.current ||\r\n startRecordingPendingRef.current\r\n ) {\r\n return;\r\n }\r\n\r\n setStatusOverride(STATUS_LABELS.listening);\r\n\r\n if (!navigator.mediaDevices?.getUserMedia) {\r\n setStatusOverride(null);\r\n appendMessage(\"Bu tarayıcıda mikrofon kullanılamıyor.\", false);\r\n return;\r\n }\r\n\r\n if (typeof MediaRecorder === \"undefined\") {\r\n setStatusOverride(null);\r\n appendMessage(\"Bu tarayıcıda MediaRecorder desteklenmiyor.\", false);\r\n return;\r\n }\r\n\r\n startRecordingPendingRef.current = true;\r\n\r\n try {\r\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\r\n streamRef.current = stream;\r\n\r\n // Use low bitrate for speech — opus handles voice well at 16-24 kbps\r\n // and produces ~4-5x smaller payloads, speeding up the upload to fal.\r\n const recorderOptions: MediaRecorderOptions = {\r\n audioBitsPerSecond: 16_000,\r\n };\r\n\r\n // Prefer opus-in-ogg (smaller container) → opus-in-webm → browser default\r\n const preferredMimeTypes = [\r\n \"audio/ogg;codecs=opus\",\r\n \"audio/webm;codecs=opus\",\r\n \"audio/webm\",\r\n ];\r\n for (const mime of preferredMimeTypes) {\r\n if (MediaRecorder.isTypeSupported(mime)) {\r\n recorderOptions.mimeType = mime;\r\n break;\r\n }\r\n }\r\n\r\n const recorder = new MediaRecorder(stream, recorderOptions);\r\n recorderRef.current = recorder;\r\n audioChunksRef.current = [];\r\n\r\n recorder.ondataavailable = (event) => {\r\n if (event.data.size > 0) {\r\n audioChunksRef.current.push(event.data);\r\n }\r\n };\r\n\r\n recorder.onerror = () => {\r\n appendMessage(\"Mikrofon kaydı sırasında bir hata oluştu.\", false);\r\n };\r\n\r\n recorder.onstop = async () => {\r\n setIsRecording(false);\r\n isRecordingRef.current = false;\r\n stopRecordingTimer();\r\n\r\n cleanupVAD();\r\n stopStreamTracks();\r\n\r\n const shouldDiscard = discardNextRecordingRef.current;\r\n discardNextRecordingRef.current = false;\r\n\r\n const blob = new Blob(audioChunksRef.current, {\r\n type: recorder.mimeType || \"audio/webm\",\r\n });\r\n audioChunksRef.current = [];\r\n\r\n if (shouldDiscard) {\r\n setStatusOverride(null);\r\n return;\r\n }\r\n\r\n if (blob.size === 0) {\r\n setStatusOverride(null);\r\n appendMessage(\"Ses kaydı alınamadı. Lütfen tekrar deneyin.\", false);\r\n return;\r\n }\r\n\r\n setStatusOverride(STATUS_LABELS.thinking);\r\n await handleAudioBlob(blob);\r\n };\r\n\r\n if (mode === \"vad\") {\r\n setupVAD(stream, recorder);\r\n }\r\n\r\n recorder.start(200);\r\n setIsRecording(true);\r\n isRecordingRef.current = true;\r\n startRecordingTimer();\r\n\r\n if (pendingStopAfterStartRef.current) {\r\n pendingStopAfterStartRef.current = false;\r\n stopRecording();\r\n }\r\n } catch (error) {\r\n setStatusOverride(null);\r\n appendMessage(`Mikrofon hatası: ${normalizeError(error)}`, false);\r\n cleanupVAD();\r\n stopStreamTracks();\r\n pendingStopAfterStartRef.current = false;\r\n setIsRecording(false);\r\n isRecordingRef.current = false;\r\n stopRecordingTimer();\r\n } finally {\r\n if (!isRecordingRef.current && !isBusyRef.current) {\r\n setStatusOverride(null);\r\n }\r\n startRecordingPendingRef.current = false;\r\n }\r\n };\r\n\r\n const resetMicGesture = () => {\r\n micPressStartRef.current = null;\r\n micHoldTriggeredRef.current = false;\r\n clearMicHoldTimeout();\r\n };\r\n\r\n const handleMicPointerDown = (\r\n event: JSX.TargetedPointerEvent<HTMLButtonElement>,\r\n ) => {\r\n event.preventDefault();\r\n\r\n if (isBusyRef.current) {\r\n return;\r\n }\r\n\r\n if (isRecordingRef.current) {\r\n stopRecording();\r\n return;\r\n }\r\n\r\n micPressStartRef.current = Date.now();\r\n micHoldTriggeredRef.current = false;\r\n clearMicHoldTimeout();\r\n\r\n if (event.currentTarget.setPointerCapture) {\r\n try {\r\n event.currentTarget.setPointerCapture(event.pointerId);\r\n } catch {\r\n // No-op.\r\n }\r\n }\r\n\r\n micHoldTimeoutRef.current = window.setTimeout(() => {\r\n if (\r\n micPressStartRef.current === null ||\r\n isBusyRef.current ||\r\n isRecordingRef.current\r\n ) {\r\n return;\r\n }\r\n\r\n micHoldTriggeredRef.current = true;\r\n void startRecording(\"press\");\r\n }, HOLD_THRESHOLD_MS);\r\n };\r\n\r\n const handleMicPointerUp = (\r\n event: JSX.TargetedPointerEvent<HTMLButtonElement>,\r\n ) => {\r\n event.preventDefault();\r\n\r\n if (event.currentTarget.releasePointerCapture) {\r\n try {\r\n event.currentTarget.releasePointerCapture(event.pointerId);\r\n } catch {\r\n // No-op.\r\n }\r\n }\r\n\r\n const startedAt = micPressStartRef.current;\r\n const wasHold = micHoldTriggeredRef.current;\r\n resetMicGesture();\r\n\r\n if (startedAt === null) {\r\n return;\r\n }\r\n\r\n if (wasHold) {\r\n if (isRecordingRef.current) {\r\n stopRecording();\r\n } else if (startRecordingPendingRef.current) {\r\n pendingStopAfterStartRef.current = true;\r\n }\r\n return;\r\n }\r\n\r\n const duration = Date.now() - startedAt;\r\n if (classifyMicGesture(duration) === \"tap\") {\r\n void startRecording(\"vad\");\r\n }\r\n };\r\n\r\n const handleMicPointerCancel = (\r\n event: JSX.TargetedPointerEvent<HTMLButtonElement>,\r\n ) => {\r\n handleMicPointerUp(event);\r\n };\r\n\r\n const handleRestart = () => {\r\n resetMicGesture();\r\n pendingStopAfterStartRef.current = false;\r\n\r\n stopActiveStream();\r\n\r\n if (recorderRef.current && recorderRef.current.state !== \"inactive\") {\r\n stopRecording({ discard: true });\r\n } else {\r\n discardNextRecordingRef.current = false;\r\n cleanupVAD();\r\n stopStreamTracks();\r\n }\r\n\r\n stopRecordingTimer();\r\n setRecordingDurationMs(0);\r\n\r\n clearPersistedChatState(\r\n typeof localStorage !== \"undefined\" ? localStorage : null,\r\n );\r\n\r\n sessionIdRef.current = null;\r\n const initialMessages = createInitialMessages();\r\n nextMessageIdRef.current = getNextMessageId(initialMessages);\r\n setMessages(initialMessages);\r\n\r\n setIsBusy(false);\r\n isBusyRef.current = false;\r\n setIsRecording(false);\r\n isRecordingRef.current = false;\r\n resetProcessingFlags();\r\n };\r\n\r\n const windowStyle: { [key: string]: string } = {\r\n position: \"fixed\",\r\n bottom: `${POSITION_BOTTOM}px`,\r\n right: `${POSITION_RIGHT}px`,\r\n width: `${WINDOW_WIDTH}px`,\r\n maxHeight: `${WINDOW_HEIGHT}px`,\r\n backgroundColor: \"hsla(0, 0%, 100%, 1)\",\r\n border: \"1px solid rgba(0, 0, 0, 0.2)\",\r\n borderRadius: BORDER_RADIUS.window,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n zIndex: \"10000\",\r\n animation: `slideIn ${TRANSITIONS.medium}`,\r\n boxShadow: SHADOW\r\n };\r\n\r\n const headerStyle: { [key: string]: string } = {\r\n padding: \"14px 16px\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n };\r\n\r\n const headerActionsStyle: { [key: string]: string } = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"6px\",\r\n };\r\n\r\n const headerButtonStyle: { [key: string]: string } = {\r\n background: \"none\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n padding: \"4px\",\r\n borderRadius: \"6px\",\r\n color: COLORS.text,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n transition: `color ${TRANSITIONS.fast}, background-color ${TRANSITIONS.fast}`,\r\n };\r\n\r\n const messagesContainerStyle: { [key: string]: string } = {\r\n padding: \"0px 16px\",\r\n overflowY: \"auto\",\r\n };\r\n\r\n const messagesListStyle: { [key: string]: string } = {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: \"8px\",\r\n };\r\n\r\n const messageStyle = (isUser: boolean): { [key: string]: string } => ({\r\n maxWidth: \"84%\",\r\n padding: isUser ? \"9px 14px\" : \"9px 0px\",\r\n borderRadius: BORDER_RADIUS.message,\r\n fontSize: \"14px\",\r\n lineHeight: \"140%\",\r\n wordWrap: \"break-word\",\r\n whiteSpace: \"pre-wrap\",\r\n alignSelf: isUser ? \"flex-end\" : \"flex-start\",\r\n backgroundColor: isUser ? COLORS.messageUser : \"\",\r\n color: isUser ? COLORS.messageUserText : \"hsla(0, 0%, 10%, 0.8)\",\r\n });\r\n\r\n const footerStyle: { [key: string]: string } = {\r\n padding: \"10px 12px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"8px\",\r\n };\r\n\r\n const statusPanelStyle: { [key: string]: string } = {\r\n flex: \"1\",\r\n minHeight: \"34px\",\r\n borderRadius: \"10px\",\r\n color: COLORS.text,\r\n fontSize: \"14px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: \"0 10px\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n opacity: \"0.7\",\r\n };\r\n\r\n const footerActionsStyle: { [key: string]: string } = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"8px\",\r\n flexShrink: \"0\",\r\n };\r\n\r\n const recordingTimerStyle: { [key: string]: string } = {\r\n minWidth: \"46px\",\r\n fontSize: \"12px\",\r\n fontWeight: \"700\",\r\n color: COLORS.text,\r\n textAlign: \"right\",\r\n };\r\n\r\n const micBackgroundColor = COLORS.primary;\r\n\r\n const micFooterButtonStyle: { [key: string]: string } = {\r\n width: \"37px\",\r\n height: \"37px\",\r\n borderRadius: \"999px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n cursor: \"pointer\",\r\n color: \"#ffffff\",\r\n border: \"1px solid\" + micBackgroundColor,\r\n transition: `background-color ${TRANSITIONS.fast}, transform ${TRANSITIONS.fast}`,\r\n };\r\n\r\n const disableMicControl = isBusy;\r\n\r\n return (\r\n <div style={windowStyle}>\r\n <style>{`\r\n @keyframes slideIn {\r\n from {\r\n opacity: 0;\r\n transform: translateY(10px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n\r\n .bulut-header-btn:hover:not(:disabled) {\r\n color: ${COLORS.text};\r\n }\r\n\r\n .bulut-footer-btn:hover:not(:disabled) {\r\n transform: scale(1.04);\r\n }\r\n\r\n .bulut-header-btn:disabled,\r\n .bulut-footer-btn:disabled {\r\n cursor: not-allowed;\r\n opacity: 0.5;\r\n transform: none;\r\n }\r\n `}</style>\r\n\r\n <div style={headerStyle}>\r\n <SvgIcon\r\n src={logoContent}\r\n title=\"Bulut Logo\"\r\n style={{ maxWidth: \"80px\", height: \"auto\" }}\r\n stripColors={false}\r\n />\r\n <div style={headerActionsStyle}>\r\n <button\r\n type=\"button\"\r\n className=\"bulut-header-btn\"\r\n style={headerButtonStyle}\r\n onClick={handleRestart}\r\n aria-label=\"Sohbeti yeniden başlat\"\r\n title=\"Sohbeti yeniden başlat\"\r\n >\r\n <SvgIcon src={restartIconContent} width={22} />\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n className=\"bulut-header-btn\"\r\n style={{\r\n ...headerButtonStyle,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n onClick={onClose}\r\n aria-label=\"Sohbeti kapat\"\r\n title=\"Sohbeti kapat\"\r\n >\r\n <SvgIcon\r\n fill-opacity={\"0\"}\r\n stroke={\"currentColor\"}\r\n src={closeIconContent}\r\n width={22}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div style={messagesContainerStyle} ref={messagesContainerRef}>\r\n <div style={messagesListStyle} ref={messagesContentRef}>\r\n {messages.map((message) => (\r\n <div\r\n key={message.id}\r\n style={\r\n message.type === \"tool\"\r\n ? {\r\n padding: \"5px 12px\",\r\n borderRadius: \"8px\",\r\n fontSize: \"12px\",\r\n lineHeight: \"1.4\",\r\n color: \"#888\",\r\n backgroundColor: \"rgba(0, 0, 0, 0.03)\",\r\n alignSelf: \"flex-start\",\r\n maxWidth: \"90%\",\r\n fontStyle: \"italic\",\r\n }\r\n : messageStyle(message.isUser)\r\n }\r\n >\r\n {message.text}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n <div style={footerStyle}>\r\n <div style={{ ...statusPanelStyle, opacity: statusText === \"Hazır\" ? 0 : 1 , transition: \"opacity 0.2s ease-out\"}} title={statusText}>\r\n {statusText}\r\n </div>\r\n\r\n <div style={footerActionsStyle}>\r\n {isRecording ? (\r\n <span style={recordingTimerStyle}>\r\n {formatDurationMs(recordingDurationMs)}\r\n </span>\r\n ) : null}\r\n <button\r\n type=\"button\"\r\n className=\"bulut-footer-btn\"\r\n style={micFooterButtonStyle}\r\n onPointerDown={handleMicPointerDown}\r\n onPointerUp={handleMicPointerUp}\r\n onPointerCancel={handleMicPointerCancel}\r\n disabled={disableMicControl}\r\n aria-label={isRecording ? \"Kaydı durdur\" : \"Kaydı başlat\"}\r\n title={\r\n isRecording\r\n ? \"Kaydı durdur\"\r\n : \"Dokun: VAD, Basılı tut: bırakınca gönder\"\r\n }\r\n >\r\n <SvgIcon\r\n fill-opacity={\"0\"}\r\n stroke={\"black\"}\r\n src={microphoneIconContent}\r\n width={22}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","export default \"<svg width=\\\"2430\\\" height=\\\"438\\\" viewBox=\\\"0 0 2430 438\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\r\\n<mask id=\\\"path-2-inside-1_13_38\\\" fill=\\\"white\\\">\\r\\n<path d=\\\"M251.823 0C313.458 0 366.34 37.767 388.932 91.5918C409.253 75.8883 434.678 66.5567 462.264 66.5566C528.885 66.5567 582.893 120.989 582.893 188.134C582.893 188.786 582.885 189.436 582.875 190.086C648.144 193.552 700 247.572 700 313.704C700 382.074 644.575 437.5 576.204 437.5H123.796C55.4255 437.5 7.42386e-05 382.074 0 313.704C0 250.475 47.4025 198.32 108.608 190.833C104.967 177.844 103.019 164.138 103.019 149.975C103.019 67.1461 169.641 0.000357483 251.823 0Z\\\"/>\\r\\n</mask>\\r\\n<path d=\\\"M251.823 0V-175H251.822L251.823 0ZM388.932 91.5918L227.569 159.319L315.714 369.33L495.936 230.066L388.932 91.5918ZM462.264 66.5566L462.264 -108.443H462.263L462.264 66.5566ZM582.893 188.134L757.893 188.134V188.134H582.893ZM582.875 190.086L407.896 187.352L405.263 355.902L573.596 364.84L582.875 190.086ZM700 313.704L875 313.704V313.704H700ZM0 313.704H-175V313.704L0 313.704ZM108.608 190.833L129.858 364.538L332.108 339.797L277.114 143.6L108.608 190.833ZM103.019 149.975L-71.9814 149.975V149.975H103.019ZM251.823 0V175C239.901 175 231.045 167.601 227.569 159.319L388.932 91.5918L550.295 23.8646C501.636 -92.0671 387.015 -175 251.823 -175V0ZM388.932 91.5918L495.936 230.066C486.783 237.139 474.857 241.557 462.264 241.557L462.264 66.5566L462.263 -108.443C394.499 -108.443 331.724 -85.3623 281.927 -46.8823L388.932 91.5918ZM462.264 66.5566L462.264 241.557C430.946 241.557 407.893 216.344 407.893 188.134H582.893H757.893C757.893 25.6332 626.824 -108.443 462.264 -108.443L462.264 66.5566ZM582.893 188.134L407.893 188.133C407.893 187.799 407.894 187.555 407.896 187.429C407.897 187.307 407.898 187.265 407.896 187.352L582.875 190.086L757.854 192.819C757.871 191.726 757.893 190.068 757.893 188.134L582.893 188.134ZM582.875 190.086L573.596 364.84C546.451 363.398 525 341.115 525 313.704H700H875C875 154.028 749.837 23.7047 592.154 15.3321L582.875 190.086ZM700 313.704L525 313.704C525 285.425 547.924 262.5 576.204 262.5V437.5V612.5C741.225 612.5 875 478.724 875 313.704L700 313.704ZM576.204 437.5V262.5H123.796V437.5V612.5H576.204V437.5ZM123.796 437.5V262.5C152.076 262.5 175 285.425 175 313.704L0 313.704L-175 313.704C-175 478.724 -41.2245 612.5 123.796 612.5V437.5ZM0 313.704H175C175 339.991 155.35 361.42 129.858 364.538L108.608 190.833L87.3591 17.1279C-60.5447 35.2209 -175 160.96 -175 313.704H0ZM108.608 190.833L277.114 143.6C277.741 145.838 278.019 148.019 278.019 149.975H103.019H-71.9814C-71.9814 180.258 -67.806 209.85 -59.897 238.066L108.608 190.833ZM103.019 149.975L278.019 149.975C278.019 162.502 267.58 175 251.824 175L251.823 0L251.822 -175C71.7018 -174.999 -71.9814 -28.2097 -71.9814 149.975L103.019 149.975Z\\\" fill=\\\"black\\\" mask=\\\"url(#path-2-inside-1_13_38)\\\"/>\\r\\n<path d=\\\"M2430 424.954H2353.35C2317.08 424.954 2288.64 416.094 2268.04 398.373C2247.43 380.652 2237.13 352.216 2237.13 313.065V55.2871H2329.86V302.556C2329.86 318.217 2333.15 328.726 2339.75 334.083C2346.75 339.028 2358.29 341.501 2374.36 341.501H2430V424.954ZM2430 191.903H2188.29V115.25H2430V191.903Z\\\" fill=\\\"black\\\"/>\\r\\n<path d=\\\"M1933.18 431.136C1904.33 431.136 1880.22 425.779 1860.85 415.064C1841.89 403.937 1827.68 389.101 1818.2 370.555C1809.13 352.01 1804.6 331.198 1804.6 308.12V115.25H1897.32V277.211C1897.32 301.938 1903.3 320.071 1915.25 331.61C1927.2 342.738 1947.81 348.301 1977.07 348.301C2007.56 348.301 2028.79 342.325 2040.74 330.374C2053.1 318.011 2059.28 298.641 2059.28 272.266L2071.03 271.648L2077.83 330.374H2060.52C2058.05 347.683 2051.87 363.962 2041.98 379.21C2032.5 394.458 2018.69 407.028 2000.56 416.918C1982.84 426.397 1960.38 431.136 1933.18 431.136ZM2152.01 424.955H2065.47V329.138L2059.28 326.047V115.25H2152.01V424.955Z\\\" fill=\\\"black\\\"/>\\r\\n<path d=\\\"M1744.32 424.954H1651.59V10.7783H1744.32V424.954Z\\\" fill=\\\"black\\\"/>\\r\\n<path d=\\\"M1372.98 431.136C1344.13 431.136 1320.03 425.779 1300.66 415.064C1281.7 403.937 1267.48 389.101 1258 370.555C1248.94 352.01 1244.4 331.198 1244.4 308.12V115.25H1337.13V277.211C1337.13 301.938 1343.1 320.071 1355.06 331.61C1367.01 342.738 1387.61 348.301 1416.87 348.301C1447.37 348.301 1468.59 342.325 1480.54 330.374C1492.91 318.011 1499.09 298.641 1499.09 272.266L1510.84 271.648L1517.64 330.374H1500.33C1497.85 347.683 1491.67 363.962 1481.78 379.21C1472.3 394.458 1458.5 407.028 1440.36 416.918C1422.64 426.397 1400.18 431.136 1372.98 431.136ZM1591.82 424.955H1505.27V329.138L1499.09 326.047V115.25H1591.82V424.955Z\\\" fill=\\\"black\\\"/>\\r\\n<path d=\\\"M1045.12 431.136C1009.27 431.136 981.04 423.512 960.434 408.263C940.241 392.603 927.259 369.525 921.49 339.028H904.181L910.981 272.265H922.726C922.726 289.986 926.023 304.41 932.617 315.537C939.623 326.252 949.719 334.083 962.907 339.028C976.507 343.973 993.198 346.446 1012.98 346.446C1033.17 346.446 1049.66 343.973 1062.43 339.028C1075.21 334.083 1084.69 326.046 1090.87 314.919C1097.05 303.792 1100.14 288.956 1100.14 270.411C1100.14 251.041 1097.05 235.999 1090.87 225.284C1084.69 214.157 1075.21 206.121 1062.43 201.176C1049.66 196.23 1033.38 193.757 1013.6 193.757C983.513 193.757 960.847 199.321 945.598 210.448C930.35 221.575 922.726 240.533 922.726 267.32H910.981V197.466H927.671C933.029 171.503 945.392 150.279 964.762 133.795C984.543 117.31 1012.77 109.068 1049.45 109.068C1080.36 109.068 1106.53 115.662 1127.96 128.849C1149.39 142.037 1165.67 160.788 1176.79 185.103C1188.33 209.006 1194.1 237.442 1194.1 270.411C1194.1 302.968 1188.33 331.404 1176.79 355.719C1165.67 379.621 1148.98 398.167 1126.72 411.354C1104.47 424.542 1077.27 431.136 1045.12 431.136ZM915.926 424.954H830V10.7783H922.726V325.428L915.926 333.464V424.954Z\\\" fill=\\\"black\\\"/>\\r\\n</svg>\\r\\n\"","export default \"<svg width=\\\"50\\\" height=\\\"50\\\" viewBox=\\\"0 0 50 50\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\r\\n<path d=\\\"M31.4571 10.4169C30.714 10.783 30.4083 11.6822 30.7744 12.4254C31.1405 13.1685 32.0397 13.4742 32.7829 13.1081L32.12 11.7625L31.4571 10.4169ZM44.3 28.2275C44.3 27.3991 43.6284 26.7275 42.8 26.7275C41.9716 26.7275 41.3 27.3991 41.3 28.2275H42.8H44.3ZM26.0607 0.911874C25.4749 0.326088 24.5251 0.326088 23.9393 0.911874C23.3536 1.49766 23.3536 2.44741 23.9393 3.03319L25 1.97253L26.0607 0.911874ZM33.9 10.8725L34.9607 11.9332C35.5464 11.3474 35.5464 10.3977 34.9607 9.81187L33.9 10.8725ZM23.9393 18.7119C23.3536 19.2977 23.3536 20.2474 23.9393 20.8332C24.5251 21.419 25.4749 21.419 26.0607 20.8332L25 19.7725L23.9393 18.7119ZM32.12 11.7625C32.7829 13.1081 32.7838 13.1077 32.7848 13.1072C32.7851 13.107 32.7861 13.1065 32.7868 13.1062C32.7882 13.1055 32.7896 13.1048 32.791 13.1041C32.794 13.1026 32.7971 13.101 32.8005 13.0993C32.8071 13.0959 32.8146 13.0921 32.8229 13.0878C32.8393 13.0792 32.859 13.0686 32.8813 13.0561C32.9252 13.0315 32.9828 12.9974 33.0478 12.9543C33.1597 12.8798 33.3709 12.728 33.5596 12.493C33.7406 12.2674 34.0582 11.7606 33.9356 11.0758C33.8134 10.3931 33.3372 10.002 33.0232 9.81189C32.4374 9.45724 31.5535 9.27046 30.4249 9.14527C29.2187 9.01147 27.4833 8.92753 25 8.92753V10.4275V11.9275C27.4317 11.9275 29.0439 12.0105 30.0942 12.127C31.2222 12.2521 31.5039 12.3991 31.4694 12.3782C31.4309 12.3549 31.0768 12.1307 30.9826 11.6044C30.888 11.0761 31.1396 10.7153 31.2201 10.6149C31.3083 10.5051 31.3846 10.4575 31.3868 10.4561C31.3968 10.4494 31.4058 10.444 31.4148 10.439C31.4196 10.4363 31.4253 10.4332 31.4321 10.4296C31.4355 10.4278 31.4393 10.4259 31.4434 10.4238C31.4455 10.4228 31.4477 10.4217 31.4499 10.4205C31.4511 10.4199 31.4523 10.4194 31.4535 10.4188C31.4541 10.4185 31.455 10.418 31.4553 10.4179C31.4562 10.4174 31.4571 10.4169 32.12 11.7625ZM25 10.4275V8.92753C21.1828 8.92753 17.4514 10.0595 14.2775 12.1802L15.1109 13.4274L15.9442 14.6746C18.6247 12.8835 21.7762 11.9275 25 11.9275V10.4275ZM15.1109 13.4274L14.2775 12.1802C11.1036 14.3009 8.6299 17.3151 7.16913 20.8417L8.55495 21.4158L9.94077 21.9898C11.1745 19.0114 13.2637 16.4656 15.9442 14.6746L15.1109 13.4274ZM8.55495 21.4158L7.16913 20.8417C5.70836 24.3684 5.32616 28.2489 6.07085 31.9928L7.54203 31.7001L9.01321 31.4075C8.38427 28.2456 8.70706 24.9682 9.94077 21.9898L8.55495 21.4158ZM7.54203 31.7001L6.07085 31.9928C6.81555 35.7366 8.65369 39.1755 11.3528 41.8747L12.4135 40.814L13.4742 39.7534C11.1946 37.4738 9.64215 34.5694 9.01321 31.4075L7.54203 31.7001ZM12.4135 40.814L11.3528 41.8747C14.052 44.5738 17.4909 46.412 21.2348 47.1567L21.5274 45.6855L21.82 44.2143C18.6581 43.5854 15.7538 42.033 13.4742 39.7534L12.4135 40.814ZM21.5274 45.6855L21.2348 47.1567C24.9786 47.9014 28.8592 47.5192 32.3858 46.0584L31.8118 44.6726L31.2377 43.2868C28.2593 44.5205 24.9819 44.8433 21.82 44.2143L21.5274 45.6855ZM31.8118 44.6726L32.3858 46.0584C35.9124 44.5976 38.9267 42.1239 41.0474 38.95L39.8002 38.1167L38.553 37.2833C36.7619 39.9638 34.2162 42.0531 31.2377 43.2868L31.8118 44.6726ZM39.8002 38.1167L41.0474 38.95C43.1681 35.7762 44.3 32.0447 44.3 28.2275H42.8H41.3C41.3 31.4514 40.344 34.6028 38.553 37.2833L39.8002 38.1167ZM25 1.97253L23.9393 3.03319L32.8393 11.9332L33.9 10.8725L34.9607 9.81187L26.0607 0.911874L25 1.97253ZM33.9 10.8725L32.8393 9.81187L23.9393 18.7119L25 19.7725L26.0607 20.8332L34.9607 11.9332L33.9 10.8725Z\\\" fill=\\\"black\\\"/>\\r\\n</svg>\\r\\n\"","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar path = require('../internals/path');\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(globalThis[namespace])\n : path[namespace] && path[namespace][method] || globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.48.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',\n license: 'https://github.com/zloirock/core-js/blob/v3.48.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n// add debugging info\nrequire('../internals/shared-store');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? globalThis : STATIC ? globalThis[TARGET] : globalThis[TARGET] && globalThis[TARGET].prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (!FORCED && !PROTO && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind methods to global for calling from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, globalThis);\n // wrap global constructors for prevent changes in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && (FORCED || !targetPrototype[key])) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","'use strict';\nrequire('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, [], argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar setArrayLength = require('../internals/array-set-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n setArrayLength(A, n);\n return A;\n }\n});\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) === 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n return target;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n var target = STATIC ? it : it && it.prototype;\n if (target) {\n if (!hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE === 1;\n var IS_FILTER = TYPE === 2;\n var IS_SOME = TYPE === 3;\n var IS_EVERY = TYPE === 4;\n var IS_FIND_INDEX = TYPE === 6;\n var IS_FILTER_REJECT = TYPE === 7;\n var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(self);\n var boundFunction = bind(callbackfn, that);\n var index = 0;\n var resIndex = 0;\n var target = IS_MAP ? arraySpeciesCreate($this, length) : IS_FILTER || IS_FILTER_REJECT ? arraySpeciesCreate($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) createProperty(target, index, result); // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: createProperty(target, resIndex++, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: createProperty(target, resIndex++, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = globalThis.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar RangeError = globalThis.RangeError;\nvar TypeError = globalThis.TypeError;\nvar QObject = globalThis.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar fallbackDefineProperty = function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n};\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a !== 7;\n}) ? fallbackDefineProperty : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null)));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n var $this = this === undefined ? globalThis : this;\n if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false;\n var descriptor = createPropertyDescriptor(1, value);\n try {\n setSymbolDescriptor($this, tag, descriptor);\n } catch (error) {\n if (!(error instanceof RangeError)) throw error;\n fallbackDefineProperty($this, tag, descriptor);\n }\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://tc39.es/ecma262/#sec-symbol.prototype.description\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar getInternalState = require('../internals/internal-state').get;\n\nmodule.exports = function isRawJSON(O) {\n if (!isObject(O)) return false;\n var state = getInternalState(O);\n return !!state && state.type === 'RawJSON';\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\n\nvar $SyntaxError = SyntaxError;\nvar $parseInt = parseInt;\nvar fromCharCode = String.fromCharCode;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar codePoints = {\n '\\\\\"': '\"',\n '\\\\\\\\': '\\\\',\n '\\\\/': '/',\n '\\\\b': '\\b',\n '\\\\f': '\\f',\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t'\n};\n\nvar IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n// eslint-disable-next-line regexp/no-control-character -- safe\nvar IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n\nmodule.exports = function (source, i) {\n var unterminated = true;\n var value = '';\n while (i < source.length) {\n var chr = at(source, i);\n if (chr === '\\\\') {\n var twoChars = slice(source, i, i + 2);\n if (hasOwn(codePoints, twoChars)) {\n value += codePoints[twoChars];\n i += 2;\n } else if (twoChars === '\\\\u') {\n i += 2;\n var fourHexDigits = slice(source, i, i + 4);\n if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n value += fromCharCode($parseInt(fourHexDigits, 16));\n i += 4;\n } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n } else if (chr === '\"') {\n unterminated = false;\n i++;\n break;\n } else {\n if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n value += chr;\n i++;\n }\n }\n if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n return { value: value, end: i };\n};\n","'use strict';\n/* eslint-disable es/no-json -- safe */\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n var unsafeInt = '9007199254740993';\n // eslint-disable-next-line es/no-json-rawjson -- feature detection\n var raw = JSON.rawJSON(unsafeInt);\n // eslint-disable-next-line es/no-json-israwjson -- feature detection\n return !JSON.isRawJSON(raw) || JSON.stringify(raw) !== unsafeInt;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isRawJSON = require('../internals/is-raw-json');\nvar isSymbol = require('../internals/is-symbol');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\nvar arraySlice = require('../internals/array-slice');\nvar parseJSONString = require('../internals/parse-json-string');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar NATIVE_RAW_JSON = require('../internals/native-raw-json');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar slice = uncurryThis(''.slice);\nvar push = uncurryThis([].push);\nvar numberToString = uncurryThis(1.1.toString);\n\nvar surrogates = /[\\uD800-\\uDFFF]/g;\nvar lowSurrogates = /^[\\uD800-\\uDBFF]$/;\nvar hiSurrogates = /^[\\uDC00-\\uDFFF]$/;\n\nvar MARK = uid();\nvar MARK_LENGTH = MARK.length;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')('stringify detection');\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) !== '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) !== '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithProperSymbolsConversion = WRONG_SYMBOLS_CONVERSION ? function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = getReplacerFunction(replacer);\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n args[1] = function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n if (!isSymbol(value)) return value;\n };\n return apply($stringify, null, args);\n} : $stringify;\n\nvar fixIllFormedJSON = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(lowSurrogates, match) && !exec(hiSurrogates, next)) || (exec(hiSurrogates, match) && !exec(lowSurrogates, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nvar getReplacerFunction = function (replacer) {\n if (isCallable(replacer)) return replacer;\n if (!isArray(replacer)) return;\n var rawLength = replacer.length;\n var keys = [];\n for (var i = 0; i < rawLength; i++) {\n var element = replacer[i];\n if (typeof element == 'string') push(keys, element);\n else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n }\n var keysLength = keys.length;\n var root = true;\n return function (key, value) {\n if (root) {\n root = false;\n return value;\n }\n if (isArray(this)) return value;\n for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n };\n};\n\n// `JSON.stringify` method\n// https://tc39.es/ecma262/#sec-json.stringify\n// https://github.com/tc39/proposal-json-parse-with-source\nif ($stringify) $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE || !NATIVE_RAW_JSON }, {\n stringify: function stringify(text, replacer, space) {\n var replacerFunction = getReplacerFunction(replacer);\n var rawStrings = [];\n\n var json = stringifyWithProperSymbolsConversion(text, function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n var v = isCallable(replacerFunction) ? call(replacerFunction, this, $String(key), value) : value;\n return !NATIVE_RAW_JSON && isRawJSON(v) ? MARK + (push(rawStrings, v.rawJSON) - 1) : v;\n }, space);\n\n if (typeof json != 'string') return json;\n\n if (ILL_FORMED_UNICODE) json = replace(json, surrogates, fixIllFormedJSON);\n\n if (NATIVE_RAW_JSON) return json;\n\n var result = '';\n var length = json.length;\n\n for (var i = 0; i < length; i++) {\n var chr = charAt(json, i);\n if (chr === '\"') {\n var end = parseJSONString(json, ++i).end - 1;\n var string = slice(json, i, end);\n result += slice(string, 0, MARK_LENGTH) === MARK\n ? rawStrings[slice(string, MARK_LENGTH)]\n : '\"' + string + '\"';\n i = end;\n } else result += chr;\n }\n\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-async-explicit-resource-management\ndefineWellKnownSymbol('asyncDispose');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-explicit-resource-management\ndefineWellKnownSymbol('dispose');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(globalThis.JSON, 'JSON', true);\n","'use strict';\nrequire('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-dispose');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.dispose');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n }\n\n return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = null;\n return createIterResultObject(undefined, true);\n }\n switch (state.kind) {\n case 'keys': return createIterResultObject(index, false);\n case 'values': return createIterResultObject(target[index], false);\n } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","'use strict';\nrequire('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar globalThis = require('../internals/global-this');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n setToStringTag(globalThis[COLLECTION_NAME], COLLECTION_NAME);\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n","'use strict';\nvar parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar METADATA = wellKnownSymbol('metadata');\nvar FunctionPrototype = Function.prototype;\n\n// Function.prototype[@@metadata]\n// https://github.com/tc39/proposal-decorator-metadata\nif (FunctionPrototype[METADATA] === undefined) {\n defineProperty(FunctionPrototype, METADATA, {\n value: null\n });\n}\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n","'use strict';\nvar parent = require('../../stable/symbol');\n\nrequire('../../modules/esnext.function.metadata');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.metadata');\n\nmodule.exports = parent;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Symbol = getBuiltIn('Symbol');\nvar keyFor = Symbol.keyFor;\nvar thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);\n\n// `Symbol.isRegisteredSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\nmodule.exports = Symbol.isRegisteredSymbol || function isRegisteredSymbol(value) {\n try {\n return keyFor(thisSymbolValue(value)) !== undefined;\n } catch (error) {\n return false;\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isRegisteredSymbol = require('../internals/symbol-is-registered');\n\n// `Symbol.isRegisteredSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\n$({ target: 'Symbol', stat: true }, {\n isRegisteredSymbol: isRegisteredSymbol\n});\n","'use strict';\nvar shared = require('../internals/shared');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isSymbol = require('../internals/is-symbol');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar Symbol = getBuiltIn('Symbol');\nvar $isWellKnownSymbol = Symbol.isWellKnownSymbol;\nvar getOwnPropertyNames = getBuiltIn('Object', 'getOwnPropertyNames');\nvar thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);\nvar WellKnownSymbolsStore = shared('wks');\n\nfor (var i = 0, symbolKeys = getOwnPropertyNames(Symbol), symbolKeysLength = symbolKeys.length; i < symbolKeysLength; i++) {\n // some old engines throws on access to some keys like `arguments` or `caller`\n try {\n var symbolKey = symbolKeys[i];\n if (isSymbol(Symbol[symbolKey])) wellKnownSymbol(symbolKey);\n } catch (error) { /* empty */ }\n}\n\n// `Symbol.isWellKnownSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\nmodule.exports = function isWellKnownSymbol(value) {\n if ($isWellKnownSymbol && $isWellKnownSymbol(value)) return true;\n try {\n var symbol = thisSymbolValue(value);\n for (var j = 0, keys = getOwnPropertyNames(WellKnownSymbolsStore), keysLength = keys.length; j < keysLength; j++) {\n // eslint-disable-next-line eqeqeq -- polyfilled symbols case\n if (WellKnownSymbolsStore[keys[j]] == symbol) return true;\n }\n } catch (error) { /* empty */ }\n return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isWellKnownSymbol = require('../internals/symbol-is-well-known');\n\n// `Symbol.isWellKnownSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\n$({ target: 'Symbol', stat: true, forced: true }, {\n isWellKnownSymbol: isWellKnownSymbol\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.customMatcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('customMatcher');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n","'use strict';\nvar $ = require('../internals/export');\nvar isRegisteredSymbol = require('../internals/symbol-is-registered');\n\n// `Symbol.isRegistered` method\n// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\n$({ target: 'Symbol', stat: true, name: 'isRegisteredSymbol' }, {\n isRegistered: isRegisteredSymbol\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isWellKnownSymbol = require('../internals/symbol-is-well-known');\n\n// `Symbol.isWellKnown` method\n// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\n$({ target: 'Symbol', stat: true, name: 'isWellKnownSymbol', forced: true }, {\n isWellKnown: isWellKnownSymbol\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.metadataKey` well-known symbol\n// https://github.com/tc39/proposal-decorator-metadata\ndefineWellKnownSymbol('metadataKey');\n","'use strict';\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n","'use strict';\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\ndefineWellKnownSymbol('replaceAll');\n","'use strict';\nvar parent = require('../../actual/symbol');\nrequire('../../modules/esnext.symbol.is-registered-symbol');\nrequire('../../modules/esnext.symbol.is-well-known-symbol');\nrequire('../../modules/esnext.symbol.custom-matcher');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.is-registered');\nrequire('../../modules/esnext.symbol.is-well-known');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.metadata-key');\nrequire('../../modules/esnext.symbol.pattern-match');\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","'use strict';\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.string.iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = getIteratorMethod;\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR, METHOD) {\n var Namespace = path[CONSTRUCTOR + 'Prototype'];\n var pureMethod = Namespace && Namespace[METHOD];\n if (pureMethod) return pureMethod;\n var NativeConstructor = globalThis[CONSTRUCTOR];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n return NativePrototype && NativePrototype[METHOD];\n};\n","'use strict';\nrequire('../../../modules/es.array.push');\nvar getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');\n\nmodule.exports = getBuiltInPrototypeMethod('Array', 'push');\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/push');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.push;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.push) ? method : own;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar setArrayLength = require('../internals/array-set-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar nativeSlice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return nativeSlice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n setArrayLength(result, n);\n return result;\n }\n});\n","'use strict';\nrequire('../../../modules/es.array.slice');\nvar getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');\n\nmodule.exports = getBuiltInPrototypeMethod('Array', 'slice');\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.slice;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n","'use strict';\nvar parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../stable/instance/slice');\n\nmodule.exports = parent;\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar setArrayLength = require('../internals/array-set-length');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n result = IS_CONSTRUCTOR ? new this() : [];\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n setArrayLength(result, index);\n return result;\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n // eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n try {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n // eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","import _Array$isArray from \"core-js-pure/features/array/is-array.js\";\nfunction _arrayWithHoles(r) {\n if (_Array$isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","import _Symbol from \"core-js-pure/features/symbol/index.js\";\nimport _getIteratorMethod from \"core-js-pure/features/get-iterator-method.js\";\nimport _pushInstanceProperty from \"core-js-pure/features/instance/push.js\";\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof _Symbol && _getIteratorMethod(r) || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (_pushInstanceProperty(a).call(a, e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","import _sliceInstanceProperty from \"core-js-pure/features/instance/slice.js\";\nimport _Array$from from \"core-js-pure/features/array/from.js\";\nimport arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n var _context;\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = _sliceInstanceProperty(_context = {}.toString.call(r)).call(_context, 8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? _Array$from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n","'use strict';\nrequire('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n","'use strict';\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.symbol.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n","import _Symbol from \"core-js-pure/features/symbol/index.js\";\nimport _Symbol$iterator from \"core-js-pure/features/symbol/iterator.js\";\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof _Symbol && o.constructor === _Symbol && o !== _Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","'use strict';\nrequire('../../modules/es.date.to-primitive');\nrequire('../../modules/es.symbol.to-primitive');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('toPrimitive');\n","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nimport _Symbol$toPrimitive from \"core-js-pure/features/symbol/to-primitive.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[_Symbol$toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _Object$defineProperty from \"core-js-pure/features/object/define-property.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), _Object$defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), _Object$defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import _Object$defineProperty from \"core-js-pure/features/object/define-property.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? _Object$defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nrequire('../../../modules/es.array.filter');\nvar getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');\n\nmodule.exports = getBuiltInPrototypeMethod('Array', 'filter');\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nrequire('../../modules/es.object.keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.keys;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, {\n forEach: forEach\n});\n","'use strict';\nrequire('../../../modules/es.array.for-each');\nvar getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');\n\nmodule.exports = getBuiltInPrototypeMethod('Array', 'forEach');\n","'use strict';\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/for-each');\nrequire('../../modules/web.dom-collections.for-each');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.forEach;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.forEach)\n || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n","'use strict';\nvar parent = require('../../../es/array/virtual/for-each');\n\nmodule.exports = parent;\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return nativeReverse(this);\n }\n});\n","'use strict';\nrequire('../../../modules/es.array.reverse');\nvar getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');\n\nmodule.exports = getBuiltInPrototypeMethod('Array', 'reverse');\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/reverse');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.reverse;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reverse) ? method : own;\n};\n","module.exports = require(\"core-js-pure/stable/instance/slice\");","'use strict';\nrequire('../../../modules/es.array.concat');\nvar getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');\n\nmodule.exports = getBuiltInPrototypeMethod('Array', 'concat');\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n","/*!\n * streaming-json 0.1.4 (https://github.com/karminski/streaming-json)\n * API https://github.com/karminski/streaming-json/blob/master/doc/api.md\n * Copyright 2017-2024 karminski. All Rights Reserved\n * Licensed under MIT (https://github.com/karminski/streaming-json/blob/master/LICENSE)\n */\n\nimport _slicedToArray from '@babel/runtime-corejs3/helpers/slicedToArray';\nimport _classCallCheck from '@babel/runtime-corejs3/helpers/classCallCheck';\nimport _createClass from '@babel/runtime-corejs3/helpers/createClass';\nimport _defineProperty from '@babel/runtime-corejs3/helpers/defineProperty';\nimport _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';\nimport _Object$keys from '@babel/runtime-corejs3/core-js-stable/object/keys';\nimport _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/for-each';\nimport _reverseInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/reverse';\nimport _sliceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/slice';\nimport _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';\n\nvar _TOKEN_SYMBOL_MAP;\n// token const\nvar TOKEN_EOF = 0; // end-of-file\nvar TOKEN_IGNORED = 1; // \\t', '\\n', '\\v', '\\f', '\\r', ' '\nvar TOKEN_LEFT_BRACKET = 2; // [\nvar TOKEN_RIGHT_BRACKET = 3; // ]\nvar TOKEN_LEFT_BRACE = 4; // {\nvar TOKEN_RIGHT_BRACE = 5; // }\nvar TOKEN_COLON = 6; // :\nvar TOKEN_DOT = 7; // .\nvar TOKEN_COMMA = 8; // ,\nvar TOKEN_QUOTE = 9; // \"\nvar TOKEN_ESCAPE_CHARACTER = 10; // \\\nvar TOKEN_SLASH = 11; // /\nvar TOKEN_NEGATIVE = 12; // -\nvar TOKEN_NULL = 13; // null\nvar TOKEN_TRUE = 14; // true\nvar TOKEN_FALSE = 15; // false\nvar TOKEN_ALPHABET_LOWERCASE_A = 16; // a\nvar TOKEN_ALPHABET_LOWERCASE_B = 17; // b\nvar TOKEN_ALPHABET_LOWERCASE_C = 18; // c\nvar TOKEN_ALPHABET_LOWERCASE_D = 19; // d\nvar TOKEN_ALPHABET_LOWERCASE_E = 20; // e\nvar TOKEN_ALPHABET_LOWERCASE_F = 21; // f\nvar TOKEN_ALPHABET_LOWERCASE_L = 22; // l\nvar TOKEN_ALPHABET_LOWERCASE_N = 23; // n\nvar TOKEN_ALPHABET_LOWERCASE_R = 24; // r\nvar TOKEN_ALPHABET_LOWERCASE_S = 25; // s\nvar TOKEN_ALPHABET_LOWERCASE_T = 26; // t\nvar TOKEN_ALPHABET_LOWERCASE_U = 27; // u\nvar TOKEN_ALPHABET_UPPERCASE_A = 28; // A\nvar TOKEN_ALPHABET_UPPERCASE_B = 29; // B\nvar TOKEN_ALPHABET_UPPERCASE_C = 30; // C\nvar TOKEN_ALPHABET_UPPERCASE_D = 31; // D\nvar TOKEN_ALPHABET_UPPERCASE_E = 32; // E\nvar TOKEN_ALPHABET_UPPERCASE_F = 33; // F\nvar TOKEN_NUMBER = 34; // number\nvar TOKEN_NUMBER_0 = 35; // 0\nvar TOKEN_NUMBER_1 = 36; // 1\nvar TOKEN_NUMBER_2 = 37; // 2\nvar TOKEN_NUMBER_3 = 38; // 3\nvar TOKEN_NUMBER_4 = 39; // 4\nvar TOKEN_NUMBER_5 = 40; // 5\nvar TOKEN_NUMBER_6 = 41; // 6\nvar TOKEN_NUMBER_7 = 42; // 7\nvar TOKEN_NUMBER_8 = 43; // 8\nvar TOKEN_NUMBER_9 = 44; // 9\nvar TOKEN_OTHERS = 45; // anything else in json\n\n// token symbol const\nvar TOKEN_EOF_SYMBOL = 'EOF';\nvar TOKEN_LEFT_BRACKET_SYMBOL = '[';\nvar TOKEN_RIGHT_BRACKET_SYMBOL = ']';\nvar TOKEN_LEFT_BRACE_SYMBOL = '{';\nvar TOKEN_RIGHT_BRACE_SYMBOL = '}';\nvar TOKEN_COLON_SYMBOL = ':';\nvar TOKEN_DOT_SYMBOL = '.';\nvar TOKEN_COMMA_SYMBOL = ',';\nvar TOKEN_QUOTE_SYMBOL = '\"';\nvar TOKEN_ESCAPE_CHARACTER_SYMBOL = '\\\\';\nvar TOKEN_SLASH_SYMBOL = '/';\nvar TOKEN_NEGATIVE_SYMBOL = '-';\nvar TOKEN_NULL_SYMBOL = 'null';\nvar TOKEN_TRUE_SYMBOL = 'true';\nvar TOKEN_FALSE_SYMBOL = 'false';\nvar TOKEN_ALPHABET_LOWERCASE_A_SYMBOL = 'a';\nvar TOKEN_ALPHABET_LOWERCASE_B_SYMBOL = 'b';\nvar TOKEN_ALPHABET_LOWERCASE_C_SYMBOL = 'c';\nvar TOKEN_ALPHABET_LOWERCASE_D_SYMBOL = 'd';\nvar TOKEN_ALPHABET_LOWERCASE_E_SYMBOL = 'e';\nvar TOKEN_ALPHABET_LOWERCASE_F_SYMBOL = 'f';\nvar TOKEN_ALPHABET_LOWERCASE_L_SYMBOL = 'l';\nvar TOKEN_ALPHABET_LOWERCASE_N_SYMBOL = 'n';\nvar TOKEN_ALPHABET_LOWERCASE_R_SYMBOL = 'r';\nvar TOKEN_ALPHABET_LOWERCASE_S_SYMBOL = 's';\nvar TOKEN_ALPHABET_LOWERCASE_T_SYMBOL = 't';\nvar TOKEN_ALPHABET_LOWERCASE_U_SYMBOL = 'u';\nvar TOKEN_ALPHABET_UPPERCASE_A_SYMBOL = 'A';\nvar TOKEN_ALPHABET_UPPERCASE_B_SYMBOL = 'B';\nvar TOKEN_ALPHABET_UPPERCASE_C_SYMBOL = 'C';\nvar TOKEN_ALPHABET_UPPERCASE_D_SYMBOL = 'D';\nvar TOKEN_ALPHABET_UPPERCASE_E_SYMBOL = 'E';\nvar TOKEN_ALPHABET_UPPERCASE_F_SYMBOL = 'F';\nvar TOKEN_NUMBER_0_SYMBOL = '0';\nvar TOKEN_NUMBER_1_SYMBOL = '1';\nvar TOKEN_NUMBER_2_SYMBOL = '2';\nvar TOKEN_NUMBER_3_SYMBOL = '3';\nvar TOKEN_NUMBER_4_SYMBOL = '4';\nvar TOKEN_NUMBER_5_SYMBOL = '5';\nvar TOKEN_NUMBER_6_SYMBOL = '6';\nvar TOKEN_NUMBER_7_SYMBOL = '7';\nvar TOKEN_NUMBER_8_SYMBOL = '8';\nvar TOKEN_NUMBER_9_SYMBOL = '9';\n\n// token symbol const\nvar TOKEN_SYMBOL_MAP = (_TOKEN_SYMBOL_MAP = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_TOKEN_SYMBOL_MAP, TOKEN_EOF, TOKEN_EOF_SYMBOL), TOKEN_LEFT_BRACKET, TOKEN_LEFT_BRACKET_SYMBOL), TOKEN_RIGHT_BRACKET, TOKEN_RIGHT_BRACKET_SYMBOL), TOKEN_LEFT_BRACE, TOKEN_LEFT_BRACE_SYMBOL), TOKEN_RIGHT_BRACE, TOKEN_RIGHT_BRACE_SYMBOL), TOKEN_COLON, TOKEN_COLON_SYMBOL), TOKEN_DOT, TOKEN_DOT_SYMBOL), TOKEN_COMMA, TOKEN_COMMA_SYMBOL), TOKEN_QUOTE, TOKEN_QUOTE_SYMBOL), TOKEN_ESCAPE_CHARACTER, TOKEN_ESCAPE_CHARACTER_SYMBOL), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_TOKEN_SYMBOL_MAP, TOKEN_SLASH, TOKEN_SLASH_SYMBOL), TOKEN_NEGATIVE, TOKEN_NEGATIVE_SYMBOL), TOKEN_NULL, TOKEN_NULL_SYMBOL), TOKEN_TRUE, TOKEN_TRUE_SYMBOL), TOKEN_FALSE, TOKEN_FALSE_SYMBOL), TOKEN_ALPHABET_LOWERCASE_A, TOKEN_ALPHABET_LOWERCASE_A_SYMBOL), TOKEN_ALPHABET_LOWERCASE_B, TOKEN_ALPHABET_LOWERCASE_B_SYMBOL), TOKEN_ALPHABET_LOWERCASE_C, TOKEN_ALPHABET_LOWERCASE_C_SYMBOL), TOKEN_ALPHABET_LOWERCASE_D, TOKEN_ALPHABET_LOWERCASE_D_SYMBOL), TOKEN_ALPHABET_LOWERCASE_E, TOKEN_ALPHABET_LOWERCASE_E_SYMBOL), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_TOKEN_SYMBOL_MAP, TOKEN_ALPHABET_LOWERCASE_F, TOKEN_ALPHABET_LOWERCASE_F_SYMBOL), TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_L_SYMBOL), TOKEN_ALPHABET_LOWERCASE_N, TOKEN_ALPHABET_LOWERCASE_N_SYMBOL), TOKEN_ALPHABET_LOWERCASE_R, TOKEN_ALPHABET_LOWERCASE_R_SYMBOL), TOKEN_ALPHABET_LOWERCASE_S, TOKEN_ALPHABET_LOWERCASE_S_SYMBOL), TOKEN_ALPHABET_LOWERCASE_T, TOKEN_ALPHABET_LOWERCASE_T_SYMBOL), TOKEN_ALPHABET_LOWERCASE_U, TOKEN_ALPHABET_LOWERCASE_U_SYMBOL), TOKEN_ALPHABET_UPPERCASE_A, TOKEN_ALPHABET_UPPERCASE_A_SYMBOL), TOKEN_ALPHABET_UPPERCASE_B, TOKEN_ALPHABET_UPPERCASE_B_SYMBOL), TOKEN_ALPHABET_UPPERCASE_C, TOKEN_ALPHABET_UPPERCASE_C_SYMBOL), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_TOKEN_SYMBOL_MAP, TOKEN_ALPHABET_UPPERCASE_D, TOKEN_ALPHABET_UPPERCASE_D_SYMBOL), TOKEN_ALPHABET_UPPERCASE_E, TOKEN_ALPHABET_UPPERCASE_E_SYMBOL), TOKEN_ALPHABET_UPPERCASE_F, TOKEN_ALPHABET_UPPERCASE_F_SYMBOL), TOKEN_NUMBER_0, TOKEN_NUMBER_0_SYMBOL), TOKEN_NUMBER_1, TOKEN_NUMBER_1_SYMBOL), TOKEN_NUMBER_2, TOKEN_NUMBER_2_SYMBOL), TOKEN_NUMBER_3, TOKEN_NUMBER_3_SYMBOL), TOKEN_NUMBER_4, TOKEN_NUMBER_4_SYMBOL), TOKEN_NUMBER_5, TOKEN_NUMBER_5_SYMBOL), TOKEN_NUMBER_6, TOKEN_NUMBER_6_SYMBOL), _defineProperty(_defineProperty(_defineProperty(_TOKEN_SYMBOL_MAP, TOKEN_NUMBER_7, TOKEN_NUMBER_7_SYMBOL), TOKEN_NUMBER_8, TOKEN_NUMBER_8_SYMBOL), TOKEN_NUMBER_9, TOKEN_NUMBER_9_SYMBOL));\n\n// helper method check if token is in ignore token\nfunction isIgnoreToken(c) {\n switch (c) {\n case '\\t':\n case '\\n':\n case '\\v':\n case '\\f':\n case '\\r':\n case ' ':\n return true;\n }\n return false;\n}\n\n// get array real length\nfunction arrayLength(a) {\n var _context;\n if (!a) {\n return 0;\n }\n return _filterInstanceProperty(_context = _Object$keys(a)).call(_context, function (el) {\n return !(+el % 1) && +el >= 0 && +el < Math.pow(2, 32);\n }).length;\n}\n\n// helper method match stack with tokens\nfunction matchStack(stack, tokens) {\n var pointer = arrayLength(stack);\n var tokensLeft = arrayLength(tokens);\n for (;;) {\n tokensLeft--;\n pointer--;\n if (tokensLeft < 0) {\n break;\n }\n if (pointer < 0) {\n return false;\n }\n if (stack[pointer] !== tokens[tokensLeft]) {\n return false;\n }\n }\n return true;\n}\n\n// main lexer\nvar Lexer = /*#__PURE__*/function () {\n function Lexer() {\n _classCallCheck(this, Lexer);\n this.JSONContent = ''; // input JSON content\n this.PaddingContent = ''; // padding content for ignored characters and escape characters, etc.\n this.JSONSegment = ''; // appended JSON segment by the AppendString() method.\n this.TokenStack = []; // token stack for input JSON\n this.MirrorTokenStack = []; // token stack for auto-completed tokens\n }\n\n // Get token on the stack top\n _createClass(Lexer, [{\n key: \"getTopTokenOnStack\",\n value: function getTopTokenOnStack() {\n if (this.TokenStack.length === 0) {\n return TOKEN_EOF;\n }\n return this.TokenStack[this.TokenStack.length - 1];\n }\n\n // Get token on the mirror stack top\n }, {\n key: \"getTopTokenOnMirrorStack\",\n value: function getTopTokenOnMirrorStack() {\n if (this.MirrorTokenStack.length === 0) {\n return TOKEN_EOF;\n }\n return this.MirrorTokenStack[this.MirrorTokenStack.length - 1];\n }\n\n // Pop token on the stack top\n }, {\n key: \"popTokenStack\",\n value: function popTokenStack() {\n if (this.TokenStack.length === 0) {\n return TOKEN_EOF;\n }\n return this.TokenStack.pop();\n }\n\n // Pop token on the mirror stack top\n }, {\n key: \"popMirrorTokenStack\",\n value: function popMirrorTokenStack() {\n if (this.MirrorTokenStack.length === 0) {\n return TOKEN_EOF;\n }\n return this.MirrorTokenStack.pop();\n }\n\n // Push token into the stack\n }, {\n key: \"pushTokenStack\",\n value: function pushTokenStack(token) {\n this.TokenStack.push(token);\n }\n\n // Push token into the mirror stack\n }, {\n key: \"pushMirrorTokenStack\",\n value: function pushMirrorTokenStack(token) {\n this.MirrorTokenStack.push(token);\n }\n\n // Convert mirror stack token into string\n }, {\n key: \"dumpMirrorTokenStackToString\",\n value: function dumpMirrorTokenStackToString() {\n var _context2, _context3, _context4;\n var ret = '';\n _forEachInstanceProperty(_context2 = _reverseInstanceProperty(_context3 = _sliceInstanceProperty(_context4 = this.MirrorTokenStack).call(_context4)).call(_context3)).call(_context2, function (item) {\n ret += TOKEN_SYMBOL_MAP[item];\n });\n return ret;\n }\n\n // Skip JSON segment by length n\n }, {\n key: \"skipJSONSegment\",\n value: function skipJSONSegment(n) {\n this.JSONSegment = this.JSONSegment.substring(n);\n }\n\n // Push negative symbol `-` into JSON content\n }, {\n key: \"pushNegativeIntoJSONContent\",\n value: function pushNegativeIntoJSONContent() {\n this.JSONContent += TOKEN_NEGATIVE_SYMBOL;\n }\n\n // Push byte into JSON content by given\n }, {\n key: \"pushByteIntoPaddingContent\",\n value: function pushByteIntoPaddingContent(s) {\n this.PaddingContent += s;\n }\n\n // Append padding content into JSON content\n }, {\n key: \"appendPaddingContentToJSONContent\",\n value: function appendPaddingContentToJSONContent() {\n this.JSONContent += this.PaddingContent;\n }\n\n // Check if padding content is empty\n }, {\n key: \"havePaddingContent\",\n value: function havePaddingContent() {\n return this.PaddingContent.length > 0;\n }\n\n // Set padding content to empty\n }, {\n key: \"cleanPaddingContent\",\n value: function cleanPaddingContent() {\n this.PaddingContent = '';\n }\n\n // check if JSON stream stopped at an object property's key start, like `{\"`\n }, {\n key: \"streamStoppedInAnObjectKeyStart\",\n value: function streamStoppedInAnObjectKeyStart() {\n // `{`, `\"` in stack, or `,`, `\"` in stack\n var case1 = [TOKEN_LEFT_BRACE, TOKEN_QUOTE];\n var case2 = [TOKEN_COMMA, TOKEN_QUOTE];\n // `}` in mirror stack\n var case3 = [TOKEN_RIGHT_BRACE];\n return (matchStack(this.TokenStack, case1) || matchStack(this.TokenStack, case2)) && matchStack(this.MirrorTokenStack, case3);\n }\n\n // check if JSON stream stopped in an object property's key, like `{\"field`\n }, {\n key: \"streamStoppedInAnObjectKeyEnd\",\n value: function streamStoppedInAnObjectKeyEnd() {\n // `{`, `\"`, `\"` in stack, or `,`, `\"`, `\"` in stack\n var case1 = [TOKEN_LEFT_BRACE, TOKEN_QUOTE, TOKEN_QUOTE];\n var case2 = [TOKEN_COMMA, TOKEN_QUOTE, TOKEN_QUOTE];\n // `\"`, `:`, `n`, `u`, `l`, `l`, `}` in mirror stack\n var case3 = [TOKEN_RIGHT_BRACE, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_U, TOKEN_ALPHABET_LOWERCASE_N, TOKEN_COLON, TOKEN_QUOTE];\n return (matchStack(this.TokenStack, case1) || matchStack(this.TokenStack, case2)) && matchStack(this.MirrorTokenStack, case3);\n }\n\n // check if JSON stream stopped in an object property's value start, like `{\"field\": \"`\n }, {\n key: \"streamStoppedInAnObjectStringValueStart\",\n value: function streamStoppedInAnObjectStringValueStart() {\n // `:`, `\"` in stack\n var case1 = [TOKEN_COLON, TOKEN_QUOTE];\n // `n`, `u`, `l`, `l`, `}` in mirror stack\n var case2 = [TOKEN_RIGHT_BRACE, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_U, TOKEN_ALPHABET_LOWERCASE_N];\n return matchStack(this.TokenStack, case1) && matchStack(this.MirrorTokenStack, case2);\n }\n\n // check if JSON stream stopped in an object property's value finish, like `{\"field\": \"value\"`\n }, {\n key: \"streamStoppedInAnObjectValueEnd\",\n value: function streamStoppedInAnObjectValueEnd() {\n // `\"`, `}` left\n var tokens = [TOKEN_RIGHT_BRACE, TOKEN_QUOTE];\n return matchStack(this.MirrorTokenStack, tokens);\n }\n\n // check if JSON stream stopped in an object property's value start by array, like `{\"field\":[`\n }, {\n key: \"streamStoppedInAnObjectArrayValueStart\",\n value: function streamStoppedInAnObjectArrayValueStart() {\n // `:`, `[` in stack\n var case1 = [TOKEN_COLON, TOKEN_LEFT_BRACKET];\n // `n`, `u`, `l`, `l`, `}` in mirror stack\n var case2 = [TOKEN_RIGHT_BRACE, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_U, TOKEN_ALPHABET_LOWERCASE_N];\n return matchStack(this.TokenStack, case1) && matchStack(this.MirrorTokenStack, case2);\n }\n\n // check if JSON stream stopped in an object property's value start by object, like `{\"field\":{`\n }, {\n key: \"streamStoppedInAnObjectObjectValueStart\",\n value: function streamStoppedInAnObjectObjectValueStart() {\n // `:`, `{` in stack\n var case1 = [TOKEN_COLON, TOKEN_LEFT_BRACE];\n // `n`, `u`, `l`, `l`, `}` in mirror stack\n var case2 = [TOKEN_RIGHT_BRACE, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_U, TOKEN_ALPHABET_LOWERCASE_N];\n return matchStack(this.TokenStack, case1) && matchStack(this.MirrorTokenStack, case2);\n }\n\n // check if JSON stream stopped in an object property's negative number value start, like `:-`\n }, {\n key: \"streamStoppedInAnObjectNegativeNumberValueStart\",\n value: function streamStoppedInAnObjectNegativeNumberValueStart() {\n // `:`, `-` in stack\n var case1 = [TOKEN_COLON, TOKEN_NEGATIVE];\n return matchStack(this.TokenStack, case1);\n }\n\n // check if JSON stream stopped in an object property's negative number value start, like `-`\n }, {\n key: \"streamStoppedInANegativeNumberValueStart\",\n value: function streamStoppedInANegativeNumberValueStart() {\n // `-` in stack\n var case1 = [TOKEN_NEGATIVE];\n // `0` in mirror stack\n var case2 = [TOKEN_NUMBER_0];\n return matchStack(this.TokenStack, case1) && matchStack(this.MirrorTokenStack, case2);\n }\n\n // check if JSON stream stopped in an array\n }, {\n key: \"streamStoppedInAnArray\",\n value: function streamStoppedInAnArray() {\n return this.getTopTokenOnMirrorStack() === TOKEN_RIGHT_BRACKET;\n }\n\n // check if JSON stream stopped in an array's string value end, like `[\"value\"]`\n }, {\n key: \"streamStoppedInAnArrayStringValueEnd\",\n value: function streamStoppedInAnArrayStringValueEnd() {\n // `\"`, `\"` in stack\n var case1 = [TOKEN_QUOTE, TOKEN_QUOTE];\n // `\"`, `]` in mirror stack\n var case2 = [TOKEN_RIGHT_BRACKET, TOKEN_QUOTE];\n return matchStack(this.TokenStack, case1) && matchStack(this.MirrorTokenStack, case2);\n }\n\n // check if JSON stream stopped in an object property's value start by array, like `{\"field\":{`\n }, {\n key: \"streamStoppedInAnObjectNullValuePlaceholderStart\",\n value: function streamStoppedInAnObjectNullValuePlaceholderStart() {\n // `n`, `u`, `l`, `l`, `}` in mirror stack\n var case1 = [TOKEN_RIGHT_BRACE, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_U, TOKEN_ALPHABET_LOWERCASE_N];\n return matchStack(this.MirrorTokenStack, case1);\n }\n\n // check if JSON stream stopped in a string, like `\"\"`\n }, {\n key: \"streamStoppedInAString\",\n value: function streamStoppedInAString() {\n return this.getTopTokenOnStack() === TOKEN_QUOTE && this.getTopTokenOnMirrorStack() === TOKEN_QUOTE;\n }\n\n // check if JSON stream stopped in a string's unicode escape, like `\\u????`\n }, {\n key: \"streamStoppedInAnStringUnicodeEscape\",\n value: function streamStoppedInAnStringUnicodeEscape() {\n // `\\`, `u` in stack\n var case1 = [TOKEN_ESCAPE_CHARACTER, TOKEN_ALPHABET_LOWERCASE_U];\n // `\"` in mirror stack\n var case2 = [TOKEN_QUOTE];\n return matchStack(this.TokenStack, case1) && matchStack(this.MirrorTokenStack, case2);\n }\n\n // check if JSON stream stopped in a number, like `[0-9]`\n }, {\n key: \"streamStoppedInANumber\",\n value: function streamStoppedInANumber() {\n return this.getTopTokenOnStack() === TOKEN_NUMBER;\n }\n\n // check if JSON stream stopped in a number first decimal place, like `.?`\n }, {\n key: \"streamStoppedInANumberDecimalPart\",\n value: function streamStoppedInANumberDecimalPart() {\n return this.getTopTokenOnStack() === TOKEN_DOT;\n }\n\n // check if JSON stream stopped in a number other decimal places (except first place), like `.[0-9]?`\n }, {\n key: \"streamStoppedInANumberDecimalPartMiddle\",\n value: function streamStoppedInANumberDecimalPartMiddle() {\n // `.`, TOKEN_NUMBER in stack\n var case1 = [TOKEN_DOT, TOKEN_NUMBER];\n return matchStack(this.TokenStack, case1);\n }\n\n // check if JSON stream stopped in escape character, like `\\`\n }, {\n key: \"streamStoppedWithLeadingEscapeCharacter\",\n value: function streamStoppedWithLeadingEscapeCharacter() {\n return this.getTopTokenOnStack() === TOKEN_ESCAPE_CHARACTER;\n }\n\n // lexer match JSON token method, convert JSON segment to JSON token\n }, {\n key: \"matchToken\",\n value: function matchToken() {\n // segment end\n if (this.JSONSegment.length === 0) {\n return [TOKEN_EOF, 0];\n }\n var tokenSymbol = this.JSONSegment.substring(0, 1);\n\n // check if ignored token\n if (isIgnoreToken(tokenSymbol)) {\n this.skipJSONSegment(1);\n return [TOKEN_IGNORED, tokenSymbol];\n }\n\n // match token\n switch (tokenSymbol) {\n case TOKEN_LEFT_BRACKET_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_LEFT_BRACKET, tokenSymbol];\n case TOKEN_RIGHT_BRACKET_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_RIGHT_BRACKET, tokenSymbol];\n case TOKEN_LEFT_BRACE_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_LEFT_BRACE, tokenSymbol];\n case TOKEN_RIGHT_BRACE_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_RIGHT_BRACE, tokenSymbol];\n case TOKEN_COLON_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_COLON, tokenSymbol];\n case TOKEN_DOT_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_DOT, tokenSymbol];\n case TOKEN_COMMA_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_COMMA, tokenSymbol];\n case TOKEN_QUOTE_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_QUOTE, tokenSymbol];\n case TOKEN_ESCAPE_CHARACTER_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ESCAPE_CHARACTER, tokenSymbol];\n case TOKEN_SLASH_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_SLASH, tokenSymbol];\n case TOKEN_NEGATIVE_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NEGATIVE, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_A_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_A, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_B_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_B, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_C_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_C, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_D_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_D, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_E_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_E, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_F_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_F, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_L_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_L, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_N_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_N, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_R_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_R, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_S_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_S, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_T_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_T, tokenSymbol];\n case TOKEN_ALPHABET_LOWERCASE_U_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_LOWERCASE_U, tokenSymbol];\n case TOKEN_ALPHABET_UPPERCASE_A_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_UPPERCASE_A, tokenSymbol];\n case TOKEN_ALPHABET_UPPERCASE_B_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_UPPERCASE_B, tokenSymbol];\n case TOKEN_ALPHABET_UPPERCASE_C_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_UPPERCASE_C, tokenSymbol];\n case TOKEN_ALPHABET_UPPERCASE_D_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_UPPERCASE_D, tokenSymbol];\n case TOKEN_ALPHABET_UPPERCASE_E_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_UPPERCASE_E, tokenSymbol];\n case TOKEN_ALPHABET_UPPERCASE_F_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_ALPHABET_UPPERCASE_F, tokenSymbol];\n case TOKEN_NUMBER_0_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NUMBER_0, tokenSymbol];\n case TOKEN_NUMBER_1_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NUMBER_1, tokenSymbol];\n case TOKEN_NUMBER_2_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NUMBER_2, tokenSymbol];\n case TOKEN_NUMBER_3_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NUMBER_3, tokenSymbol];\n case TOKEN_NUMBER_4_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NUMBER_4, tokenSymbol];\n case TOKEN_NUMBER_5_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NUMBER_5, tokenSymbol];\n case TOKEN_NUMBER_6_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NUMBER_6, tokenSymbol];\n case TOKEN_NUMBER_7_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NUMBER_7, tokenSymbol];\n case TOKEN_NUMBER_8_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NUMBER_8, tokenSymbol];\n case TOKEN_NUMBER_9_SYMBOL:\n this.skipJSONSegment(1);\n return [TOKEN_NUMBER_9, tokenSymbol];\n default:\n this.skipJSONSegment(1);\n return [TOKEN_OTHERS, tokenSymbol];\n }\n }\n\n // append JSON string to current JSON stream content\n // this method will traversal all token and generate mirror token for complete full JSON\n }, {\n key: \"AppendString\",\n value: function AppendString(str) {\n var _this = this,\n _context5;\n this.JSONSegment = str;\n for (;;) {\n var _this$matchToken = this.matchToken(),\n _this$matchToken2 = _slicedToArray(_this$matchToken, 2),\n token = _this$matchToken2[0],\n tokenSymbol = _this$matchToken2[1];\n switch (token) {\n case TOKEN_EOF:\n // nothing to do with TOKEN_EOF\n break;\n case TOKEN_IGNORED:\n if (this.streamStoppedInAString()) {\n this.JSONContent += tokenSymbol;\n continue;\n }\n this.pushByteIntoPaddingContent(tokenSymbol);\n break;\n case TOKEN_OTHERS:\n // check if JSON stream stopped with padding content\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n break;\n case TOKEN_LEFT_BRACKET:\n // check if JSON stream stopped with padding content\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n this.JSONContent += tokenSymbol;\n if (this.streamStoppedInAString()) {\n continue;\n }\n this.pushTokenStack(token);\n if (this.streamStoppedInAnObjectArrayValueStart()) {\n // pop `n`, `u`, `l`, `l` from mirror stack\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n }\n\n // push `]` into mirror stack\n this.pushMirrorTokenStack(TOKEN_RIGHT_BRACKET);\n break;\n case TOKEN_RIGHT_BRACKET:\n if (this.streamStoppedInAString()) {\n this.JSONContent += tokenSymbol;\n continue;\n }\n\n // check if JSON stream stopped with padding content\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // push `]` into stack\n this.pushTokenStack(token);\n // pop `]` from mirror stack\n this.popMirrorTokenStack();\n break;\n case TOKEN_LEFT_BRACE:\n // check if JSON stream stopped with padding content\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n if (this.streamStoppedInAString()) {\n continue;\n }\n this.pushTokenStack(token);\n if (this.streamStoppedInAnObjectObjectValueStart()) {\n // pop `n`, `u`, `l`, `l` from mirror stack\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n }\n\n // push `}` into mirror stack\n this.pushMirrorTokenStack(TOKEN_RIGHT_BRACE);\n break;\n case TOKEN_RIGHT_BRACE:\n if (this.streamStoppedInAString()) {\n this.JSONContent += tokenSymbol;\n continue;\n }\n\n // check if JSON stream stopped with padding content\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n this.JSONContent += tokenSymbol;\n\n // push `}` into stack\n this.pushTokenStack(token);\n // pop `}` from mirror stack\n this.popMirrorTokenStack();\n break;\n case TOKEN_QUOTE:\n // check if escape quote `\\\"`\n if (this.streamStoppedWithLeadingEscapeCharacter()) {\n // push padding escape character `\\` into JSON content\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // pop `\\` from stack\n this.popTokenStack();\n continue;\n }\n\n // check if json stream stopped with padding content\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n this.pushTokenStack(token);\n if (this.streamStoppedInAnArray()) {\n // push `\"` into mirror stack\n this.pushMirrorTokenStack(TOKEN_QUOTE);\n } else if (this.streamStoppedInAnArrayStringValueEnd()) {\n // pop `\"` from mirror stack\n this.popMirrorTokenStack();\n } else if (this.streamStoppedInAnObjectKeyStart()) {\n // push `\"`, `:`, `n`, `u`, `l`, `l` into mirror stack\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_L);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_L);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_U);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_N);\n this.pushMirrorTokenStack(TOKEN_COLON);\n this.pushMirrorTokenStack(TOKEN_QUOTE);\n } else if (this.streamStoppedInAnObjectKeyEnd()) {\n // pop `\"` from mirror stack\n this.popMirrorTokenStack();\n } else if (this.streamStoppedInAnObjectStringValueStart()) {\n // pop `n`, `u`, `l`, `l` from mirror stack\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n // push `\"` into mirror stack\n this.pushMirrorTokenStack(TOKEN_QUOTE);\n } else if (this.streamStoppedInAnObjectValueEnd()) {\n // pop `\"` from mirror stack\n this.popMirrorTokenStack();\n } else {\n throw new Error('invalid quote token in json stream');\n }\n break;\n case TOKEN_COLON:\n if (this.streamStoppedInAString()) {\n this.JSONContent += tokenSymbol;\n continue;\n }\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n this.JSONContent += tokenSymbol;\n this.pushTokenStack(token);\n this.popMirrorTokenStack();\n break;\n case TOKEN_ALPHABET_LOWERCASE_A:\n if (this.streamStoppedInAnStringUnicodeEscape()) {\n this.pushByteIntoPaddingContent(tokenSymbol);\n if (this.PaddingContent.length === 6) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n this.popTokenStack();\n this.popTokenStack();\n }\n continue;\n }\n this.JSONContent += tokenSymbol;\n if (this.streamStoppedInAString()) {\n continue;\n }\n this.itIsPartOfTokenFalse = function () {\n var left = [TOKEN_ALPHABET_LOWERCASE_F];\n var right = [TOKEN_ALPHABET_LOWERCASE_E, TOKEN_ALPHABET_LOWERCASE_S, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_A];\n return matchStack(_this.TokenStack, left) && matchStack(_this.MirrorTokenStack, right);\n };\n if (!this.itIsPartOfTokenFalse()) {\n continue;\n }\n this.pushTokenStack(token);\n this.popMirrorTokenStack();\n break;\n case TOKEN_ALPHABET_LOWERCASE_B:\n // as hex in unicode\n if (this.streamStoppedInAnStringUnicodeEscape()) {\n this.pushByteIntoPaddingContent(tokenSymbol);\n\n // check if unicode escape is full length\n if (this.PaddingContent.length === 6) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n\n // pop `\\`, `u` from stack\n this.popTokenStack();\n this.popTokenStack();\n }\n continue;\n }\n\n // \\b escape `\\`, `b`\n if (this.streamStoppedWithLeadingEscapeCharacter()) {\n // push padding escape character `\\` into JSON content\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // pop `\\` from stack\n this.popTokenStack();\n continue;\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n break;\n case TOKEN_ALPHABET_LOWERCASE_E:\n // as hex in unicode\n if (this.streamStoppedInAnStringUnicodeEscape()) {\n this.pushByteIntoPaddingContent(tokenSymbol);\n\n // check if unicode escape is full length\n if (this.PaddingContent.length === 6) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n\n // pop `\\`, `u` from stack\n this.popTokenStack();\n this.popTokenStack();\n }\n continue;\n }\n\n // check if in a number, as `e` (exponent) in scientific notation\n if (this.streamStoppedInANumberDecimalPartMiddle()) {\n this.pushByteIntoPaddingContent(tokenSymbol);\n continue;\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n // Omitting boolean validation functions due to placeholder logic\n\n this.pushTokenStack(token);\n this.popMirrorTokenStack();\n break;\n case TOKEN_ALPHABET_LOWERCASE_F:\n // as hex in unicode\n if (this.streamStoppedInAnStringUnicodeEscape()) {\n this.pushByteIntoPaddingContent(tokenSymbol);\n // check if unicode escape is full length\n if (this.PaddingContent.length === 6) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n // pop `\\`, `u` from stack\n this.popTokenStack();\n this.popTokenStack();\n }\n continue;\n }\n\n // \\f escape `\\`, `f`\n if (this.streamStoppedWithLeadingEscapeCharacter()) {\n // push padding escape character `\\` into JSON content\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // pop `\\` from stack\n this.popTokenStack();\n continue;\n }\n\n // check if json stream stopped with padding content, like case `[true , f`\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n\n // push `f` into stack\n this.pushTokenStack(token);\n if (this.streamStoppedInAnArray()) {\n // in array\n // push `a`, `l`, `s`, `e`\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_E);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_S);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_L);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_A);\n } else {\n // in object\n // pop `n`, `u`, `l`, `l`\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n // push `a`, `l`, `s`, `e`\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_E);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_S);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_L);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_A);\n }\n break;\n case TOKEN_ALPHABET_LOWERCASE_L:\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n\n // helper functions to check stack states\n this.itIsPartOfTokenFalse1 = function () {\n var left = [TOKEN_ALPHABET_LOWERCASE_F, TOKEN_ALPHABET_LOWERCASE_A];\n var right = [TOKEN_ALPHABET_LOWERCASE_E, TOKEN_ALPHABET_LOWERCASE_S, TOKEN_ALPHABET_LOWERCASE_L];\n return matchStack(_this.TokenStack, left) && matchStack(_this.MirrorTokenStack, right);\n };\n this.itIsPartOfTokenNull1 = function () {\n var left = [TOKEN_ALPHABET_LOWERCASE_N, TOKEN_ALPHABET_LOWERCASE_U];\n var right = [TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_L];\n return matchStack(_this.TokenStack, left) && matchStack(_this.MirrorTokenStack, right);\n };\n this.itIsPartOfTokenNull2 = function () {\n var left = [TOKEN_ALPHABET_LOWERCASE_N, TOKEN_ALPHABET_LOWERCASE_U, TOKEN_ALPHABET_LOWERCASE_L];\n var right = [TOKEN_ALPHABET_LOWERCASE_L];\n return matchStack(_this.TokenStack, left) && matchStack(_this.MirrorTokenStack, right);\n };\n if (!this.itIsPartOfTokenFalse1() && !this.itIsPartOfTokenNull1() && !this.itIsPartOfTokenNull2()) {\n continue;\n }\n this.pushTokenStack(token);\n this.popMirrorTokenStack();\n break;\n case TOKEN_ALPHABET_LOWERCASE_N:\n // \\n escape `\\`, `n`\n if (this.streamStoppedWithLeadingEscapeCharacter()) {\n // Push padding escape character `\\` into JSON content\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n\n // Write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // Pop `\\` from stack\n this.popTokenStack();\n continue;\n }\n\n // Check if JSON stream stopped with padding content, like case `[true, n`\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n\n // Write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // In a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n\n // Push `n`\n this.pushTokenStack(token);\n if (this.streamStoppedInAnArray()) {\n // In array, push `u`, `l`, `l`\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_L);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_L);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_U);\n } else {\n // In object, pop `n`\n this.popMirrorTokenStack();\n }\n break;\n case TOKEN_ALPHABET_LOWERCASE_R:\n // \\r escape `\\`, `r`\n if (this.streamStoppedWithLeadingEscapeCharacter()) {\n // push padding escape character `\\` into JSON content\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // pop `\\` from stack\n this.popTokenStack();\n continue;\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n\n // check if `t` in token stack and `r`, `u`, `e` in mirror stack\n this.itIsPartOfTokenTrue = function () {\n var left = [TOKEN_ALPHABET_LOWERCASE_T];\n var right = [TOKEN_ALPHABET_LOWERCASE_E, TOKEN_ALPHABET_LOWERCASE_U, TOKEN_ALPHABET_LOWERCASE_R];\n return matchStack(_this.TokenStack, left) && matchStack(_this.MirrorTokenStack, right);\n };\n if (!this.itIsPartOfTokenTrue()) {\n continue;\n }\n this.pushTokenStack(token);\n this.popMirrorTokenStack();\n break;\n case TOKEN_ALPHABET_LOWERCASE_S:\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n\n // check if `f`, `a`, `l` in token stack and `s`, `e in mirror stack\n this.itIsPartOfTokenFalse2 = function () {\n var left = [TOKEN_ALPHABET_LOWERCASE_F, TOKEN_ALPHABET_LOWERCASE_A, TOKEN_ALPHABET_LOWERCASE_L];\n var right = [TOKEN_ALPHABET_LOWERCASE_E, TOKEN_ALPHABET_LOWERCASE_S];\n return matchStack(_this.TokenStack, left) && matchStack(_this.MirrorTokenStack, right);\n };\n if (!this.itIsPartOfTokenFalse2()) {\n continue;\n }\n this.pushTokenStack(token);\n this.popMirrorTokenStack();\n break;\n case TOKEN_ALPHABET_LOWERCASE_T:\n // \\t escape `\\`, `t`\n if (this.streamStoppedWithLeadingEscapeCharacter()) {\n // push padding escape character `\\` into JSON content\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // pop `\\` from stack\n this.popTokenStack();\n continue;\n }\n\n // check if json stream stopped with padding content, like case `[true , t`\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n\n // push `t` to stack\n this.pushTokenStack(token);\n if (this.streamStoppedInAnArray()) {\n // in array\n // push `r`, `u`, `e`\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_E);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_U);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_R);\n } else {\n // in object\n // pop `n`, `u`, `l`, `l`\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n // push `r`, `u`, `e`\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_E);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_U);\n this.pushMirrorTokenStack(TOKEN_ALPHABET_LOWERCASE_R);\n }\n break;\n case TOKEN_ALPHABET_LOWERCASE_U:\n // unicode escape `\\`, `u`\n if (this.streamStoppedWithLeadingEscapeCharacter()) {\n this.pushTokenStack(token);\n this.PaddingContent += tokenSymbol;\n continue;\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n\n // check if `t`, `r` in token stack and, `u`, `e` in mirror stack\n this.itIsPartOfTokenTrue2 = function () {\n var left = [TOKEN_ALPHABET_LOWERCASE_T, TOKEN_ALPHABET_LOWERCASE_R];\n var right = [TOKEN_ALPHABET_LOWERCASE_E, TOKEN_ALPHABET_LOWERCASE_U];\n return matchStack(_this.TokenStack, left) && matchStack(_this.MirrorTokenStack, right);\n };\n\n // check if `n` in token stack and `u`, `l`, `l` in mirror stack\n this.itIsPartOfTokenNull = function () {\n var left = [TOKEN_ALPHABET_LOWERCASE_N];\n var right = [TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_L, TOKEN_ALPHABET_LOWERCASE_U];\n return matchStack(_this.TokenStack, left) && matchStack(_this.MirrorTokenStack, right);\n };\n if (!this.itIsPartOfTokenTrue2() && !this.itIsPartOfTokenNull()) {\n continue;\n }\n this.pushTokenStack(token);\n this.popMirrorTokenStack();\n break;\n case TOKEN_ALPHABET_UPPERCASE_A:\n case TOKEN_ALPHABET_UPPERCASE_B:\n case TOKEN_ALPHABET_UPPERCASE_C:\n case TOKEN_ALPHABET_UPPERCASE_D:\n case TOKEN_ALPHABET_LOWERCASE_C:\n case TOKEN_ALPHABET_LOWERCASE_D:\n case TOKEN_ALPHABET_UPPERCASE_F:\n // as hex in unicode\n if (this.streamStoppedInAnStringUnicodeEscape()) {\n this.pushByteIntoPaddingContent(tokenSymbol);\n // check if unicode escape is full length\n if (this.PaddingContent.length === 6) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n // pop `\\`, `u` from stack\n this.popTokenStack();\n this.popTokenStack();\n }\n continue;\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n break;\n case TOKEN_ALPHABET_UPPERCASE_E:\n // as hex in unicode\n if (this.streamStoppedInAnStringUnicodeEscape()) {\n this.pushByteIntoPaddingContent(tokenSymbol);\n // check if unicode escape is full length\n if (this.PaddingContent.length === 6) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n // pop `\\`, `u` from stack\n this.popTokenStack();\n this.popTokenStack();\n }\n continue;\n }\n\n // check if in a number, as `E` (exponent) in scientific notation\n if (this.streamStoppedInANumberDecimalPartMiddle()) {\n this.pushByteIntoPaddingContent(tokenSymbol);\n continue;\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n break;\n case TOKEN_NUMBER_0:\n case TOKEN_NUMBER_1:\n case TOKEN_NUMBER_2:\n case TOKEN_NUMBER_3:\n case TOKEN_NUMBER_4:\n case TOKEN_NUMBER_5:\n case TOKEN_NUMBER_6:\n case TOKEN_NUMBER_7:\n case TOKEN_NUMBER_8:\n case TOKEN_NUMBER_9:\n if (this.streamStoppedInAnStringUnicodeEscape()) {\n this.pushByteIntoPaddingContent(tokenSymbol);\n // check if unicode escape is full length\n if (this.PaddingContent.length === 6) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n // pop `\\`, `u` from stack\n this.popTokenStack();\n this.popTokenStack();\n }\n continue;\n }\n\n // check if json stream stopped with padding content, like `[1 , 1`\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n\n // in negative part of a number\n if (this.streamStoppedInANegativeNumberValueStart()) {\n this.pushNegativeIntoJSONContent();\n // pop `0` from mirror stack\n this.popMirrorTokenStack();\n }\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string or a number, just skip token\n if (this.streamStoppedInAString() || this.streamStoppedInANumber()) {\n continue;\n }\n\n // in decimal part of a number\n if (this.streamStoppedInANumberDecimalPart()) {\n this.pushTokenStack(TOKEN_NUMBER);\n // pop placeholder `0` in decimal part\n this.popMirrorTokenStack();\n continue;\n }\n\n // first number type token, push token into stack\n this.pushTokenStack(TOKEN_NUMBER);\n\n // check if we are in an object or an array\n if (this.streamStoppedInAnArray()) {\n continue;\n } else if (this.streamStoppedInAnObjectNullValuePlaceholderStart()) {\n // pop `n`, `u`, `l`, `l`\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n this.popMirrorTokenStack();\n }\n break;\n case TOKEN_COMMA:\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n this.JSONContent += tokenSymbol;\n continue;\n }\n // in a object or a array, keep the comma in stack but not write it into JSONContent, until next token arrival\n this.pushByteIntoPaddingContent(tokenSymbol);\n this.pushTokenStack(token);\n break;\n case TOKEN_DOT:\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n continue;\n }\n\n // use 0 for decimal part placeholder\n this.pushTokenStack(token);\n this.pushMirrorTokenStack(TOKEN_NUMBER_0);\n break;\n case TOKEN_SLASH:\n // escape character `\\`, `/`\n if (this.streamStoppedWithLeadingEscapeCharacter()) {\n // push padding escape character `\\` into JSON content\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // pop `\\` from stack\n this.popTokenStack();\n continue;\n } else if (this.streamStoppedInAString()) {\n this.JSONContent += tokenSymbol;\n continue;\n }\n break;\n case TOKEN_ESCAPE_CHARACTER:\n // TOKEN_ESCAPE_CHARACTER needs to be defined somewhere\n // double escape character `\\`, `\\`\n if (this.streamStoppedWithLeadingEscapeCharacter()) {\n // push padding escape character `\\` into JSON content\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n\n // write current token symbol to JSON content\n this.JSONContent += tokenSymbol;\n\n // pop `\\` from stack\n this.popTokenStack();\n continue;\n }\n\n // just write escape character into stack and waiting other token trigger escape method.\n this.pushTokenStack(token);\n this.pushByteIntoPaddingContent(TOKEN_ESCAPE_CHARACTER_SYMBOL); // TOKEN_ESCAPE_CHARACTER_SYMBOL needs to be defined somewhere\n break;\n case TOKEN_NEGATIVE:\n // TOKEN_NEGATIVE needs to be defined somewhere\n // in a string, just skip token\n if (this.streamStoppedInAString()) {\n this.JSONContent += tokenSymbol;\n continue;\n }\n\n // check if JSON stream stopped with padding content, like `[1 , -`\n if (this.havePaddingContent()) {\n this.appendPaddingContentToJSONContent();\n this.cleanPaddingContent();\n }\n\n // just write negative character into stack and wait for other token to trigger it.\n this.pushTokenStack(token);\n if (this.streamStoppedInAnObjectNegativeNumberValueStart()) {\n // pop `n`, `u`, `l`, `l` from mirror stack\n for (var i = 0; i < 4; i++) {\n // assuming \"null\" has been pushed into the stack as separate characters\n this.popMirrorTokenStack();\n }\n }\n\n // push `0` into mirror stack for placeholder\n this.pushMirrorTokenStack(TOKEN_NUMBER_0); // TOKEN_NUMBER_0 needs to be defined somewhere\n break;\n default:\n throw new Error(_concatInstanceProperty(_context5 = \"unexpected token: `\".concat(token, \"`, token symbol: `\")).call(_context5, tokenSymbol, \"`\"));\n }\n\n // check if end\n if (token === TOKEN_EOF) {\n break;\n }\n }\n }\n\n // Complete the incomplete JSON string by concat JSON content and mirror tokens\n }, {\n key: \"CompleteJSON\",\n value: function CompleteJSON() {\n return this.JSONContent + this.dumpMirrorTokenStackToString(); // Assuming an implementation of dumpMirrorTokenStackToString\n }\n }]);\n return Lexer;\n}();\n\nexport { Lexer };\n//# sourceMappingURL=index.mjs.map\n","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import { Lexer } from \"streaming-json\";\r\n\r\n/**\r\n * StreamingJsonParser helps extract field values from incomplete JSON streams.\r\n * Useful for parsing LLM responses that stream JSON token by token.\r\n */\r\nexport class StreamingJsonParser {\r\n private lexer: Lexer;\r\n private lastExtractedValue: string = \"\";\r\n\r\n constructor() {\r\n this.lexer = new Lexer();\r\n }\r\n\r\n /**\r\n * Append a new chunk of JSON text to the parser\r\n */\r\n appendChunk(chunk: string): void {\r\n this.lexer.AppendString(chunk);\r\n }\r\n\r\n /**\r\n * Get the current valid JSON, with incomplete parts filled in\r\n */\r\n getCompleteJson(): string {\r\n return this.lexer.CompleteJSON();\r\n }\r\n\r\n /**\r\n * Extract a specific field value from the incomplete JSON.\r\n * Returns the extracted value, or empty string if not available yet.\r\n * \r\n * @param fieldName - The field name to extract (e.g., \"reply\")\r\n * @returns The current value of the field, or empty string\r\n */\r\n extractField(fieldName: string): string {\r\n try {\r\n const completeJson = this.getCompleteJson();\r\n const parsed = JSON.parse(completeJson);\r\n \r\n if (parsed && typeof parsed === \"object\" && fieldName in parsed) {\r\n const value = parsed[fieldName];\r\n if (typeof value === \"string\") {\r\n // Only update if we have a real value, not a placeholder null\r\n if (value !== \"\" || this.lastExtractedValue === \"\") {\r\n this.lastExtractedValue = value;\r\n }\r\n }\r\n }\r\n } catch {\r\n // If parsing fails, keep the last successfully extracted value\r\n }\r\n \r\n return this.lastExtractedValue;\r\n }\r\n\r\n /**\r\n * Reset the parser for a new JSON stream\r\n */\r\n reset(): void {\r\n this.lexer = new Lexer();\r\n this.lastExtractedValue = \"\";\r\n }\r\n}\r\n\r\n/**\r\n * Extract the \"reply\" field value from a streaming JSON response.\r\n * This is a convenience function for the common case of extracting reply text.\r\n * \r\n * @param parser - The StreamingJsonParser instance\r\n * @returns The current reply text\r\n */\r\nexport const extractReplyText = (parser: StreamingJsonParser): string => {\r\n return parser.extractField(\"reply\");\r\n};\r\n","import { useState, useEffect, useRef } from \"preact/hooks\";\r\nimport { render } from \"preact\";\r\nimport { ChatButton } from \"./components/ChatButton\";\r\nimport {\r\n ChatWindow,\r\n resolveAssistantPayload,\r\n createInitialMessages,\r\n INITIAL_BOT_MESSAGE_TEXT,\r\n} from \"./components/ChatWindow\";\r\nimport { COLORS } from \"./styles/constants\";\r\nimport { voiceChatStream, type StreamController } from \"./api/client\";\r\nimport { getPageContext } from \"./agent/context\";\r\nimport { executeToolCalls } from \"./agent/tools\";\r\nimport { StreamingJsonParser, extractReplyText } from \"./utils/streamingJson\";\r\n\r\nexport type BulutVoice = \"zeynep\" | \"ali\";\r\n\r\nexport interface BulutOptions {\r\n containerId?: string;\r\n backendBaseUrl?: string;\r\n projectId?: string;\r\n model?: string;\r\n voice?: BulutVoice;\r\n baseColor?: string;\r\n}\r\n\r\nexport interface BulutRuntimeConfig {\r\n backendBaseUrl: string;\r\n projectId: string;\r\n model: string;\r\n voice: BulutVoice;\r\n baseColor: string;\r\n}\r\n\r\n/** Default LLM model — keep in sync with backend config.DEFAULT_LLM_MODEL */\r\nconst DEFAULT_LLM_MODEL = \"google/gemini-3-flash-preview:nitro\";\r\n\r\nconst DEFAULT_CONFIG: BulutRuntimeConfig = {\r\n backendBaseUrl: \"https://api.bulut.lu\",\r\n projectId: \"\", // Must be provided\r\n model: DEFAULT_LLM_MODEL,\r\n voice: \"zeynep\",\r\n baseColor: COLORS.primary,\r\n};\r\n\r\nconst isValidHexColor = (value: string): boolean =>\r\n /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(value);\r\n\r\nconst normalizeHexColor = (value: string): string => {\r\n const trimmed = value.trim();\r\n if (!isValidHexColor(trimmed)) {\r\n return DEFAULT_CONFIG.baseColor;\r\n }\r\n if (trimmed.length === 4) {\r\n const r = trimmed[1];\r\n const g = trimmed[2];\r\n const b = trimmed[3];\r\n return `#${r}${r}${g}${g}${b}${b}`.toLowerCase();\r\n }\r\n return trimmed.toLowerCase();\r\n};\r\n\r\nconst shadeHexColor = (hexColor: string, amount: number): string => {\r\n const normalized = normalizeHexColor(hexColor);\r\n const raw = normalized.slice(1);\r\n const toChannel = (start: number): number => parseInt(raw.slice(start, start + 2), 16);\r\n const clamp = (value: number): number => Math.max(0, Math.min(255, Math.round(value)));\r\n const adjust = (channel: number): number =>\r\n amount < 0 ? channel * (1 + amount) : channel + (255 - channel) * amount;\r\n const toHex = (channel: number): string => clamp(channel).toString(16).padStart(2, \"0\");\r\n\r\n const r = adjust(toChannel(0));\r\n const g = adjust(toChannel(2));\r\n const b = adjust(toChannel(4));\r\n\r\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\r\n};\r\n\r\nconst applyTheme = (baseColor: string): void => {\r\n const normalized = normalizeHexColor(baseColor);\r\n COLORS.primary = normalized;\r\n COLORS.primaryHover = shadeHexColor(normalized, -0.15);\r\n COLORS.messageUser = normalized;\r\n};\r\n\r\nconst resolveRuntimeConfig = (\r\n options: BulutOptions,\r\n): BulutRuntimeConfig => {\r\n const voice = options.voice === \"zeynep\" ? \"zeynep\" : \"ali\";\r\n return {\r\n backendBaseUrl: options.backendBaseUrl || DEFAULT_CONFIG.backendBaseUrl,\r\n projectId: options.projectId || DEFAULT_CONFIG.projectId,\r\n model: options.model || DEFAULT_CONFIG.model,\r\n voice,\r\n baseColor: normalizeHexColor(options.baseColor || DEFAULT_CONFIG.baseColor),\r\n };\r\n};\r\n\r\ninterface BulutWidgetProps {\r\n config: BulutRuntimeConfig;\r\n}\r\n\r\nconst CHAT_STORAGE_KEY = \"bulut_chat_history\";\r\nconst CHAT_TIMESTAMP_KEY = \"bulut_chat_timestamp\";\r\nconst SESSION_ID_KEY = \"bulut_session_id\";\r\nconst ACCESSIBILITY_MODE_KEY = \"bulut_accessibility_mode_enabled\";\r\nconst VAD_THRESHOLD = 0.06;\r\nconst SILENCE_DURATION_MS = 1000;\r\n\r\ninterface StoredMessage {\r\n id: number;\r\n text: string;\r\n isUser: boolean;\r\n}\r\n\r\nconst appendToStoredMessages = (text: string, isUser: boolean): number => {\r\n let messages: StoredMessage[] = [];\r\n if (typeof localStorage !== \"undefined\") {\r\n const saved = localStorage.getItem(CHAT_STORAGE_KEY);\r\n if (saved) {\r\n try { messages = JSON.parse(saved); } catch { /* ignore */ }\r\n }\r\n }\r\n if (messages.length === 0) {\r\n messages = createInitialMessages();\r\n }\r\n const id = messages.reduce((a, m) => Math.max(a, m.id), 0) + 1;\r\n messages.push({ id, text, isUser });\r\n if (typeof localStorage !== \"undefined\") {\r\n localStorage.setItem(CHAT_STORAGE_KEY, JSON.stringify(messages));\r\n localStorage.setItem(CHAT_TIMESTAMP_KEY, Date.now().toString());\r\n }\r\n return id;\r\n};\r\n\r\nconst updateStoredMessage = (id: number, text: string) => {\r\n if (typeof localStorage === \"undefined\") return;\r\n const saved = localStorage.getItem(CHAT_STORAGE_KEY);\r\n if (!saved) return;\r\n try {\r\n const messages = JSON.parse(saved) as StoredMessage[];\r\n const updated = messages.map((m: StoredMessage) => (m.id === id ? { ...m, text } : m));\r\n localStorage.setItem(CHAT_STORAGE_KEY, JSON.stringify(updated));\r\n localStorage.setItem(CHAT_TIMESTAMP_KEY, Date.now().toString());\r\n } catch { /* ignore */ }\r\n};\r\n\r\nconst BulutWidget = ({ config }: BulutWidgetProps) => {\r\n // Check localStorage for persisted state\r\n const [isOpen, setIsOpen] = useState(() => {\r\n if (typeof localStorage !== \"undefined\") {\r\n return localStorage.getItem(\"bulut_panel_open\") === \"true\";\r\n }\r\n return false;\r\n });\r\n\r\n const [showBubble, setShowBubble] = useState(false);\r\n const [isRecording, setIsRecording] = useState(false);\r\n const [isProcessing, setIsProcessing] = useState(false);\r\n const [isAccessibilityEnabled, setIsAccessibilityEnabled] = useState(() => {\r\n if (typeof localStorage === \"undefined\") {\r\n return false;\r\n }\r\n return localStorage.getItem(ACCESSIBILITY_MODE_KEY) === \"true\";\r\n });\r\n const [previewMessage, setPreviewMessage] = useState<string | null>(\r\n INITIAL_BOT_MESSAGE_TEXT,\r\n );\r\n const accessibilityMode = isAccessibilityEnabled && !isOpen;\r\n\r\n const recorderRef = useRef<MediaRecorder | null>(null);\r\n const streamRef = useRef<MediaStream | null>(null);\r\n const audioChunksRef = useRef<BlobPart[]>([]);\r\n const activeControllerRef = useRef<StreamController | null>(null);\r\n const previewTimerRef = useRef<number | null>(null);\r\n const silenceStartRef = useRef<number | null>(null);\r\n const vadIntervalRef = useRef<number | null>(null);\r\n const audioContextRef = useRef<AudioContext | null>(null);\r\n const isRecordingRef = useRef(false);\r\n const isProcessingRef = useRef(false);\r\n const autoListenSuppressedRef = useRef(false);\r\n const assistantMsgIdRef = useRef<number | null>(null);\r\n\r\n // Show welcome bubble once for 5 seconds\r\n useEffect(() => {\r\n if (accessibilityMode) {\r\n setShowBubble(false);\r\n return;\r\n }\r\n if (isOpen) return;\r\n if (typeof localStorage !== \"undefined\" && localStorage.getItem(\"bulut_bubble_shown\") === \"true\") return;\r\n\r\n setShowBubble(true);\r\n const timer = setTimeout(() => {\r\n setShowBubble(false);\r\n if (typeof localStorage !== \"undefined\") {\r\n localStorage.setItem(\"bulut_bubble_shown\", \"true\");\r\n }\r\n }, 5000);\r\n return () => clearTimeout(timer);\r\n }, [isOpen, accessibilityMode]);\r\n\r\n const clearPreviewTimer = () => {\r\n if (previewTimerRef.current !== null) {\r\n clearTimeout(previewTimerRef.current);\r\n previewTimerRef.current = null;\r\n }\r\n };\r\n\r\n const cleanupRecording = () => {\r\n if (vadIntervalRef.current !== null) {\r\n clearInterval(vadIntervalRef.current);\r\n vadIntervalRef.current = null;\r\n }\r\n if (audioContextRef.current) {\r\n audioContextRef.current.close().catch(() => {});\r\n audioContextRef.current = null;\r\n }\r\n if (streamRef.current) {\r\n streamRef.current.getTracks().forEach((t) => t.stop());\r\n streamRef.current = null;\r\n }\r\n silenceStartRef.current = null;\r\n };\r\n\r\n const sendAudioAndPreview = async (blob: Blob, mode: boolean) => {\r\n if (!config.projectId) return;\r\n const fileType = blob.type || \"audio/webm\";\r\n const ext = fileType.includes(\"ogg\") ? \"ogg\" : fileType.includes(\"wav\") ? \"wav\" : \"webm\";\r\n const file = new File([blob], `voice.${ext}`, { type: fileType });\r\n\r\n const sessionId =\r\n typeof localStorage !== \"undefined\" ? localStorage.getItem(SESSION_ID_KEY) : null;\r\n const pageContext = getPageContext().summary;\r\n const parser = new StreamingJsonParser();\r\n assistantMsgIdRef.current = null;\r\n setIsProcessing(true);\r\n setPreviewMessage(\"Düşünüyor...\");\r\n isProcessingRef.current = true;\r\n console.info(`[Bulut] voice request started accessibility_mode=${mode}`);\r\n\r\n try {\r\n const controller = voiceChatStream(\r\n config.backendBaseUrl,\r\n file,\r\n config.projectId,\r\n sessionId,\r\n {\r\n model: config.model,\r\n voice: \"zeynep\",\r\n pageContext,\r\n accessibilityMode: mode,\r\n },\r\n {\r\n onTranscription: (data) => {\r\n if (data.session_id && typeof localStorage !== \"undefined\") {\r\n localStorage.setItem(SESSION_ID_KEY, data.session_id);\r\n }\r\n if (data.user_text?.trim()) {\r\n appendToStoredMessages(data.user_text, true);\r\n }\r\n },\r\n onAssistantDelta: (delta) => {\r\n parser.appendChunk(delta);\r\n const text = extractReplyText(parser);\r\n if (text) {\r\n clearPreviewTimer();\r\n setPreviewMessage(text);\r\n if (assistantMsgIdRef.current === null) {\r\n assistantMsgIdRef.current = appendToStoredMessages(text, false);\r\n } else {\r\n updateStoredMessage(assistantMsgIdRef.current, text);\r\n }\r\n }\r\n },\r\n onAssistantDone: (assistantText) => {\r\n const resolved = resolveAssistantPayload(assistantText);\r\n const finalText = resolved.displayText || assistantText;\r\n if (assistantMsgIdRef.current !== null) {\r\n updateStoredMessage(assistantMsgIdRef.current, finalText);\r\n } else {\r\n appendToStoredMessages(finalText, false);\r\n }\r\n setPreviewMessage(finalText);\r\n\r\n // Execute tool calls after the message is fully received\r\n if (resolved.toolCalls.length > 0) {\r\n void executeToolCalls(resolved.toolCalls).catch((err) => {\r\n console.error(\"Tool execution failed\", err);\r\n });\r\n }\r\n },\r\n onAudioStateChange: (state) => {\r\n console.info(`[Bulut] audio state ${state} accessibility_mode=${mode}`);\r\n },\r\n onError: (error) => {\r\n console.error(`[Bulut] voice pipeline error ${error}`);\r\n setPreviewMessage(null);\r\n },\r\n },\r\n );\r\n activeControllerRef.current = controller;\r\n await controller.done;\r\n } catch (error) {\r\n console.error(\"[Bulut] voice request failed\", error);\r\n setPreviewMessage(null);\r\n } finally {\r\n activeControllerRef.current = null;\r\n setIsProcessing(false);\r\n isProcessingRef.current = false;\r\n console.info(`[Bulut] voice request completed accessibility_mode=${mode}`);\r\n }\r\n };\r\n\r\n const startButtonRecording = async () => {\r\n if (isRecordingRef.current || isProcessingRef.current) return;\r\n autoListenSuppressedRef.current = false;\r\n setPreviewMessage(\"Dinliyor...\");\r\n console.info(`[Bulut] start recording accessibility_mode=${accessibilityMode}`);\r\n\r\n try {\r\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\r\n streamRef.current = stream;\r\n\r\n const opts: MediaRecorderOptions = { audioBitsPerSecond: 16_000 };\r\n for (const mime of [\"audio/ogg;codecs=opus\", \"audio/webm;codecs=opus\", \"audio/webm\"]) {\r\n if (MediaRecorder.isTypeSupported(mime)) { opts.mimeType = mime; break; }\r\n }\r\n\r\n const recorder = new MediaRecorder(stream, opts);\r\n recorderRef.current = recorder;\r\n audioChunksRef.current = [];\r\n\r\n recorder.ondataavailable = (e) => {\r\n if (e.data.size > 0) audioChunksRef.current.push(e.data);\r\n };\r\n\r\n recorder.onstop = async () => {\r\n setIsRecording(false);\r\n isRecordingRef.current = false;\r\n cleanupRecording();\r\n\r\n const blob = new Blob(audioChunksRef.current, {\r\n type: recorder.mimeType || \"audio/webm\",\r\n });\r\n audioChunksRef.current = [];\r\n if (blob.size === 0) {\r\n setPreviewMessage(null);\r\n return;\r\n }\r\n\r\n await sendAudioAndPreview(blob, accessibilityMode);\r\n };\r\n\r\n // Setup VAD\r\n const AudioCtx =\r\n window.AudioContext ||\r\n (window as Window & { webkitAudioContext?: typeof AudioContext }).webkitAudioContext;\r\n\r\n if (AudioCtx) {\r\n const ctx = new AudioCtx();\r\n audioContextRef.current = ctx;\r\n const analyser = ctx.createAnalyser();\r\n analyser.fftSize = 256;\r\n const source = ctx.createMediaStreamSource(stream);\r\n source.connect(analyser);\r\n const dataArray = new Uint8Array(analyser.frequencyBinCount);\r\n let speechDetected = false;\r\n\r\n vadIntervalRef.current = window.setInterval(() => {\r\n if (!isRecordingRef.current || recorder.state === \"inactive\") {\r\n cleanupRecording();\r\n return;\r\n }\r\n analyser.getByteFrequencyData(dataArray);\r\n let sum = 0;\r\n for (const v of dataArray) sum += v;\r\n const volume = sum / dataArray.length / 255;\r\n\r\n if (volume < VAD_THRESHOLD) {\r\n if (silenceStartRef.current === null) {\r\n silenceStartRef.current = Date.now();\r\n return;\r\n }\r\n if (speechDetected && Date.now() - silenceStartRef.current > SILENCE_DURATION_MS) {\r\n recorder.stop();\r\n }\r\n return;\r\n }\r\n speechDetected = true;\r\n silenceStartRef.current = null;\r\n }, 50);\r\n }\r\n\r\n recorder.start(200);\r\n setIsRecording(true);\r\n isRecordingRef.current = true;\r\n } catch (error) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n console.error(`[Bulut] microphone start failed ${message}`);\r\n if (message.toLowerCase().includes(\"permission\")) {\r\n autoListenSuppressedRef.current = true;\r\n }\r\n setPreviewMessage(null);\r\n cleanupRecording();\r\n setIsRecording(false);\r\n isRecordingRef.current = false;\r\n }\r\n };\r\n\r\n const cancelRecording = () => {\r\n const recorder = recorderRef.current;\r\n if (recorder && recorder.state !== \"inactive\") {\r\n // Override onstop so it doesn't send the audio\r\n recorder.onstop = () => {\r\n setIsRecording(false);\r\n isRecordingRef.current = false;\r\n cleanupRecording();\r\n setPreviewMessage(null);\r\n };\r\n recorder.stop();\r\n } else {\r\n setIsRecording(false);\r\n isRecordingRef.current = false;\r\n cleanupRecording();\r\n setPreviewMessage(null);\r\n }\r\n };\r\n\r\n const toggleWidget = () => {\r\n const newState = !isOpen;\r\n if (newState) {\r\n // Opening chat history disables accessibility mode and auto-listening.\r\n if (activeControllerRef.current) {\r\n activeControllerRef.current.stop();\r\n }\r\n cancelRecording();\r\n setIsProcessing(false);\r\n isProcessingRef.current = false;\r\n }\r\n setIsOpen(newState);\r\n setShowBubble(false);\r\n if (typeof localStorage !== \"undefined\") {\r\n localStorage.setItem(\"bulut_panel_open\", String(newState));\r\n }\r\n };\r\n\r\n const toggleAccessibilityMode = () => {\r\n const next = !isAccessibilityEnabled;\r\n setIsAccessibilityEnabled(next);\r\n if (typeof localStorage !== \"undefined\") {\r\n localStorage.setItem(ACCESSIBILITY_MODE_KEY, String(next));\r\n }\r\n console.info(`[Bulut] accessibility mode toggled enabled=${next}`);\r\n };\r\n\r\n const handleClose = () => {\r\n setIsOpen(false);\r\n if (!previewMessage) {\r\n setPreviewMessage(INITIAL_BOT_MESSAGE_TEXT);\r\n }\r\n if (typeof localStorage !== \"undefined\") {\r\n localStorage.setItem(\"bulut_panel_open\", \"false\");\r\n }\r\n console.info(\"Bulut chat window closed.\");\r\n };\r\n\r\n // Close on escape key\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\" && isOpen) {\r\n setIsOpen(false);\r\n if (typeof localStorage !== \"undefined\") {\r\n localStorage.setItem(\"bulut_panel_open\", \"false\");\r\n }\r\n }\r\n };\r\n\r\n document.addEventListener(\"keydown\", handleEscape);\r\n return () => document.removeEventListener(\"keydown\", handleEscape);\r\n }, [isOpen]);\r\n\r\n // Cleanup on unmount\r\n useEffect(\r\n () => () => {\r\n clearPreviewTimer();\r\n if (activeControllerRef.current) {\r\n activeControllerRef.current.stop();\r\n activeControllerRef.current = null;\r\n }\r\n cancelRecording();\r\n },\r\n [],\r\n );\r\n\r\n // Voice-only accessibility loop: auto-start listening whenever idle.\r\n useEffect(() => {\r\n if (!accessibilityMode) {\r\n return;\r\n }\r\n if (isRecording || isProcessing || autoListenSuppressedRef.current) {\r\n return;\r\n }\r\n const timer = window.setTimeout(() => {\r\n if (\r\n accessibilityMode &&\r\n !isRecordingRef.current &&\r\n !isProcessingRef.current &&\r\n !autoListenSuppressedRef.current\r\n ) {\r\n console.info(\"[Bulut] accessibility auto-listen trigger\");\r\n void startButtonRecording();\r\n }\r\n }, 250);\r\n return () => {\r\n window.clearTimeout(timer);\r\n };\r\n }, [accessibilityMode, isRecording, isProcessing]);\r\n\r\n return (\r\n <>\r\n {!isOpen && (\r\n <ChatButton\r\n onMicClick={startButtonRecording}\r\n onCancelRecording={cancelRecording}\r\n onAccessibilityToggle={toggleAccessibilityMode}\r\n isRecording={isRecording}\r\n showBubble={showBubble}\r\n onBubbleClick={() => {\r\n setShowBubble(false);\r\n toggleWidget();\r\n }}\r\n accessibilityEnabled={isAccessibilityEnabled}\r\n previewMessage={previewMessage}\r\n onPreviewClick={() => {\r\n clearPreviewTimer();\r\n toggleWidget();\r\n }}\r\n onPreviewClose={() => {\r\n setPreviewMessage(null);\r\n clearPreviewTimer();\r\n }}\r\n />\r\n )}\r\n {isOpen && (\r\n <ChatWindow\r\n onClose={handleClose}\r\n config={config}\r\n accessibilityMode={accessibilityMode}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst SHADOW_STYLE = `\r\n @font-face {\r\n font-family: \"Clash Display\";\r\n src: url(\"https://bulut.lu/clash-display.woff2\") format(\"woff2\");\r\n font-style: normal;\r\n font-weight: 400;\r\n font-display: swap;\r\n }\r\n\r\n :host {\r\n all: initial;\r\n contain: layout style paint;\r\n color: #111111;\r\n font-family: \"Clash Display\", sans-serif;\r\n font-size: 16px;\r\n line-height: 1.4;\r\n -webkit-font-smoothing: antialiased;\r\n text-rendering: optimizeLegibility;\r\n }\r\n\r\n #bulut-shadow-mount {\r\n all: initial;\r\n color: inherit;\r\n font-family: inherit;\r\n font-size: inherit;\r\n line-height: inherit;\r\n }\r\n\r\n #bulut-shadow-mount * {\r\n font-family: inherit;\r\n color: inherit;\r\n }\r\n\r\n #bulut-shadow-mount *, #bulut-shadow-mount *::before, #bulut-shadow-mount *::after {\r\n box-sizing: border-box;\r\n }\r\n`;\r\n\r\n// Container host for the widget\r\nlet widgetContainer: HTMLElement | null = null;\r\nlet widgetMountNode: HTMLElement | null = null;\r\nlet createdContainer = false;\r\nlet isInitialized = false;\r\n\r\n/**\r\n * Initialize the Bulut chat widget\r\n * @param options - Optional configuration options\r\n */\r\nexport const init = (options: BulutOptions = {}) => {\r\n if (isInitialized) {\r\n console.warn(\"Bulut is already initialized\");\r\n return;\r\n }\r\n\r\n const runtimeConfig = resolveRuntimeConfig(options);\r\n applyTheme(runtimeConfig.baseColor);\r\n\r\n // Create or find container\r\n if (options.containerId) {\r\n widgetContainer = document.getElementById(options.containerId);\r\n createdContainer = false;\r\n } else {\r\n widgetContainer = document.createElement(\"div\");\r\n widgetContainer.id = \"bulut-container\";\r\n document.body.appendChild(widgetContainer);\r\n createdContainer = true;\r\n }\r\n\r\n if (!widgetContainer) {\r\n console.error(\"Bulut: Container not found\");\r\n return;\r\n }\r\n\r\n const shadowRoot = widgetContainer.shadowRoot || widgetContainer.attachShadow({ mode: \"open\" });\r\n shadowRoot.replaceChildren();\r\n\r\n const style = document.createElement(\"style\");\r\n style.textContent = SHADOW_STYLE;\r\n\r\n const mountNode = document.createElement(\"div\");\r\n mountNode.id = \"bulut-shadow-mount\";\r\n\r\n shadowRoot.append(style, mountNode);\r\n widgetMountNode = mountNode;\r\n\r\n // Render the widget\r\n render(<BulutWidget config={runtimeConfig} />, mountNode);\r\n isInitialized = true;\r\n\r\n console.log(\"Bulut initialized successfully\");\r\n};\r\n\r\n/**\r\n * Destroy the Bulut widget\r\n */\r\nexport const destroy = () => {\r\n if (!isInitialized) {\r\n return;\r\n }\r\n\r\n if (widgetMountNode) {\r\n render(null, widgetMountNode);\r\n widgetMountNode = null;\r\n }\r\n\r\n if (widgetContainer && createdContainer) {\r\n document.body.removeChild(widgetContainer);\r\n }\r\n\r\n widgetContainer = null;\r\n createdContainer = false;\r\n isInitialized = false;\r\n console.log(\"Bulut destroyed\");\r\n};\r\n\r\n/**\r\n * Check if the widget is initialized\r\n */\r\nexport const isReady = () => isInitialized;\r\n\r\nconst Bulut = {\r\n init,\r\n destroy,\r\n isReady,\r\n};\r\n\r\nif (typeof window !== \"undefined\") {\r\n (window as Window & { Bulut?: typeof Bulut }).Bulut = Bulut;\r\n}\r\n\r\n// Export the main widget component for advanced usage\r\nexport { BulutWidget };\r\n\r\n// Export components for custom implementations\r\nexport { ChatButton, ChatWindow };\r\n\r\nexport default Bulut;\r\n"],"names":["n","l","u","i","o","r","e","f","c","s","a","p","v","y","d","Array","isArray","w","g","parentNode","removeChild","m","t","type","props","key","ref","__k","__","__b","__e","__c","constructor","__v","__i","__u","vnode","k","children","x","this","context","S","length","C","base","M","__d","push","$","__r","debounceRendering","sort","shift","__P","O","__n","namespaceURI","N","I","h","_","b","String","L","D","P","B","A","nextSibling","insertBefore","nodeType","T","setProperty","test","j","style","cssText","replace","toLowerCase","slice","addEventListener","removeEventListener","removeAttribute","setAttribute","F","event","H","prototype","render","contextType","value","__E","E","sub","state","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","some","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","V","then","indexOf","z","localName","document","createTextNode","createElementNS","is","__m","data","call","childNodes","attributes","name","__html","innerHTML","content","q","diffed","forEach","map","current","unmount","componentWillUnmount","G","documentElement","arguments","defaultProps","firstChild","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","bind","resolve","setTimeout","__source","__self","__H","__N","__f","filter","every","requestAnimationFrame","clearTimeout","cancelAnimationFrame","COLORS","primary","primaryHover","text","border","messageUser","messageUserText","getContrastIconFilter","backgroundHex","hex","trimmed","trim","normalizeHexColor","parseInt","BORDER_RADIUS","SHADOW","TRANSITIONS","microphoneIconContent","closeIconContent","SvgIcon","src","width","height","title","stripColors","className","fill","stroke","strokeWidth","viewBox","useMemo","trimmedSrc","viewBoxMatch","match","jsx","display","verticalAlign","flexShrink","xmlns","dangerouslySetInnerHTML","nextContent","strokeWidthValue","ChatButton","onMicClick","onCancelRecording","onAccessibilityToggle","isRecording","showBubble","onBubbleClick","previewMessage","onPreviewClick","onPreviewClose","accessibilityEnabled","bgColor","containerStyle","position","right","bottom","flexDirection","alignItems","gap","zIndex","buttonStyle","borderRadius","backgroundColor","color","cursor","justifyContent","transition","iconStyle","closeBtnStyle","top","background","fontSize","lineHeight","padding","renderPopup","onClick","onClose","extraClass","scrollable","jsxs","stopPropagation","paddingRight","wordBreak","maxHeight","overflowY","Fragment","onMouseEnter","Object","assign","currentTarget","transform","onMouseLeave","TTS_WS_RETRY_DELAYS_MS","FORCED_TTS_VOICE","normalizeBaseUrl","baseUrl","toWebSocketUrl","path","normalized","url","URL","protocol","pathname","search","hash","toString","shouldFallbackToSse","error","Boolean","retryable","parseErrorBody","async","response","json","detail","JSON","stringify","message","statusText","sleep","ms","base64ToUint8Array","base64","cleanBase64","binaryString","atob","bytes","Uint8Array","charCodeAt","playBufferedAudio","chunks","mimeType","sampleRate","onAudioStateChange","totalBytes","reduce","acc","byteLength","console","log","blobParts","chunk","copied","set","buffer","detectedMime","header","from","padStart","toUpperCase","join","startsWith","safeMimeType","includes","finalBlobParts","ArrayBuffer","view","DataView","setUint32","setUint16","channels","createWavHeader","blob","Blob","audioElement","Audio","objectUrl","createObjectURL","preload","autoplay","play","ended","reject","watchdog","window","setInterval","info","onEnded","cleanup","onError","Error","clearInterval","waitForPlaybackEnd","err","size","pause","load","revokeObjectURL","parseSseEventPayload","eventBlock","dataLines","split","line","trimStart","dataStr","parse","warn","isAudioSsePayload","payload","audio","transcribeAudio","file","projectId","sessionId","language","formData","FormData","append","fetch","method","body","ok","buildError","collectTtsViaSse","assistantText","accessibilityMode","isStopped","setReader","ttsFormData","ttsResponse","reader","_a","getReader","decoder","TextDecoder","done","read","decode","stream","blocks","pop","block","format","mime_type","sample_rate","releaseLock","collectTtsViaWebSocket","setSocket","wsUrl","requestId","crypto","randomUUID","Date","now","Math","random","highestSeqSeen","connectOnce","finalError","socket","WebSocket","finalize","mode","onopen","onmessage","onerror","onclose","send","request_id","voice","accessibility_mode","last_seq","parseTtsWsEventPayload","seq","incomingSeq","shouldAcceptAudioSeq","readyState","OPEN","close","attempt","delay","PAGE_CONTEXT_CACHE_KEY","NON_CONTENT_TAGS","Set","NATIVE_INTERACTIVE_TAGS","INTERACTIVE_ROLES","TRACKED_DISPLAY_VALUES","TRACKED_POSITION_VALUES","EVENT_HINT_NAMES","ARIA_INTERACTION_ATTRS","DATA_INTERACTION_PATTERN","pageContextCache","Map","cacheHydrated","normalizeWhitespace","truncate","maxChars","suffix","max","truncateInline","isCacheEntry","obj","summary","links","interactables","capturedAt","version","bumpCount","get","formatTopCounts","maxItems","entries","localeCompare","count","parseTabIndex","parsed","Number","isNaN","compactToken","compact","getElementDepth","element","depth","parentElement","getPrimaryRole","getAttribute","buildSummaryWithHistory","recentPages","values","entry","historySection","compactSummary","isVisible","HTMLElement","hidden","getComputedStyle","visibility","rect","getBoundingClientRect","toAbsoluteUrl","href","location","escapeCssValue","CSS","escape","buildSelector","tag","tagName","id","ariaLabel","classes","classList","parent","sibling","getElementLabel","innerText","textContent","placeholder","HTMLInputElement","HTMLTextAreaElement","HTMLButtonElement","classHint","item","find","fallback","label","getEventHints","record","eventHints","eventName","handlerKey","hasInlineHandler","hasPropertyHandler","getAriaInteractionHints","attrName","hasAttribute","getDataInteractionHints","getAttributeNames","getStyleHints","styleHints","buildBranchDigest","token","idToken","classToken","buildBlueprintToken","child","has","sampled","overflow","formatSection","lines","buildOuterHtmlDigest","structural","outerHTML","collectTextSnippets","root","querySelector","snippets","seen","candidates","querySelectorAll","node","add","collectPageSignalSnapshot","allElements","sampledElements","linkSet","interactableCandidates","tagCounts","roleCounts","eventCounts","displayCounts","positionCounts","visibleElements","maxDepth","semanticInteractables","nonSemanticInteractables","tabStopElements","pointerCursorElements","dataHintElements","ariaHintElements","contentEditableElements","order","role","tabIndex","hasTabStop","hasPointerCursor","dataHints","ariaHints","isContentEditable","isNativeInteractive","isRoleInteractive","isDisabled","absoluteHref","selector","signalTokens","signalBlock","score","existing","candidate","interactiveRoleCounts","interactionSignals","branchDigest","collectDomBranchDigest","pageBlueprint","getPageContext","sessionStorage","raw","getItem","hydrateCacheFromStorage","rawUrl","canonicalUrl","cached","snapshot","headings","input","sections","lang","landmarks","textSnippets","outerHtmlDigest","buildPageContextSummary","sorted","delete","pruneOldestCacheEntries","serialized","setItem","persistCacheToStorage","AGENT_CURSOR_ID","CURSOR_STORAGE_KEY","CURSOR_MOVE_DURATION_MS","CURSOR_EASING","isObject","asString","asNumber","isFinite","parseAgentResponse","fencedMatch","extractJsonCandidate","objectCandidate","start","inString","isEscaped","char","extractFirstJsonObject","parseJsonFromRaw","reply","toolCalls","tool","action","sanitizeToolCalls","tool_calls","clamp","min","animateWindowScrollTo","targetY","durationMs","startY","scrollY","delta","abs","raf","callback","performance","startTime","step","progress","eased","cos","PI","easeInOutSine","scrollTo","getPersistedCursorState","localStorage","visible","persistCursorState","setCursorPosition","left","setCursorVisibility","opacity","cursorHoverTrackingInitialized","initializeCursorHoverTracking","getElementById","parseFloat","getCursorPosition","pointerX","pageX","pointerY","pageY","hypot","ensureCursor","createElement","baseColor","boxShadow","boxSizing","pointerEvents","appendChild","stored","applyStoredCursorStateForCurrentUrl","moveCursor","getElementCenter","scrollX","CONTAINS_SELECTOR_PATTERN","findElementBySelector","containsMatch","baseSelector","expectedText","_b","_c","fallbackError","dispatchMouseEvent","dispatchEvent","MouseEvent","bubbles","cancelable","clientX","clientY","slowScrollElementIntoView","slowScrollElementIntoViewWithMode","forceCenter","viewportHeight","innerHeight","isRectOutsideViewport","maxScrollTop","scrollHeight","currentScrollY","rectTop","rectHeight","computeCenteredScrollTop","executeScroll","selected","center","executeInteract","target","resolveTarget","click","requestSubmit","form","parentForm","closest","submitElement","focus","Event","typeIntoElement","executeNavigate","targetUrl","resolvedUrl","matchingElement","parsedTarget","allLinks","el","HTMLAnchorElement","elUrl","urlSegments","lastSegment","searchTerms","searchParams","clickables","dataTab","term","findMatchingLinkForTarget","origin","isSamePageNavigation","newPath","history","pushState","PopStateEvent","executeGetPageContext","restoreCursorFromStorageForCurrentUrl","once","STORAGE_KEY","TIMESTAMP_KEY","SESSION_ID_KEY","TTL_MS","STATUS_LABELS","INITIAL_BOT_MESSAGE_TEXT","formatDurationMs","totalSeconds","floor","createInitialMessages","isUser","clearPersistedChatState","storage","removeItem","getNextMessageId","messages","ChatWindow","config","setMessages","useState","saved","timestamp","isBusy","setIsBusy","setIsRecording","isTranscribing","setIsTranscribing","isThinking","setIsThinking","isRenderingAudio","setIsRenderingAudio","isPlayingAudio","setIsPlayingAudio","isRunningTools","setIsRunningTools","recordingDurationMs","setRecordingDurationMs","statusOverride","setStatusOverride","resolvedStatusText","flags","isBusyRef","useRef","isRecordingRef","nextMessageIdRef","recorderRef","streamRef","audioChunksRef","activeStreamControllerRef","sessionIdRef","ts","silenceStartRef","vadIntervalRef","audioContextRef","sourceRef","discardNextRecordingRef","micPressStartRef","micHoldTimeoutRef","micHoldTriggeredRef","pendingStopAfterStartRef","startRecordingPendingRef","assistantMessageIdRef","assistantTextBufferRef","transcriptionReceivedRef","assistantDoneReceivedRef","recordingStartedAtRef","recordingTimerIntervalRef","messagesContainerRef","messagesContentRef","pendingUserTextRef","pendingAssistantTextRef","streamingJsonParserRef","awaitingAssistantResponseRef","useEffect","scrollMessagesToBottom","scrollTop","useLayoutEffect","ResizeObserver","observer","observe","disconnect","stopRecordingTimer","resetProcessingFlags","clearMicHoldTimeout","cleanupVAD","catch","stopStreamTracks","getTracks","track","stop","stopActiveStream","recorder","ondataavailable","onstop","appendMessage","previous","updateMessageText","handleAudioStateChange","handleAudioBlob","fileType","extension","File","pageContext","handleToolExecution","callId","call_id","result","msg","executeSingleToolCall","args","controller","audioFile","events","executeTool","activeReader","activeSocket","errorEmitted","cancel","sttResult","currentSessionId","session_id","userText","onTranscription","user_text","agentResolve","agentReject","finalReply","resolved","finish","fail","project_id","model","page_context","msgType","calls","_d","onToolCalls","results","_e","onToolResult","final_reply","_f","onAssistantDone","_g","onSessionId","errMsg","_h","onAssistantDelta","onIteration","iteration","max_iterations","ttsResult","wsError","agentVoiceChatStream","backendBaseUrl","sid","finalDisplayText","toolLabel","prev","last","_callId","_toolName","_result","_iteration","_maxIterations","shouldAutoListenAfterAudio","startRecording","stopRecording","options","discard","navigator","mediaDevices","getUserMedia","MediaRecorder","recorderOptions","audioBitsPerSecond","preferredMimeTypes","mime","isTypeSupported","shouldDiscard","AudioCtx","AudioContext","webkitAudioContext","analyser","createAnalyser","fftSize","source","createMediaStreamSource","connect","dataArray","frequencyBinCount","speechDetected","getByteFrequencyData","sum","silenceDuration","setupVAD","startedAt","normalizeError","resetMicGesture","handleMicPointerUp","preventDefault","releasePointerCapture","pointerId","wasHold","thresholdMs","classifyMicGesture","windowStyle","animation","headerButtonStyle","statusPanelStyle","flex","minHeight","whiteSpace","textOverflow","recordingTimerStyle","minWidth","fontWeight","textAlign","micFooterButtonStyle","disableMicControl","maxWidth","initialMessages","alignSelf","fontStyle","wordWrap","onPointerDown","setPointerCapture","onPointerUp","onPointerCancel","disabled","check","it","globalThis_1","globalThis","self","global","Function","fails","exec","functionBindNative","require$$0","hasOwnProperty","NATIVE_BIND","FunctionPrototype","apply","functionApply","Reflect","uncurryThisWithBind","functionUncurryThis","fn","uncurryThis","stringSlice","classofRaw","require$$1","functionUncurryThisClause","documentAll","all","isCallable","argument","descriptors","defineProperty","functionCall","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","objectPropertyIsEnumerable","descriptor","enumerable","createPropertyDescriptor","bitmap","configurable","writable","classof","require$$2","$Object","indexedObject","isNullOrUndefined","$TypeError","TypeError","requireObjectCoercible","IndexedObject","toIndexedObject","aFunction","variable","getBuiltIn","namespace","objectIsPrototypeOf","isPrototypeOf","userAgent","process","Deno","versions","v8","environmentV8Version","V8_VERSION","$String","symbolConstructorDetection","getOwnPropertySymbols","symbol","Symbol","sham","useSymbolAsUid","iterator","isSymbol","require$$3","$Symbol","tryToString","aCallable","getMethod","func","defineGlobalProperty","SHARED","store","sharedStoreModule","exports","copyright","license","shared","toObject","hasOwnProperty_1","hasOwn","postfix","uid","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","wellKnownSymbol","ordinaryToPrimitive","pref","val","valueOf","TO_PRIMITIVE","toPrimitive","exoticToPrim","toPropertyKey","EXISTS","documentCreateElement","ie8DomDefine","DESCRIPTORS","propertyIsEnumerableModule","require$$6","IE8_DOM_DEFINE","require$$7","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","replacement","isForced","feature","detection","normalize","POLYFILL","NATIVE","string","isForced_1","functionBindContext","that","v8PrototypeDefineBug","anObject","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","objectDefineProperty","Attributes","definePropertyModule","createNonEnumerableProperty","object","require$$8","require$$9","wrapConstructor","NativeConstructor","Wrapper","_export","FORCED","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","TARGET","GLOBAL","STATIC","stat","PROTO","proto","nativeSource","targetPrototype","forced","dontCallGetSet","wrap","real","ceil","trunc","toIntegerOrInfinity","number","toLength","len","lengthOfArrayLike","doesNotExceedSafeInteger","createProperty","arraySetLength","toStringTagSupport","TO_STRING_TAG_SUPPORT","TO_STRING_TAG","CORRECT_ARGUMENTS","tryGet","callee","functionToString","inspectSource","noop","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","isConstructor","called","SPECIES","$Array","arraySpeciesConstructor","originalArray","arraySpeciesCreate","arrayMethodHasSpeciesSupport","METHOD_NAME","array","foo","setArrayLength","require$$10","require$$12","IS_CONCAT_SPREADABLE","require$$11","IS_CONCAT_SPREADABLE_SUPPORT","concat","isConcatSpreadable","spreadable","arg","IS_INCLUDES","toAbsoluteIndex","index","integer","arrayIncludes","$this","fromIndex","hiddenKeys","objectKeysInternal","names","enumBugKeys","internalObjectKeys","objectKeys","keys","objectDefineProperties","defineProperties","Properties","activeXDocument","html","sharedKey","definePropertiesModule","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObjectViaActiveX","write","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","domain","contentWindow","open","objectCreate","create","objectGetOwnPropertyNames","getOwnPropertyNames","arraySlice","$getOwnPropertyNames","windowNames","objectGetOwnPropertyNamesExternal","getWindowNames","objectGetOwnPropertySymbols","defineBuiltIn","wellKnownSymbolWrapped","wrappedWellKnownSymbolModule","wellKnownSymbolDefine","NAME","symbolDefineToPrimitive","SymbolPrototype","hint","objectToString","setToStringTag","TAG","SET_METHOD","WeakMap","NATIVE_WEAK_MAP","OBJECT_ALREADY_INITIALIZED","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","createMethod","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","boundFunction","resIndex","arrayIteration","$toString","require$$13","require$$14","nativeObjectCreate","require$$15","require$$16","getOwnPropertyNamesModule","require$$17","getOwnPropertyNamesExternal","require$$18","getOwnPropertySymbolsModule","require$$19","getOwnPropertyDescriptorModule","require$$20","require$$21","require$$22","require$$23","require$$24","defineBuiltInAccessor","require$$26","require$$28","require$$29","require$$30","require$$31","defineWellKnownSymbol","require$$32","defineSymbolToPrimitive","require$$33","require$$34","InternalStateModule","require$$35","$forEach","require$$36","HIDDEN","require$$27","SYMBOL","setInternalState","getInternalState","ObjectPrototype","RangeError","QObject","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","fallbackDefineProperty","ObjectPrototypeDescriptor","setSymbolDescriptor","description","$defineProperties","properties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","setter","useSetter","useSimple","symbolRegistryDetection","keyFor","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","for","sym","$SyntaxError","SyntaxError","$parseInt","fromCharCode","at","charAt","codePoints","IS_4_HEX_DIGITS","IS_C0_CONTROL_CODE","nativeRawJson","unsafeInt","rawJSON","isRawJSON","parseJSONString","unterminated","chr","twoChars","fourHexDigits","end","NATIVE_RAW_JSON","$stringify","numberToString","surrogates","lowSurrogates","hiSurrogates","MARK","MARK_LENGTH","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithProperSymbolsConversion","replacer","$replacer","getReplacerFunction","fixIllFormedJSON","offset","next","rawLength","keysLength","space","replacerFunction","rawStrings","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","iterators","getDescriptor","functionName","PROPER","correctPrototypeGetter","getPrototypeOf","CORRECT_PROTOTYPE_GETTER","objectGetPrototypeOf","ITERATOR","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","iteratorsCore","Iterators","returnThis","FunctionName","createIteratorConstructor","IteratorConstructor","ENUMERABLE_NEXT","IteratorsCore","PROPER_FUNCTION_NAME","KEYS","VALUES","ENTRIES","iteratorDefine","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","createIterResultObject","defineIterator","ARRAY_ITERATOR","iterated","kind","Arguments","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","COLLECTION_NAME","METADATA","thisSymbolValue","symbolIsRegistered","isRegisteredSymbol","$isWellKnownSymbol","isWellKnownSymbol","symbolKeys","symbolKeysLength","symbolKey","symbolIsWellKnown","isRegistered","isWellKnown","CONVERT_TO_STRING","pos","first","second","STRING_ITERATOR","point","getIteratorMethod","properErrorOnNonWritableLength","argCount","getBuiltInPrototypeMethod","CONSTRUCTOR","METHOD","Namespace","pureMethod","NativePrototype","ArrayPrototype","own","nativeSlice","HAS_SPECIES_SUPPORT","Constructor","fin","iteratorClose","innerResult","innerError","callWithSafeIterationClosing","isArrayIteratorMethod","getIterator","usingIterator","iteratorMethod","SAFE_CLOSING","iteratorWithReturn","return","arrayLike","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","SKIP_CLOSING","ITERATION_SUPPORT","checkCorrectnessOfIteration","iterable","_arrayLikeToArray","_slicedToArray","_Array$isArray","arrayWithHoles","_Symbol","_getIteratorMethod","_pushInstanceProperty","iterableToArrayLimit","_context","arrayLikeToArray","_sliceInstanceProperty","_Array$from","unsupportedIterableToArray","nonIterableRest","desc","_typeof","_Symbol$iterator","_Symbol$toPrimitive","_createClass","_Object$defineProperty","_defineProperties","_defineProperty","$filter","nativeKeys","arrayForEach","arrayMethodIsStrict","nativeReverse","reverse","_TOKEN_SYMBOL_MAP","TOKEN_ALPHABET_LOWERCASE_A","TOKEN_ALPHABET_LOWERCASE_E","TOKEN_ALPHABET_LOWERCASE_F","TOKEN_ALPHABET_LOWERCASE_L","TOKEN_ALPHABET_LOWERCASE_N","TOKEN_ALPHABET_LOWERCASE_R","TOKEN_ALPHABET_LOWERCASE_S","TOKEN_ALPHABET_LOWERCASE_U","TOKEN_NUMBER_0","TOKEN_SYMBOL_MAP","arrayLength","_filterInstanceProperty","_Object$keys","pow","matchStack","stack","tokens","pointer","tokensLeft","Lexer","_classCallCheck","JSONContent","PaddingContent","JSONSegment","TokenStack","MirrorTokenStack","_context2","_context3","_context4","ret","_forEachInstanceProperty","_reverseInstanceProperty","substring","case1","case2","case3","getTopTokenOnMirrorStack","getTopTokenOnStack","tokenSymbol","isIgnoreToken","skipJSONSegment","str","_context5","_this","_this$matchToken2","matchToken","streamStoppedInAString","pushByteIntoPaddingContent","havePaddingContent","appendPaddingContentToJSONContent","cleanPaddingContent","pushTokenStack","streamStoppedInAnObjectArrayValueStart","popMirrorTokenStack","pushMirrorTokenStack","streamStoppedInAnObjectObjectValueStart","streamStoppedWithLeadingEscapeCharacter","popTokenStack","streamStoppedInAnArray","streamStoppedInAnArrayStringValueEnd","streamStoppedInAnObjectKeyStart","streamStoppedInAnObjectKeyEnd","streamStoppedInAnObjectStringValueStart","streamStoppedInAnObjectValueEnd","streamStoppedInAnStringUnicodeEscape","itIsPartOfTokenFalse","streamStoppedInANumberDecimalPartMiddle","itIsPartOfTokenFalse1","itIsPartOfTokenNull1","itIsPartOfTokenNull2","itIsPartOfTokenTrue","itIsPartOfTokenFalse2","itIsPartOfTokenTrue2","itIsPartOfTokenNull","streamStoppedInANegativeNumberValueStart","pushNegativeIntoJSONContent","streamStoppedInANumber","streamStoppedInANumberDecimalPart","streamStoppedInAnObjectNullValuePlaceholderStart","streamStoppedInAnObjectNegativeNumberValueStart","_concatInstanceProperty","dumpMirrorTokenStackToString","StreamingJsonParser","__publicField","lexer","appendChunk","AppendString","getCompleteJson","CompleteJSON","extractField","fieldName","completeJson","lastExtractedValue","reset","DEFAULT_CONFIG","isValidHexColor","shadeHexColor","hexColor","amount","toChannel","adjust","channel","toHex","round","CHAT_STORAGE_KEY","CHAT_TIMESTAMP_KEY","ACCESSIBILITY_MODE_KEY","appendToStoredMessages","updateStoredMessage","updated","BulutWidget","isOpen","setIsOpen","setShowBubble","isProcessing","setIsProcessing","isAccessibilityEnabled","setIsAccessibilityEnabled","setPreviewMessage","activeControllerRef","previewTimerRef","isProcessingRef","autoListenSuppressedRef","assistantMsgIdRef","timer","clearPreviewTimer","cleanupRecording","sendAudioAndPreview","ext","parser","llmFormData","llmResponse","assistant_text","voiceChatStream","extractReplyText","displayText","resolveAssistantPayload","finalText","toolCall","executeToolCalls","startButtonRecording","opts","ctx","cancelRecording","toggleWidget","newState","handleEscape","widgetContainer","widgetMountNode","createdContainer","isInitialized","init","runtimeConfig","resolveRuntimeConfig","applyTheme","containerId","shadowRoot","attachShadow","replaceChildren","mountNode","destroy","isReady","Bulut"],"mappings":"sQAAG,IAACA,EAAEC,EAAEC,EAAIC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAIC,EAAE,CAAA,EAAGC,EAAE,GAAGC,EAAE,oEAAoEC,EAAEC,MAAMC,QAAQ,SAASC,EAAEjB,EAAEC,GAAG,IAAA,IAAQC,KAAKD,EAAED,EAAEE,GAAGD,EAAEC,GAAG,OAAOF,CAAC,CAAC,SAASkB,EAAElB,GAAGA,GAAGA,EAAEmB,YAAYnB,EAAEmB,WAAWC,YAAYpB,EAAE,CAAsS,SAASqB,EAAErB,EAAEsB,EAAEnB,EAAEC,EAAEC,GAAG,IAAIC,EAAE,CAACiB,KAAKvB,EAAEwB,MAAMF,EAAEG,IAAItB,EAAEuB,IAAItB,EAAEuB,IAAI,KAAKC,GAAG,KAAKC,IAAI,EAAEC,IAAI,KAAKC,IAAI,KAAKC,mBAAmBC,IAAI,MAAM5B,IAAIH,EAAEG,EAAE6B,KAAI,EAAGC,IAAI,GAAG,OAAO,MAAM9B,GAAG,MAAMJ,EAAEmC,OAAOnC,EAAEmC,MAAM9B,GAAGA,CAAC,CAAmC,SAAS+B,EAAErC,GAAG,OAAOA,EAAEsC,QAAQ,CAAC,SAASC,EAAEvC,EAAEC,GAAGuC,KAAKhB,MAAMxB,EAAEwC,KAAKC,QAAQxC,CAAC,CAAC,SAASyC,EAAE1C,EAAEC,GAAG,GAAG,MAAMA,EAAE,OAAOD,EAAE4B,GAAGc,EAAE1C,EAAE4B,GAAG5B,EAAEkC,IAAI,GAAG,KAAK,IAAA,IAAQhC,EAAED,EAAED,EAAE2B,IAAIgB,OAAO1C,IAAI,GAAG,OAAOC,EAAEF,EAAE2B,IAAI1B,KAAK,MAAMC,EAAE4B,WAAW5B,EAAE4B,IAAI,MAAM,mBAAmB9B,EAAEuB,KAAKmB,EAAE1C,GAAG,IAAI,CAAC,SAAS4C,EAAE5C,GAAG,IAAIC,EAAEC,EAAE,GAAG,OAAOF,EAAEA,EAAE4B,KAAK,MAAM5B,EAAE+B,IAAI,CAAC,IAAI/B,EAAE8B,IAAI9B,EAAE+B,IAAIc,KAAK,KAAK5C,EAAE,EAAEA,EAAED,EAAE2B,IAAIgB,OAAO1C,IAAI,GAAG,OAAOC,EAAEF,EAAE2B,IAAI1B,KAAK,MAAMC,EAAE4B,IAAI,CAAC9B,EAAE8B,IAAI9B,EAAE+B,IAAIc,KAAK3C,EAAE4B,IAAI,KAAK,CAAC,OAAOc,EAAE5C,EAAE,CAAC,CAAC,SAAS8C,EAAE9C,KAAKA,EAAE+C,MAAM/C,EAAE+C,KAAI,IAAK5C,EAAE6C,KAAKhD,KAAKiD,EAAEC,OAAO9C,GAAGH,EAAEkD,sBAAsB/C,EAAEH,EAAEkD,oBAAoB9C,GAAG4C,EAAE,CAAC,SAASA,IAAI,IAAA,IAAQjD,EAAEE,EAAEoB,EAAElB,EAAEC,EAAEE,EAAEC,EAAEC,EAAE,EAAEN,EAAEwC,QAAQxC,EAAEwC,OAAOlC,GAAGN,EAAEiD,KAAK9C,GAAGN,EAAEG,EAAEkD,QAAQ5C,EAAEN,EAAEwC,OAAO3C,EAAE+C,MAAMzB,SAASlB,OAAE,EAAOC,GAAGD,GAAGF,EAAEF,GAAGiC,KAAKH,IAAIvB,EAAE,GAAGC,EAAE,GAAGN,EAAEoD,OAAOhC,EAAEL,EAAE,GAAGb,IAAI6B,IAAI7B,EAAE6B,IAAI,EAAEhC,EAAEmC,OAAOnC,EAAEmC,MAAMd,GAAGiC,EAAErD,EAAEoD,IAAIhC,EAAElB,EAAEF,EAAEsD,IAAItD,EAAEoD,IAAIG,aAAa,GAAGrD,EAAE+B,IAAI,CAAC9B,GAAG,KAAKE,EAAE,MAAMF,EAAEqC,EAAEtC,GAAGC,KAAK,GAAGD,EAAE+B,KAAK3B,GAAGc,EAAEW,IAAI7B,EAAE6B,IAAIX,EAAEM,GAAGD,IAAIL,EAAEY,KAAKZ,EAAEoC,EAAEnD,EAAEe,EAAEd,GAAGJ,EAAE0B,IAAI1B,EAAEwB,GAAG,KAAKN,EAAEQ,KAAKzB,GAAGuC,EAAEtB,KAAK2B,EAAEC,IAAI,CAAC,CAAC,SAASS,EAAE3D,EAAEC,EAAEC,EAAEoB,EAAEnB,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAG,IAAIC,EAAEkD,EAAE/C,EAAEC,EAAEG,EAAEC,EAAE2C,EAAExC,EAAEC,GAAGA,EAAEK,KAAKf,EAAEkD,EAAE7D,EAAE0C,OAAO,IAAIpC,EAAyV,SAAWP,EAAEC,EAAEC,EAAEoB,EAAEnB,GAAG,IAAIC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEP,EAAEyC,OAAOjC,EAAED,EAAEmD,EAAE,EAAE,IAAI5D,EAAE2B,IAAI,IAAIZ,MAAMZ,GAAGC,EAAE,EAAEA,EAAED,EAAEC,IAAI,OAAOC,EAAEJ,EAAEG,KAAK,kBAAkBC,GAAG,mBAAmBA,GAAG,iBAAiBA,GAAG,iBAAiBA,GAAG,iBAAiBA,GAAGA,EAAE2B,aAAa+B,OAAO1D,EAAEL,EAAE2B,IAAIvB,GAAGiB,EAAE,KAAKhB,EAAE,KAAK,KAAK,MAAMS,EAAET,GAAGA,EAAEL,EAAE2B,IAAIvB,GAAGiB,EAAEgB,EAAE,CAACC,SAASjC,GAAG,KAAK,KAAK,WAAM,IAASA,EAAE2B,aAAa3B,EAAEwB,IAAI,EAAExB,EAAEL,EAAE2B,IAAIvB,GAAGiB,EAAEhB,EAAEkB,KAAKlB,EAAEmB,MAAMnB,EAAEoB,IAAIpB,EAAEqB,IAAIrB,EAAEqB,IAAI,KAAKrB,EAAE4B,KAAKjC,EAAE2B,IAAIvB,GAAGC,EAAEE,EAAEH,EAAEwD,EAAEvD,EAAEuB,GAAG5B,EAAEK,EAAEwB,IAAI7B,EAAE6B,IAAI,EAAEvB,EAAE,MAAK,IAAKE,EAAEH,EAAE6B,IAAI8B,EAAE3D,EAAEH,EAAEK,EAAEG,MAAMA,KAAKJ,EAAEJ,EAAEM,MAAMF,EAAE6B,KAAK,IAAI,MAAM7B,GAAG,MAAMA,EAAE2B,MAAK,GAAIzB,IAAIL,EAAEM,EAAEmD,IAAIzD,EAAEM,GAAGmD,KAAK,mBAAmBvD,EAAEkB,OAAOlB,EAAE8B,KAAK,IAAI3B,GAAGD,IAAIC,GAAGD,EAAE,EAAEqD,IAAIpD,GAAGD,EAAE,EAAEqD,KAAKpD,EAAED,EAAEqD,IAAIA,IAAIvD,EAAE8B,KAAK,KAAKnC,EAAE2B,IAAIvB,GAAG,KAAK,GAAGM,EAAE,IAAIN,EAAE,EAAEA,EAAEK,EAAEL,IAAI,OAAOE,EAAEJ,EAAEE,OAAS,EAAEE,EAAE6B,OAAO7B,EAAEwB,KAAKR,IAAIA,EAAEoB,EAAEpC,IAAI2D,EAAE3D,EAAEA,IAAI,OAAOgB,CAAC,CAAjkC4C,CAAEhE,EAAED,EAAEoB,EAAEd,EAAEuD,GAAGpD,EAAE,EAAEA,EAAEoD,EAAEpD,IAAI,OAAOG,EAAEX,EAAEyB,IAAIjB,MAAMkD,GAAE,GAAI/C,EAAEqB,IAAIvB,EAAEU,EAAER,EAAEqB,MAAMvB,EAAEE,EAAEqB,IAAIxB,EAAEQ,EAAEqC,EAAEvD,EAAEa,EAAE+C,EAAEzD,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAGK,EAAED,EAAEiB,IAAIjB,EAAEa,KAAKkC,EAAElC,KAAKb,EAAEa,MAAMkC,EAAElC,KAAKyC,EAAEP,EAAElC,IAAI,KAAKb,GAAGJ,EAAEuC,KAAKnC,EAAEa,IAAIb,EAAEkB,KAAKjB,EAAED,IAAI,MAAMI,GAAG,MAAMH,IAAIG,EAAEH,IAAI+C,KAAK,EAAEhD,EAAEsB,OAAOyB,EAAEjC,MAAMd,EAAEc,IAAIpB,EAAE6D,EAAEvD,EAAEN,EAAEP,EAAE6D,GAAG,mBAAmBhD,EAAEU,WAAM,IAASL,EAAEX,EAAEW,EAAEJ,IAAIP,EAAEO,EAAEuD,aAAaxD,EAAEsB,MAAK,GAAI,OAAOjC,EAAE4B,IAAIb,EAAEV,CAAC,CAA4uB,SAAS6D,EAAEpE,EAAEC,EAAEC,EAAEoB,GAAG,IAAInB,EAAEC,EAAE,GAAG,mBAAmBJ,EAAEuB,KAAK,CAAC,IAAIpB,EAAEH,EAAE2B,IAAIvB,EAAE,EAAED,GAAGC,EAAED,EAAEwC,OAAOvC,IAAID,EAAEC,KAAKD,EAAEC,GAAGwB,GAAG5B,EAAEC,EAAEmE,EAAEjE,EAAEC,GAAGH,EAAEC,EAAEoB,IAAI,OAAOrB,CAAC,CAACD,EAAE8B,KAAK7B,IAAIqB,IAAIrB,GAAGD,EAAEuB,OAAOtB,EAAEkB,aAAalB,EAAEyC,EAAE1C,IAAIE,EAAEoE,aAAatE,EAAE8B,IAAI7B,GAAG,OAAOA,EAAED,EAAE8B,KAAK,GAAG7B,EAAEA,GAAGA,EAAEoE,kBAAkB,MAAMpE,GAAG,GAAGA,EAAEsE,UAAU,OAAOtE,CAAC,CAA6G,SAAS+D,EAAEhE,EAAEC,EAAEC,EAAEoB,GAAG,IAAInB,EAAEC,EAAEC,EAAEC,EAAEN,EAAEyB,IAAIlB,EAAEP,EAAEuB,KAAKf,EAAEP,EAAEC,GAAGO,EAAE,MAAMD,KAAO,EAAEA,EAAE2B,KAAK,GAAG,OAAO3B,GAAG,MAAMF,GAAGG,GAAGH,GAAGE,EAAEiB,KAAKlB,GAAGC,EAAEe,KAAK,OAAOrB,EAAE,GAAGoB,GAAGb,EAAE,EAAE,GAAG,IAAIN,EAAED,EAAE,EAAEE,EAAEF,EAAE,EAAEC,GAAG,GAAGC,EAAEH,EAAE0C,QAAQ,GAAG,OAAOnC,EAAEP,EAAEI,EAAEF,GAAG,EAAEA,IAAIC,SAAW,EAAEI,EAAE2B,MAAM7B,GAAGE,EAAEiB,KAAKlB,GAAGC,EAAEe,KAAK,OAAOlB,EAAE,QAAQ,CAAC,SAASmE,EAAExE,EAAEC,EAAEC,GAAG,KAAKD,EAAE,GAAGD,EAAEyE,YAAYxE,EAAE,MAAMC,EAAE,GAAGA,GAAGF,EAAEC,GAAG,MAAMC,EAAE,GAAG,iBAAiBA,GAAGW,EAAE6D,KAAKzE,GAAGC,EAAEA,EAAE,IAAI,CAAC,SAASyE,EAAE3E,EAAEC,EAAEC,EAAEoB,EAAEnB,GAAG,IAAIC,EAAEC,EAAEL,EAAE,GAAG,SAASC,EAAE,GAAG,iBAAiBC,EAAEF,EAAE4E,MAAMC,QAAQ3E,MAAM,CAAC,GAAG,iBAAiBoB,IAAItB,EAAE4E,MAAMC,QAAQvD,EAAE,IAAIA,EAAE,IAAIrB,KAAKqB,EAAEpB,GAAGD,KAAKC,GAAGsE,EAAExE,EAAE4E,MAAM3E,EAAE,IAAI,GAAGC,EAAE,IAAID,KAAKC,EAAEoB,GAAGpB,EAAED,IAAIqB,EAAErB,IAAIuE,EAAExE,EAAE4E,MAAM3E,EAAEC,EAAED,GAAG,MAAA,GAAS,KAAKA,EAAE,IAAI,KAAKA,EAAE,GAAGG,EAAEH,IAAIA,EAAEA,EAAE6E,QAAQvE,EAAE,OAAOF,EAAEJ,EAAE8E,cAAc9E,EAAEI,KAAKL,GAAG,cAAcC,GAAG,aAAaA,EAAEI,EAAE2E,MAAM,GAAG/E,EAAE+E,MAAM,GAAGhF,EAAEC,IAAID,EAAEC,EAAE,IAAID,EAAEC,EAAEA,EAAEG,GAAGF,EAAEA,EAAEoB,EAAEpB,EAAEA,EAAEoB,EAAEpB,GAAGA,EAAEA,EAAEM,EAAER,EAAEiF,iBAAiBhF,EAAEG,EAAEM,EAAED,EAAEL,IAAIJ,EAAEkF,oBAAoBjF,EAAEG,EAAEM,EAAED,EAAEL,OAAO,CAAC,GAAG,8BAA8BD,EAAEF,EAAEA,EAAE6E,QAAQ,cAAc,KAAKA,QAAQ,SAAS,UAAG,GAAU,SAAS7E,GAAG,UAAUA,GAAG,QAAQA,GAAG,QAAQA,GAAG,QAAQA,GAAG,YAAYA,GAAG,YAAYA,GAAG,WAAWA,GAAG,WAAWA,GAAG,QAAQA,GAAG,WAAWA,GAAGA,KAAKD,EAAE,IAAIA,EAAEC,GAAG,MAAMC,EAAE,GAAGA,EAAE,MAAMF,CAAC,OAAOA,GAAG,CAAC,mBAAmBE,IAAI,MAAMA,IAAG,IAAKA,GAAG,KAAKD,EAAE,GAAGD,EAAEmF,gBAAgBlF,GAAGD,EAAEoF,aAAanF,EAAE,WAAWA,GAAG,GAAGC,EAAE,GAAGA,GAAG,CAAC,CAAC,SAASmF,EAAErF,GAAG,OAAO,SAASE,GAAG,GAAGsC,KAAKvC,EAAE,CAAC,IAAIqB,EAAEkB,KAAKvC,EAAEC,EAAEqB,KAAKvB,GAAG,GAAG,MAAME,EAAEoB,EAAEpB,EAAEoB,EAAEd,SAAAA,GAAYN,EAAEoB,EAAEA,EAAEpB,EAAE,OAAO,OAAOoB,EAAErB,EAAEqF,MAAMrF,EAAEqF,MAAMpF,GAAGA,EAAE,CAAC,CAAC,CAAC,SAASqD,EAAEvD,EAAEE,EAAEoB,EAAEnB,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAG,IAAIC,EAAEkD,EAAEjD,EAAEC,EAAEC,EAAEgD,EAAExC,EAAEyC,EAAEpB,EAAEE,EAAEE,EAAEG,EAAEiB,EAAEE,EAAEmB,EAAEvB,EAAEQ,EAAEG,EAAEzE,EAAEqB,KAAK,QAAG,IAASrB,EAAE8B,YAAY,OAAO,KAAK,IAAIV,EAAEa,MAAM3B,KAAK,GAAGc,EAAEa,KAAK9B,EAAE,CAACE,EAAEL,EAAE4B,IAAIR,EAAEQ,OAAOpB,EAAET,EAAE4B,MAAMnB,EAAER,GAAGF,EAAE,GAAG,mBAAmB2E,EAAE,IAAI,GAAGb,EAAE5D,EAAEsB,MAAMkB,EAAE,cAAciC,GAAGA,EAAEa,UAAUC,OAAO7C,GAAGlC,EAAEiE,EAAEe,cAAcvF,EAAEO,EAAEqB,KAAKe,EAAEpC,EAAEkC,EAAEA,EAAEpB,MAAMmE,MAAMjF,EAAEkB,GAAGzB,EAAEmB,EAAES,IAAIV,GAAGuC,EAAE1D,EAAE6B,IAAIT,EAAES,KAAKH,GAAGgC,EAAEgC,KAAKlD,EAAExC,EAAE6B,IAAI6B,EAAE,IAAIe,EAAEb,EAAEhB,IAAI5C,EAAE6B,IAAI6B,EAAE,IAAIrB,EAAEuB,EAAEhB,GAAGc,EAAE5B,YAAY2C,EAAEf,EAAE6B,OAAOI,GAAGjD,GAAGA,EAAEkD,IAAIlC,GAAGA,EAAEmC,QAAQnC,EAAEmC,MAAM,CAAA,GAAInC,EAAEJ,IAAIrD,EAAEQ,EAAEiD,EAAEb,KAAI,EAAGa,EAAEoC,IAAI,GAAGpC,EAAEqC,IAAI,IAAIvD,GAAG,MAAMkB,EAAEsC,MAAMtC,EAAEsC,IAAItC,EAAEmC,OAAOrD,GAAG,MAAMiC,EAAEwB,2BAA2BvC,EAAEsC,KAAKtC,EAAEmC,QAAQnC,EAAEsC,IAAIjF,EAAE,CAAA,EAAG2C,EAAEsC,MAAMjF,EAAE2C,EAAEsC,IAAIvB,EAAEwB,yBAAyBrC,EAAEF,EAAEsC,OAAOtF,EAAEgD,EAAEpC,MAAMX,EAAE+C,EAAEmC,MAAMnC,EAAE3B,IAAI/B,EAAES,EAAE+B,GAAG,MAAMiC,EAAEwB,0BAA0B,MAAMvC,EAAEwC,oBAAoBxC,EAAEwC,qBAAqB1D,GAAG,MAAMkB,EAAEyC,mBAAmBzC,EAAEoC,IAAIhD,KAAKY,EAAEyC,uBAAuB,CAAC,GAAG3D,GAAG,MAAMiC,EAAEwB,0BAA0BrC,IAAIlD,GAAG,MAAMgD,EAAE0C,2BAA2B1C,EAAE0C,0BAA0BxC,EAAEhB,GAAG5C,EAAE+B,KAAKX,EAAEW,MAAM2B,EAAE9B,KAAK,MAAM8B,EAAE2C,wBAAuB,IAAK3C,EAAE2C,sBAAsBzC,EAAEF,EAAEsC,IAAIpD,GAAG,CAAC,IAAI5C,EAAE+B,KAAKX,EAAEW,MAAM2B,EAAEpC,MAAMsC,EAAEF,EAAEmC,MAAMnC,EAAEsC,IAAItC,EAAEb,KAAI,GAAI7C,EAAE4B,IAAIR,EAAEQ,IAAI5B,EAAEyB,IAAIL,EAAEK,IAAIzB,EAAEyB,IAAI6E,KAAK,SAASxG,GAAGA,IAAIA,EAAE4B,GAAG1B,EAAE,GAAG+C,EAAE,EAAEA,EAAEW,EAAEqC,IAAItD,OAAOM,IAAIW,EAAEoC,IAAIhD,KAAKY,EAAEqC,IAAIhD,IAAIW,EAAEqC,IAAI,GAAGrC,EAAEoC,IAAIrD,QAAQrC,EAAE0C,KAAKY,GAAG,MAAM5D,CAAC,CAAC,MAAM4D,EAAE6C,qBAAqB7C,EAAE6C,oBAAoB3C,EAAEF,EAAEsC,IAAIpD,GAAGJ,GAAG,MAAMkB,EAAE8C,oBAAoB9C,EAAEoC,IAAIhD,KAAK,WAAWY,EAAE8C,mBAAmB9F,EAAEC,EAAEgD,EAAE,EAAE,CAAC,GAAGD,EAAEnB,QAAQK,EAAEc,EAAEpC,MAAMsC,EAAEF,EAAEN,IAAItD,EAAE4D,EAAE9B,KAAI,EAAGoC,EAAEjE,EAAEiD,IAAIkB,EAAE,EAAE1B,EAAE,CAAC,IAAIkB,EAAEmC,MAAMnC,EAAEsC,IAAItC,EAAEb,KAAI,EAAGmB,GAAGA,EAAEhE,GAAGQ,EAAEkD,EAAE6B,OAAO7B,EAAEpC,MAAMoC,EAAEmC,MAAMnC,EAAEnB,SAAS8C,EAAE,EAAEA,EAAE3B,EAAEqC,IAAItD,OAAO4C,IAAI3B,EAAEoC,IAAIhD,KAAKY,EAAEqC,IAAIV,IAAI3B,EAAEqC,IAAI,EAAE,MAAM,GAAGrC,EAAEb,KAAI,EAAGmB,GAAGA,EAAEhE,GAAGQ,EAAEkD,EAAE6B,OAAO7B,EAAEpC,MAAMoC,EAAEmC,MAAMnC,EAAEnB,SAASmB,EAAEmC,MAAMnC,EAAEsC,UAAUtC,EAAEb,OAAOqB,EAAE,IAAIR,EAAEmC,MAAMnC,EAAEsC,IAAI,MAAMtC,EAAE+C,kBAAkBxG,EAAEc,EAAEA,EAAE,CAAA,EAAGd,GAAGyD,EAAE+C,oBAAoBjE,IAAI/B,GAAG,MAAMiD,EAAEgD,0BAA0B/C,EAAED,EAAEgD,wBAAwBhG,EAAEC,IAAImD,EAAEtD,EAAE,MAAMA,GAAGA,EAAEa,OAAOc,GAAG,MAAM3B,EAAEe,MAAMuC,EAAE6C,EAAEnG,EAAEc,MAAMc,WAAW/B,EAAEoD,EAAE3D,EAAEc,EAAEkD,GAAGA,EAAE,CAACA,GAAG9D,EAAEoB,EAAEnB,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAGmD,EAAEf,KAAK3C,EAAE4B,IAAI5B,EAAEiC,UAAUyB,EAAEoC,IAAIrD,QAAQrC,EAAE0C,KAAKY,GAAGvC,IAAIuC,EAAEgC,IAAIhC,EAAEhC,GAAG,KAAK,OAAO5B,GAAG,GAAGE,EAAE+B,IAAI,KAAKzB,GAAG,MAAMH,EAAE,GAAGL,EAAE8G,KAAK,CAAC,IAAI5G,EAAEiC,KAAK3B,EAAE,IAAI,IAAID,GAAG,GAAGA,EAAEgE,UAAUhE,EAAE8D,aAAa9D,EAAEA,EAAE8D,YAAYhE,EAAEA,EAAE0G,QAAQxG,IAAI,KAAKL,EAAE4B,IAAIvB,CAAC,KAAK,CAAC,IAAIiE,EAAEnE,EAAEsC,OAAO6B,KAAKtD,EAAEb,EAAEmE,IAAIwC,EAAE9G,EAAE,MAAMA,EAAE4B,IAAIR,EAAEQ,IAAI5B,EAAEyB,IAAIL,EAAEK,IAAI3B,EAAE8G,MAAME,EAAE9G,GAAGD,EAAE6B,IAAI9B,EAAEE,EAAEoB,EAAE,MAAM,MAAMjB,GAAGH,EAAE+B,KAAKX,EAAEW,KAAK/B,EAAEyB,IAAIL,EAAEK,IAAIzB,EAAE4B,IAAIR,EAAEQ,KAAKvB,EAAEL,EAAE4B,IAA0Z,SAAW5B,EAAEoB,EAAEnB,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,GAAG,IAAIC,EAAEkD,EAAEhD,EAAEC,EAAEI,EAAE4C,EAAExC,EAAEyC,EAAE3D,EAAEqB,OAAOb,EAAE0B,EAAEf,EAAEE,MAAMe,EAAEjB,EAAEC,KAAK,GAAG,OAAOgB,EAAElC,EAAE,6BAA6B,QAAQkC,EAAElC,EAAE,qCAAqCA,IAAIA,EAAE,gCAAgC,MAAMC,EAAE,IAAII,EAAE,EAAEA,EAAEJ,EAAEqC,OAAOjC,IAAI,IAAIO,EAAEX,EAAEI,KAAK,iBAAiBO,KAAKsB,IAAIA,EAAEtB,EAAEgG,WAAW1E,EAAE,GAAGtB,EAAEsD,UAAU,CAACrE,EAAEe,EAAEX,EAAEI,GAAG,KAAK,KAAK,CAAC,GAAG,MAAMR,EAAE,CAAC,GAAG,MAAMqC,EAAE,OAAO2E,SAASC,eAAe9E,GAAGnC,EAAEgH,SAASE,gBAAgB/G,EAAEkC,EAAEF,EAAEgF,IAAIhF,GAAG7B,IAAIP,EAAEqH,KAAKrH,EAAEqH,IAAIhG,EAAEhB,GAAGE,GAAE,GAAIF,EAAE,IAAI,CAAC,GAAG,MAAMiC,EAAEuB,IAAIzB,GAAG7B,GAAGN,EAAEqH,MAAMlF,IAAInC,EAAEqH,KAAKlF,OAAO,CAAC,GAAG/B,EAAEA,GAAGN,EAAEwH,KAAKtH,EAAEuH,aAAajH,GAAG,MAAMF,EAAE,IAAIwD,EAAE,GAAGpD,EAAE,EAAEA,EAAER,EAAEwH,WAAW/E,OAAOjC,IAAIoD,GAAG7C,EAAEf,EAAEwH,WAAWhH,IAAIiH,MAAM1G,EAAE0E,MAAM,IAAIjF,KAAKoD,EAAE,GAAG7C,EAAE6C,EAAEpD,GAAG,YAAYA,QAAE,GAAS,2BAA2BA,EAAEE,EAAEK,OAAA,KAAYP,KAAK2B,GAAG,CAAC,GAAG,SAAS3B,GAAG,iBAAiB2B,GAAG,WAAW3B,GAAG,mBAAmB2B,EAAE,SAASsC,EAAEzE,EAAEQ,EAAE,KAAKO,EAAEZ,EAAE,CAAC,IAAIK,KAAK2B,EAAEpB,EAAEoB,EAAE3B,GAAG,YAAYA,EAAEG,EAAEI,EAAE,2BAA2BP,EAAEkD,EAAE3C,EAAE,SAASP,EAAEmD,EAAE5C,EAAE,WAAWP,EAAEW,EAAEJ,EAAET,GAAG,mBAAmBS,GAAG6C,EAAEpD,KAAKO,GAAG0D,EAAEzE,EAAEQ,EAAEO,EAAE6C,EAAEpD,GAAGL,GAAG,GAAGuD,EAAEpD,GAAGI,IAAIgD,EAAEgE,QAAQhH,EAAEgH,QAAQhE,EAAEgE,QAAQ1H,EAAE2H,aAAa3H,EAAE2H,UAAUjE,EAAEgE,QAAQtG,EAAEK,IAAI,WAAWf,IAAIV,EAAE2H,UAAU,IAAIlE,EAAE,YAAYrC,EAAEC,KAAKrB,EAAE4H,QAAQ5H,EAAEY,EAAED,GAAGA,EAAE,CAACA,GAAGS,EAAEnB,EAAEC,EAAE,iBAAiBmC,EAAE,+BAA+BlC,EAAEC,EAAEC,EAAED,EAAEA,EAAE,GAAGH,EAAEwB,KAAKe,EAAEvC,EAAE,GAAGK,EAAEC,GAAG,MAAMH,EAAE,IAAII,EAAEJ,EAAEqC,OAAOjC,KAAKQ,EAAEZ,EAAEI,IAAIF,IAAIE,EAAE,QAAQ,YAAY6B,GAAG,MAAMsB,EAAE3D,EAAEiF,gBAAgB,SAAS,MAAMtB,IAAIA,IAAI3D,EAAEQ,IAAI,YAAY6B,IAAIsB,GAAG,UAAUtB,GAAGsB,GAAGC,EAAEpD,KAAKiE,EAAEzE,EAAEQ,EAAEmD,EAAEC,EAAEpD,GAAGL,GAAGK,EAAE,UAAU,MAAMW,GAAGA,GAAGnB,EAAEQ,IAAIiE,EAAEzE,EAAEQ,EAAEW,EAAEyC,EAAEpD,GAAGL,GAAG,CAAC,OAAOH,CAAC,CAAn0D6H,CAAEzG,EAAEQ,IAAI5B,EAAEoB,EAAEnB,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,GAAG,OAAOC,EAAET,EAAE+H,SAAStH,EAAER,GAAG,IAAIA,EAAEiC,SAAI,EAAO5B,CAAC,CAAC,SAASyG,EAAEhH,GAAGA,GAAGA,EAAE+B,MAAM/B,EAAE+B,IAAID,KAAI,GAAI9B,GAAGA,EAAE2B,KAAK3B,EAAE2B,IAAIsG,QAAQjB,EAAE,CAAC,SAAStD,EAAE1D,EAAEE,EAAEoB,GAAG,IAAA,IAAQnB,EAAE,EAAEA,EAAEmB,EAAEqB,OAAOxC,IAAIgE,EAAE7C,EAAEnB,GAAGmB,IAAInB,GAAGmB,IAAInB,IAAIF,EAAE8B,KAAK9B,EAAE8B,IAAI7B,EAAEF,GAAGA,EAAEwG,KAAK,SAAStG,GAAG,IAAIF,EAAEE,EAAE8F,IAAI9F,EAAE8F,IAAI,GAAGhG,EAAEwG,KAAK,SAASxG,GAAGA,EAAEwH,KAAKtH,EAAE,EAAE,OAAOF,GAAGC,EAAE6B,IAAI9B,EAAEE,EAAE+B,IAAI,CAAC,EAAE,CAAC,SAAS4E,EAAE7G,GAAG,MAAM,iBAAiBA,GAAG,MAAMA,GAAGA,EAAE6B,KAAK7B,EAAE6B,IAAI,EAAE7B,EAAEc,EAAEd,GAAGA,EAAEkI,IAAIrB,GAAG5F,EAAE,CAAA,EAAGjB,EAAE,CAA+6C,SAASmE,EAAEnE,EAAEE,EAAEoB,GAAG,IAAI,GAAG,mBAAmBtB,EAAE,CAAC,IAAIG,EAAE,mBAAmBH,EAAEmC,IAAIhC,GAAGH,EAAEmC,MAAMhC,GAAG,MAAMD,IAAIF,EAAEmC,IAAInC,EAAEE,GAAG,MAAMF,EAAEmI,QAAQjI,CAAC,OAAOF,GAAGC,EAAE6B,IAAI9B,EAAEsB,EAAE,CAAC,CAAC,SAAS2C,EAAEjE,EAAEE,EAAEoB,GAAG,IAAInB,EAAEC,EAAE,GAAGH,EAAEmI,SAASnI,EAAEmI,QAAQpI,IAAIG,EAAEH,EAAE0B,OAAOvB,EAAEgI,SAAShI,EAAEgI,SAASnI,EAAE8B,KAAKqC,EAAEhE,EAAE,KAAKD,IAAI,OAAOC,EAAEH,EAAE+B,KAAK,CAAC,GAAG5B,EAAEkI,qBAAqB,IAAIlI,EAAEkI,sBAAsB,OAAOrI,GAAGC,EAAE6B,IAAI9B,EAAEE,EAAE,CAACC,EAAE0C,KAAK1C,EAAEmD,IAAI,IAAI,CAAC,GAAGnD,EAAEH,EAAE2B,IAAI,IAAIvB,EAAE,EAAEA,EAAED,EAAEwC,OAAOvC,IAAID,EAAEC,IAAI6D,EAAE9D,EAAEC,GAAGF,EAAEoB,GAAG,mBAAmBtB,EAAEuB,MAAMD,GAAGJ,EAAElB,EAAE8B,KAAK9B,EAAE+B,IAAI/B,EAAE4B,GAAG5B,EAAE8B,SAAI,CAAM,CAAC,SAAS+D,EAAE7F,EAAEC,EAAEC,GAAG,OAAOsC,KAAKR,YAAYhC,EAAEE,EAAE,CAAC,SAASoI,EAAEpI,EAAEoB,EAAEnB,GAAG,IAAME,EAAEC,EAAEC,EAAEe,GAAG4F,WAAW5F,EAAE4F,SAASqB,iBAAiBtI,EAAE2B,IAAI3B,EAAE2B,GAAG1B,EAAEoB,GAAGjB,GAAK,EAAsB,KAAeiB,EAAEK,IAAIrB,EAAE,GAAGC,EAAE,GAAGgD,EAAEjC,EAAEpB,EAAUoB,EAAGK,IAAjhS,SAAW1B,EAAEC,EAAEoB,GAAG,IAAInB,EAAEC,EAAEC,EAAEC,EAAE,GAAG,IAAID,KAAKH,EAAE,OAAOG,EAAEF,EAAED,EAAEG,GAAG,OAAOA,EAAED,EAAEF,EAAEG,GAAGC,EAAED,GAAGH,EAAEG,GAAG,GAAGmI,UAAU7F,OAAO,IAAIrC,EAAEgC,SAASkG,UAAU7F,OAAO,EAAE3C,EAAEwH,KAAKgB,UAAU,GAAGlH,GAAG,mBAAmBrB,GAAG,MAAMA,EAAEwI,aAAa,IAAIpI,KAAKJ,EAAEwI,kBAAa,IAASnI,EAAED,KAAKC,EAAED,GAAGJ,EAAEwI,aAAapI,IAAI,OAAOgB,EAAEpB,EAAEK,EAAEH,EAAEC,EAAE,KAAK,CAAivRyD,CAAExB,EAAE,KAAK,CAACnC,IAAIG,GAAGM,EAAEA,EAAEW,EAAEmC,aAAuBpD,EAAE,KAAKiB,EAAEoH,WAAW1I,EAAEwH,KAAKlG,EAAEmG,YAAY,KAAKnH,EAAUD,EAAEA,EAAEyB,IAAIR,EAAEoH,WAA1L,MAAuMnI,GAAGmD,EAAEpD,EAAEJ,EAAEK,EAAE,CAAy1BP,EAAEY,EAAEoE,MAAM/E,EAAE,CAAC6B,IAAI,SAAS9B,EAAEC,EAAEC,EAAEoB,GAAG,IAAA,IAAQnB,EAAEC,EAAEC,EAAEJ,EAAEA,EAAE2B,IAAI,IAAIzB,EAAEF,EAAE8B,OAAO5B,EAAEyB,GAAG,IAAI,IAAIxB,EAAED,EAAE6B,cAAc,MAAM5B,EAAEuI,2BAA2BxI,EAAEyI,SAASxI,EAAEuI,yBAAyB3I,IAAIK,EAAEF,EAAE4C,KAAK,MAAM5C,EAAE0I,oBAAoB1I,EAAE0I,kBAAkB7I,EAAEsB,GAAG,CAAA,GAAIjB,EAAEF,EAAE4C,KAAK1C,EAAE,OAAOF,EAAEyF,IAAIzF,CAAC,OAAOF,GAAGD,EAAEC,CAAC,CAAC,MAAMD,CAAC,GAAGE,EAAE,EAAwDqC,EAAEiD,UAAUoD,SAAS,SAAS5I,EAAEC,GAAG,IAAIC,EAAEA,EAAE,MAAMsC,KAAK0D,KAAK1D,KAAK0D,KAAK1D,KAAKuD,MAAMvD,KAAK0D,IAAI1D,KAAK0D,IAAIjF,EAAE,CAAA,EAAGuB,KAAKuD,OAAO,mBAAmB/F,IAAIA,EAAEA,EAAEiB,EAAE,CAAA,EAAGf,GAAGsC,KAAKhB,QAAQxB,GAAGiB,EAAEf,EAAEF,GAAG,MAAMA,GAAGwC,KAAKP,MAAMhC,GAAGuC,KAAKyD,IAAIjD,KAAK/C,GAAG6C,EAAEN,MAAM,EAAED,EAAEiD,UAAUsD,YAAY,SAAS9I,GAAGwC,KAAKP,MAAMO,KAAKV,KAAI,EAAG9B,GAAGwC,KAAKwD,IAAIhD,KAAKhD,GAAG8C,EAAEN,MAAM,EAAED,EAAEiD,UAAUC,OAAOpD,EAAElC,EAAE,GAAGE,EAAE,mBAAmB0I,QAAQA,QAAQvD,UAAUsB,KAAKkC,KAAKD,QAAQE,WAAWC,WAAW5I,EAAE,SAASN,EAAEC,GAAG,OAAOD,EAAEiC,IAAIJ,IAAI5B,EAAEgC,IAAIJ,GAAG,EAAEoB,EAAEC,IAAI,EAAE3C,EAAE,8BAA8BC,EAAE,EAAEC,EAAE4E,GAAE,GAAI3E,EAAE2E,GAAE,GCA1tV,IAAuE9E,EAAE,EAAkB,SAASL,EAAEI,EAAEgB,EAAEtB,EAAEI,EAAED,EAAED,GAAGoB,IAAIA,EAAE,IAAI,IAAIZ,EAAEF,EAAEG,EAAEW,EAAE,GAAG,QAAQX,EAAE,IAAIH,KAAKG,EAAE,CAAA,EAAGW,EAAE,OAAOd,EAAEE,EAAEY,EAAEd,GAAGG,EAAEH,GAAGc,EAAEd,GAAG,IAAIP,EAAE,CAACsB,KAAKjB,EAAEkB,MAAMb,EAAEc,IAAIzB,EAAE0B,IAAIhB,EAAEiB,IAAI,KAAKC,GAAG,KAAKC,IAAI,EAAEC,IAAI,KAAKC,IAAI,KAAKC,iBAAY,EAAOC,MAAM1B,EAAE2B,KAAI,EAAGC,IAAI,EAAEgH,SAAShJ,EAAEiJ,OAAOlJ,GAAG,GAAG,mBAAmBI,IAAII,EAAEJ,EAAEmI,cAAc,IAAIjI,KAAKE,OAAE,IAASC,EAAEH,KAAKG,EAAEH,GAAGE,EAAEF,IAAI,OAAOH,EAAE+B,OAAO/B,EAAE+B,MAAMnC,GAAGA,CAAC,CCA1wB,IAAIqB,EAAEjB,EAAEH,EAAEC,EAAEC,EAAE,EAAEG,EAAE,GAAGC,EAAER,EAAEM,EAAEE,EAAEqB,IAAInB,EAAEF,EAAE0C,IAAItC,EAAEJ,EAAEwH,OAAO/H,EAAEO,EAAEuB,IAAIV,EAAEb,EAAE4H,QAAQ3H,GAAED,EAAEoB,GAAG,SAASjB,GAAEX,EAAEsB,GAAGd,EAAEwF,KAAKxF,EAAEwF,IAAI3F,EAAEL,EAAEI,GAAGkB,GAAGlB,EAAE,EAAE,IAAIF,EAAEG,EAAEgJ,MAAMhJ,EAAEgJ,IAAI,CAACzH,GAAG,GAAGoE,IAAI,KAAK,OAAOhG,GAAGE,EAAE0B,GAAGe,QAAQzC,EAAE0B,GAAGoB,KAAK,IAAI9C,EAAE0B,GAAG5B,EAAE,CAAC,SAASc,GAAEd,GAAG,OAAOI,EAAE,EAAS,SAAWJ,EAAEE,GAAK,IAAIE,EAAEO,GAAEW,IAAI,GAAG,GAAGlB,EAAEkB,EAAEtB,GAAGI,EAAE2B,MAAM3B,EAAEwB,GAAG,CAAQqC,QAAE,EAAO/D,GAAG,SAASF,GAAG,IAAIsB,EAAElB,EAAEkJ,IAAIlJ,EAAEkJ,IAAI,GAAGlJ,EAAEwB,GAAG,GAAGvB,EAAED,EAAEkB,EAAEA,EAAEtB,GAAGsB,IAAIjB,IAAID,EAAEkJ,IAAI,CAACjJ,EAAED,EAAEwB,GAAG,IAAIxB,EAAE2B,IAAI6G,SAAS,IAAI,GAAGxI,EAAE2B,IAAI1B,GAAGA,EAAEkJ,KAAK,CAAC,IAAIhJ,EAAE,SAASP,EAAEsB,EAAEjB,GAAG,IAAID,EAAE2B,IAAIsH,IAAI,OAAM,EAAG,IAAInJ,EAAEE,EAAE2B,IAAIsH,IAAIzH,GAAG4H,OAAO,SAASxJ,GAAG,QAAQA,EAAE+B,GAAG,GAAG,GAAG7B,EAAEuJ,MAAM,SAASzJ,GAAG,OAAOA,EAAEsJ,GAAG,GAAG,OAAO9I,GAAGA,EAAEgH,KAAKhF,KAAKxC,EAAEsB,EAAEjB,GAAG,IAAIF,EAAEC,EAAE2B,IAAIP,QAAQxB,EAAE,OAAOE,EAAE+H,QAAQ,SAASjI,GAAG,GAAGA,EAAEsJ,IAAI,CAAC,IAAIhI,EAAEtB,EAAE4B,GAAG,GAAG5B,EAAE4B,GAAG5B,EAAEsJ,IAAItJ,EAAEsJ,SAAI,EAAOhI,IAAItB,EAAE4B,GAAG,KAAKzB,GAAE,EAAG,CAAC,GAAGK,GAAGA,EAAEgH,KAAKhF,KAAKxC,EAAEsB,EAAEjB,IAAIF,CAAC,EAAEE,EAAEkJ,KAAI,EAAG,IAAI/I,EAAEH,EAAEkG,sBAAsBjG,EAAED,EAAEoG,oBAAoBpG,EAAEoG,oBAAoB,SAASzG,EAAEsB,EAAEjB,GAAG,GAAGmC,KAAKV,IAAI,CAAC,IAAI5B,EAAEM,EAAEA,OAAE,EAAOD,EAAEP,EAAEsB,EAAEjB,GAAGG,EAAEN,CAAC,CAACI,GAAGA,EAAEkH,KAAKhF,KAAKxC,EAAEsB,EAAEjB,EAAE,EAAEA,EAAEkG,sBAAsBhG,CAAC,CAAC,OAAOH,EAAEkJ,KAAKlJ,EAAEwB,EAAE,CAArtBgC,CAAEK,GAAEjE,EAAE,CAAgtB,SAASa,GAAEb,EAAEE,GAAG,IAAIC,EAAEQ,GAAEW,IAAI,IAAId,EAAE0F,KAAKtD,GAAEzC,EAAEkJ,IAAInJ,KAAKC,EAAEyB,GAAG5B,EAAEG,EAAED,EAAEA,EAAEG,EAAEgJ,IAAIrD,IAAIhD,KAAK7C,GAAG,CAAiF,SAASiE,GAAEpE,GAAG,OAAOI,EAAE,EAAEoE,GAAE,WAAW,MAAM,CAAC2D,QAAQnI,EAAE,EAAE,GAAG,CAAsN,SAASwE,GAAExE,EAAEK,GAAG,IAAIH,EAAES,GAAEW,IAAI,GAAG,OAAOsB,GAAE1C,EAAEmJ,IAAIhJ,KAAKH,EAAE0B,GAAG5B,IAAIE,EAAEmJ,IAAIhJ,EAAEH,EAAE8F,IAAIhG,GAAGE,EAAE0B,EAAE,CAAqiB,SAAS+C,KAAI,IAAA,IAAQ3E,EAAEA,EAAEO,EAAE8C,YAAYrD,EAAEsD,KAAKtD,EAAEqJ,IAAI,IAAIrJ,EAAEqJ,IAAIrD,IAAIiC,QAAQjB,IAAGhH,EAAEqJ,IAAIrD,IAAIiC,QAAQ9D,IAAGnE,EAAEqJ,IAAIrD,IAAI,EAAE,OAAO1E,GAAGtB,EAAEqJ,IAAIrD,IAAI,GAAGxF,EAAEsB,IAAIR,EAAEtB,EAAEiC,IAAI,CAAC,CAACzB,EAAEqB,IAAI,SAAS7B,GAAGK,EAAE,KAAKC,GAAGA,EAAEN,EAAE,EAAEQ,EAAEoB,GAAG,SAAS5B,EAAEsB,GAAGtB,GAAGsB,EAAEK,KAAKL,EAAEK,IAAI2F,MAAMtH,EAAEsH,IAAIhG,EAAEK,IAAI2F,KAAK7G,IAAGA,GAAET,EAAEsB,EAAE,EAAEd,EAAE0C,IAAI,SAASlD,GAAGU,GAAGA,EAAEV,GAAGsB,EAAE,EAAE,IAAInB,GAAGE,EAAEL,EAAE+B,KAAKsH,IAAIlJ,IAAID,IAAIG,GAAGF,EAAE6F,IAAI,GAAG3F,EAAE2F,IAAI,GAAG7F,EAAEyB,GAAGqG,QAAQ,SAASjI,GAAGA,EAAEsJ,MAAMtJ,EAAE4B,GAAG5B,EAAEsJ,KAAKtJ,EAAEE,EAAEF,EAAEsJ,SAAI,CAAM,KAAKnJ,EAAE6F,IAAIiC,QAAQjB,IAAG7G,EAAE6F,IAAIiC,QAAQ9D,IAAGhE,EAAE6F,IAAI,GAAG1E,EAAE,IAAIpB,EAAEG,CAAC,EAAEG,EAAEwH,OAAO,SAAShI,GAAGY,GAAGA,EAAEZ,GAAG,IAAIsB,EAAEtB,EAAE+B,IAAIT,GAAGA,EAAE+H,MAAM/H,EAAE+H,IAAIrD,IAAIrD,SAAS,IAAIpC,EAAEyC,KAAK1B,IAAInB,IAAIK,EAAEkJ,yBAAyBvJ,EAAEK,EAAEkJ,wBAAwBzI,IAAG0D,KAAIrD,EAAE+H,IAAIzH,GAAGqG,QAAQ,SAASjI,GAAGA,EAAEE,IAAIF,EAAEqJ,IAAIrJ,EAAEE,GAAGF,EAAEE,OAAE,CAAM,IAAIA,EAAEG,EAAE,IAAI,EAAEG,EAAEuB,IAAI,SAAS/B,EAAEsB,GAAGA,EAAEkF,KAAK,SAASxG,GAAG,IAAIA,EAAEgG,IAAIiC,QAAQjB,IAAGhH,EAAEgG,IAAIhG,EAAEgG,IAAIwD,OAAO,SAASxJ,GAAG,OAAOA,EAAE4B,IAAIuC,GAAEnE,EAAE,EAAE,OAAOK,GAAGiB,EAAEkF,KAAK,SAASxG,GAAGA,EAAEgG,MAAMhG,EAAEgG,IAAI,GAAG,GAAG1E,EAAE,GAAGd,EAAEsB,IAAIzB,EAAEL,EAAEiC,IAAI,CAAC,GAAGhC,GAAGA,EAAED,EAAEsB,EAAE,EAAEd,EAAE4H,QAAQ,SAASpI,GAAGqB,GAAGA,EAAErB,GAAG,IAAIsB,EAAEjB,EAAEL,EAAE+B,IAAI1B,GAAGA,EAAEgJ,MAAMhJ,EAAEgJ,IAAIzH,GAAGqG,QAAQ,SAASjI,GAAG,IAAIgH,GAAEhH,EAAE,OAAOA,GAAGsB,EAAEtB,CAAC,CAAC,GAAGK,EAAEgJ,SAAI,EAAO/H,GAAGd,EAAEsB,IAAIR,EAAEjB,EAAE4B,KAAK,EAAE,IAAII,GAAE,mBAAmBqH,sBAAsB,SAASzI,GAAEjB,GAAG,IAAIsB,EAAEjB,EAAE,WAAWsJ,aAAazJ,GAAGmC,IAAGuH,qBAAqBtI,GAAG4H,WAAWlJ,EAAE,EAAEE,EAAEgJ,WAAW7I,EAAE,IAAIgC,KAAIf,EAAEoI,sBAAsBrJ,GAAG,CAAC,SAAS2G,GAAEhH,GAAG,IAAIsB,EAAEjB,EAAEH,EAAEF,EAAE+B,IAAI,mBAAmB7B,IAAIF,EAAE+B,SAAI,EAAO7B,KAAKG,EAAEiB,CAAC,CAAC,SAAS6C,GAAEnE,GAAG,IAAIsB,EAAEjB,EAAEL,EAAE+B,IAAI/B,EAAE4B,KAAKvB,EAAEiB,CAAC,CAAC,SAASsB,GAAE5C,EAAEsB,GAAG,OAAOtB,GAAGA,EAAE2C,SAASrB,EAAEqB,QAAQrB,EAAEkF,KAAK,SAASlF,EAAEjB,GAAG,OAAOiB,IAAItB,EAAEK,EAAE,EAAE,CAAC,SAAS4D,GAAEjE,EAAEsB,GAAG,MAAM,mBAAmBA,EAAEA,EAAEtB,GAAGsB,CAAC,CCCt6G,MASMuI,GAAS,CACpBC,QAAS,UACTC,aAAc,UAEdC,KAAM,UAENC,OAAQ,UAERC,YAAa,UACbC,gBAAiB,WAiBNC,GAAyBC,IACpC,MAAMC,EAfkB,CAACA,IACzB,MAAMC,EAAUD,EAAIE,OACpB,IAAK,qCAAqC9F,KAAK6F,GAC7C,MAAO,UAET,GAAuB,IAAnBA,EAAQ5H,OAAc,CACxB,MAAMtC,EAAIkK,EAAQ,GACZrJ,EAAIqJ,EAAQ,GACZzG,EAAIyG,EAAQ,GAClB,MAAO,IAAIlK,IAAIA,IAAIa,IAAIA,IAAI4C,IAAIA,GACjC,CACA,OAAOyG,GAIKE,CAAkBJ,GAAerF,MAAM,GAOnD,OADmB,KALT0F,SAASJ,EAAItF,MAAM,EAAG,GAAI,IAKL,KAJrB0F,SAASJ,EAAItF,MAAM,EAAG,GAAI,IAIO,KAHjC0F,SAASJ,EAAItF,MAAM,EAAG,GAAI,KAGoB,IACrC,IAAO,0BAA4B,2BAI3C2F,GACH,MADGA,GAEH,OAFGA,GAGF,OAIEC,GAAS,+BAGTC,GACL,oBADKA,GAEH,oBClDGC,GCVE,+rBDcFC,GEdE,mPCsBR,SAASC,IAAQC,IACpBA,EAAAC,MACAA,EAAAC,OACAA,EAAAC,MACAA,EAAAC,YACAA,GAAc,EAAAC,UACdA,EAAA1G,MACAA,EAAA2G,KACAA,EAAAC,OACAA,EAAAC,YACAA,KACGjK,IAEH,MAAMkK,QAAEA,EAAA5D,QAASA,GAAY6D,GAAQ,KACjC,IAAKV,EAAK,MAAO,CAAES,QAAS,YAAa5D,QAAS,IAElD,MAAM8D,EAAaX,EAAIT,OAEjBqB,EAAeD,EAAWE,MAAM,qBAOtC,MAAO,CAAEJ,QANOG,EAAeA,EAAa,GAAK,YAM/B/D,QAFJ8D,EAAW9G,QAAQ,eAAgB,IAAIA,QAAQ,eAAgB,MAG9E,CAACmG,IA0BJ,OACIc,EAAC,MAAA,CACGL,UACAR,QACAC,SACAG,YACA1G,MAAO,CACHoH,QAAS,eACTC,cAAe,SACfC,WAAY,KACTtH,GAEPuH,MAAM,gCACF3K,EACJ4K,wBAAyB,CAAExE,OAtCd+D,GAAQ,KACzB,IAAK7D,EAAS,MAAO,GACrB,IAAIuE,EAAcvE,EASlB,GAPIuD,IAEAgB,EAAcA,EACTvH,QAAQ,iBAAkB,SAASyG,MACnCzG,QAAQ,mBAAoB,WAAW0G,YAG5B,IAAhBC,EAA2B,CAC3B,MAAMa,EAAmBvI,OAAO0H,GAChCY,EAAc,wBAAwB3H,KAAK2H,GACrCA,EAAYvH,QAAQ,yBAA0B,iBAAiBwH,MAC/DD,EAAYvH,QACV,wDACA,qBAAqBwH,KAEjC,CAEA,OAAOD,GACR,CAACvE,EAASuD,EAAaE,EAAMC,EAAQC,KAkB/BnJ,SAAA8I,GAASW,EAAC,QAAA,CAAOzJ,SAAA8I,KAG9B,CChEO,MAAMmB,GAAa,EACxBC,aACAC,oBACAC,wBACAC,cACAC,aACAC,gBACAC,iBACAC,iBACAC,iBACAC,2BAEA,MAAMC,EAAUrD,GAAOC,QAEjBqD,EAA4C,CAChDC,SAAU,QACVC,MAAO,OACPC,OAAQ,OACRtB,QAAS,OACTuB,cAAe,SACfC,WAAY,WACZC,IAAK,MACLC,OAAQ,QASJC,EAAyC,CAC7CzC,MAAO,OACPC,OAAQ,OACRyC,aAAcjD,GACdkD,gBAAiBX,EACjBY,MAAO,UACP7D,OAAQ,OACR8D,OAAQ,UACR/B,QAAS,OACTwB,WAAY,SACZQ,eAAgB,SAChBC,WAAY,oBAAoBpD,iBAA+BA,KAC/DuC,SAAU,YAGNc,EAAuC,CAC3ChD,MAAO,OACPC,OAAQ,OACRa,QAAS,QACTxC,OAAQY,GAAsB8C,IAY1BiB,EAA2C,CAC/Cf,SAAU,WACVgB,IAAK,MACLf,MAAO,MACPnC,MAAO,OACPC,OAAQ,OACRyC,aAAc,MACd3D,OAAQ,OACRoE,WAAY,mBACZN,OAAQ,UACR/B,QAAS,OACTwB,WAAY,SACZQ,eAAgB,SAChBM,SAAU,OACVC,WAAY,IACZT,MAAOjE,GAAOG,KACdwE,QAAS,KAGLC,EAAc,CAClB3G,EACA4G,EACAC,EACAC,EACAC,IAEAC,EAAC,MAAA,CACCxD,UAAW,eAAesD,IAC1BhK,MAAO,CAAEmJ,OAAQ,WACjBW,UAGCpM,SAAA,CAAAqM,GACC5C,EAAC,SAAA,CACCxK,KAAK,SACLqD,MAAOuJ,EACPO,QAAUpO,IACRA,EAAEyO,kBACFJ,KAEF,aAAW,QAEXrM,SAAAyJ,EAACf,GAAA,CACCS,YAAa,EACbR,IAAKF,GACLS,OAAQ,eACRL,OAAQ,OAMdY,EAAC,MAAA,CACCnH,MAAO,CACLoK,aAAcL,EAAU,OAAS,IACjCM,UAAW,gBACPJ,EAAa,CAAEK,UAAW,OAAQC,UAAW,QAAW,CAAA,GAG7D7M,SAAAwF,OAKP,OACEgH,EAAAM,EAAA,CACE9M,SAAA,CAAAyJ,EAAC,QAAA,CAAOzJ,SAAA,8EAGKuH,GAAOG,qNAOFY,oCACMf,GAAOI,uLAMFY,w5BA+B5B,MAAA,CAAIjG,MAAOuI,EACV7K,SAAAwM,EAAC,MAAA,CAAIlK,MAxJyC,CAClDoH,QAAS,OACTwB,WAAY,SACZC,IAAK,QAuJEnL,SAAA,CAAAsK,IACED,IACAG,GACD2B,EACE,iDACA5B,EACA,KACA,sBACA,GAIHC,GACC2B,EACE3B,EACAC,EACAC,EACA,uBACA,GAIJ8B,EAAC,SAAA,CACClK,MAAO+I,EACPe,QAtJU,KACd/B,EACFF,IAEAD,KAmJM6C,aAAe/O,IACbgP,OAAOC,OAAOjP,EAAEkP,cAAc5K,MAAO,CACnCiJ,gBAAiBhE,GAAOE,aACxB0F,UAAW,iBAGfC,aAAepP,IACbgP,OAAOC,OAAOjP,EAAEkP,cAAc5K,MAAO,CAEnC6K,UAAW,cAGf,aAAY9C,EAAc,iBAAmB,kBAE7CrK,SAAA,CAAAyJ,EAAC,OAAA,CACC2C,QAAUpJ,IACRA,EAAMyJ,kBACNrC,KAEFtB,MACE6B,EAAuB,iBAAmB,mBAE5C,aACEA,EAAuB,mBAAqB,gBAE9CrI,MAAO,CACLwI,SAAU,WACVgB,IAAK,MACLf,MAAO,MACPnC,MAAO,OACPC,OAAQ,OACRyC,aAAc,MACd3D,OAAQ,aAAagD,EAAuB,QAAUpD,GAAOE,eAC7D8D,gBAAiBZ,EACbpD,GAAOE,aACP,sBACJgE,OAAQ,aAGZhC,EAACf,GAAA,CACCC,IAAK0B,EAAc5B,GAAmBD,GACtC,cAAY,OACZ,eAAc,EACdU,OAAQ,eACR5G,MAAOsJ,gBC7ORyB,GAAyB,CAAC,IAAK,IAAK,MAC3CC,GAAmB,SAEnBC,GAAoBC,IACxB,MAAMvF,EAAUuF,EAAQtF,OAAO1F,QAAQ,OAAQ,IAC/C,MAAI,gBAAgBJ,KAAK6F,GAChBA,EAGF,WAAWA,KAEdwF,GAAiB,CAACD,EAAiBE,KACvC,MAAMC,EAAaJ,GAAiBC,GAC9BI,EAAM,IAAIC,IAAIF,GAKpB,OAJAC,EAAIE,SAA4B,WAAjBF,EAAIE,SAAwB,OAAS,MACpDF,EAAIG,SAAW,GAAGH,EAAIG,SAASvL,QAAQ,MAAO,MAAMkL,IACpDE,EAAII,OAAS,GACbJ,EAAIK,KAAO,GACJL,EAAIM,YA4BAC,GAAuBC,GACb,iBAAVA,GAAgC,OAAVA,KAAkB,cAAeA,IACzDC,QAASD,EAAkCE,WAKhDC,GAAiBC,MAAOC,IAC5B,IACE,MAAMxJ,QAAcwJ,EAASC,OACvBC,EAAS1J,EAAK0J,OACpB,MAAsB,iBAAXA,EAA4BA,EACnCA,GAA4B,iBAAXA,EAA4BC,KAAKC,UAAUF,GACzD1J,EAAKmJ,OAASnJ,EAAK6J,SAAWL,EAASM,UAChD,CAAA,MACE,OAAON,EAASM,UAClB,GAGIC,GAASC,GACb,IAAIxI,QAASE,IACXC,WAAWD,EAASsI,KAGXC,GAAsBC,IAEjC,MAAMC,EAAcD,EAAO3M,QAAQ,2BAA4B,IACzD6M,EAAeC,KAAKF,GACpBG,EAAQ,IAAIC,WAAWH,EAAahP,QAC1C,IAAA,IAASxC,EAAI,EAAGA,EAAIwR,EAAahP,OAAQxC,GAAK,EAC5C0R,EAAM1R,GAAKwR,EAAaI,WAAW5R,GAErC,OAAO0R,GAqEHG,GAAoBlB,MACxBmB,EACAC,EACAC,EAAqB,KACrBC,KAEA,GAAsB,IAAlBH,EAAOtP,OAET,YADA,MAAAyP,GAAAA,EAAqB,SAKvB,MAAMC,EAAaJ,EAAOK,OAAO,CAACC,EAAK/R,IAAM+R,EAAM/R,EAAEgS,WAAY,GACjEC,QAAQC,IAAI,mCAAmCT,EAAOtP,kBAAkB0P,iBAA0BH,KAElG,MAAAE,GAAAA,EAAqB,YAErB,MAAMO,EAA2BV,EAAO/J,IAAK0K,IAC3C,MAAMC,EAAS,IAAIf,WAAWc,EAAMJ,YAEpC,OADAK,EAAOC,IAAIF,GACJC,EAAOE,SAIhB,IAAIC,EAAed,EACnB,GAAID,EAAOtP,OAAS,GAAKsP,EAAO,GAAGtP,QAAU,EAAG,CAC9C,MAAMsQ,EAASlS,MAAMmS,KAAKjB,EAAO,GAAGjN,MAAM,EAAG,IAC1CkD,OAASpE,EAAE0M,SAAS,IAAI2C,SAAS,EAAG,KAAKC,eACzCC,KAAK,KACRZ,QAAQC,IAAI,+BAA+BO,KAGvCA,EAAOK,WAAW,aAEXL,EAAOK,WAAW,UAAYL,EAAOK,WAAW,SADzDN,EAAe,aAGNC,EAAOK,WAAW,eAC3BN,EAAe,YACNC,EAAOK,WAAW,iBAC3BN,EAAe,aAEnB,CAIA,IAAIO,EAAeP,GAAgBA,EAAaQ,SAAS,KAAOR,EAAe,aAC3ES,EAA6Bd,EAEjC,GAAiB,cAAbT,EAA0B,CAE5B,MACMe,EArHc,EACtBtQ,EACAwP,EAAqB,QAErB,MAAMY,EAAS,IAAIW,YAAY,IACzBC,EAAO,IAAIC,SAASb,GAsB1B,OAlBAY,EAAKE,UAAU,EAAG,YAAY,GAC9BF,EAAKE,UAAU,EAAG,GAAKlR,GAAQ,GAC/BgR,EAAKE,UAAU,EAAG,YAAY,GAG9BF,EAAKE,UAAU,GAAI,YAAY,GAC/BF,EAAKE,UAAU,GAAI,IAAI,GACvBF,EAAKG,UAAU,GAAI,GAAG,GACtBH,EAAKG,UAAU,GAXE,GAWY,GAC7BH,EAAKE,UAAU,GAAI1B,GAAY,GAC/BwB,EAAKE,UAAU,GAbE,EAaE1B,EAAwB,GAAG,GAC9CwB,EAAKG,UAAU,GAAIC,GAAc,GACjCJ,EAAKG,UAAU,GAAI,IAAI,GAGvBH,EAAKE,UAAU,GAAI,YAAY,GAC/BF,EAAKE,UAAU,GAAIlR,GAAQ,GAEpB,IAAImP,WAAWiB,IA0FLiB,CADK/B,EAAOK,OAAO,CAACC,EAAK/R,IAAM+R,EAAM/R,EAAEgS,WAAY,GACtBL,GAC5CsB,EAAiB,CAACR,EAAOF,UAAWJ,GACpCY,EAAe,YACfd,QAAQC,IAAI,wCAAwCP,KACtD,CAEAM,QAAQC,IAAI,oCAAoCa,gBAA2BrB,MAC3E,MAAM+B,EAAO,IAAIC,KAAKT,EAAgB,CAAElS,KAAMgS,IAExCY,EAAe,IAAIC,MACnBC,EAAYlE,IAAImE,gBAAgBL,GAEtC,IACEE,EAAaI,QAAU,OACvBJ,EAAaK,UAAW,EAExBL,EAAa/O,aAAa,cAAe,QACzC+O,EAAalJ,IAAMoJ,QAEbF,EAAaM,OACnB,MAAArC,GAAAA,EAAqB,gBA5GEtB,OACzBqD,IAEIA,EAAaO,aAIX,IAAI3L,QAAc,CAACE,EAAS0L,KAChC,MAAMC,EAAWC,OAAOC,YAAY,KAC7BX,EAAaO,OAChBjC,QAAQsC,KAAK,gDAEd,KAEGC,EAAU,KACdC,IACAhM,KAGIiM,EAAU,KACdD,IACAN,EAAO,IAAIQ,MAAM,gCAGbF,EAAU,KACdJ,OAAOO,cAAcR,GACrBT,EAAajP,oBAAoB,QAAS8P,GAC1Cb,EAAajP,oBAAoB,QAASgQ,IAG5Cf,EAAalP,iBAAiB,QAAS+P,GACvCb,EAAalP,iBAAiB,QAASiQ,MA8EjCG,CAAmBlB,GACzB,MAAA/B,GAAAA,EAAqB,OACvB,OAASkD,GAGP,MAFA7C,QAAQ/B,MAAM,4BAA4B4E,IAAO,CAAEpD,SAAUqB,EAAcgC,KAAMtB,EAAKsB,OACtF,MAAAnD,GAAAA,EAAqB,QACfkD,CACR,CAAA,QACEnB,EAAaqB,QACbrB,EAAahP,gBAAgB,OAC7BgP,EAAasB,OACbtF,IAAIuF,gBAAgBrB,EACtB,GAyBWsB,GAAwBC,IACnC,MAAMC,EAAYD,EACfE,MAAM,SACN5N,IAAK6N,GAASA,EAAKvL,QACnBhB,OAAQuM,GAASA,EAAKzC,WAAW,UACjCpL,IAAK6N,GAASA,EAAK/Q,MAAM,GAAGgR,aAE/B,GAAyB,IAArBH,EAAUlT,OACZ,OAAO,KAGT,MAAMsT,EAAUJ,EAAUxC,KAAK,MAC/B,GAAgB,WAAZ4C,EACF,MAAO,CAAE1U,KAAM,QAGjB,IACE,OAAO2P,KAAKgF,MAAMD,EACpB,OAASvF,GAEP,OADA+B,QAAQ0D,KAAK,2BAA4BzF,GAClC,IACT,GAGW0F,GACXC,GAEyB,iBAAlBA,EAAQC,aACG,IAAjBD,EAAQ9U,MAAuC,UAAjB8U,EAAQ9U,MAIzCuP,eAAsByF,GACpBzG,EACA0G,EACAC,EACAC,EACAC,GAEA,MAAMzG,EAAM,GAAGL,GAAiBC,cAC1B8G,EAAW,IAAIC,SACrBD,EAASE,OAAO,OAAQN,GACxBI,EAASE,OAAO,aAAcL,GAC1BC,GAAWE,EAASE,OAAO,aAAcJ,GAC7CE,EAASE,OAAO,WAAYH,GAE5B,MAAM5F,QAAiBgG,MAAM7G,EAAK,CAAE8G,OAAQ,OAAQC,KAAML,IAC1D,IAAK7F,EAASmG,GACZ,MAAM,IAAI/B,YAAYtE,GAAeE,IAEvC,OAAOA,EAASC,MAClB,CAQA,MAAMmG,GAAa,CAAC/F,EAAiBR,GAAqB,KACxD,MAAMF,EAAQ,IAAIyE,MAAM/D,GAExB,OADAV,EAAME,UAAYA,EACXF,GAGH0G,GAAmBtG,MACvBhB,EACAuH,EACAC,EACAC,EACAC,WAEA,MAAMC,EAAc,IAAIZ,SACxBY,EAAYX,OAAO,OAAQO,GAC3BI,EAAYX,OAAO,QAASlH,IAC5B6H,EAAYX,OAAO,qBAAsB/S,OAAOuT,IAEhD,MAAMI,QAAoBX,MAAM,GAAGlH,GAAiBC,cAAqB,CACvEkH,OAAQ,OACRC,KAAMQ,IAGR,IAAKC,EAAYR,GACf,MAAMC,SAAiBtG,GAAe6G,IAAc,GAGtD,MAAMC,EAAS,OAAAC,EAAAF,EAAYT,WAAZ,EAAAW,EAAkBC,YACjC,IAAKF,EACH,MAAMR,GAAW,qCAAqC,GAGxDK,EAAUG,GAEV,MAAM1F,EAAoC,GAC1C,IAAIC,EAAW,aACXC,EAAa,KACjB,MAAM2F,EAAU,IAAIC,YACpB,IAAIhF,EAAS,GAEb,MACMwE,KADO,CAKX,MAAMS,KAAEA,EAAArS,MAAMA,SAAgBgS,EAAOM,OACrC,GAAID,EACF,MAGFjF,GAAU+E,EAAQI,OAAOvS,EAAO,CAAEwS,QAAQ,IAC1C,MAAMC,EAASrF,EAAO+C,MAAM,cAC5B/C,EAASqF,EAAOC,OAAS,GAEzB,IAAA,MAAWC,KAASF,EAAQ,CAC1B,MAAM/B,EAAUV,GAAqB2C,GACrC,GAAKjC,GAIDD,GAAkBC,GAAU,CAC9B,MAAMkC,EAASlC,EAAQkC,QAAU,MACjCrG,EAAWmE,EAAQmC,YAAyB,SAAXD,EAAoB,aAAe,cACpEtG,EAAOjP,KAAKwO,GAAmB6E,EAAQC,QACnCD,EAAQoC,cACVtG,EAAakE,EAAQoC,YAEzB,CACF,CACF,CAKA,OAHAd,EAAOe,cACPlB,OAAU,GAEH,CAAEvF,SAAQC,WAAUC,eAGvBwG,GAAyB7H,MAC7BhB,EACAuH,EACAC,EACAC,EACAqB,KAEA,MAAMC,EAAQ9I,GAAeD,EAAS,gBAChCgJ,EAzXgB,oBAAXC,QAA0B,eAAgBA,OAC5CA,OAAOC,aAET,OAAOC,KAAKC,SAASC,KAAKC,SAAS5I,SAAS,IAAIxL,MAAM,KAuXvDiN,EAAoC,GAC1C,IAAIC,EAAW,aACXC,EAAa,KACbkH,EAAiB,EAErB,MAAMC,EAAc,IAClB,IAAIvQ,QAAQ,CAACE,EAAS0L,KACpB,GAAI4C,IAEF,YADA5C,EAAOwC,GAAW,kBAAkB,IAItC,IAAIa,GAAO,EACPuB,EAAuD,KAC3D,MAAMC,EAAS,IAAIC,UAAUZ,GAC7BD,EAAUY,GAEV,MAAME,EAAW,CACfC,EACAjJ,KAEA8I,EAAOI,OAAS,KAChBJ,EAAOK,UAAY,KACnBL,EAAOM,QAAU,KACjBN,EAAOO,QAAU,KACjBnB,EAAU,MACG,YAATe,EAIJhF,EAAOjE,GAASyG,GAAW,iBAAiB,IAH1ClO,KAMJuQ,EAAOI,OAAS,KACdnH,QAAQsC,KACN,uCAAuC+D,gBAAwBO,KAEjEG,EAAOQ,KACL9I,KAAKC,UAAU,CACb5P,KAAM,QACN0Y,WAAYnB,EACZ9O,KAAMqN,EACN6C,MAAOtK,GACPuK,mBAAoB7C,EACpB8C,SAAUf,MAKhBG,EAAOK,UAAavU,IAClB,MAAM+Q,EAtawB,CACpC1Q,IAEA,IACE,MAAqB,iBAAVA,EACF,KAEFuL,KAAKgF,MAAMvQ,EACpB,CAAA,MACE,OAAO,IACT,GA4ZsB0U,CAAuBtW,OAAOuB,EAAMiC,OACpD,GAAK8O,EAAL,CAKA,GAAqB,UAAjBA,EAAQ9U,MAA6C,iBAAlB8U,EAAQC,MAAoB,CACjE,MAAMgE,EAA6B,iBAAhBjE,EAAQiE,IAAmBjE,EAAQiE,IAAM,EAyB5D,MAzb0B,EAClCC,EACAlB,IACYkB,EAAclB,EA8ZdmB,CAAqBF,EAAKjB,IAC5BpH,EAAOjP,KAAKwO,GAAmB6E,EAAQC,QACvC+C,EAAiBiB,EACbjE,EAAQmC,YACVtG,EAAWmE,EAAQmC,WAEc,iBAAxBnC,EAAQoC,cACjBtG,EAAakE,EAAQoC,cAGvBhG,QAAQsC,KACN,qDAAqD+D,SAAiBwB,UAAYjB,UAIlFG,EAAOiB,aAAehB,UAAUiB,MAClClB,EAAOQ,KACL9I,KAAKC,UAAU,CACb5P,KAAM,MACN0Y,WAAYnB,EACZsB,SAAUf,KAKlB,CAEA,GAAqB,SAAjBhD,EAAQ9U,KAAiB,CAG3B,OAD8B,iBAArB8U,EAAQ+D,SAAwB/D,EAAQ+D,SAAWf,GACxCA,GAClBE,EAAapC,GAAW,uBAAuB,GAC/Ca,GAAO,OACPwB,EAAOmB,UAGT3C,GAAO,OACPwB,EAAOmB,QAET,CAEqB,UAAjBtE,EAAQ9U,OACVgY,EAAapC,GAAWd,EAAQ3F,OAAS,gBAAsC,IAAtB2F,EAAQzF,WACjEoH,GAAO,EACPwB,EAAOmB,QAhDT,MAFElI,QAAQ0D,KAAK,wCAsDjBqD,EAAOM,QAAU,KACVP,IACHA,EAAapC,GAAW,0BAA0B,KAItDqC,EAAOO,QAAU,KACXxC,IACFmC,EAAS,SAAUvC,GAAW,kBAAkB,IAG9Ca,EACF0B,EAAS,WAGXA,EAAS,SAAUH,GAAcpC,GAAW,6BAA6B,OAI/E,IAAA,IAASyD,EAAU,EAAGA,GAAWjL,GAAuBhN,OAAQiY,GAAW,EAAG,CAC5E,GAAIA,EAAU,EAAG,CACf,MAAMC,EAAQlL,GAAuBiL,EAAU,GAC/CnI,QAAQ0D,KACN,gCAAgCyE,cAAoBC,cAAkBxB,WAElE/H,GAAMuJ,EACd,CAEA,IAEE,aADMvB,IACC,CAAErH,SAAQC,WAAUC,aAC7B,OAASzB,GACP,MAAME,EACJH,GAAoBC,GAChBU,EAAUV,aAAiByE,MAAQzE,EAAMU,QAAUrN,OAAO2M,GAIhE,GAHA+B,QAAQ0D,KACN,yCAAyCyE,eAAqBhK,WAAmBQ,MAE9ER,GAAagK,IAAYjL,GAAuBhN,OACnD,MAAM+N,CAEV,CACF,CAEA,MAAMyG,GAAW,oBAAoB,ICvhB1B2D,GAAyB,iCAEhCC,OAAuBC,IAAI,CAC/B,SACA,QACA,WACA,WACA,OACA,SAGIC,OAA8BD,IAAI,CACtC,IACA,SACA,QACA,WACA,SACA,UACA,UACA,WAGIE,OAAwBF,IAAI,CAChC,SACA,OACA,MACA,WACA,SACA,WACA,QACA,SACA,WACA,UACA,YACA,SACA,aACA,aAGIG,OAA6BH,IAAI,CACrC,QACA,SACA,eACA,OACA,cACA,OACA,gBAGII,OAA8BJ,IAAI,CACtC,WACA,WACA,QACA,WAGIK,GAAmB,CACvB,QACA,WACA,YACA,UACA,cACA,YACA,aACA,WACA,UACA,QACA,WACA,QACA,SACA,SACA,QACA,QAGIC,GAAyB,CAC7B,gBACA,gBACA,gBACA,eACA,iBAGIC,GACJ,uFAEIC,OAAuBC,IAC7B,IAAIC,IAAgB,EAEpB,MAAMC,GAAuBhW,GAC3BA,EAAMb,QAAQ,OAAQ,KAAK0F,OAEvBoR,GAAW,CAACjW,EAAekW,KAC/B,GAAIlW,EAAMhD,QAAUkZ,EAClB,OAAOlW,EAGT,MAAMmW,EAAS,mBACf,MAAO,GAAGnW,EAAMX,MAAM,EAAGmU,KAAK4C,IAAI,EAAGF,EAAWC,OAAkBA,KAG9DE,GAAiB,CAACrW,EAAekW,IACjClW,EAAMhD,QAAUkZ,EACXlW,EAEF,GAAGA,EAAMX,MAAM,EAAGmU,KAAK4C,IAAI,EAAGF,EAAW,SAW5CI,GAAgBtW,IACpB,GAAqB,iBAAVA,GAAgC,OAAVA,EAC/B,OAAO,EAGT,MAAMuW,EAAMvW,EACZ,MACqB,iBAAZuW,EAAIhM,KACY,iBAAhBgM,EAAIC,SACXpb,MAAMC,QAAQkb,EAAIE,QAClBrb,MAAMC,QAAQkb,EAAIG,gBACQ,iBAAnBH,EAAII,YACY,iBAAhBJ,EAAIK,SAITC,GAAY,CAACtU,EAA0BzG,KACtCA,GAGLyG,EAAI4K,IAAIrR,GAAMyG,EAAIuU,IAAIhb,IAAQ,GAAK,IAG/Bib,GAAkB,CAACxU,EAA0ByU,IAChC,IAAbzU,EAAIqN,KACC,OAGFxU,MAAMmS,KAAKhL,EAAI0U,WACnBxZ,KAAK,CAAC1C,EAAGoD,IAAMA,EAAE,GAAKpD,EAAE,IAAMA,EAAE,GAAGmc,cAAc/Y,EAAE,KACnDkB,MAAM,EAAG2X,GACTzU,IAAI,EAAEP,EAAMmV,KAAW,GAAGnV,KAAQmV,KAClCzJ,KAAK,MAGJ0J,GAAiBpX,IACrB,GAAc,OAAVA,EACF,OAAO,KAGT,MAAMqX,EAASC,OAAOvS,SAAS/E,EAAO,IACtC,OAAOsX,OAAOC,MAAMF,GAAU,KAAOA,GAGjCG,GAAe,CAACxX,EAAekW,EAAmB,MACtD,MAAMuB,EAAUzX,EAAMb,QAAQ,OAAQ,KAAKA,QAAQ,kBAAmB,IACtE,OAAOsY,EAAUpB,GAAeoB,EAASvB,GAAY,IAGjDwB,GAAmBC,IACvB,IAAIC,EAAQ,EACRxP,EAAyBuP,EAC7B,YAAOvP,WAAQyP,iBACbD,GAAS,EACTxP,EAASA,EAAOyP,cACZzP,IAAW7G,SAAS+P,QAI1B,OAAOsG,GAGHE,GAAkBH,GACN3B,GAAoB2B,EAAQI,aAAa,SAAW,IACjE3Y,cACA+Q,MAAM,KAAK,IACI,GAuEd6H,GACJxV,IAEA,MAAMyV,EAAc7c,MAAMmS,KAAKsI,GAAiBqC,UAC7CrU,OAAQsU,GAAUA,EAAM5N,MAAQ/H,EAAQ+H,KACxC9M,KAAK,CAAC1C,EAAGoD,IAAMA,EAAEwY,WAAa5b,EAAE4b,YAChCtX,MAAM,EAAG,GAEZ,GAA2B,IAAvB4Y,EAAYjb,OACd,OAAOwF,EAAQgU,QAGjB,MAAM4B,EAAiB,CACrB,yBACGH,EAAY1V,IAAK4V,IAClB,MAAME,EAAiBrC,GAAoBmC,EAAM3B,SAASnX,MAAM,EAAG,KACnE,MAAO,KAAK8Y,EAAM5N,UAAU8N,OAE9B3K,KAAK,MAEP,OAAOuI,GACL,GAAGzT,EAAQgU,cAAc4B,IApRU,OAyRjCE,GAAaX,IACjB,GAA4C,SAAxCA,EAAQI,aAAa,eACvB,OAAO,EAGT,GAAIJ,aAAmBY,aAAeZ,EAAQa,OAC5C,OAAO,EAGT,MAAMvZ,EAAQiQ,OAAOuJ,iBAAiBd,GACtC,GAAsB,SAAlB1Y,EAAMoH,SAA2C,WAArBpH,EAAMyZ,WACpC,OAAO,EAGT,MAAMC,EAAOhB,EAAQiB,wBACrB,OAAOD,EAAKpT,MAAQ,GAAKoT,EAAKnT,OAAS,GAGnCqT,GAAiBC,IACrB,IACE,OAAO,IAAItO,IAAIsO,EAAM5J,OAAO6J,SAASD,MAAMA,IAC7C,CAAA,MACE,OAAOA,CACT,GAGIE,GAAkBhZ,GACH,oBAARiZ,KAA6C,mBAAfA,IAAIC,OACpCD,IAAIC,OAAOlZ,GAGbA,EAAMb,QAAQ,mCAAoC,QAGrDga,GAAiBxB,IACrB,MAAMyB,EAAMzB,EAAQ0B,QAAQja,cAE5B,GAAIuY,EAAQ2B,GACV,MAAO,IAAIN,GAAerB,EAAQ2B,MAGpC,MAAMtX,EAAO2V,EAAQI,aAAa,QAClC,GAAI/V,EACF,MAAO,GAAGoX,WAAaJ,GAAehX,OAGxC,MAAMuX,EAAY5B,EAAQI,aAAa,cACvC,GAAIwB,EACF,MAAO,GAAGH,iBAAmBJ,GAAeO,OAG9C,MAAMC,EAAUpe,MAAMmS,KAAKoK,EAAQ8B,WAChC5V,OAAOmH,SACP3L,MAAM,EAAG,GACTkD,IAAKoD,GAAc,IAAIqT,GAAerT,MACtC+H,KAAK,IACR,GAAI8L,EACF,MAAO,GAAGJ,IAAMI,IAGlB,MAAME,EAAS/B,EAAQE,cACvB,IAAK6B,EACH,OAAON,EAOT,MAAO,GAAGA,iBAJYhe,MAAMmS,KAAKmM,EAAO/c,UAAUkH,OAC/C8V,GAAYA,EAAQN,UAAY1B,EAAQ0B,SAEfjY,QAAQuW,GAAW,MAI3CiC,GAAmBjC,IACvB,MAAMtT,EAAO2R,IACV2B,aAAmBY,YAAcZ,EAAQkC,UAAYlC,EAAQmC,cAC5D,IAEEP,EAAYvD,GAAoB2B,EAAQI,aAAa,eAAiB,IACtEtS,EAAQuQ,GAAoB2B,EAAQI,aAAa,UAAY,IAC7DgC,EAAc/D,GAClB2B,EAAQI,aAAa,gBAAkB,IAEnC/V,EAAOgU,GAAoB2B,EAAQI,aAAa,SAAW,IAC3D/X,EACJ2X,aAAmBqC,kBACnBrC,aAAmBsC,qBACnBtC,aAAmBuC,kBACflE,GAAoB2B,EAAQ3X,OAAS,IACrC,GAEAma,EAAY/e,MAAMmS,KAAKoK,EAAQ8B,WAClClX,IAAK6X,GAAS5C,GAAa4C,EAAM,KACjCC,KAAKrP,SACFsP,EACH3C,EAAQ2B,IAAM,IAAI3B,EAAQ2B,MAC1Ba,GAAa,IAAIA,KAClBhB,GAAcxB,GAEV4C,EACJlW,GAAQkV,GAAa9T,GAASsU,GAAe/Z,GAASgC,GAAQsY,EAEhE,GAAsC,UAAlC3C,EAAQ0B,QAAQja,cAA2B,CAE7C,MAAO,GADWuY,EAAQI,aAAa,SAAW,UAC3BwC,GAAS,SAClC,CAEA,OAAOA,GAAS,YAGZC,GAAiB7C,IACrB,MAAM8C,EAAS9C,EACT+C,EAAuB,GAE7B,IAAA,MAAWC,KAAajF,GAAkB,CACxC,MAAMkF,EAAa,KAAKD,IAClBE,EAAmB7P,QAAQ2M,EAAQI,aAAa6C,IAChDE,EAAmD,mBAAvBL,EAAOG,GAEzC,IAAKC,GAAqBC,KAI1BJ,EAAWrd,KAAKsd,GACZD,EAAW1d,QAxZiB,GAyZ9B,KAEJ,CAEA,OAAO0d,GAGHK,GAA2BpD,GAC/BhC,GAAuB9R,OAAQmX,GAAarD,EAAQsD,aAAaD,IAAWzY,IACzEyY,GAAaA,EAAS7b,QAAQ,QAAS,KAGtC+b,GAA2BvD,GAC/BA,EACGwD,oBACAtX,OACEmX,GACCA,EAASrN,WAAW,UAAYiI,GAAyB7W,KAAKic,IAEjE3b,MAAM,EAAG,GACTkD,IAAKyY,GAAaA,EAAS7b,QAAQ,QAAS,KAE3Cic,GAAiBnc,IACrB,MAAMoc,EAAuB,GAmB7B,MAjBqB,YAAjBpc,EAAMmJ,QACRiT,EAAWhe,KAAK,kBAIE,SAAlB4B,EAAMoH,SACY,SAAlBpH,EAAMoH,SACY,gBAAlBpH,EAAMoH,SACY,gBAAlBpH,EAAMoH,SAENgV,EAAWhe,KAAK,WAAW4B,EAAMoH,WAGZ,UAAnBpH,EAAMwI,UAA2C,WAAnBxI,EAAMwI,UACtC4T,EAAWhe,KAAK,YAAY4B,EAAMwI,YAG7B4T,EAAWhc,MAAM,EAAG,IAavBic,GAAoB,CAAC3D,EAAkBC,KAC3C,MAAM2D,EAXoB,CAAC5D,IAC3B,MAAMyB,EAAMzB,EAAQ0B,QAAQja,cACtBoc,EAAU7D,EAAQ2B,GAAK,IAAI9B,GAAaG,EAAQ2B,MAAQ,GACxDmC,EAAargB,MAAMmS,KAAKoK,EAAQ8B,WACnClX,IAAK6X,GAAS5C,GAAa4C,EAAM,KACjCC,KAAKrP,SAER,MAAO,GAAGoO,IAAMoC,IAAUC,EAAa,IAAIA,IAAe,MAI5CC,CAAoB/D,GAClC,GAAIC,GAAS,EACX,OAAO2D,EAGT,MAAM5e,EAAWvB,MAAMmS,KAAKoK,EAAQhb,UACjCkH,OAAQ8X,IAAWvG,GAAiBwG,IAAID,EAAMtC,QAAQja,gBACtDyE,OAAQ8X,GAAUrD,GAAUqD,IAC/B,GAAwB,IAApBhf,EAASK,OACX,OAAOue,EAGT,MAAMM,EAAUlf,EACb0C,MAAM,EAAG,GACTkD,IAAKoZ,GAAUL,GAAkBK,EAAO/D,EAAQ,IAC7CkE,EACJnf,EAASK,OAAS6e,EAAQ7e,OAAS,KAAIL,EAASK,OAAS6e,EAAQ7e,QAAW,GAE9E,MAAO,GAAGue,KAASM,EAAQnO,KAAK,OAAOoO,KAenCC,GAAgB,CAACtW,EAAeuW,IACf,IAAjBA,EAAMhf,OACD,GAAGyI,aAGL,GAAGA,OAAWuW,EAAMtO,KAAK,QAG5BuO,GAAuB,WAC3B,MAUMC,IAVM,OAAAjK,EAAA1Q,SAAS+P,WAAT,EAAAW,EAAekK,YAAa5a,SAASqB,gBAAgBuZ,WAG9Dhd,QAAQ,8BAA+B,IACvCA,QAAQ,4BAA6B,IACrCA,QAAQ,kCAAmC,IAC3CA,QAAQ,mBAAoB,IAC5BA,QAAQ,OAAQ,KAChB0F,OAGA1F,QAAQ,WAAY,MACpBA,QAAQ,OAAQ,KAChB0F,OAEH,OAAOoR,GAASiG,EA7gBY,MAghBxBE,GAAsB,KAC1B,MAAMC,EACJ9a,SAAS+a,cAAc,iCAAmC/a,SAAS+P,KAC/DiL,EAAqB,GACrBC,MAAWnH,IAEXoH,EAAarhB,MAAMmS,KAAK8O,EAAKK,iBAAiB,sBACpD,IAAA,MAAWC,KAAQF,EAAY,CAC7B,IAAKnE,GAAUqE,GACb,SAGF,MAAMtY,EAAO2R,GAAoB2G,EAAK7C,aAAe,IACrD,IAAKzV,GAAQA,EAAKrH,OAAS,GACzB,SAGF,MAAMya,EAAUpB,GAAehS,EAAM,KACrC,IAAImY,EAAKZ,IAAInE,KAIb+E,EAAKI,IAAInF,GACT8E,EAASlf,KAAK,KAAKoa,KACf8E,EAASvf,QAziBS,GA0iBpB,KAEJ,CAEA,OAAOuf,GA8BHM,GAA4B,KAChC,MAAMC,EAAc1hB,MAAMmS,KAAKhM,SAASmb,iBAAiB,MACnDK,EAAkBD,EAAYzd,MAAM,EA3kBb,KA6kBvBoX,EAAkB,GAClBuG,MAAc3H,IACd4H,MAA6BnH,IAC7BoH,MAAgBpH,IAChBqH,MAAiBrH,IACjBsH,MAAkBtH,IAClBuH,MAAoBvH,IACpBwH,MAAqBxH,IAE3B,IAAIyH,EAAkB,EAClBC,EAAW,EACXC,EAAwB,EACxBC,EAA2B,EAE3BC,EAAkB,EAClBC,EAAwB,EACxBC,EAAmB,EACnBC,EAAmB,EACnBC,EAA0B,EAE9B,IAAA,IAASC,EAAQ,EAAGA,EAAQjB,EAAgB/f,OAAQghB,GAAS,EAAG,CAC9D,MAAMrG,EAAUoF,EAAgBiB,GAC1B5E,EAAMzB,EAAQ0B,QAAQja,cAE5B,GAAIgW,GAAiBwG,IAAIxC,GACvB,SAGF,IAAKd,GAAUX,GACb,SAGF4F,GAAmB,EACnB1G,GAAUqG,EAAW9D,GAErB,MAAM6E,EAAOnG,GAAeH,GACxBsG,GACFpH,GAAUsG,EAAYc,GAGxB,MAAMrG,EAAQF,GAAgBC,GAC1BC,EAAQ4F,IACVA,EAAW5F,GAGb,MAAM3Y,EAAQiQ,OAAOuJ,iBAAiBd,GAClCnC,GAAuBoG,IAAI3c,EAAMoH,UACnCwQ,GAAUwG,EAAepe,EAAMoH,SAE7BoP,GAAwBmG,IAAI3c,EAAMwI,WACpCoP,GAAUyG,EAAgBre,EAAMwI,UAGlC,MAAMiT,EAAaF,GAAc7C,GACjC,GAAI+C,EAAW1d,OAAS,EAEtB,IAAA,MAAW2d,KAAaD,EACtB7D,GAAUuG,EAAazC,GAI3B,MAAMuD,EAAW9G,GAAcO,EAAQI,aAAa,aAC9CoG,EAA0B,OAAbD,GAAqBA,GAAY,EAChDC,IACFR,GAAmB,GAGrB,MAAMS,EAAoC,YAAjBnf,EAAMmJ,OAC3BgW,IACFR,GAAyB,GAG3B,MAAMS,EAAYnD,GAAwBvD,GACtC0G,EAAUrhB,OAAS,IACrB6gB,GAAoB,GAGtB,MAAMS,EAAYvD,GAAwBpD,GACtC2G,EAAUthB,OAAS,IACrB8gB,GAAoB,GAGtB,MAAMS,EAAgE,SAA5C5G,EAAQI,aAAa,mBAC3CwG,IACFR,GAA2B,GAG7B,MAAMjF,EAAOnB,EAAQI,aAAa,QAC5ByG,EAAsBlJ,GAAwBsG,IAAIxC,KAAiB,MAARA,GAAepO,QAAQ8N,IAClF2F,EAAoBlJ,GAAkBqG,IAAIqC,GAC1CS,EACJ/G,EAAQsD,aAAa,aACqB,SAA1CtD,EAAQI,aAAa,iBAEvB,GACU,MAARqB,GACAN,IACCA,EAAKnL,WAAW,OAChBmL,EAAKnL,WAAW,eACjB,CACA,MAAMgR,EAAe9F,GAAcC,GAC7ByB,EAAQX,GAAgBjC,IAAYgH,EACpCvO,EAAO,KAAKiG,GAAekE,EAAO,UAAUlE,GAAesI,EAAc,OAE1E3B,EAAQpB,IAAIxL,KACf4M,EAAQJ,IAAIxM,GACZqG,EAAMpZ,KAAK+S,GAKf,CAYA,KATEoO,GACAC,GACAF,GACA7D,EAAW1d,OAAS,GACpBmhB,GACAC,GACAC,EAAUrhB,OAAS,GACnBshB,EAAUthB,OAAS,IAES0hB,EAC5B,SAGEF,EACFf,GAAyB,EAEzBC,GAA4B,EAG9B,MAAMkB,EAAWzF,GAAcxB,GACzB4C,EAAQlE,GAAeuD,GAAgBjC,GAAU,IACjD0D,EAAaD,GAAcnc,GAC3B4f,EAAyB,GAE3BnE,EAAW1d,OAAS,GACtB6hB,EAAaxhB,KAAK,OAAOqd,EAAWhN,KAAK,QAEvC+Q,GACFI,EAAaxhB,KAAK,QAAQ4gB,KAExBE,GACFU,EAAaxhB,KAAK,OAAO6gB,KAEvBG,EAAUrhB,OAAS,GACrB6hB,EAAaxhB,KAAK,QAAQghB,EAAU3Q,KAAK,QAEvC4Q,EAAUthB,OAAS,GACrB6hB,EAAaxhB,KAAK,QAAQihB,EAAU5Q,KAAK,QAEvC2N,EAAWre,OAAS,EACtB6hB,EAAaxhB,KAAK,OAAOge,EAAW3N,KAAK,QAChC0Q,GACTS,EAAaxhB,KAAK,sBAGpB,MAAMyhB,EACJD,EAAa7hB,OAAS,EAAI,KAAK6hB,EAAanR,KAAK,SAAW,GACxD0C,EAAOiG,GACX,KAAK+C,KAAOwF,IAAWE,MAAgBvE,KACvC,KAGIwE,EACgB,EAApBrE,EAAW1d,QACVwhB,EAAsB,EAAI,IAC1BC,EAAoB,EAAI,IACxBN,EAAa,EAAI,IACjBC,EAAmB,EAAI,IACvBC,EAAUrhB,OAAS,EAAI,EAAI,IAC3BshB,EAAUthB,OAAS,EAAI,EAAI,IAC3BuhB,EAAoB,EAAI,GAErBS,EAAW/B,EAAuBnG,IAAI1G,KACvC4O,GAAYD,EAAQC,EAASD,QAChC9B,EAAuB9P,IAAIiD,EAAM,CAAEA,OAAM2O,QAAOf,SAEpD,CAEA,MAAMtH,EAAgBtb,MAAMmS,KAAK0P,EAAuB/E,UACrDza,KAAK,CAAC1C,EAAGoD,IAAMA,EAAE4gB,MAAQhkB,EAAEgkB,OAAShkB,EAAEijB,MAAQ7f,EAAE6f,OAChD3e,MAAM,EA1wBe,IA2wBrBkD,IAAK0c,GAAcA,EAAU7O,MAE1B8O,EAAwB,IAAIpJ,IAChC1a,MAAMmS,KAAK4P,EAAWlG,WAAWpT,OAAO,EAAEoa,KACxC1I,GAAkBqG,IAAIqC,KAIpBkB,EAAqB,CACzB,wBAAwB1B,mBAAuCC,sBAA6CK,IAC5G,qBAAqBhH,GAAgBqG,EAAa,KAClD,mCAAmCO,qBAAmCC,iBAAqCC,iBAAgCC,IAC3I,iBAAiB/G,GAAgBmI,EAAuB,KACxD,iHACA3c,IAAK6N,GAASiG,GAAejG,EAAM,MAE/BgP,EA/SuB,MAC7B,MAAM/C,EAAO9a,SAAS+P,MAAQ/P,SAASqB,gBAMvC,OALsBxH,MAAMmS,KAAK8O,EAAK1f,UACnCkH,OAAQ8X,IAAWvG,GAAiBwG,IAAID,EAAMtC,QAAQja,gBACtDyE,OAAQ8X,GAAUrD,GAAUqD,IAC5Btc,MAAM,EA1egB,GA4eJkD,IAAKoZ,GACxBtF,GAAeiF,GAAkBK,EA5eZ,GA4esC,OAuSxC0D,GACfC,EAAgB,CACpB,kBAAkBxC,EAAY9f,mBAAmB+f,EAAgB/f,mBAAmBugB,gBAA8BC,IAAWV,EAAY9f,OAAS+f,EAAgB/f,OAAS,gBAAkB,KAC7L,kBAAkB+Z,GAAgBmG,EAAW,MAC7C,mBAAmBnG,GAAgBoG,EAAY,KAC/C,6BAA6BpG,GAAgBsG,EAAe,iBAAiBtG,GAAgBuG,EAAgB,MAC7G,oBAAoB8B,EAAapiB,OAAS,EAAIoiB,EAAa1R,KAAK,QAAU,UAC1EnL,IAAK6N,GAASiG,GAAejG,EAAM,MAErC,MAAO,CACLqG,MAAOA,EAAMpX,MAAM,EAtyBL,IAuyBdqX,gBACAyI,qBACAG,kBA4CSC,GAAiB,KAC5B,GAAsB,oBAAXrQ,QAA8C,oBAAb3N,SAC1C,MAAO,CACLkV,MAAO,GACPC,cAAe,GACfF,QAAS,IAppBiB,MAC9B,IAAIT,IAA2C,oBAAnByJ,eAA5B,CAIAzJ,IAAgB,EAEhB,IACE,MAAM0J,EAAMD,eAAeE,QAAQvK,IACnC,IAAKsK,EACH,OAGF,MAAMpI,EAAS9L,KAAKgF,MAAMkP,GAC1B,IAAKrkB,MAAMC,QAAQgc,GACjB,OAGF,IAAA,MAAWrX,KAASqX,EACbf,GAAatW,IA7MkB,IAgNhCA,EAAM4W,SAGVf,GAAiB1I,IAAInN,EAAMuK,IAAKvK,GAE9B6V,GAAiBjG,KAAO,GAC1B9C,QAAQsC,KACN,0CAA0CyG,GAAiBjG,OAGjE,OAAS7E,GACP+B,QAAQ0D,KAAK,uCAAwCzF,EACvD,CA/BA,GAqpBA4U,GACA,MAAMpV,EAtuBa,CAACqV,IACpB,IACE,OAAO,IAAIpV,IAAIoV,EAAQA,GAAQ9G,IACjC,CAAA,MACE,OAAO8G,CACT,GAiuBYC,CAAa3Q,OAAO6J,SAASD,MACnCgH,EAASjK,GAAiBiB,IAAIvM,GACpC,GAAIuV,EAEF,OADAhT,QAAQsC,KAAK,iCAAiC7E,KACvC,CACLkM,MAAOqJ,EAAOrJ,MACdC,cAAeoJ,EAAOpJ,cACtBF,QAASwB,GAAwB8H,IAIrChT,QAAQsC,KAAK,kCAAkC7E,KAE/C,MAAMwV,EAAWlD,KACXmD,EAAW5kB,MAAMmS,KAAKhM,SAASmb,iBAAiB,eACnD7Y,OAAQ8T,GAAYW,GAAUX,IAC9BpV,IAAKoV,GACJ,KAAKtB,GAAeL,GAAoB2B,EAAQmC,aAAe,IAAK,QAErEjW,OAAQuM,GAAkB,OAATA,GACjB/Q,MAAM,EAj3BU,IAi4Bb8Y,EAAgC,CACpC5N,MACAiM,QAxFmC,EACrCyJ,EACA/J,EAryBuC,QAuyBvC,MAAMgK,EAAW,CACfnE,GAAc,OAAQ,CACpB,UAAUkE,EAAM1V,KAAO,YACvB,YAAY0V,EAAMxa,OAAS,YAC3B,WAAWwa,EAAME,MAAQ,cAE3BpE,GAAc,WAAYkE,EAAMD,UAChCjE,GAAc,oBAAqBkE,EAAMG,WACzCrE,GAAc,sBAAuBkE,EAAMd,oBAC3CpD,GAAc,4BAA6BkE,EAAMX,eACjDvD,GAAc,YAAakE,EAAMxJ,OACjCsF,GAAc,oBAAqBkE,EAAMvJ,eACzCqF,GAAc,wBAAyBkE,EAAMI,cAC7CtE,GAAc,qBAAsB,CAClC,KAAKkE,EAAMK,iBAAmB,mBAIlC,OAAOrK,GAASiK,EAASxS,KAAK,QAASwI,IAkDvBqK,CAAwB,CACtChW,MACA9E,MAAOlE,SAASkE,MAChB0a,KAAM5e,SAASqB,gBAAgBud,KAC/BH,WACAI,UArUyD,CACzD,CAAE7F,MAAO,OAAQqE,SAAU,uBAC3B,CAAErE,MAAO,MAAOqE,SAAU,4BAC1B,CAAErE,MAAO,UAAWqE,SAAU,WAC9B,CAAErE,MAAO,UAAWqE,SAAU,WAC9B,CAAErE,MAAO,OAAQqE,SAAU,QAC3B,CAAErE,MAAO,IAAKqE,SAAU,KACxB,CAAErE,MAAO,SAAUqE,SAAU,UAC7B,CAAErE,MAAO,QAASqE,SAAU,SAC5B,CAAErE,MAAO,mBAAoBqE,SAAU,kCACvC,CAAErE,MAAO,gBAAiBqE,SAAU,aACpC,CACErE,MAAO,oBACPqE,SACE,kFAEJ,CAAErE,MAAO,WAAYqE,SAAU,cAC/B,CAAErE,MAAO,kBAAmBqE,SAAU,4BACtC,CAAErE,MAAO,uBAAwBqE,SAAU,sBAG/Brc,IACZ,EAAGgY,QAAOqE,cAAe,KAAKrE,MAAUhZ,SAASmb,iBAAiBkC,GAAU5hB,UAgT5EyZ,MAAOsJ,EAAStJ,MAChBC,cAAeqJ,EAASrJ,cACxByI,mBAAoBY,EAASZ,mBAC7BG,cAAeS,EAAST,cACxBe,aAAcjE,KACdkE,gBAAiBrE,OAMjBxF,MAAOsJ,EAAStJ,MAChBC,cAAeqJ,EAASrJ,cACxBC,WAAYrD,KAAKC,MACjBqD,QA73BsC,GAu4BxC,OAPAf,GAAiB1I,IAAI5C,EAAK4N,GAhpBI,MAC9B,GAAItC,GAAiBjG,MAxPE,GAyPrB,OAGF,MAAM4Q,EAASplB,MAAMmS,KAAKsI,GAAiBqC,UAAUza,KACnD,CAAC1C,EAAGoD,IAAMpD,EAAE4b,WAAaxY,EAAEwY,YAEvBmF,EAAW0E,EAAOxjB,OA/PD,GAgQvB,IAAA,IAASxC,EAAI,EAAGA,EAAIshB,EAAUthB,GAAK,EACjCqb,GAAiB4K,OAAOD,EAAOhmB,GAAG+P,MAuoBpCmW,GAlqB4B,MAC5B,GAA8B,oBAAnBlB,eAIX,IACE,MAAMmB,EAAapV,KAAKC,UACtBpQ,MAAMmS,KAAKsI,GAAiBqC,UAAUza,KACpC,CAAC1C,EAAGoD,IAAMpD,EAAE4b,WAAaxY,EAAEwY,aAG/B6I,eAAeoB,QAAQzL,GAAwBwL,EACjD,OAAS5V,GACP+B,QAAQ0D,KAAK,uCAAwCzF,EACvD,GAqpBA8V,GACA/T,QAAQsC,KACN,oCAAoC7E,UAAYsL,GAAiBjG,QAG5D,CACL6G,MAAO0B,EAAM1B,MACbC,cAAeyB,EAAMzB,cACrBF,QAASwB,GAAwBG,KC77B/B2I,GAAkB,wBAClBC,GAAqB,8BACdC,GAA0B,IAEjCC,GAAgB,+BAwDhBC,GAAYlhB,GACC,iBAAVA,GAAgC,OAAVA,IAAmB5E,MAAMC,QAAQ2E,GAE1DmhB,GAAYnhB,GACC,iBAAVA,GAAsBA,EAAM6E,OAAS7E,EAAM6E,YAAS,EAEvDuc,GAAYphB,GACC,iBAAVA,GAAsBsX,OAAO+J,SAASrhB,GAASA,OAAQ,EA0InDshB,GAAsB7B,IACjC,MAAMpI,EAnFiB,CAACoI,IACxB,MAAMR,EAvDqB,CAACQ,IAC5B,MAAM7a,EAAU6a,EAAI5a,OACd0c,EAAc3c,EAAQuB,MAAM,oCAClC,aAAIob,WAAc,IACTA,EAAY,GAAG1c,OAEjBD,GAiDW4c,CAAqB/B,GACvC,IACE,OAAOlU,KAAKgF,MAAM0O,EACpB,CAAA,MACE,MAAMwC,EAlDqB,CAACxB,IAC9B,MAAMyB,EAAQzB,EAAM7e,QAAQ,KAC5B,GAAIsgB,EAAQ,EACV,OAAO,KAGT,IAAI9J,EAAQ,EACR+J,GAAW,EACXC,GAAY,EAEhB,IAAA,IAASpnB,EAAIknB,EAAOlnB,EAAIylB,EAAMjjB,OAAQxC,GAAK,EAAG,CAC5C,MAAMqnB,EAAO5B,EAAMzlB,GAEnB,GAAImnB,EACEC,EACFA,GAAY,EACM,OAATC,EACTD,GAAY,EACM,MAATC,IACTF,GAAW,QAKf,GAAa,MAATE,EAKJ,GAAa,MAATA,GAKJ,GAAa,MAATA,IACFjK,GAAS,EACK,IAAVA,GACF,OAAOqI,EAAM5gB,MAAMqiB,EAAOlnB,EAAI,QAPhCod,GAAS,OALT+J,GAAW,CAef,CAEA,OAAO,MAQmBG,CAAuB7C,GAC/C,IAAKwC,EACH,OAAO,KAET,IACE,OAAOlW,KAAKgF,MAAMkR,EACpB,CAAA,MACE,OAAO,IACT,CACF,GAqEeM,CAAiBtC,GAChC,IAAKyB,GAAS7J,GACZ,MAAO,CACL2K,MAAOvC,EAAI5a,OACXod,UAAW,IAOf,MAAO,CACLD,MAJYb,GAAS9J,EAAO2K,QAAU,GAKtCC,UA/EsB,CAACjiB,IACzB,IAAK5E,MAAMC,QAAQ2E,GACjB,MAAO,GAGT,MAAMiiB,EAA6B,GAEnC,IAAA,MAAW7H,KAAQpa,EACjB,GAAKkhB,GAAS9G,GAAd,CAIA,GAAkB,aAAdA,EAAK8H,KAAqB,CAC5B,MAAMC,EAAShB,GAAS/G,EAAK+H,QAC7B,IAAKA,IAAW,CAAC,OAAQ,QAAS,OAAQ,UAAUtU,SAASsU,GAC3D,SAGFF,EAAU5kB,KAAK,CACb6kB,KAAM,WACNC,SACAvD,SAAUuC,GAAS/G,EAAKwE,UACxBva,KAA2B,iBAAd+V,EAAK/V,KAAoB+V,EAAK/V,UAAO,EAClDzH,EAAGwkB,GAAShH,EAAKxd,GACjB1B,EAAGkmB,GAAShH,EAAKlf,KAEnB,QACF,CAEA,GAAkB,aAAdkf,EAAK8H,KAAqB,CAC5B,MAAM3X,EAAM4W,GAAS/G,EAAK7P,KAC1B,IAAKA,EACH,SAGF0X,EAAU5kB,KAAK,CACb6kB,KAAM,WACN3X,QAEF,QACF,CAEA,GAAkB,mBAAd6P,EAAK8H,MAOT,GAAkB,WAAd9H,EAAK8H,KAAmB,CAC1B,MAAMtD,EAAWuC,GAAS/G,EAAKwE,UAC/B,IAAKA,EACH,SAGFqD,EAAU5kB,KAAK,CACb6kB,KAAM,SACNtD,YAEJ,OAhBEqD,EAAU5kB,KAAK,CACb6kB,KAAM,kBAlCV,CAoDF,OAAOD,GAaWG,CAAkB/K,EAAOgL,YAAchL,EAAO4K,aAQrDK,GAAQ,CAACtiB,EAAeuiB,EAAanM,IAChD5C,KAAK+O,IAAInM,EAAK5C,KAAK4C,IAAImM,EAAKviB,IA6BjBwiB,GAAwBrX,MACnCsX,EACAC,EA5PgC,OA8PhC,GAAsB,oBAAXxT,OACT,OAGF,MAAMyT,EAASzT,OAAO0T,QAChBC,EAAQJ,EAAUE,EACpBnP,KAAKsP,IAAID,GAAS,SAIhB,IAAIzf,QAAeE,IACvB,MAAMyf,EACJ7T,OAAOnL,uBAAA,CACLif,GAAmC9T,OAAO3L,WAAW,IAAMyf,EAASC,YAAY1P,OAAQ,KAEtF2P,EAAYD,YAAY1P,MAExB4P,EAAQ5P,IACZ,MACM6P,EAAWd,IADD/O,EAAM2P,GACWR,EAAY,EAAG,GAC1CW,EA5CiB,CAACD,KAC1B5P,KAAK8P,IAAI9P,KAAK+P,GAAKH,GAAY,GAAK,EA2CpBI,CAAcJ,GAC5BlU,OAAOuU,SAAS,EAAGd,EAASE,EAAQQ,GAEhCD,EAAW,EACbL,EAAII,GAEJ7f,KAIJyf,EAAII,MAIFO,GAA0B,KAC9B,GAA4B,oBAAjBC,aACT,OAAO,KAGT,IACE,MAAMlE,EAAMkE,aAAajE,QAAQqB,IACjC,IAAKtB,EACH,OAAO,KAGT,MAAMpI,EAAS9L,KAAKgF,MAAMkP,GAC1B,MACwB,iBAAfpI,EAAO9M,KACM,iBAAb8M,EAAOza,GACb0a,OAAO+J,SAAShK,EAAOza,IACJ,iBAAbya,EAAOnc,GACboc,OAAO+J,SAAShK,EAAOnc,GAKnB,CACLqP,IAAK8M,EAAO9M,IACZ3N,EAAGya,EAAOza,EACV1B,EAAGmc,EAAOnc,EACV0oB,SAA4B,IAAnBvM,EAAOuM,SAPT,IASX,CAAA,MACE,OAAO,IACT,GAGIC,GAAqB,CAACjnB,EAAW1B,EAAW0oB,KAChD,GAA4B,oBAAjBD,aAIX,IACE,MAAMjT,EAAgC,CACpCnG,IAAK2E,OAAO6J,SAASD,KACrBlc,EAAAA,EACA1B,EAAAA,EACA0oB,WAEFD,aAAa/C,QAAQG,GAAoBxV,KAAKC,UAAUkF,GAC1D,CAAA,MAEA,GAGIoT,GAAoB,CAAC1b,EAAqBxL,EAAW1B,KACzDkN,EAAOnJ,MAAM8kB,KAAO,GAAGnnB,MACvBwL,EAAOnJ,MAAMwJ,IAAM,GAAGvN,OAQlB8oB,GAAsB,CAAC5b,EAAqBwb,KAChDxb,EAAOnJ,MAAMglB,QAAUL,EAAU,IAAM,KAGzC,IAAIM,IAAiC,EACrC,MAAMC,GAAgC,KAChCD,KAGJA,IAAiC,EAEjC3iB,SAASjC,iBAAiB,YAAcK,IACtC,MAAMyI,EAAS7G,SAAS6iB,eAAetD,IACvC,KAAM1Y,aAAkBmQ,aACtB,OAGF,GAA6B,MAAzBnQ,EAAOnJ,MAAMglB,QACf,OAGF,MAAQrnB,EAAAA,EAAG1B,EAAAA,GA1BW,CAACkN,IAAA,CACzBxL,EAAG0a,OAAO+M,WAAWjc,EAAOnJ,MAAM8kB,OAAS,EAC3C7oB,EAAGoc,OAAO+M,WAAWjc,EAAOnJ,MAAMwJ,MAAQ,IAwBvB6b,CAAkBlc,GAC7Bmc,EAAW5kB,EAAM6kB,MACjBC,EAAW9kB,EAAM+kB,MACNlR,KAAKmR,MAAMJ,EAAW3nB,EAAG6nB,EAAWvpB,IAnX1B,KAsXzB8oB,GAAoB5b,GAAQ,GAC5Byb,GAAmBjnB,EAAG1B,GAAG,QAezB0pB,GAAe,KACnB,MAAM5F,EAAWzd,SAAS6iB,eAAetD,IACzC,GAAI9B,EAEF,OADAmF,KACOnF,EAGT,MAAM5W,EAAS7G,SAASsjB,cAAc,OACtCzc,EAAOkR,GAAKwH,GACZ1Y,EAAOnJ,MAAMwI,SAAW,WACxBW,EAAOnJ,MAAM8kB,KAAO,MACpB3b,EAAOnJ,MAAMwJ,IAAM,MACnBL,EAAOnJ,MAAMglB,QAAU,IAEvB7b,EAAOnJ,MAAMsG,MAAQ,OACrB6C,EAAOnJ,MAAMuG,OAAS,OACtB4C,EAAOnJ,MAAMgJ,aAAe,MAC5B,MAAM6c,EAAY5gB,GAAOC,QACzBiE,EAAOnJ,MAAMyJ,WAAaoc,EAa1B,OAXA1c,EAAOnJ,MAAMqF,OAAS,oBACtB8D,EAAOnJ,MAAM8lB,UAAY,oCACzB3c,EAAOnJ,MAAM+lB,UAAY,aACzB5c,EAAOnJ,MAAM8I,OAAS,aACtBK,EAAOnJ,MAAMgmB,cAAgB,OAC7B7c,EAAOnJ,MAAM6K,UAAY,wBACzB1B,EAAOnJ,MAAMqJ,WAAa,cAAqC2Y,iBAAmDA,6BAClH1f,SAAS+P,KAAK4T,YAAY9c,GAC1B+b,KAtC0C,CAAC/b,IAC3C,MAAM+c,EAASzB,KACVyB,GAAUA,EAAO5a,MAAQ2E,OAAO6J,SAASD,OAI9CgL,GAAkB1b,EAAQ+c,EAAOvoB,EAAGuoB,EAAOjqB,GAC3C8oB,GAAoB5b,EAAQ+c,EAAOvB,WAgCnCwB,CAAoChd,GACpC0E,QAAQsC,KAAK,gCAAgC0V,oBACtC1c,GAGHid,GAAala,MAAOvO,EAAW1B,KACnC,MAAMkN,EAASwc,KACfd,GAAkB1b,EAAQxL,EAAG1B,GAC7B8oB,GAAoB5b,GAAQ,GAC5Byb,GAAmBjnB,EAAG1B,GAAG,SACnB,IAAIkI,QAASE,GAAYC,WAAWD,EAAS0d,MAG/CsE,GAAoB3N,IACxB,MAAMgB,EAAOhB,EAAQiB,wBACrB,MAAO,CACLhc,EAAG+b,EAAKoL,KAAO7U,OAAOqW,QAAU5M,EAAKpT,MAAQ,EAC7CrK,EAAGyd,EAAKlQ,IAAMyG,OAAO0T,QAAUjK,EAAKnT,OAAS,IAI3CggB,GAA4B,uCAE5BC,GAAyB7G,cAC7B,IACE,OAAOrd,SAAS+a,cAAcsC,EAChC,OAAS7T,GACP,MAAM2a,EAAgB9G,EAASzY,MAAMqf,IACrC,IAAKE,EAEH,OADA5Y,QAAQ0D,KAAK,8BAA8BoO,IAAY7T,GAChD,KAGT,MAAM4a,GAAe,OAAA1T,EAAAyT,EAAc,aAAI7gB,SAAU,IAC3C+gB,GAAe,OAAAC,EAAAH,EAAc,aAAI7gB,SAAU,GACjD,IAAK+gB,EAEH,OADA9Y,QAAQ0D,KAAK,0CAA0CoO,KAChD,KAGT,IACE,MAAMnC,EAAalb,SAASmb,iBAAiBiJ,GAC7C,IAAA,MAAW1G,KAAaxC,EACtB,GAAI,OAAAqJ,EAAA7G,EAAUnF,kBAAV,EAAAgM,EAAuBjY,SAAS+X,GAClC,OAAO3G,EAGX,OAAO,IACT,OAAS8G,GAEP,OADAjZ,QAAQ0D,KAAK,uCAAuCoO,IAAYmH,GACzD,IACT,CACF,GA6BIC,GAAqB,CACzBrO,EACA/b,EACAgB,EACA1B,KAEAyc,EAAQsO,cACN,IAAIC,WAAWtqB,EAAM,CACnBuqB,SAAS,EACTC,YAAY,EACZpY,KAAMkB,OACNmX,QAASzpB,EAAIsS,OAAOqW,QACpBe,QAASprB,EAAIgU,OAAO0T,YA+CpB2D,GAA4Bpb,MAAOwM,UACjC6O,GAAkC7O,GAAS,IAG7C6O,GAAoCrb,MACxCwM,EACA8O,KAEA,MAAM9N,EAAOhB,EAAQiB,wBACf8N,EAAiBxX,OAAOyX,YAE9B,IAAKF,IAnV8B,EACnC9N,EACA+N,IACY/N,EAAKlQ,IAAM,GAAKkQ,EAAKhR,OAAS+e,EAgVrBE,CAAsBjO,EAAM+N,GAC/C,OAGF,MAAMG,EAAerT,KAAK4C,IACxB,EACA5C,KAAK4C,IAAI7U,SAAS+P,KAAKwV,aAAcvlB,SAASqB,gBAAgBkkB,cAAgBJ,GAE1EjE,EAtVgC,EACtCsE,EACAC,EACAC,EACAP,EACAG,IAIOvE,GADLyE,EAAiBC,GAAWN,EAAiB,EAAIO,EAAa,GAC1C,EAAGzT,KAAK4C,IAAI,EAAGyQ,IA6UrBK,CACdhY,OAAO0T,QACPjK,EAAKlQ,IACLkQ,EAAKnT,OACLkhB,EACAG,SAGIrE,GAAsBC,EA5kBI,MA+kB5B0E,GAAgBhc,MAAOtJ,IAC3B,MAAMulB,EAAW3B,GAAsB5jB,EAAK+c,UAC5C,KAAMwI,aAAoB7O,aAExB,YADAzL,QAAQ0D,KAAK,wCAAwC3O,EAAK+c,kBAItD4H,GAAkCY,GAAU,GAClD,MAAMC,EAAS/B,GAAiB8B,SAC1B/B,GAAWgC,EAAOzqB,EAAGyqB,EAAOnsB,IAG9BosB,GAAkBnc,MAAOtJ,IAC7B,MAAM0lB,EAhIc,CAAC1lB,IACrB,GAAIA,EAAK+c,SAAU,CACjB,MAAMwI,EAAW3B,GAAsB5jB,EAAK+c,UAE5C,GAAIwI,aAAoB7O,YAAa,CACnC,MAAM8O,EAAS/B,GAAiB8B,GAChC,MAAO,CACLzP,QAASyP,EACTxqB,EAAGyqB,EAAOzqB,EACV1B,EAAGmsB,EAAOnsB,EAEd,CACA4R,QAAQ0D,KAAK,0CAA0C3O,EAAK+c,WAC9D,CAEA,MAAsB,iBAAX/c,EAAKjF,GAAoC,iBAAXiF,EAAK3G,EACrC,CACL0B,EAAGiF,EAAKjF,EACR1B,EAAG2G,EAAK3G,IAIZ4R,QAAQ0D,KAAK,6DAA8D3O,GACpE,OAyGQ2lB,CAAc3lB,GAC7B,GAAK0lB,EAAL,CAIA,GAAoB,UAAhB1lB,EAAKsgB,QAAsBoF,EAAO5P,QAAS,OACvC4O,GAA0BgB,EAAO5P,SACvC,MAAM0P,EAAS/B,GAAiBiC,EAAO5P,SACvC4P,EAAO3qB,EAAIyqB,EAAOzqB,EAClB2qB,EAAOrsB,EAAImsB,EAAOnsB,CACpB,CAIA,SAFMmqB,GAAWkC,EAAO3qB,EAAG2qB,EAAOrsB,GAEd,SAAhB2G,EAAKsgB,OAAT,CAIA,GAAKoF,EAAO5P,QAKZ,MAAoB,UAAhB9V,EAAKsgB,QACP6D,GAAmBuB,EAAO5P,QAAS,cAAe4P,EAAO3qB,EAAG2qB,EAAOrsB,GACnE8qB,GAAmBuB,EAAO5P,QAAS,YAAa4P,EAAO3qB,EAAG2qB,EAAOrsB,GACjE8qB,GAAmBuB,EAAO5P,QAAS,YAAa4P,EAAO3qB,EAAG2qB,EAAOrsB,GACjE8qB,GAAmBuB,EAAO5P,QAAS,UAAW4P,EAAO3qB,EAAG2qB,EAAOrsB,QAC/DqsB,EAAO5P,QAAQ8P,cAIG,SAAhB5lB,EAAKsgB,OA/FW,CAACxK,UACrB,GAAwB,SAApBA,EAAQ0B,QAEV,YADC1B,EAA4B+P,gBAI/B,GAAwB,WAApB/P,EAAQ0B,SAAyB1B,EAA8BgQ,KAEjE,YADC,OAAA1V,EAAA0F,EAA8BgQ,OAA9B1V,EAAoCyV,iBAIvC,MAAME,EAAajQ,EAAQkQ,QAAQ,QAC/BD,EACFA,EAAWF,gBAIb5a,QAAQ0D,KAAK,6DAmFbsX,CAAcP,EAAO5P,SA1HC,EAACA,EAAsBtT,KAC7C,MAAMgV,EAAU1B,EAAQ0B,QAAQ5L,cAChB,UAAZ4L,GAAmC,aAAZA,GACxB1B,EAA6BoQ,QAC7BpQ,EAA6B3X,MAAQqE,EACtCsT,EAAQsO,cAAc,IAAI+B,MAAM,QAAS,CAAE7B,SAAS,KACpDxO,EAAQsO,cAAc,IAAI+B,MAAM,SAAU,CAAE7B,SAAS,MAInDxO,EAAQ4G,mBACV5G,EAAQoQ,QACRpQ,EAAQmC,YAAczV,EACtBsT,EAAQsO,cAAc,IAAI+B,MAAM,QAAS,CAAE7B,SAAS,MAItDrZ,QAAQ0D,KACN,wFAoGAyX,CAAgBV,EAAO5P,QAAS9V,EAAKwC,MAAQ,KAd7CyI,QAAQ0D,KAAK,8DAA+D3O,EAAKsgB,OAHnF,CAbA,GAgKI+F,GAAkB/c,MAAOtJ,IAC7B,IACE,MAAMsmB,EAAYtmB,EAAK0I,IACvB,IAAI6d,EACJ,IACEA,EAAc,IAAI5d,IAAI2d,EAAWjZ,OAAO6J,SAASD,MAAMA,IACzD,CAAA,MACEsP,EAAcD,CAChB,CAEA,MAAME,EAtHwB,CAACF,IACjC,IAAIG,EAA2B,KAC/B,IACEA,EAAe,IAAI9d,IAAI2d,EAAWjZ,OAAO6J,SAASD,KACpD,CAAA,MAEA,CAEA,MAAMyP,EAAWntB,MAAMmS,KACrBhM,SAASmb,iBAAiB,8CAI5B,IAAA,MAAW8L,KAAMD,EACf,GAAIC,aAAcC,mBAAqBD,EAAG1P,cAASwP,WAAcxP,MAC/D,OAAO0P,EAIX,GAAIF,EAAc,CAEhB,IAAA,MAAWE,KAAMD,EACf,GAAMC,aAAcC,kBACpB,IACE,MAAMC,EAAQ,IAAIle,IAAIge,EAAG1P,KAAM5J,OAAO6J,SAASD,MAC/C,GACE4P,EAAMhe,WAAa4d,EAAa5d,UAChCge,EAAM/d,SAAW2d,EAAa3d,QAC9B+d,EAAM9d,OAAS0d,EAAa1d,KAE5B,OAAO4d,CAEX,CAAA,MACE,QACF,CAIF,IAAA,MAAWA,KAAMD,EACf,GAAMC,aAAcC,kBACpB,IAEE,GADc,IAAIje,IAAIge,EAAG1P,KAAM5J,OAAO6J,SAASD,MACrCpO,WAAa4d,EAAa5d,SAClC,OAAO8d,CAEX,CAAA,MACE,QACF,CAIF,MAAM5I,EAASuI,EAAUhpB,QAAQ,MAAO,IACxC,IAAA,MAAWqpB,KAAMD,EAAU,CACzB,MAAMzP,EAAO0P,EAAGzQ,aAAa,SAAWyQ,EAAGzQ,aAAa,cAAgB,GACxE,GAAIe,IAASA,IAASqP,GAAarP,IAAS8G,GAAU9G,IAAS,IAAI8G,KACjE,OAAO4I,CAEX,CACF,CAGA,MAAMG,EAAcR,EACjBhpB,QAAQ,oBAAqB,IAC7BA,QAAQ,UAAW,IACnBgR,MAAM,KACNtM,OAAOmH,SACJ4d,EAAcD,EAAYA,EAAY3rB,OAAS,IAAM,GAE3D,GAAI4rB,EAAa,CAEf,IAAIC,EAAc,CAACD,GACnB,GAAIN,EAAc,CAChB,IAAA,MAAW,CAAGtoB,KAAUsoB,EAAaQ,aAAa7R,UAC5CjX,GAAO6oB,EAAYxrB,KAAK2C,GAE1BsoB,EAAa1d,MACfie,EAAYxrB,KAAKirB,EAAa1d,KAAKzL,QAAQ,KAAM,IAErD,CACA0pB,EAAcA,EAAYtmB,IAAK5G,GAAMA,EAAEyD,eAGvC,MAAM2pB,EAAa3tB,MAAMmS,KACvBhM,SAASmb,iBACP,mFAIJ,IAAA,MAAW8L,KAAMO,EAAY,CAC3B,MAAM1kB,GAAQmkB,EAAG1O,aAAe,IAAIjV,OAAOzF,cACrCma,GAAaiP,EAAGzQ,aAAa,eAAiB,IAAI3Y,cAClD4pB,GAAWR,EAAGzQ,aAAa,aAAe,IAAI3Y,cACpD,IAAA,MAAW6pB,KAAQJ,EACjB,GACExkB,IAAS4kB,GACT1P,IAAc0P,GACdD,IAAYC,GACZ5kB,EAAKwJ,SAASob,GAEd,OAAOT,CAGb,CACF,CAEA,OAAO,MAamBU,CAA0Bf,GAElD,GAAIE,EAAiB,CACnBvb,QAAQC,IAAI,sCAAuCqb,EAAaC,EAAgBhP,eAC1EkN,GAA0B8B,GAEhC,MAAMhB,EAAS/B,GAAiB+C,GAShC,aARMhD,GAAWgC,EAAOzqB,EAAGyqB,EAAOnsB,GAElCmtB,EAAgBpC,cAAc,IAAIC,WAAW,cAAe,CAAEC,SAAS,EAAMnY,KAAMkB,UACnFmZ,EAAgBpC,cAAc,IAAIC,WAAW,YAAa,CAAEC,SAAS,EAAMnY,KAAMkB,UACjFmZ,EAAgBpC,cAAc,IAAIC,WAAW,YAAa,CAAEC,SAAS,EAAMnY,KAAMkB,UACjFmZ,EAAgBpC,cAAc,IAAIC,WAAW,UAAW,CAAEC,SAAS,EAAMnY,KAAMkB,UAC/EmZ,EAAgBZ,SAlJO,CAACU,IAC5B,IACE,MAAM3lB,EAAU,IAAIgI,IAAI0E,OAAO6J,SAASD,MAClCyO,EAAS,IAAI/c,IAAI2d,GACvB,OAAO3lB,EAAQ2mB,SAAW5B,EAAO4B,QAAU3mB,EAAQkI,WAAa6c,EAAO7c,QACzE,CAAA,MACE,OAAO,CACT,GA6IY0e,CAAqBhB,EAC/B,CAGAtb,QAAQC,IAAI,wEAAyEqb,GAGrF,IACE,MAAM/Q,EAAS,IAAI7M,IAAI4d,GACvB,GACE/Q,EAAO8R,SAAWja,OAAO6J,SAASoQ,QAClC9R,EAAO3M,WAAawE,OAAO6J,SAASrO,UACpC2M,EAAOzM,KAGP,OADAsE,OAAO6J,SAASnO,KAAOyM,EAAOzM,MACvB,CAEX,CAAA,MAAyB,CAGzB,IACE,MAAMyM,EAAS,IAAI7M,IAAI4d,GACvB,GAAI/Q,EAAO8R,SAAWja,OAAO6J,SAASoQ,OAAQ,CAE5C,MAAME,EAAUhS,EAAO3M,SAAW2M,EAAO1M,OAAS0M,EAAOzM,KAGzD,OAFAsE,OAAOoa,QAAQC,UAAU,CAAA,EAAI,GAAIF,GACjCna,OAAO+W,cAAc,IAAIuD,cAAc,WAAY,CAAEppB,MAAO,CAAA,MACrD,CACT,CACF,CAAA,MAAyB,CAIzB,OADA8O,OAAO6J,SAASD,KAAOsP,GAChB,CACT,OAASrd,GAEP,OADA+B,QAAQ0D,KAAK,2BAA4B3O,EAAK0I,IAAKQ,IAC5C,CACT,GAGI0e,GAAwBte,UAC5B,MAAMrO,EAAUyiB,KAChBzS,QAAQsC,KACN,8CAA8CtS,EAAQ2Z,MAAMzZ,wBAAwBF,EAAQ4Z,cAAc1Z,sBAAsBF,EAAQ0Z,QAAQxZ,WA6F9I0sB,GAAwC,KAC5C,GAAwB,oBAAbnoB,UAA8C,oBAAX2N,OAC5C,OAGF,MAAMiW,EAASzB,KACVyB,GAAUA,EAAO5a,MAAQ2E,OAAO6J,SAASD,MAI9C8L,MAGsB,oBAAbrjB,WACmB,YAAxBA,SAASuT,WACXvT,SAASjC,iBAAiB,mBAAoBoqB,GAAuC,CACnFC,MAAM,IAGRD,MCj4BJ,MAAME,GAAc,qBACdC,GAAgB,uBAChBC,GAAiB,mBACjBC,GAAS,IAKTC,GACG,QADHA,GAEK,aAFLA,GAGO,cAHPA,GAIU,uBAJVA,GAKM,eALNA,GAMY,mBANZA,GAOU,kBAPVA,GAQU,sBAGHC,GACX,uDAuBWC,GAAoBxH,IAC/B,MAAMyH,EAAe3W,KAAK4C,IAAI,EAAG5C,KAAK4W,MAAM1H,EAAa,MAKzD,MAAO,GAJSlP,KAAK4W,MAAMD,EAAe,IACvCtf,WACA2C,SAAS,EAAG,SACE2c,EAAe,IAAItf,WAAW2C,SAAS,EAAG,QAShD6c,GAAwB,IAAiB,CACpD,CACE/Q,GAAI,EACJjV,KAAM4lB,GACNK,QAAQ,IAICC,GAA2BC,IACjCA,IAILA,EAAQC,WAAWb,IACnBY,EAAQC,WAAWZ,IACnBW,EAAQC,WAAWX,MAoBfY,GAAoBC,GACVA,EAAShe,OAAO,CAACC,EAAKnB,IAAY+H,KAAK4C,IAAIxJ,EAAKnB,EAAQ6N,IAAK,GAC5D,EAwBJsR,GAAa,EACxB5hB,UACA6hB,SACAlZ,qBAAoB,MAEpB,MAAOgZ,EAAUG,GAAeC,GAAoB,KAClD,GAA4B,oBAAjBpH,aAA8B,CACvC,MAAMqH,EAAQrH,aAAajE,QAAQkK,IAC7BqB,EAAYtH,aAAajE,QAAQmK,IAEvC,GAAImB,GAASC,EAAW,CAEtB,GADmB3X,KAAKC,MAAQxO,SAASkmB,EAAW,IACnClB,GACf,IACE,OAAOxe,KAAKgF,MAAMya,EACpB,CAAA,MAEA,MAEAT,GAAwB5G,aAE5B,CACF,CAEA,OAAO0G,QAGFa,EAAQC,GAAaJ,IAAS,IAC9B/jB,EAAaokB,GAAkBL,IAAS,IACxCM,EAAgBC,GAAqBP,IAAS,IAC9CQ,EAAYC,GAAiBT,IAAS,IACtCU,EAAkBC,GAAuBX,IAAS,IAClDY,EAAgBC,GAAqBb,IAAS,IAC9Cc,EAAgBC,GAAqBf,IAAS,IAC9CgB,EAAqBC,GAA0BjB,GAAS,IACxDkB,EAAgBC,GAAqBnB,GAAwB,MAE9DoB,GA3H0BC,EA2Ha,CAC3ClB,SACAlkB,cACAqkB,iBACAE,aACAE,mBACAE,iBACAE,mBAjIQ7kB,YAAoBgjB,GAC1BoC,EAAMP,eAAuB7B,GAC7BoC,EAAMT,eAAuB3B,GAC7BoC,EAAMX,iBAAyBzB,GAC/BoC,EAAMb,WAAmBvB,GACzBoC,EAAMf,eAAuBrB,GAC7BoC,EAAMlB,OAAelB,GAClBA,GARwB,IAACoC,EAoIhC,MAAM1gB,EAAaugB,GAAkBE,EAE/BE,EAAYC,GAAOpB,GACnBqB,EAAiBD,GAAOtlB,GAExBwlB,EAAmBF,GAAO5B,GAAiBC,IAC3C8B,EAAcH,GAA6B,MAC3CI,EAAYJ,GAA2B,MACvCK,EAAiBL,GAAmB,IACpCM,EAA4BN,GAAgC,MAC5DO,EAAeP,GACK,oBAAjB3I,aAAiB,MAElB,MAAMmJ,EAAKnJ,aAAajE,QAAQmK,IAChC,OAAIiD,GAAMxZ,KAAKC,MAAQxO,SAAS+nB,EAAI,IAAM/C,GACjCpG,aAAajE,QAAQoK,IAEvB,MANW,GAQpB,MAGAiD,EAAkBT,GAAsB,MACxCU,EAAiBV,GAAsB,MACvCW,EAAkBX,GAA4B,MAC9CY,EAAYZ,GAA0C,MAEtDa,EAA0Bb,IAAO,GAEjCc,EAAmBd,GAAsB,MACzCe,EAAoBf,GAAsB,MAC1CgB,EAAsBhB,IAAO,GAC7BiB,EAA2BjB,IAAO,GAClCkB,EAA2BlB,IAAO,GAElCmB,EAAwBnB,GAAsB,MAC9CoB,EAAyBpB,GAAO,IAChCqB,EAA2BrB,IAAO,GAClCsB,EAA2BtB,IAAO,GAElCuB,EAAwBvB,GAAsB,MAC9CwB,EAA4BxB,GAAsB,MAElDyB,GAAuBzB,GAA8B,MACrD0B,GAAqB1B,GAA8B,MAEnD2B,GAAqB3B,GAAsB,MAC3C4B,GAA0B5B,GAAe,IACzC6B,GAAyB7B,GAAmC,MAC5D8B,GAA+B9B,IAAO,GAE5C+B,GAAU,KACRhC,EAAU7pB,QAAU0oB,GACnB,CAACA,IAEJmD,GAAU,KACR9B,EAAe/pB,QAAUwE,GACxB,CAACA,IAEJqnB,GAAU,KACoB,oBAAjB1K,eACTA,aAAa/C,QAAQgJ,GAAare,KAAKC,UAAUmf,IACjDhH,aAAa/C,QAAQiJ,GAAevW,KAAKC,MAAM1I,cAEhD,CAAC8f,IAEJ,MAAM2D,GAAyB,KA3JI,IACnC3W,KA2JwBoW,GAAqBvrB,WArJ7CmV,EAAQ4W,UAAY5W,EAAQmP,gBV1IihC,SAAWzsB,EAAEE,GAAG,IAAIC,EAAEQ,GAAEW,IAAI,IAAId,EAAE0F,KAAKtD,GAAEzC,EAAEkJ,IAAInJ,KAAKC,EAAEyB,GAAG5B,EAAEG,EAAED,EAAEA,EAAEG,EAAE2F,IAAIhD,KAAK7C,GAAG,CUkS5nCg0B,CAAgB,KACdF,MACC,CAAC3D,EAAUjf,EAAYwf,EAAQlkB,IAElCqnB,GAAU,KACR,MAAMlsB,EAAU6rB,GAAmBxrB,QACnC,IAAKL,GAAqC,oBAAnBssB,eACrB,OAGF,MAAMC,EAAW,IAAID,eAAe,KAClCH,OAIF,OADAI,EAASC,QAAQxsB,GACV,IAAMusB,EAASE,cACrB,IAEH,MAAMC,GAAqB,KACiB,OAAtCf,EAA0BtrB,UAC5B0M,OAAOO,cAAcqe,EAA0BtrB,SAC/CsrB,EAA0BtrB,QAAU,MAEtCqrB,EAAsBrrB,QAAU,MAkB5BssB,GAAuB,KAC3BxD,GAAkB,GAClBE,GAAc,GACdE,GAAoB,GACpBE,GAAkB,GAClBE,GAAkB,GAClBI,EAAkB,MAClBuB,EAAsBjrB,QAAU,KAChCkrB,EAAuBlrB,QAAU,GACjCmrB,EAAyBnrB,SAAU,EACnCorB,EAAyBprB,SAAU,EACnC4rB,GAA6B5rB,SAAU,EACvCyrB,GAAmBzrB,QAAU,KAC7B0rB,GAAwB1rB,QAAU,IAG9BusB,GAAsB,KACQ,OAA9B1B,EAAkB7qB,UACpB0M,OAAOlL,aAAaqpB,EAAkB7qB,SACtC6qB,EAAkB7qB,QAAU,OAI1BwsB,GAAa,KACc,OAA3BhC,EAAexqB,UACjBiN,cAAcud,EAAexqB,SAC7BwqB,EAAexqB,QAAU,MAGvB0qB,EAAU1qB,UACZ0qB,EAAU1qB,QAAQosB,aAClB1B,EAAU1qB,QAAU,MAGlByqB,EAAgBzqB,UAClByqB,EAAgBzqB,QAAQwS,QAAQia,MAAM,QACtChC,EAAgBzqB,QAAU,MAG5BuqB,EAAgBvqB,QAAU,MAGtB0sB,GAAmB,KAClBxC,EAAUlqB,UAIfkqB,EAAUlqB,QAAQ2sB,YAAY7sB,QAAS8sB,GAAUA,EAAMC,QACvD3C,EAAUlqB,QAAU,OAGhB8sB,GAAmB,KAClB1C,EAA0BpqB,UAI/BoqB,EAA0BpqB,QAAQ6sB,OAClCzC,EAA0BpqB,QAAU,OAGtC6rB,GACE,IAAM,KACJU,KACAxB,EAAyB/qB,SAAU,EAEnC8sB,KACAN,KACAE,KACAL,KAEA,MAAMU,EAAW9C,EAAYjqB,QACzB+sB,IACFA,EAASC,gBAAkB,KAC3BD,EAASE,OAAS,KAClBF,EAASpb,QAAU,KACI,aAAnBob,EAASnvB,OACXmvB,EAASF,OAEX5C,EAAYjqB,QAAU,OAG1B,IAGF,MAAMktB,GAAgB,CAACrrB,EAAcimB,KACnC,MAAMhR,EAAKkT,EAAiBhqB,UAS5B,OARAsoB,EAAa6E,GAAa,IACrBA,EACH,CACErW,GAAAA,EACAjV,OACAimB,YAGGhR,GAGHsW,GAAoB,CAACtW,EAAYjV,KACrCymB,EAAa6E,GACXA,EAASptB,IAAKkJ,GACZA,EAAQ6N,KAAOA,EAAK,IAAK7N,EAASpH,QAASoH,KAK3CokB,GAA0BzvB,GAChB,cAAVA,GACFsrB,GAAoB,QACpBE,GAAkB,IAIN,YAAVxrB,GACFsrB,GAAoB,QACpBE,GAAkB,IAIN,aAAVxrB,GACFsrB,GAAoB,QACpBE,GAAkB,KAKlBF,GAAoB,QACpBE,GAAkB,IAQhBkE,GAAkB3kB,MAAOmD,IAC7B,GAAKuc,EAAO/Z,UAAZ,CAKAqa,GAAU,GACVG,GAAkB,GAClBE,GAAc,GACdE,GAAoB,GACpBE,GAAkB,GAClBE,GAAkB,GAClBgD,KACA5C,EAAkBlC,IAClBoE,GAA6B5rB,SAAU,EAEvC,IACE,MAAMutB,EAAWzhB,EAAK1S,MAAQ,aACxBo0B,EAAYD,EAASliB,SAAS,OAChC,MACAkiB,EAASliB,SAAS,OAChB,MACAkiB,EAASliB,SAAS,SAAWkiB,EAASliB,SAAS,OAC7C,MACA,OACFgD,EAAO,IAAIof,KAAK,CAAC3hB,GAAO,eAAe0hB,IAAa,CACxDp0B,KAAMm0B,IAGRT,KAEA,MAAMY,EAAc3Q,KAAiB/I,QAG/B2Z,EAAsBhlB,MAC1BtJ,GDkY6BsJ,OACnCtJ,IAEA,MAAMuuB,EAASvuB,EAAKwuB,QACpB,IACE,GAAkB,aAAdxuB,EAAKqgB,KAEP,aADMoF,GAAgBzlB,GACf,CACLwuB,QAASD,EACTE,OAAQ,uBAAuBzuB,EAAKsgB,UAIxC,GAAkB,WAAdtgB,EAAKqgB,KAEP,aADMiF,GAActlB,GACb,CACLwuB,QAASD,EACTE,OAAQ,4BAIZ,GAAkB,mBAAdzuB,EAAKqgB,KAEP,MAAO,CACLmO,QAASD,EACTE,OAHc/Q,KAGE/I,SAIpB,GAAkB,aAAd3U,EAAKqgB,KAAqB,OACtBgG,GAAgBrmB,SAEhB,IAAIuB,QAASE,GAAYC,WAAWD,EAAS,OACnD,MAAMxG,EAAUyiB,KAChB,MAAO,CACL8Q,QAASD,EACTE,OAAQ,yCAAyCphB,OAAO6J,SAASD,wBAAwBhc,EAAQ0Z,UAErG,CAEA,MAAO,CAAE6Z,QAASD,EAAQE,OAAQ,mBACpC,OAASvlB,GACP,MAAMwlB,EAAMxlB,aAAiByE,MAAQzE,EAAMU,QAAUrN,OAAO2M,GAE5D,OADA+B,QAAQ0D,KAAK,iCAAiC3O,EAAKqgB,OAAQnX,GACpD,CAAEslB,QAASD,EAAQE,OAAQ,SAASC,IAC7C,GCpaaC,CAT0B,CAC/BtO,KAAMrgB,EAAKqgB,KAKXmO,QAASxuB,EAAKwuB,WACXxuB,EAAK4uB,OAKNC,EHwcwB,EAClCvmB,EACAwmB,EACA7f,EACAC,EACA8Z,EAMA+F,EACAC,KAEA,IAEIC,EAFAlf,GAAY,EACZmf,EAAiC,KAEjCC,GAAe,EA6MnB,MAAO,CACL3B,KAAM,KACJzd,GAAY,EACRkf,GACFA,EAAaG,SAAShC,MAAM,QAE1B8B,GAAgBA,EAAajc,YAAchB,UAAUiB,MACvDgc,EAAa/b,SAGjB3C,KArNkB,IAAIjP,QAAc+H,MAAO7H,EAAS0L,iBACpD,IAEE,GAAI4C,SAAkBtO,IACtB,MAAM4tB,QAAkBtgB,GACtBzG,EAASwmB,EAAW7f,EAAWC,EAAW,MAGtCogB,EAAmBD,EAAUE,WAC7BC,EAAWH,EAAU7sB,KAO3B,GALA,OAAA4N,EAAA2e,EAAOU,kBAAPrf,EAAApQ,KAAA+uB,EAAyB,CACvBQ,WAAYD,EACZI,UAAWF,IAGTzf,SAAkBtO,IAGtB,MAAMoO,QAAsB,IAAItO,QAAgB,CAACouB,EAAcC,KAC7D,GAAI7f,EAA+B,YAAlB4f,EAAa,IAE9B,MAAMte,EAAQ9I,GAAeD,EAAS,kBAChC0J,EAAS,IAAIC,UAAUZ,GAC7B6d,EAAeld,EAEf,IAAI6d,EAAa,GACbC,GAAW,EAEf,MAAMC,EAAU5P,IACV2P,IACJA,GAAW,EACXH,EAAaxP,KAGT6P,EAAQ9mB,IACR4mB,IACJA,GAAW,EACXF,EAAY1mB,KAGd8I,EAAOI,OAAS,KACdnH,QAAQsC,KAAK,8BACbyE,EAAOQ,KAAK9I,KAAKC,UAAU,CACzB5P,KAAM,QACNk2B,WAAYhhB,EACZsgB,WAAYD,EACZI,UAAWF,EACXU,MAAOlH,EAAOkH,MACdC,aAAcnH,EAAOqF,YACrB1b,mBAAoBqW,EAAOlZ,sBAI/BkC,EAAOK,UAAY/I,MAAOxL,wBACxB,IAAIiC,EACJ,IACEA,EAAO2J,KAAKgF,MAAMnS,OAAOuB,EAAMiC,MACjC,CAAA,MAEE,YADAkL,QAAQ0D,KAAK,gCAEf,CAEA,MAAMyhB,EAAUrwB,EAAKhG,KAErB,GAAgB,YAAZq2B,GAAoD,iBAApBrwB,EAAKwvB,WAMzC,GAAgB,cAAZa,EAQJ,GAAgB,gBAAZA,GAAmD,iBAAfrwB,EAAKihB,MAA7C,CAKA,GAAgB,eAAZoP,GAA4B72B,MAAMC,QAAQuG,EAAKswB,OAAQ,CACzD,MAAMA,EAAQtwB,EAAKswB,MACnB,OAAAC,EAAAvB,EAAOwB,cAAPD,EAAAtwB,KAAA+uB,EAAqBsB,GAGrB,MAAMG,EAAiD,GACvD,IAAA,MAAWxwB,KAAQqwB,EAAO,CACxB,MAAM5B,QAAeO,EAAYhvB,GACjC,OAAAywB,EAAA1B,EAAO2B,eAAPD,EAAAzwB,KAAA+uB,EAAsB/uB,EAAKwuB,QAASxuB,EAAKqgB,KAAMoO,EAAOA,QACtD+B,EAAQh1B,KAAKizB,EACf,CASA,YANIzc,EAAOiB,aAAehB,UAAUiB,MAClClB,EAAOQ,KAAK9I,KAAKC,UAAU,CACzB5P,KAAM,eACNy2B,aAIN,CAEA,GAAgB,eAAZJ,EAQF,OAPAP,EAAc9vB,EAAK4wB,aAA0B,GAC7C,OAAAC,EAAA7B,EAAO8B,kBAAPD,EAAA5wB,KAAA+uB,EAAyBc,GAEM,iBAApB9vB,EAAKwvB,aACd,OAAAuB,EAAA/B,EAAOgC,uBAAchxB,EAAKwvB,kBAE5BQ,EAAOF,GAIT,GAAgB,UAAZO,EAAqB,CACvB,MAAMY,EAAUjxB,EAAKmJ,OAAoB,cAIzC,OAHAimB,GAAe,EACf,OAAA8B,EAAAlC,EAAOrhB,UAAPujB,EAAAjxB,KAAA+uB,EAAiBiC,QACjBhB,EAAK,IAAIriB,MAAMqjB,GAEjB,CAzCA,MAFE,OAAA/M,EAAA8K,EAAOmC,mBAAPjN,EAAAjkB,OAA0BD,EAAKihB,YAR/B,OAAAgD,EAAA+K,EAAOoC,cAAPnN,EAAAhkB,KAAA+uB,EACEhvB,EAAKqxB,UACLrxB,EAAKsxB,qBAPP,OAAAjhB,EAAA2e,EAAOgC,cAAP3gB,EAAApQ,OAAqBD,EAAKwvB,aA2D9Bvd,EAAOM,QAAU,WACfrH,QAAQ/B,MAAM,0BACdimB,GAAe,EACf,OAAA/e,EAAA2e,EAAOrhB,UAAP0C,EAAApQ,KAAA+uB,EAAiB,oCACjBiB,EAAK,IAAIriB,MAAM,sCAGjBqE,EAAOO,QAAU,KACftH,QAAQsC,KAAK,2BACbwiB,EAAOF,MAOX,GAHAX,EAAe,KAGXnf,IAAcF,EAChB,OAAOpO,IAQT,IAAI6vB,EALJrmB,QAAQsC,KACN,6CAA6CnF,MAG/C,OAAA4b,EAAA+K,EAAOnkB,qBAAPoZ,EAAAhkB,KAAA+uB,EAA4B,aAG5B,IACEuC,QAAkBngB,GAChB7I,EACAuH,EACA1G,QAAQ6f,EAAOlZ,mBACf,IAAMC,EACLiC,IAAakd,EAAeld,GAEjC,OAASuf,GACP,GAAIxhB,SAAkBtO,IACtBwJ,QAAQ0D,KACN,+CAA+C4iB,aAAmB5jB,MAAQ4jB,EAAQ3nB,QAAUrN,OAAOg1B,MAErGD,QAAkB1hB,GAChBtH,EACAuH,EACA1G,QAAQ6f,EAAOlZ,mBACf,IAAMC,EACLI,IAAa8e,EAAe9e,GAEjC,EAEKJ,GAAauhB,EAAU7mB,OAAOtP,OAAS,QACpCqP,GACJ8mB,EAAU7mB,OACV6mB,EAAU5mB,SACV4mB,EAAU3mB,WACVokB,EAAOnkB,oBAGT,OAAAqZ,EAAA8K,EAAOnkB,qBAAPqZ,EAAAjkB,KAAA+uB,EAA4B,QAG9BttB,GACF,OAASqM,GAEP,IAAKqhB,EAAc,CACjB,MAAMT,EAAM5gB,aAAeH,MAAQG,EAAIlE,QAAUrN,OAAOuR,GACxD,OAAAwiB,EAAAvB,EAAOrhB,UAAP4iB,EAAAtwB,KAAA+uB,EAAiBL,EACnB,CACAvhB,EAAOW,EACT,CAAA,QACE,MAAAmhB,GAAAA,EAAcG,SAAShC,MAAM,QACzB8B,GAAgBA,EAAajc,YAAchB,UAAUiB,MACvDgc,EAAa/b,QAEf+b,EAAe,IACjB,MGnqBqBsC,CACjBxI,EAAOyI,eACPziB,EACAga,EAAO/Z,UACP+b,EAAarqB,QACb,CACEuvB,MAAOlH,EAAOkH,MACdxd,MAAO,SACP2b,cACAve,qBAEF,CACE2f,gBAAkB1vB,IACZA,EAAKwvB,YAAcxvB,EAAKwvB,aAAevE,EAAarqB,UACtDqqB,EAAarqB,QAAUZ,EAAKwvB,WACA,oBAAjBzN,cACTA,aAAa/C,QAAQkJ,GAAgBloB,EAAKwvB,aAM5CxvB,EAAK2vB,UAAU1sB,QACfopB,GAAmBzrB,UAAYZ,EAAK2vB,YAEpCtD,GAAmBzrB,QAAUZ,EAAK2vB,UAClC7B,GAAc9tB,EAAK2vB,WAAW,IAGhCjG,GAAkB,GAClBE,GAAc,GACdU,EAAkBlC,KAEpB4I,YAAcW,IACRA,GAAOA,IAAQ1G,EAAarqB,UAC9BqqB,EAAarqB,QAAU+wB,EACK,oBAAjB5P,cACTA,aAAa/C,QAAQkJ,GAAgByJ,KAI3CR,iBAAmBlQ,IACjByI,GAAkB,GAClBE,GAAc,GACV4C,GAA6B5rB,UAC/B4rB,GAA6B5rB,SAAU,EACvC0pB,EAAkB,OAIpBgC,GAAwB1rB,SAAWqgB,EAEG,OAAlC4K,EAAsBjrB,QACxBirB,EAAsBjrB,QAAUktB,GAC9BxB,GAAwB1rB,SACxB,GAGFotB,GACEnC,EAAsBjrB,QACtB0rB,GAAwB1rB,UAI9BkwB,gBAAkBhhB,IAChB0c,GAA6B5rB,SAAU,EACvC0pB,EAAkB,MAClBV,GAAc,GACdE,GAAoB,GAEpB,MAAM8H,EACJ9hB,GAAiBwc,GAAwB1rB,QAE3C2rB,GAAuB3rB,QAAU,KACjC0rB,GAAwB1rB,QAAUgxB,EAEI,OAAlC/F,EAAsBjrB,QACxBotB,GACEnC,EAAsBjrB,QACtBgxB,GAGF/F,EAAsBjrB,QAAUktB,GAC9B8D,GACA,IAINpB,YAAcF,IACZpG,GAAkB,GAClBI,EAAkBlC,IAGlB,IAAA,MAAWnoB,KAAQqwB,EAAO,CACxB,MAAMuB,EACU,aAAd5xB,EAAKqgB,KACD,sBAAsBrgB,EAAK4uB,KAAKlmB,KAAO,KACzB,mBAAd1I,EAAKqgB,KACH,0BACc,aAAdrgB,EAAKqgB,KACH,cAAcrgB,EAAK4uB,KAAKtO,QAAU,KACpB,WAAdtgB,EAAKqgB,KACH,gBACArgB,EAAKqgB,KAEjBwN,GAAc,MAAM+D,KAAa,GAEjC3I,EAAa4I,IACX,MAAMC,EAAOD,EAAKA,EAAK12B,OAAS,GAChC,OAAI22B,IAASA,EAAKrJ,OACT,IACFoJ,EAAKr0B,MAAM,GAAG,GACjB,IAAKs0B,EAAM/3B,KAAM,SAGd83B,GAEX,CAGAjG,EAAsBjrB,QAAU,KAChC0rB,GAAwB1rB,QAAU,IAEpC+vB,aAAc,CAACqB,EAASC,EAAWC,OAInCd,YAAa,CAACe,EAAYC,KAExBxI,GAAc,GACdU,EAAkBlC,KAEpBvd,mBAAoBojB,GACpBtgB,QAAUI,IACRye,GAA6B5rB,SAAU,EACvC0pB,EAAkB,MAClBwD,GAAc,SAAS/f,KAAO,KAGlCwgB,GAGFvD,EAA0BpqB,QAAUkuB,QAC9BA,EAAWre,IAOnB,OAAStH,GAEPqjB,GAA6B5rB,SAAU,EACvC0pB,EAAkB,KACpB,CAAA,QACEkC,GAA6B5rB,SAAU,EACvC0pB,EAAkB,MAClBf,GAAU,GACVG,GAAkB,GAClBE,GAAc,GACdE,GAAoB,GACpBE,GAAkB,GAElBqC,GAAmBzrB,QAAU,KAC7B0rB,GAAwB1rB,QAAU,GAClCirB,EAAsBjrB,QAAU,KAC5BoqB,EAA0BpqB,UAC5BoqB,EAA0BpqB,QAAU,MAjgBF,EACxCmP,EACA3K,EACAkkB,IACYvZ,IAAsB3K,IAAgBkkB,EAggB5C+I,CACEtiB,EACA4a,EAAe/pB,QACf6pB,EAAU7pB,WAGZsK,QAAQsC,KACN,mEAEG8kB,GAAe,OAExB,CAlOA,MAFExE,GAAc,uCAAuC,IAuOnDyE,GAAiBC,IACrB,MAAM7E,EAAW9C,EAAYjqB,QACxB+sB,GAA+B,aAAnBA,EAASnvB,eAItBg0B,WAASC,WACXlH,EAAwB3qB,SAAU,GAGpCwsB,KACAO,EAASF,SA4DL6E,GAAiB/oB,MAAO6I,UAC5B,KACEqY,EAAU7pB,SACV+pB,EAAe/pB,SACfgrB,EAAyBhrB,SAH3B,CAUA,GAFA0pB,EAAkBlC,MAEb,OAAA/X,EAAAqiB,UAAUC,mBAAV,EAAAtiB,EAAwBuiB,cAG3B,OAFAtI,EAAkB,WAClBwD,GAAc,0CAA0C,GAI1D,GAA6B,oBAAlB+E,cAGT,OAFAvI,EAAkB,WAClBwD,GAAc,+CAA+C,GAI/DlC,EAAyBhrB,SAAU,EAEnC,IACE,MAAMgQ,QAAe8hB,UAAUC,aAAaC,aAAa,CAAE7jB,OAAO,IAClE+b,EAAUlqB,QAAUgQ,EAIpB,MAAMkiB,EAAwC,CAC5CC,mBAAoB,MAIhBC,EAAqB,CACzB,wBACA,yBACA,cAEF,IAAA,MAAWC,KAAQD,EACjB,GAAIH,cAAcK,gBAAgBD,GAAO,CACvCH,EAAgBnoB,SAAWsoB,EAC3B,KACF,CAGF,MAAMtF,EAAW,IAAIkF,cAAcjiB,EAAQkiB,GAC3CjI,EAAYjqB,QAAU+sB,EACtB5C,EAAenqB,QAAU,GAEzB+sB,EAASC,gBAAmB7vB,IACtBA,EAAMiC,KAAKgO,KAAO,GACpB+c,EAAenqB,QAAQnF,KAAKsC,EAAMiC,OAItC2tB,EAASpb,QAAU,KACjBub,GAAc,6CAA6C,IAG7DH,EAASE,OAAStkB,UAChBigB,GAAe,GACfmB,EAAe/pB,SAAU,EACzBqsB,KAEAG,KACAE,KAEA,MAAM6F,EAAgB5H,EAAwB3qB,QAC9C2qB,EAAwB3qB,SAAU,EAElC,MAAM8L,EAAO,IAAIC,KAAKoe,EAAenqB,QAAS,CAC5C5G,KAAM2zB,EAAShjB,UAAY,eAI7B,GAFAogB,EAAenqB,QAAU,GAErBuyB,EACF7I,EAAkB,UADpB,CAKA,GAAkB,IAAd5d,EAAKsB,KAGP,OAFAsc,EAAkB,WAClBwD,GAAc,+CAA+C,GAI/DxD,EAAkBlC,UACZ8F,GAAgBxhB,EATtB,GAYW,QAAT0F,GAtJS,EAACxB,EAAqB+c,KACrC,MAAMyF,EACJ9lB,OAAO+lB,cACN/lB,OACEgmB,mBAEL,IAAKF,EACH,OAGF,MAAMl4B,EAAU,IAAIk4B,EACpB/H,EAAgBzqB,QAAU1F,EAE1B,MAAMq4B,EAAWr4B,EAAQs4B,iBACzBD,EAASE,QAAU,IAEnB,MAAMC,EAASx4B,EAAQy4B,wBAAwB/iB,GAC/C0a,EAAU1qB,QAAU8yB,EACpBA,EAAOE,QAAQL,GAEf,MAAMM,EAAY,IAAItpB,WAAWgpB,EAASO,mBAC1C3I,EAAgBvqB,QAAU,KAC1B,IAAImzB,GAAiB,EAErB3I,EAAexqB,QAAU0M,OAAOC,YAAY,KAC1C,IAAKod,EAAe/pB,SAA8B,aAAnB+sB,EAASnvB,MAEtC,YADA4uB,KAIFmG,EAASS,qBAAqBH,GAE9B,IAAII,EAAM,EACV,IAAA,MAAW71B,KAASy1B,EAClBI,GAAO71B,EAKT,GAHgB61B,EAAMJ,EAAUz4B,OACP,IAjrBT,IAmrBY,CAC1B,GAAgC,OAA5B+vB,EAAgBvqB,QAElB,YADAuqB,EAAgBvqB,QAAU8Q,KAAKC,OAIjC,MAAMuiB,EAAkBxiB,KAAKC,MAAQwZ,EAAgBvqB,QAIrD,YAHImzB,GAAkBG,EAzrBF,KA0rBlB3B,KAGJ,CAEAwB,GAAiB,EACjB5I,EAAgBvqB,QAAU,MACzB,KAiGCuzB,CAASvjB,EAAQ+c,GAGnBA,EAAS7N,MAAM,KACf0J,GAAe,GACfmB,EAAe/pB,SAAU,EAviB3BqsB,KACAhB,EAAsBrrB,QAAU8Q,KAAKC,MACrCyY,EAAuB,GAEvB8B,EAA0BtrB,QAAU0M,OAAOC,YAAY,KACrD,MAAM6mB,EAAYnI,EAAsBrrB,QAKxCwpB,EAJkB,OAAdgK,EAImB1iB,KAAKC,MAAQyiB,EAHX,IAIxB,KA+hBGzI,EAAyB/qB,UAC3B+qB,EAAyB/qB,SAAU,EACnC2xB,KAEJ,OAASppB,GACPmhB,EAAkB,MAClBwD,GAAc,oBAhuBG,CAAC3kB,GAClBA,aAAiByE,MACZzE,EAAMU,QAER,kBA4tB+BwqB,CAAelrB,MAAU,GAC3DikB,KACAE,KACA3B,EAAyB/qB,SAAU,EACnC4oB,GAAe,GACfmB,EAAe/pB,SAAU,EACzBqsB,IACF,CAAA,QACOtC,EAAe/pB,SAAY6pB,EAAU7pB,SACxC0pB,EAAkB,MAEpBsB,EAAyBhrB,SAAU,CACrC,CAjHA,GAoHI0zB,GAAkB,KACtB9I,EAAiB5qB,QAAU,KAC3B8qB,EAAoB9qB,SAAU,EAC9BusB,MA2CIoH,GACJx2B,IAIA,GAFAA,EAAMy2B,iBAEFz2B,EAAMkK,cAAcwsB,sBACtB,IACE12B,EAAMkK,cAAcwsB,sBAAsB12B,EAAM22B,UAClD,CAAA,MAEA,CAGF,MAAMN,EAAY5I,EAAiB5qB,QAC7B+zB,EAAUjJ,EAAoB9qB,QAGpC,GAFA0zB,KAEkB,OAAdF,EACF,OAGF,GAAIO,EAMF,YALIhK,EAAe/pB,QACjB2xB,KACS3G,EAAyBhrB,UAClC+qB,EAAyB/qB,SAAU,IAMF,QA71BP,EAChCkgB,EACA8T,EAhD+B,MAiDX9T,GAAc8T,EAAc,OAAS,MA01BnDC,CADanjB,KAAKC,MAAQyiB,IAEvB9B,GAAe,QA2ClBwC,GAAyC,CAC7CjvB,SAAU,QACVE,OAAQ,OACRD,MAAO,OACPnC,MAAO,QACPgE,UAAW,QACXrB,gBAAiB,uBACjB5D,OAAQ,+BACR2D,aAAcjD,GACdqB,QAAS,OACTuB,cAAe,SACfkU,SAAU,SACV/T,OAAQ,QACR4uB,UAAW,WAAWzxB,KACtB6f,UAAW9f,IAgBP2xB,GAA+C,CACnDluB,WAAY,OACZpE,OAAQ,OACR8D,OAAQ,UACRS,QAAS,MACTZ,aAAc,MACdE,MAAOjE,GAAOG,KACdgC,QAAS,OACTwB,WAAY,SACZQ,eAAgB,SAChBC,WAAY,SAASpD,wBAAsCA,MAmCvD2xB,GAA8C,CAClDC,KAAM,IACNC,UAAW,OACX9uB,aAAc,OACdE,MAAOjE,GAAOG,KACdsE,SAAU,OACVtC,QAAS,OACTwB,WAAY,SACZgB,QAAS,SACTmuB,WAAY,SACZlb,SAAU,SACVmb,aAAc,WACdhT,QAAS,OAULiT,GAAiD,CACrDC,SAAU,OACVxuB,SAAU,OACVyuB,WAAY,MACZjvB,MAAOjE,GAAOG,KACdgzB,UAAW,SAKPC,GAAkD,CACtD/xB,MAAO,OACPC,OAAQ,OACRyC,aAAc,QACd5B,QAAS,OACTwB,WAAY,SACZQ,eAAgB,SAChBD,OAAQ,UACRD,MAAO,UACP7D,OAAQ,YAXiBJ,GAAOC,QAYhCmE,WAAY,oBAAoBpD,iBAA+BA,MAG3DqyB,GAAoBrM,EAE1B,OACE/hB,EAAC,MAAA,CAAIlK,MAAOy3B,GACV/5B,SAAA,CAAAyJ,EAAC,QAAA,CAAOzJ,SAAA,kTAaKuH,GAAOG,4SAepB8E,EAAC,MAAA,CAAIlK,MAvIsC,CAC7C4J,QAAS,YACTxC,QAAS,OACTgC,eAAgB,gBAChBR,WAAY,UAoIRlL,SAAA,CAAAyJ,EAACf,GAAA,CACCC,IC/oCK,qkLDgpCLG,MAAM,aACNxG,MAAO,CAAEu4B,SAAU,OAAQhyB,OAAQ,QACnCE,aAAa,IAEfyD,EAAC,MAAA,CAAIlK,MAvI2C,CACpDoH,QAAS,OACTwB,WAAY,SACZC,IAAK,OAqICnL,SAAA,CAAAyJ,EAAC,SAAA,CACCxK,KAAK,SACL+J,UAAU,mBACV1G,MAAO23B,GACP7tB,QArMY,KACpBmtB,KACA3I,EAAyB/qB,SAAU,EAEnC8sB,KAEI7C,EAAYjqB,SAAyC,aAA9BiqB,EAAYjqB,QAAQpC,MAC7C+zB,GAAc,CAAEE,SAAS,KAEzBlH,EAAwB3qB,SAAU,EAClCwsB,KACAE,MAGFL,KACA7C,EAAuB,GAEvBzB,GAC0B,oBAAjB5G,aAA+BA,aAAe,MAGvDkJ,EAAarqB,QAAU,KACvB,MAAMi1B,EAAkBpN,KACxBmC,EAAiBhqB,QAAUkoB,GAAiB+M,GAC5C3M,EAAY2M,GAEZtM,GAAU,GACVkB,EAAU7pB,SAAU,EACpB4oB,GAAe,GACfmB,EAAe/pB,SAAU,EACzBssB,MAwKQ,aAAW,yBACXrpB,MAAM,yBAEN9I,WAAC0I,GAAA,CAAQC,IE7pCN,84GF6pC+BC,MAAO,OAG3Ca,EAAC,SAAA,CACCxK,KAAK,SACL+J,UAAU,mBACV1G,MAAO,IACF23B,GACHvwB,QAAS,OACTwB,WAAY,SACZQ,eAAgB,UAElBU,QAASC,EACT,aAAW,gBACXvD,MAAM,gBAEN9I,SAAAyJ,EAACf,GAAA,CACC,eAAc,IACdQ,OAAQ,eACRP,IAAKF,GACLG,MAAO,eAMd,MAAA,CAAItG,MAvJiD,CACxD4J,QAAS,WACTW,UAAW,QAqJ2BzN,IAAKgyB,GACvCpxB,SAAAyJ,EAAC,MAAA,CAAInH,MAnJ0C,CACnDoH,QAAS,OACTuB,cAAe,SACfE,IAAK,OAgJ8B/L,IAAKiyB,GACjCrxB,SAAAguB,EAASpoB,IAAKkJ,IACbrF,SAAC,MAAA,CAECnH,MACmB,SAAjBwM,EAAQ7P,KACJ,CACEiN,QAAS,WACTZ,aAAc,MACdU,SAAU,OACVC,WAAY,MACZT,MAAO,OACPD,gBAAiB,sBACjBwvB,UAAW,aACXF,SAAU,MACVG,UAAW,WA5JTrN,EA8JS7e,EAAQ6e,OA9JjB,CACpBkN,SAAU,MACV3uB,QAASyhB,EAAS,WAAa,UAC/BriB,aAAcjD,GACd2D,SAAU,OACVC,WAAY,OACZgvB,SAAU,aACVZ,WAAY,WACZU,UAAWpN,EAAS,WAAa,aACjCpiB,gBAAiBoiB,EAASpmB,GAAOK,YAAc,GAC/C4D,MAAOmiB,EAASpmB,GAAOM,gBAAkB,0BAuJ9B7H,SAAA8O,EAAQpH,MAjBJoH,EAAQ6N,IAhJJ,IAACgR,QAuKlBnhB,EAAC,MAAA,CAAIlK,MA1JsC,CAC7C4J,QAAS,YACTxC,QAAS,OACTwB,WAAY,SACZQ,eAAgB,gBAChBP,IAAK,OAsJDnL,SAAA,GAAC,MAAA,CAAIsC,MAAO,IAAK43B,GAAkB5S,QAAwB,UAAfvY,EAAyB,EAAI,EAAIpD,WAAY,yBAA0B7C,MAAOiG,EACvH/O,SAAA+O,IAGHvC,EAAC,MAAA,CAAIlK,MAxI2C,CACpDoH,QAAS,OACTwB,WAAY,SACZC,IAAK,MACLvB,WAAY,KAqIL5J,SAAA,CAAAqK,IACE,OAAA,CAAK/H,MAAOi4B,GACVv6B,SAAAutB,GAAiB6B,KAElB,KACJ3lB,EAAC,SAAA,CACCxK,KAAK,SACL+J,UAAU,mBACV1G,MAAOq4B,GACPO,cA9VRl4B,IAIA,GAFAA,EAAMy2B,kBAEF/J,EAAU7pB,QAId,GAAI+pB,EAAe/pB,QACjB2xB,SADF,CASA,GAJA/G,EAAiB5qB,QAAU8Q,KAAKC,MAChC+Z,EAAoB9qB,SAAU,EAC9BusB,KAEIpvB,EAAMkK,cAAciuB,kBACtB,IACEn4B,EAAMkK,cAAciuB,kBAAkBn4B,EAAM22B,UAC9C,CAAA,MAEA,CAGFjJ,EAAkB7qB,QAAU0M,OAAO3L,WAAW,KAEb,OAA7B6pB,EAAiB5qB,SACjB6pB,EAAU7pB,SACV+pB,EAAe/pB,UAKjB8qB,EAAoB9qB,SAAU,EACzB0xB,GAAe,WAx2BO,IAg1B7B,GAoVQ6D,YAAa5B,GACb6B,gBApRRr4B,IAEAw2B,GAAmBx2B,IAmRXs4B,SAAUV,GACV,aAAYvwB,EAAc,eAAiB,eAC3CvB,MACEuB,EACI,eACA,2CAGNrK,SAAAyJ,EAACf,GAAA,CACC,eAAc,IACdQ,OAAQ,QACRP,IAAKH,GACLI,MAAO,4QG/uCrB,IAAI2yB,GAAQ,SAAUC,GACpB,OAAOA,GAAMA,EAAG3kB,OAASA,MAAQ2kB,CACnC,EAGAC,GAEEF,GAA2B,iBAAdG,YAA0BA,aACvCH,GAAuB,iBAAVhpB,QAAsBA,SAEnCgpB,GAAqB,iBAARI,MAAoBA,OACjCJ,GAAuB,iBAAVK,IAAsBA,KACnCL,GAAqB,iBAARr7B,IAAoBA,KAEhC,WAAc,OAAOA,IAAK,CAA1B,IAAmC27B,SAAS,cAATA,GCdtCC,GAAiB,SAAUC,GACzB,IACE,QAASA,GACb,OAAW3tB,GACP,OAAO,CACX,CACA,ECJA4tB,IAFYC,GAEY,WAEtB,IAAI75B,eAAqCsE,OAEzC,MAAsB,mBAARtE,GAAsBA,EAAK85B,eAAe,YAC1D,GCPIC,GAAcF,GAEdG,GAAoBP,SAAS34B,UAC7Bm5B,GAAQD,GAAkBC,MAC1Bn3B,GAAOk3B,GAAkBl3B,KAG7Bo3B,GAAmC,iBAAXC,SAAuBA,QAAQF,QAAUF,GAAcj3B,GAAKwB,KAAK21B,IAAS,WAChG,OAAOn3B,GAAKm3B,MAAMA,GAAOn2B,UAC3B,GCTIi2B,GAAcF,GAEdG,GAAoBP,SAAS34B,UAC7BgC,GAAOk3B,GAAkBl3B,KAEzBs3B,GAAsBL,IAAeC,GAAkB11B,KAAKA,KAAKxB,GAAMA,IAE3Eu3B,GAAiBN,GAAcK,GAAsB,SAAUE,GAC7D,OAAO,WACL,OAAOx3B,GAAKm3B,MAAMK,EAAIx2B,UAC1B,CACA,ECXIy2B,GAAcV,GAEd/tB,GAAWyuB,GAAY,CAAA,EAAGzuB,UAC1B0uB,GAAcD,GAAY,GAAGj6B,OAEjCm6B,GAAiB,SAAUrB,GACzB,OAAOoB,GAAY1uB,GAASstB,GAAK,GAAG,EACtC,ECPIqB,GAAaZ,GACbU,GAAcG,GAElBC,GAAiB,SAAUL,GAIzB,GAAuB,aAAnBG,GAAWH,GAAoB,OAAOC,GAAYD,EACxD,ECPIM,GAAiC,iBAAZp4B,UAAwBA,SAASq4B,IAK1DC,QAAuC,IAAfF,SAA8C,IAAhBA,GAA4B,SAAUG,GAC1F,MAA0B,mBAAZA,GAA0BA,IAAaH,EACvD,EAAI,SAAUG,GACZ,MAA0B,mBAAZA,CAChB,QCPAC,IAHYnB,GAGY,WAEtB,OAA+E,IAAxEjvB,OAAOqwB,eAAe,GAAI,EAAG,CAAEljB,IAAK,WAAc,OAAO,CAAE,IAAM,EAC1E,GCNIgiB,GAAcF,GAEd/2B,GAAO22B,SAAS34B,UAAUgC,KAE9Bo4B,GAAiBnB,GAAcj3B,GAAKwB,KAAKxB,IAAQ,WAC/C,OAAOA,GAAKm3B,MAAMn3B,GAAMgB,UAC1B,QCNIq3B,GAAwB,CAAA,EAAGC,qBAE3BC,GAA2BzwB,OAAOywB,yBAGlCC,GAAcD,KAA6BF,GAAsBr4B,KAAK,CAAE,EAAG,GAAK,GAIpFy4B,GAAA1/B,EAAYy/B,GAAc,SAA8Bn5B,GACtD,IAAIq5B,EAAaH,GAAyBv9B,KAAMqE,GAChD,QAASq5B,GAAcA,EAAWC,UACpC,EAAIN,GCZJ,ICOI/zB,GAAOyQ,GDPX6jB,GAAiB,SAAUC,EAAQ16B,GACjC,MAAO,CACLw6B,aAAuB,EAATE,GACdC,eAAyB,EAATD,GAChBE,WAAqB,EAATF,GACZ16B,QAEJ,EENIy4B,GAAQgB,GACRoB,GAAUC,GAEVC,GAAUpxB,OACVwG,GALcyoB,GAKM,GAAGzoB,OAG3B6qB,GAAiBvC,GAAM,WAGrB,OAAQsC,GAAQ,KAAKZ,qBAAqB,EAC5C,GAAK,SAAUhC,GACb,MAAuB,WAAhB0C,GAAQ1C,GAAmBhoB,GAAMgoB,EAAI,IAAM4C,GAAQ5C,EAC5D,EAAI4C,GCZJE,GAAiB,SAAU9C,GACzB,OAAOA,OACT,ECJI8C,GAAoBrC,GAEpBsC,GAAaC,UAIjBC,GAAiB,SAAUjD,GACzB,GAAI8C,GAAkB9C,SAAW,IAAI+C,GAAW,wBAA0B/C,GAC1E,OAAOA,CACT,ECRIkD,GAAgBzC,GAChBwC,GAAyB3B,GAE7B6B,GAAiB,SAAUnD,GACzB,OAAOkD,GAAcD,GAAuBjD,GAC9C,ECNI0B,GAAajB,GAEjB1X,GAAiB,SAAUiX,GACzB,MAAoB,iBAANA,EAAwB,OAAPA,EAAc0B,GAAW1B,EAC1D,ECJA9tB,GAAiB,CAAA,ECAbA,GAAOuuB,GACPP,GAAaoB,GACbI,GAAaiB,GAEbS,GAAY,SAAUC,GACxB,OAAO3B,GAAW2B,GAAYA,OAAW,CAC3C,EAEAC,GAAiB,SAAUC,EAAWrqB,GACpC,OAAOxO,UAAU7F,OAAS,EAAIu+B,GAAUlxB,GAAKqxB,KAAeH,GAAUlD,GAAWqD,IAC7ErxB,GAAKqxB,IAAcrxB,GAAKqxB,GAAWrqB,IAAWgnB,GAAWqD,IAAcrD,GAAWqD,GAAWrqB,EACnG,ECTAsqB,GAFkB/C,GAEW,CAAA,EAAGgD,eCA5BtH,GAFasE,GAEUtE,UACvBuH,GAAYvH,IAAaA,GAAUuH,UTHnCxD,GAAaO,GACbiD,GSIaA,GAAYz9B,OAAOy9B,IAAa,GTF7CC,GAAUzD,GAAWyD,QACrBC,GAAO1D,GAAW0D,KAClBC,GAAWF,IAAWA,GAAQE,UAAYD,IAAQA,GAAKnlB,QACvDqlB,GAAKD,IAAYA,GAASC,GAG1BA,KAIFrlB,IAHAzQ,GAAQ81B,GAAG9rB,MAAM,MAGD,GAAK,GAAKhK,GAAM,GAAK,EAAI,IAAMA,GAAM,GAAKA,GAAM,MAK7DyQ,IAAWilB,OACd11B,GAAQ01B,GAAU11B,MAAM,iBACVA,GAAM,IAAM,MACxBA,GAAQ01B,GAAU11B,MAAM,oBACbyQ,IAAWzQ,GAAM,IAIhC,IAAA+1B,GAAiBtlB,GUzBbulB,GAAavD,GACbH,GAAQgB,GAGR2C,GAFatB,GAEQ18B,OAGzBi+B,KAAmB1yB,OAAO2yB,wBAA0B7D,GAAM,WACxD,IAAI8D,EAASC,OAAO,oBAKpB,OAAQJ,GAAQG,MAAa5yB,OAAO4yB,aAAmBC,UAEpDA,OAAOC,MAAQN,IAAcA,GAAa,EAC/C,GCdAO,GAFoB9D,KAGjB4D,OAAOC,MACkB,iBAAnBD,OAAOG,SCLZlB,GAAa7C,GACbiB,GAAaJ,GACbmC,GAAgBd,GAGhBC,GAAUpxB,OAEdizB,GAJwBC,GAIa,SAAU1E,GAC7C,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,IAAI2E,EAAUrB,GAAW,UACzB,OAAO5B,GAAWiD,IAAYlB,GAAckB,EAAQj9B,UAAWk7B,GAAQ5C,GACzE,ECZIiE,GAAUh+B,OAEd2+B,GAAiB,SAAUjD,GACzB,IACE,OAAOsC,GAAQtC,EACnB,OAAW/uB,GACP,MAAO,QACX,CACA,ECRI8uB,GAAajB,GACbmE,GAActD,GAEdyB,GAAaC,UAGjB6B,GAAiB,SAAUlD,GACzB,GAAID,GAAWC,GAAW,OAAOA,EACjC,MAAM,IAAIoB,GAAW6B,GAAYjD,GAAY,qBAC/C,ECTIkD,GAAYpE,GACZqC,GAAoBxB,GAIxBwD,GAAiB,SAAU/7B,EAAG3C,GAC5B,IAAI2+B,EAAOh8B,EAAE3C,GACb,OAAO08B,GAAkBiC,QAAQ,EAAYF,GAAUE,EACzD,ECRIr7B,GAAO+2B,GACPiB,GAAaJ,GACbvY,GAAW4Z,GAEXI,GAAaC,0BCJb9C,GAAaO,GAGboB,GAAiBrwB,OAAOqwB,eCFxB3B,GAAaoB,GACb0D,GDGa,SAAUrhC,EAAKkE,GAC9B,IACEg6B,GAAe3B,GAAYv8B,EAAK,CAAEkE,QAAc26B,cAAc,EAAMC,UAAU,GAClF,OAAW7vB,GACPstB,GAAWv8B,GAAOkE,CACtB,CAAI,OAAOA,CACX,ECPIo9B,GAAS,qBACTC,GAAQC,GAAAC,QAAiBlF,GAAW+E,KAAWD,GAAqBC,GAAQ,KAE/EC,GAAMrB,WAAaqB,GAAMrB,SAAW,KAAK3+B,KAAK,CAC7CuZ,QAAS,SACT5C,KAAgB,OAChBwpB,UAAW,yGACXC,QAAS,2DACTnI,OAAQ,0DCZN+H,GAAQzE,GAEZ8E,GAAiB,SAAU5hC,EAAKkE,GAC9B,OAAOq9B,GAAMvhC,KAASuhC,GAAMvhC,GAAOkE,GAAS,GAC9C,ECJIo7B,GAAyBxC,GAEzBmC,GAAUpxB,OAIdg0B,GAAiB,SAAU7D,GACzB,OAAOiB,GAAQK,GAAuBtB,GACxC,ECPI6D,GAAWlE,GAEXZ,GAHcD,GAGe,CAAA,EAAGC,gBAKpC+E,GAAiBj0B,OAAOk0B,QAAU,SAAgB1F,EAAIr8B,GACpD,OAAO+8B,GAAe8E,GAASxF,GAAKr8B,EACtC,ECVIw9B,GAAcV,GAEdtf,GAAK,EACLwkB,GAAUtqB,KAAKC,SACf5I,GAAWyuB,GAAY,IAAIzuB,UAE/BkzB,GAAiB,SAAUjiC,GACzB,MAAO,gBAAqB,IAARA,EAAoB,GAAKA,GAAO,KAAO+O,KAAWyO,GAAKwkB,GAAS,GACtF,ECPIJ,GAASjE,GACToE,GAAS/C,GACTiD,GAAMlB,GACNmB,GAAgBC,GAChBC,GAAoBC,GAEpB3B,GAPa5D,GAOO4D,OACpB4B,GAAwBV,GAAO,OAC/BW,GAAwBH,GAAoB1B,GAAY,KAAKA,GAASA,IAAUA,GAAO8B,eAAiBP,GAE5GQ,GAAiB,SAAUv8B,GAKvB,OAJG67B,GAAOO,GAAuBp8B,KACjCo8B,GAAsBp8B,GAAQg8B,IAAiBH,GAAOrB,GAAQx6B,GAC1Dw6B,GAAOx6B,GACPq8B,GAAsB,UAAYr8B,IAC/Bo8B,GAAsBp8B,EACjC,ECjBIH,GAAO+2B,GACP1X,GAAWuY,GACXmD,GAAW9B,GACXmC,GAAYJ,GACZ2B,GRIa,SAAUve,EAAOwe,GAChC,IAAIpF,EAAIqF,EACR,GAAa,WAATD,GAAqB5E,GAAWR,EAAKpZ,EAAMpV,YAAcqW,GAASwd,EAAM78B,GAAKw3B,EAAIpZ,IAAS,OAAOye,EACrG,GAAI7E,GAAWR,EAAKpZ,EAAM0e,WAAazd,GAASwd,EAAM78B,GAAKw3B,EAAIpZ,IAAS,OAAOye,EAC/E,GAAa,WAATD,GAAqB5E,GAAWR,EAAKpZ,EAAMpV,YAAcqW,GAASwd,EAAM78B,GAAKw3B,EAAIpZ,IAAS,OAAOye,EACrG,MAAM,IAAIxD,GAAW,0CACvB,EQPIA,GAAaC,UACbyD,GAHkBT,GAGa,eCR/BU,GDYa,SAAU5e,EAAOwe,GAChC,IAAKvd,GAASjB,IAAU2c,GAAS3c,GAAQ,OAAOA,EAChD,IACIqQ,EADAwO,EAAe7B,GAAUhd,EAAO2e,IAEpC,GAAIE,EAAc,CAGhB,YAFIL,IAAoBA,EAAO,WAC/BnO,EAASzuB,GAAKi9B,EAAc7e,EAAOwe,IAC9Bvd,GAASoP,IAAWsM,GAAStM,GAAS,OAAOA,EAClD,MAAM,IAAI4K,GAAW,0CACzB,CAEE,gBADIuD,IAAoBA,EAAO,UACxBD,GAAoBve,EAAOwe,EACpC,ECvBI7B,GAAWnD,GAIfsF,GAAiB,SAAUjF,GACzB,IAAIh+B,EAAM+iC,GAAY/E,EAAU,UAChC,OAAO8C,GAAS9gC,GAAOA,EAAMA,EAAM,EACrC,ECPIolB,GAAWuY,GAEXl4B,GAHaq3B,GAGSr3B,SAEtBy9B,GAAS9d,GAAS3f,KAAa2f,GAAS3f,GAASsjB,eAErDoa,GAAiB,SAAU9G,GACzB,OAAO6G,GAASz9B,GAASsjB,cAAcsT,GAAM,CAAA,CAC/C,ECPItT,GAAgBiW,GAGpBoE,IALkBtG,KACNa,GAI4B,WAEtC,OAES,IAFF9vB,OAAOqwB,eAAenV,GAAc,OAAQ,IAAK,CACtD/N,IAAK,WAAc,OAAO,CAAE,IAC3B/b,CACL,GCVIokC,GAAcvG,GACd/2B,GAAO43B,GACP2F,GAA6BtE,GAC7BL,GAA2BoC,GAC3BvB,GAAkB2C,GAClBc,GAAgBZ,GAChBN,GAASwB,GACTC,GAAiBC,GAGjBC,GAA4B71B,OAAOywB,yBAIvCqF,GAAA7kC,EAAYukC,GAAcK,GAA4B,SAAkC5hC,EAAGW,GAGzF,GAFAX,EAAI09B,GAAgB19B,GACpBW,EAAIwgC,GAAcxgC,GACd+gC,GAAgB,IAClB,OAAOE,GAA0B5hC,EAAGW,EACxC,OAAWwM,GAAO,CAChB,GAAI8yB,GAAOjgC,EAAGW,UAAWk8B,IAA0B54B,GAAKu9B,GAA2BxkC,EAAGgD,EAAGW,GAAIX,EAAEW,GACjG,ECrBA,IAAIk6B,GAAQG,GACRiB,GAAaJ,GAEbiG,GAAc,kBAEdC,GAAW,SAAUC,EAASC,GAChC,IAAI7/B,EAAQ4B,GAAKk+B,GAAUF,IAC3B,OAAO5/B,IAAU+/B,IACb//B,IAAUggC,KACVnG,GAAWgG,GAAapH,GAAMoH,KAC5BA,EACR,EAEIC,GAAYH,GAASG,UAAY,SAAUG,GAC7C,OAAO7hC,OAAO6hC,GAAQ9gC,QAAQugC,GAAa,KAAKtgC,aAClD,EAEIwC,GAAO+9B,GAAS/9B,KAAO,CAAA,EACvBo+B,GAASL,GAASK,OAAS,IAC3BD,GAAWJ,GAASI,SAAW,IAEnCG,GAAiBP,GCpBb3C,GAAYvD,GACZX,GAAcgC,GAEdz3B,GAJcu1B,MAIiBv1B,MAGnC88B,GAAiB,SAAU9G,EAAI+G,GAE7B,OADApD,GAAU3D,YACH+G,EAAqB/G,EAAKP,GAAcz1B,GAAKg2B,EAAI+G,GAAQ,WAC9D,OAAO/G,EAAGL,MAAMoH,EAAMv9B,UAC1B,CACA,QCPAw9B,GALkBzH,IACNa,GAI0B,WAEpC,OAGiB,KAHV9vB,OAAOqwB,eAAe,WAAY,EAAiB,YAAa,CACrEh6B,MAAO,GACP46B,UAAU,IACT/6B,SACL,GCXIqhB,GAAW0X,GAEXwD,GAAUh+B,OACV88B,GAAaC,UAGjBmF,GAAiB,SAAUxG,GACzB,GAAI5Y,GAAS4Y,GAAW,OAAOA,EAC/B,MAAM,IAAIoB,GAAWkB,GAAQtC,GAAY,oBAC3C,ECTIqF,GAAcvG,GACd0G,GAAiB7F,GACjB8G,GAA0BzF,GAC1BwF,GAAWzD,GACXkC,GAAgBd,GAEhB/C,GAAaC,UAEbqF,GAAkB72B,OAAOqwB,eAEzBwF,GAA4B71B,OAAOywB,yBACnCqG,GAAa,aACbC,GAAe,eACfC,GAAW,WAIfC,GAAAhmC,EAAYukC,GAAcoB,GAA0B,SAAwB3iC,EAAGW,EAAGsiC,GAIhF,GAHAP,GAAS1iC,GACTW,EAAIwgC,GAAcxgC,GAClB+hC,GAASO,GACQ,mBAANjjC,GAA0B,cAANW,GAAqB,UAAWsiC,GAAcF,MAAYE,IAAeA,EAAWF,IAAW,CAC5H,IAAIn+B,EAAUg9B,GAA0B5hC,EAAGW,GACvCiE,GAAWA,EAAQm+B,MACrB/iC,EAAEW,GAAKsiC,EAAW7gC,MAClB6gC,EAAa,CACXlG,aAAc+F,MAAgBG,EAAaA,EAAWH,IAAgBl+B,EAAQk+B,IAC9ElG,WAAYiG,MAAcI,EAAaA,EAAWJ,IAAcj+B,EAAQi+B,IACxE7F,UAAU,GAGlB,CAAI,OAAO4F,GAAgB5iC,EAAGW,EAAGsiC,EACjC,EAAIL,GAAkB,SAAwB5iC,EAAGW,EAAGsiC,GAIlD,GAHAP,GAAS1iC,GACTW,EAAIwgC,GAAcxgC,GAClB+hC,GAASO,GACLvB,GAAgB,IAClB,OAAOkB,GAAgB5iC,EAAGW,EAAGsiC,EACjC,OAAW91B,GAAO,CAChB,GAAI,QAAS81B,GAAc,QAASA,EAAY,MAAM,IAAI3F,GAAW,2BAErE,MADI,UAAW2F,IAAYjjC,EAAEW,GAAKsiC,EAAW7gC,OACtCpC,CACT,EC1CA,IACIkjC,GAAuBrH,GACvBgB,GAA2BK,GAE/BiG,GAJkBnI,GAIa,SAAUoI,EAAQllC,EAAKkE,GACpD,OAAO8gC,GAAqBlmC,EAAEomC,EAAQllC,EAAK2+B,GAAyB,EAAGz6B,GACzE,EAAI,SAAUghC,EAAQllC,EAAKkE,GAEzB,OADAghC,EAAOllC,GAAOkE,EACPghC,CACT,ECTI3I,GAAaO,GACbI,GAAQS,GACRH,GAAcwB,GACdjB,GAAagD,GACbzC,GAA2B6D,GAA2DrjC,EACtF+kC,GAAWxB,GACX9zB,GAAOg1B,GACPh8B,GAAOk8B,GACPwB,GAA8BE,GAC9BpD,GAASqD,GAITC,GAAkB,SAAUC,GAC9B,IAAIC,EAAU,SAAUtmC,EAAGoD,EAAGtD,GAC5B,GAAIgC,gBAAgBwkC,EAAS,CAC3B,OAAQx+B,UAAU7F,QAChB,KAAK,EAAG,OAAO,IAAIokC,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAkBrmC,GACrC,KAAK,EAAG,OAAO,IAAIqmC,EAAkBrmC,EAAGoD,GACxC,OAAO,IAAIijC,EAAkBrmC,EAAGoD,EAAGtD,EAC3C,CAAM,OAAOm+B,GAAMoI,EAAmBvkC,KAAMgG,UAC5C,EAEE,OADAw+B,EAAQxhC,UAAYuhC,EAAkBvhC,UAC/BwhC,CACT,EAiBAC,GAAiB,SAAUlN,EAASkB,GAClC,IAUIiM,EAAQC,EAAYC,EACpB3lC,EAAK4lC,EAAgBC,EAAgBC,EAAgBC,EAAgBtH,EAXrEuH,EAAS1N,EAAQ7M,OACjBwa,EAAS3N,EAAQmE,OACjByJ,EAAS5N,EAAQ6N,KACjBC,EAAQ9N,EAAQ+N,MAEhBC,EAAeL,EAAS1J,GAAa2J,EAAS3J,GAAWyJ,GAAUzJ,GAAWyJ,IAAWzJ,GAAWyJ,GAAQjiC,UAE5G0nB,EAASwa,EAAS13B,GAAOA,GAAKy3B,IAAWf,GAA4B12B,GAAMy3B,EAAQ,CAAA,GAAIA,GACvFO,EAAkB9a,EAAO1nB,UAK7B,IAAK/D,KAAOw5B,EAGVkM,IAFAD,EAAS5B,GAASoC,EAASjmC,EAAMgmC,GAAUE,EAAS,IAAM,KAAOlmC,EAAKs4B,EAAQkO,UAEtDF,GAAgBvE,GAAOuE,EAActmC,GAE7D6lC,EAAiBpa,EAAOzrB,GAEpB0lC,IAEFI,EAFkBxN,EAAQmO,gBAC1BhI,EAAaH,GAAyBgI,EAActmC,KACrBy+B,EAAWv6B,MACpBoiC,EAAatmC,IAGrC4lC,EAAkBF,GAAcI,EAAkBA,EAAiBtM,EAAOx5B,IAErEylC,GAAWW,UAAgBP,UAAyBD,KAGzBG,EAA5BzN,EAAQ/wB,MAAQm+B,EAA6Bn+B,GAAKq+B,EAAgBrJ,IAE7DjE,EAAQoO,MAAQhB,EAA6BL,GAAgBO,GAE7DQ,GAASrI,GAAW6H,GAAkCpI,GAAYoI,GAErDA,GAGlBtN,EAAQqI,MAASiF,GAAkBA,EAAejF,MAAUkF,GAAkBA,EAAelF,OAC/FsE,GAA4Bc,EAAgB,QAAQ,GAGtDd,GAA4BxZ,EAAQzrB,EAAK+lC,GAErCK,IAEGrE,GAAOxzB,GADZo3B,EAAoBK,EAAS,cAE3Bf,GAA4B12B,GAAMo3B,EAAmB,IAGvDV,GAA4B12B,GAAKo3B,GAAoB3lC,EAAK4lC,GAEtDtN,EAAQqO,MAAQJ,IAAoBd,IAAWc,EAAgBvmC,KACjEilC,GAA4BsB,EAAiBvmC,EAAK4lC,IAI1D,ECtGI7G,GAAUjC,GAKdv9B,GAAiBD,MAAMC,SAAW,SAAiBy+B,GACjD,MAA6B,UAAtBe,GAAQf,EACjB,ECPQlB,GAKN,CAAErR,OAAQ,QAAS0a,MAAM,GAAQ,CACjC5mC,QALYo+B,iBCAHA,GAEWr+B,MAAMC,SCH5B,IAAIqnC,GAAOlvB,KAAKkvB,KACZtY,GAAQ5W,KAAK4W,MCDbuY,GDManvB,KAAKmvB,OAAS,SAAe/lC,GAC5C,IAAIvC,GAAKuC,EACT,OAAQvC,EAAI,EAAI+vB,GAAQsY,IAAMroC,EAChC,ECLAuoC,GAAiB,SAAU9I,GACzB,IAAI+I,GAAU/I,EAEd,OAAO+I,GAAWA,GAAqB,IAAXA,EAAe,EAAIF,GAAME,EACvD,ECRID,GAAsBhK,GAEtBrW,GAAM/O,KAAK+O,ICFXugB,GDMa,SAAUhJ,GACzB,IAAIiJ,EAAMH,GAAoB9I,GAC9B,OAAOiJ,EAAM,EAAIxgB,GAAIwgB,EAAK,kBAAoB,CAChD,ECLAC,GAAiB,SAAUzsB,GACzB,OAAOusB,GAASvsB,EAAIvZ,OACtB,ECNIk+B,GAAaC,UAGjB8H,GAAiB,SAAU9K,GACzB,GAAIA,EAHiB,iBAGM,MAAM+C,GAAW,kCAC5C,OAAO/C,CACT,ECNIgH,GAAcvG,GACdkI,GAAuBrH,GACvBgB,GAA2BK,GAE/BoI,GAAiB,SAAUlC,EAAQllC,EAAKkE,GAClCm/B,MAAkCvkC,EAAEomC,EAAQllC,EAAK2+B,GAAyB,EAAGz6B,IAC5EghC,EAAOllC,GAAOkE,CACrB,ECPIm/B,GAAcvG,GACdv9B,GAAUo+B,GAEVyB,GAAaC,UAEbf,GAA2BzwB,OAAOywB,yBActC+I,GAXwChE,KAAgB,WAEtD,YAAItiC,KAAoB,OAAO,EAC/B,IAEE8M,OAAOqwB,eAAe,GAAI,SAAU,CAAEY,UAAU,IAAS59B,OAAS,CACtE,OAAW+N,GACP,OAAOA,aAAiBowB,SAC5B,CACA,CATwD,GAWH,SAAUv9B,EAAGZ,GAChE,GAAI3B,GAAQuC,KAAOw8B,GAAyBx8B,EAAG,UAAUg9B,SACvD,MAAM,IAAIM,GAAW,gCACrB,OAAOt9B,EAAEZ,OAASA,CACtB,EAAI,SAAUY,EAAGZ,GACf,OAAOY,EAAEZ,OAASA,CACpB,ECtBI+B,GAAO,CAAA,EAEXA,GALsB65B,GAEc,gBAGd,IAEtB,IAAAwK,GAAkC,eAAjBhlC,OAAOW,ICPpBskC,GAAwBzK,GACxBiB,GAAaJ,GACbD,GAAasB,GAGbwI,GAFkBzG,GAEc,eAChC9B,GAAUpxB,OAGV45B,GAAwE,cAApD/J,GAAW,WAAc,OAAO32B,SAAU,CAA/B,IAUnCg4B,GAAiBwI,GAAwB7J,GAAa,SAAUrB,GAC9D,IAAIv6B,EAAGwb,EAAKkX,EACZ,YAAc,IAAP6H,EAAmB,YAAqB,OAAPA,EAAc,OAEO,iBAAjD/e,EAXD,SAAU+e,EAAIr8B,GACzB,IACE,OAAOq8B,EAAGr8B,EACd,OAAWiP,GAAO,CAClB,CAOoBy4B,CAAO5lC,EAAIm9B,GAAQ5C,GAAKmL,KAA8BlqB,EAEpEmqB,GAAoB/J,GAAW57B,GAEF,YAA5B0yB,EAASkJ,GAAW57B,KAAoBi8B,GAAWj8B,EAAE6lC,QAAU,YAAcnT,CACpF,EC3BIuJ,GAAaJ,GACb4D,GAAQvC,GAER4I,GAJc9K,GAIiBJ,SAAS3tB,UAGvCgvB,GAAWwD,GAAMsG,iBACpBtG,GAAMsG,cAAgB,SAAUxL,GAC9B,OAAOuL,GAAiBvL,EAC5B,OAGAwL,GAAiBtG,GAAMsG,cCbnBrK,GAAcV,GACdH,GAAQgB,GACRI,GAAaiB,GACbD,GAAUgC,GAEV8G,GAAgBxF,GAEhByF,GAAO,WAAY,EACnBC,GAJa5F,GAIU,UAAW,aAClC6F,GAAoB,2BACpBpL,GAAOY,GAAYwK,GAAkBpL,MACrCqL,IAAuBD,GAAkB/kC,KAAK6kC,IAE9CI,GAAsB,SAAuBlK,GAC/C,IAAKD,GAAWC,GAAW,OAAO,EAClC,IAEE,OADA+J,GAAUD,GAAM,GAAI9J,IACb,CACX,OAAW/uB,GACP,OAAO,CACX,CACA,EAEIk5B,GAAsB,SAAuBnK,GAC/C,IAAKD,GAAWC,GAAW,OAAO,EAClC,OAAQe,GAAQf,IACd,IAAK,gBACL,IAAK,oBACL,IAAK,yBAA0B,OAAO,EAExC,IAIE,OAAOiK,MAAyBrL,GAAKoL,GAAmBH,GAAc7J,GAC1E,OAAW/uB,GACP,OAAO,CACX,CACA,EAEAk5B,GAAoBxH,MAAO,EAI3B,IAAAyH,IAAkBL,IAAapL,GAAM,WACnC,IAAI0L,EACJ,OAAOH,GAAoBA,GAAoBniC,QACzCmiC,GAAoBr6B,UACpBq6B,GAAoB,WAAcG,GAAS,CAAK,IACjDA,CACP,GAAKF,GAAsBD,GClDvB3oC,GAAUu9B,GACVsL,GAAgBzK,GAChBvY,GAAW4Z,GAGXsJ,GAFkBvH,GAEQ,WAC1BwH,GAASjpC,MCNTkpC,GDUa,SAAUC,GACzB,IAAItnC,EASF,OARE5B,GAAQkpC,KACVtnC,EAAIsnC,EAAcloC,aAEd6nC,GAAcjnC,KAAOA,IAAMonC,IAAUhpC,GAAQ4B,EAAE4C,aAC1CqhB,GAASjkB,IAEN,QADVA,EAAIA,EAAEmnC,QAFwDnnC,OAAI,aAK7DA,EAAkBonC,GAASpnC,CACtC,ECjBAunC,GAAiB,SAAUD,EAAevnC,GACxC,OAAO,IAAKsnC,GAAwBC,GAA7B,CAAwD,IAAXvnC,EAAe,EAAIA,EACzE,ECNIy7B,GAAQG,GAERuD,GAAarB,GAEbsJ,GAHkB3K,GAGQ,WAE9BgL,GAAiB,SAAUC,GAIzB,OAAOvI,IAAc,KAAO1D,GAAM,WAChC,IAAIkM,EAAQ,GAKZ,OAJkBA,EAAMtoC,YAAc,CAAA,GAC1B+nC,IAAW,WACrB,MAAO,CAAEQ,IAAK,EACpB,EAC+C,IAApCD,EAAMD,GAAa15B,SAAS45B,GACvC,EACA,EClBItnC,GAAIs7B,GACJH,GAAQgB,GACRp+B,GAAUy/B,GACV5Z,GAAW2b,GACXc,GAAWM,GACX+E,GAAoB7E,GACpB8E,GAA2B5D,GAC3B6D,GAAiB3D,GACjBsF,GAAiB5D,GACjBuD,GAAqBtD,GACrBuD,GAA+BK,GAE/B3I,GAAa4I,GAEbC,GAHkBC,GAGqB,sBAKvCC,GAA+B/I,IAAc,KAAO1D,GAAM,WAC5D,IAAIkM,EAAQ,GAEZ,OADAA,EAAMK,KAAwB,EACvBL,EAAMQ,SAAS,KAAOR,CAC/B,GAEIS,GAAqB,SAAUxnC,GACjC,IAAKsjB,GAAStjB,GAAI,OAAO,EACzB,IAAIynC,EAAaznC,EAAEonC,IACnB,YAAsB,IAAfK,IAA6BA,EAAahqC,GAAQuC,EAC3D,EAOAN,GAAE,CAAEiqB,OAAQ,QAAS4a,OAAO,EAAgBG,QAL9B4C,KAAiCT,GAA6B,WAKd,CAE5DU,OAAQ,SAAgBG,GACtB,IAGI9qC,EAAGkC,EAAGM,EAAQ+lC,EAAK7iC,EAHnBtC,EAAI+/B,GAAS9gC,MACb4B,EAAI+lC,GAAmB5mC,EAAG,GAC1BvD,EAAI,EAER,IAAKG,GAAI,EAAIwC,EAAS6F,UAAU7F,OAAQxC,EAAIwC,EAAQxC,IAElD,GAAI4qC,GADJllC,GAAU,IAAN1F,EAAWoD,EAAIiF,UAAUrI,IAI3B,IAFAuoC,EAAMC,GAAkB9iC,GACxB+iC,GAAyB5oC,EAAI0oC,GACxBrmC,EAAI,EAAGA,EAAIqmC,EAAKrmC,IAAKrC,IAASqC,KAAKwD,GAAGgjC,GAAezkC,EAAGpE,EAAG6F,EAAExD,SAElEumC,GAAyB5oC,EAAI,GAC7B6oC,GAAezkC,EAAGpE,IAAK6F,GAI3B,OADA2kC,GAAepmC,EAAGpE,GACXoE,CACX,ICxDA,ICK6B8mC,GDLzB1K,GAAUjC,GAEVwD,GAAUh+B,OAEdyM,GAAiB,SAAUivB,GACzB,GAA0B,WAAtBe,GAAQf,GAAwB,MAAM,IAAIqB,UAAU,6CACxD,OAAOiB,GAAQtC,EACjB,QEPI8I,GAAsBhK,GAEtBxiB,GAAM5C,KAAK4C,IACXmM,GAAM/O,KAAK+O,IAKfijB,GAAiB,SAAUC,EAAOzoC,GAChC,IAAI0oC,EAAU9C,GAAoB6C,GAClC,OAAOC,EAAU,EAAItvB,GAAIsvB,EAAU1oC,EAAQ,GAAKulB,GAAImjB,EAAS1oC,EAC/D,EDXIs+B,GAAkB1C,GAClB4M,GAAkB/L,GAClBuJ,GAAoBlI,GAuBxB6K,GAAiB,CAMfvkC,SA1B2BmkC,IA0BL,EAzBf,SAAUK,EAAOpd,EAAIqd,GAC1B,IAAIjoC,EAAI09B,GAAgBsK,GACpB5oC,EAASgmC,GAAkBplC,GAC/B,GAAe,IAAXZ,EAAc,OAAQuoC,KAAe,EACzC,IACIvlC,EADAylC,EAAQD,GAAgBK,EAAW7oC,GAIvC,GAAIuoC,IAAe/c,GAAOA,GAAI,KAAOxrB,EAASyoC,GAG5C,IAFAzlC,EAAQpC,EAAE6nC,OAEIzlC,EAAO,OAAO,OAEvB,KAAMhD,EAASyoC,EAAOA,IAC3B,IAAKF,IAAeE,KAAS7nC,IAAMA,EAAE6nC,KAAWjd,EAAI,OAAO+c,IAAeE,GAAS,EACnF,OAAQF,KAAe,CAC7B,IEtBAO,GAAiB,CAAA,ECCbjI,GAASpE,GACT6B,GAAkBR,GAClB15B,GAAUy7B,GAAuCz7B,QACjD0kC,GAAa7H,GAEb5gC,GANcu7B,GAMK,GAAGv7B,MAE1B0oC,GAAiB,SAAU/E,EAAQgF,GACjC,IAGIlqC,EAHA8B,EAAI09B,GAAgB0F,GACpBxmC,EAAI,EACJ81B,EAAS,GAEb,IAAKx0B,KAAO8B,GAAIigC,GAAOiI,GAAYhqC,IAAQ+hC,GAAOjgC,EAAG9B,IAAQuB,GAAKizB,EAAQx0B,GAE1E,KAAOkqC,EAAMhpC,OAASxC,GAAOqjC,GAAOjgC,EAAG9B,EAAMkqC,EAAMxrC,SAChD4G,GAAQkvB,EAAQx0B,IAAQuB,GAAKizB,EAAQx0B,IAExC,OAAOw0B,CACT,EClBA2V,GAAiB,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,WCREC,GAAqBtN,GACrBqN,GAAcxM,GAKlB0M,GAAiBx8B,OAAOy8B,MAAQ,SAAcxoC,GAC5C,OAAOsoC,GAAmBtoC,EAAGqoC,GAC/B,ECRI9G,GAAcvG,GACd2H,GAA0B9G,GAC1BqH,GAAuBhG,GACvBwF,GAAWzD,GACXvB,GAAkB2C,GAClBkI,GAAahI,GAKjBkI,GAAAzrC,EAAYukC,KAAgBoB,GAA0B52B,OAAO28B,iBAAmB,SAA0B1oC,EAAG2oC,GAC3GjG,GAAS1iC,GAMT,IALA,IAII9B,EAJAD,EAAQy/B,GAAgBiL,GACxBH,EAAOD,GAAWI,GAClBvpC,EAASopC,EAAKppC,OACdyoC,EAAQ,EAELzoC,EAASyoC,GAAO3E,GAAqBlmC,EAAEgD,EAAG9B,EAAMsqC,EAAKX,KAAU5pC,EAAMC,IAC5E,OAAO8B,CACT,ECnBA,ICqDI4oC,GDnDJC,GAFiB7N,GAEW,WAAY,mBEDpCmF,GAAMtE,GAEN2M,GAHSxN,GAGK,QAElB8N,GAAiB,SAAU5qC,GACzB,OAAOsqC,GAAKtqC,KAASsqC,GAAKtqC,GAAOiiC,GAAIjiC,GACvC,EDNIwkC,GAAW1H,GACX+N,GAAyBlN,GACzBwM,GAAcnL,GACdgL,GAAajJ,GACb4J,GAAOxI,GACPgB,GAAwBd,GAKxByI,GAAY,YACZC,GAAS,SACTC,GANYzH,GAMS,YAErB0H,GAAmB,WAAY,EAE/BC,GAAY,SAAU7kC,GACxB,MARO,IAQK0kC,GATL,IASmB1kC,EAAnB8kC,KAAwCJ,GATxC,GAUT,EAGIK,GAA4B,SAAUV,GACxCA,EAAgBW,MAAMH,GAAU,KAChCR,EAAgBxxB,QAChB,IAAIoyB,EAAOZ,EAAgBa,aAAa19B,OAGxC,OADA68B,EAAkB,KACXY,CACT,EAyBIE,GAAkB,WACpB,IACEd,GAAkB,IAAIe,cAAc,WACxC,OAAWx8B,GAAO,CAzBa,IAIzBy8B,EAFAC,EACAC,EAuBJJ,GAAqC,oBAAZ/lC,SACrBA,SAASomC,QAAUnB,GACjBU,GAA0BV,KA1B5BiB,EAASxI,GAAsB,UAC/ByI,EAAK,OAASb,GAAS,IAE3BY,EAAOxoC,MAAMoH,QAAU,OACvBogC,GAAKvhB,YAAYuiB,GAEjBA,EAAOniC,IAAMlH,OAAOspC,IACpBF,EAAiBC,EAAOG,cAAcrmC,UACvBsmC,OACfL,EAAeL,MAAMH,GAAU,sBAC/BQ,EAAexyB,QACRwyB,EAAe9nC,GAiBlBwnC,GAA0BV,IAE9B,IADA,IAAIxpC,EAASipC,GAAYjpC,OAClBA,YAAiBsqC,GAAgBV,IAAWX,GAAYjpC,IAC/D,OAAOsqC,IACT,EAEAxB,GAAWgB,KAAY,MAKvBgB,GAAiBn+B,OAAOo+B,QAAU,SAAgBnqC,EAAG2oC,GACnD,IAAIjW,EAQJ,OAPU,OAAN1yB,GACFmpC,GAAiBH,IAAatG,GAAS1iC,GACvC0yB,EAAS,IAAIyW,GACbA,GAAiBH,IAAa,KAE9BtW,EAAOwW,IAAYlpC,KACL0pC,UACM,IAAff,EAA2BjW,EAASqW,GAAuB/rC,EAAE01B,EAAQiW,EAC9E,QEnFIL,GAAqBtN,GAGrBkN,GAFcrM,GAEW0L,OAAO,SAAU,aAK9C6C,GAAAptC,EAAY+O,OAAOs+B,qBAAuB,SAA6BrqC,GACrE,OAAOsoC,GAAmBtoC,EAAGkoC,GAC/B,YCRAoC,GAFkBtP,GAEW,GAAGv5B,OCD5Bw7B,GAAUjC,GACV0C,GAAkB7B,GAClB0O,GAAuBrN,GAAsDlgC,EAC7EstC,GAAarL,GAEbuL,GAA+B,iBAAVl5B,QAAsBA,QAAUvF,OAAOs+B,oBAC5Dt+B,OAAOs+B,oBAAoB/4B,QAAU,GAWzCm5B,GAAAztC,EAAmB,SAA6Bu9B,GAC9C,OAAOiQ,IAA+B,WAAhBvN,GAAQ1C,GAVX,SAAUA,GAC7B,IACE,OAAOgQ,GAAqBhQ,EAChC,OAAWptB,GACP,OAAOm9B,GAAWE,GACtB,CACA,CAKME,CAAenQ,GACfgQ,GAAqB7M,GAAgBnD,GAC3C,YCrBAoQ,GAAA3tC,EAAY+O,OAAO2yB,sBCDnB,IAAIyE,GAA8BnI,GAElC4P,GAAiB,SAAUjhB,EAAQzrB,EAAKkE,EAAOo0B,GAG7C,OAFIA,GAAWA,EAAQoG,WAAYjT,EAAOzrB,GAAOkE,EAC5C+gC,GAA4BxZ,EAAQzrB,EAAKkE,GACvCunB,CACT,ECNIyS,GAAiBpB,SCAjB2F,GAAkB3F,GAEtB6P,GAAA7tC,EAAY2jC,GCFZ,ICYIpxB,GAAK2J,GAAK8E,GDZVvR,GAAOuuB,GACPiF,GAASpE,GACTiP,GAA+B5N,GAC/Bd,GAAiB6C,GAA+CjiC,EAEpE+tC,GAAiB,SAAUC,GACzB,IAAIpM,EAASnyB,GAAKmyB,SAAWnyB,GAAKmyB,OAAS,CAAA,GACtCqB,GAAOrB,EAAQoM,IAAO5O,GAAewC,EAAQoM,EAAM,CACtD5oC,MAAO0oC,GAA6B9tC,EAAEguC,IAE1C,EEVI/mC,GAAO+2B,GACP6C,GAAahC,GACb8E,GAAkBzD,GAClB0N,GAAgB3L,GAEpBgM,GAAiB,WACf,IAAIrM,EAASf,GAAW,UACpBqN,EAAkBtM,GAAUA,EAAO38B,UACnC8+B,EAAUmK,GAAmBA,EAAgBnK,QAC7CC,EAAeL,GAAgB,eAE/BuK,IAAoBA,EAAgBlK,IAItC4J,GAAcM,EAAiBlK,EAAc,SAAUmK,GACrD,OAAOlnC,GAAK88B,EAAS9hC,KAC3B,EAAO,CAAU,EAEjB,EClBIg+B,GAAUpB,GAIduP,GAL4BpQ,GAKa,CAAA,EAAG/tB,SAAW,WACrD,MAAO,WAAagwB,GAAQh+B,MAAQ,GACtC,ECPIwmC,GAAwBzK,GACxBoB,GAAiBP,GAA+C7+B,EAChEmmC,GAA8BjG,GAC9B+C,GAAShB,GACThyB,GAAWozB,GAGXqF,GAFkBnF,GAEc,eAEpC8K,GAAiB,SAAU9Q,EAAI+Q,EAAKlH,EAAQmH,GAC1C,IAAI5hB,EAASya,EAAS7J,EAAKA,GAAMA,EAAGt4B,UAChC0nB,IACGsW,GAAOtW,EAAQ+b,KAClBtJ,GAAezS,EAAQ+b,GAAe,CAAE3I,cAAc,EAAM36B,MAAOkpC,IAEjEC,IAAe9F,IACjBtC,GAA4BxZ,EAAQ,WAAY1c,IAGtD,EClBIgvB,GAAaJ,GAEb2P,GAHaxQ,GAGQwQ,QJHrBC,GIKaxP,GAAWuP,KAAY,cAAcrqC,KAAKX,OAAOgrC,KJJ9D/Q,GAAaoB,GACbvY,GAAW4Z,GACXiG,GAA8BlE,GAC9BgB,GAASI,GACTP,GAASS,GACTuI,GAAYrH,GACZyG,GAAavG,GAEb+J,GAA6B,6BAC7BnO,GAAY9C,GAAW8C,UACvBiO,GAAU/Q,GAAW+Q,QAgBzB,GAAIC,IAAmB3L,GAAOt9B,MAAO,CACnC,IAAIi9B,GAAQK,GAAOt9B,QAAUs9B,GAAOt9B,MAAQ,IAAIgpC,IAEhD/L,GAAMvmB,IAAMumB,GAAMvmB,IAClBumB,GAAMzhB,IAAMyhB,GAAMzhB,IAClByhB,GAAMlwB,IAAMkwB,GAAMlwB,IAElBA,GAAM,SAAUgrB,EAAIoR,GAClB,GAAIlM,GAAMzhB,IAAIuc,GAAK,MAAM,IAAIgD,GAAUmO,IAGvC,OAFAC,EAASC,OAASrR,EAClBkF,GAAMlwB,IAAIgrB,EAAIoR,GACPA,CACX,EACEzyB,GAAM,SAAUqhB,GACd,OAAOkF,GAAMvmB,IAAIqhB,IAAO,CAAA,CAC5B,EACEvc,GAAM,SAAUuc,GACd,OAAOkF,GAAMzhB,IAAIuc,EACrB,CACA,KAAO,CACL,IAAIsR,GAAQ/C,GAAU,SACtBZ,GAAW2D,KAAS,EACpBt8B,GAAM,SAAUgrB,EAAIoR,GAClB,GAAI1L,GAAO1F,EAAIsR,IAAQ,MAAM,IAAItO,GAAUmO,IAG3C,OAFAC,EAASC,OAASrR,EAClB4I,GAA4B5I,EAAIsR,GAAOF,GAChCA,CACX,EACEzyB,GAAM,SAAUqhB,GACd,OAAO0F,GAAO1F,EAAIsR,IAAStR,EAAGsR,IAAS,CAAA,CAC3C,EACE7tB,GAAM,SAAUuc,GACd,OAAO0F,GAAO1F,EAAIsR,GACtB,CACA,CAEA,IAAAC,GAAiB,CACfv8B,OACA2J,OACA8E,OACA+tB,QArDY,SAAUxR,GACtB,OAAOvc,GAAIuc,GAAMrhB,GAAIqhB,GAAMhrB,GAAIgrB,EAAI,GACrC,EAoDEyR,UAlDc,SAAUC,GACxB,OAAO,SAAU1R,GACf,IAAI/3B,EACJ,IAAK8gB,GAASiX,KAAQ/3B,EAAQ0W,GAAIqhB,IAAKv8B,OAASiuC,EAC9C,MAAM,IAAI1O,GAAU,0BAA4B0O,EAAO,aACvD,OAAOzpC,CACb,CACA,GKzBIiD,GAAOu1B,GACPyC,GAAgB5B,GAChBkE,GAAW7C,GACXkI,GAAoBnG,GACpB2H,GAAqBvG,GACrBiF,GAAiB/E,GAGjB2L,GAAe,SAAUD,GAC3B,IAAIE,EAAkB,IAATF,EACTG,EAAqB,IAATH,EACZI,EAAmB,IAATJ,EACVK,EAAoB,IAATL,EACXM,EAAyB,IAATN,EAChBO,EAA4B,IAATP,EACnBQ,EAAoB,IAATR,GAAcM,EAC7B,OAAO,SAAUvE,EAAO0E,EAAYlK,GASlC,IARA,IAOIpgC,EAAOswB,EAPP1yB,EAAI+/B,GAASiI,GACbtN,EAAO+C,GAAcz9B,GACrBZ,EAASgmC,GAAkB1K,GAC3BiS,EAAgBlnC,GAAKinC,EAAYlK,GACjCqF,EAAQ,EACR+E,EAAW,EACXjjB,EAASwiB,EAASvF,GAAmBoB,EAAO5oC,GAAUgtC,GAAaI,EAAmB5F,GAAmBoB,EAAO,QAAK,EAEnH5oC,EAASyoC,EAAOA,IAAS,IAAI4E,GAAY5E,KAASnN,KAEtDhI,EAASia,EADTvqC,EAAQs4B,EAAKmN,GACiBA,EAAO7nC,GACjCisC,GACF,GAAIE,EAAQ7G,GAAe3b,EAAQke,EAAOnV,QAAM,GACvCA,SAAgBuZ,GACvB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAO7pC,EACf,KAAK,EAAG,OAAOylC,EACf,KAAK,EAAGvC,GAAe3b,EAAQijB,IAAYxqC,eAC9B6pC,GACb,KAAK,EAAG,OAAO,EACf,KAAK,EAAG3G,GAAe3b,EAAQijB,IAAYxqC,GAIjD,OAAOmqC,GAAgB,EAAKF,GAAWC,EAAWA,EAAW3iB,CACjE,CACA,EAEAkjB,GAAiB,CAGfnoC,QAASwnC,GAAa,GAMtBjmC,OAAQimC,GAAa,ICtDnBxsC,GAAIs7B,GACJP,GAAaoB,GACb53B,GAAOi5B,GACPxB,GAAcuD,GAEdsC,GAAchB,GACdH,GAAgBqB,GAChB5G,GAAQ8G,GACR1B,GAASoD,GACTrF,GAAgBsF,GAChBZ,GAAWwE,GACXxJ,GAAkB2J,GAClBlG,GAAgBgG,GAChB2F,GAAYC,GACZlQ,GAA2BmQ,GAC3BC,GAAqBC,GACrB3E,GAAa4E,GACbC,GAA4BC,GAC5BC,GAA8BC,GAC9BC,GAA8BC,GAC9BC,GAAiCC,GACjCzK,GAAuB0K,GACvB7E,GAAyB8E,GACzBrM,GAA6BsM,GAC7BlD,GAAgBmD,GAChBC,GTvBa,SAAUrkB,EAAQvlB,EAAMu4B,GACvC,OAAOP,GAAep/B,EAAE2sB,EAAQvlB,EAAMu4B,EACxC,ESsBImD,GAASmO,GAET/F,GAAagG,GACb/N,GAAMgO,GACNxN,GAAkByN,GAClBtD,GAA+BuD,GAC/BC,GAAwBC,GACxBC,GAA0BC,GAC1BpD,GAAiBqD,GACjBC,GAAsBC,GACtBC,GAAWC,GAAwCpqC,QAEnDqqC,GAXYC,GAWO,UACnBC,GAAS,SACTjG,GAAY,YAEZkG,GAAmBP,GAAoBp/B,IACvC4/B,GAAmBR,GAAoB3C,UAAUiD,IAEjDG,GAAkBrjC,OAAOi9B,IACzB9J,GAAUzE,GAAWmE,OACrBsM,GAAkBhM,IAAWA,GAAQ8J,IACrCqG,GAAa5U,GAAW4U,WACxB9R,GAAY9C,GAAW8C,UACvB+R,GAAU7U,GAAW6U,QACrBC,GAAiC7B,GAA+B1wC,EAChEwyC,GAAuBtM,GAAqBlmC,EAC5CyyC,GAA4BnC,GAA4BtwC,EACxD0yC,GAA6BlO,GAA2BxkC,EACxDyC,GAAOi8B,GAAY,GAAGj8B,MAEtBkwC,GAAa7P,GAAO,WACpB8P,GAAyB9P,GAAO,cAChCU,GAAwBV,GAAO,OAG/B+P,IAAcP,KAAYA,GAAQtG,MAAesG,GAAQtG,IAAW8G,UAGpEC,GAAyB,SAAU/vC,EAAGW,EAAGsiC,GAC3C,IAAI+M,EAA4BT,GAA+BH,GAAiBzuC,GAC5EqvC,UAAkCZ,GAAgBzuC,GACtD6uC,GAAqBxvC,EAAGW,EAAGsiC,GACvB+M,GAA6BhwC,IAAMovC,IACrCI,GAAqBJ,GAAiBzuC,EAAGqvC,EAE7C,EAEIC,GAAsB1O,IAAe1G,GAAM,WAC7C,OAEU,IAFHoS,GAAmBuC,GAAqB,CAAA,EAAI,IAAK,CACtDt2B,IAAK,WAAc,OAAOs2B,GAAqBvwC,KAAM,IAAK,CAAEmD,MAAO,IAAKjF,CAAE,KACxEA,CACN,GAAK4yC,GAAyBP,GAE1B5K,GAAO,SAAUppB,EAAK00B,GACxB,IAAIvR,EAASgR,GAAWn0B,GAAOyxB,GAAmB/B,IAOlD,OANAgE,GAAiBvQ,EAAQ,CACvB3gC,KAAMixC,GACNzzB,MACA00B,gBAEG3O,KAAa5C,EAAOuR,YAAcA,GAChCvR,CACT,EAEIiE,GAAkB,SAAwB5iC,EAAGW,EAAGsiC,GAC9CjjC,IAAMovC,IAAiBxM,GAAgBgN,GAAwBjvC,EAAGsiC,GACtEP,GAAS1iC,GACT,IAAI9B,EAAMijC,GAAcxgC,GAExB,OADA+hC,GAASO,GACLhD,GAAO0P,GAAYzxC,IAChB+kC,EAAWrG,YAIVqD,GAAOjgC,EAAG+uC,KAAW/uC,EAAE+uC,IAAQ7wC,KAAM8B,EAAE+uC,IAAQ7wC,IAAO,GAC1D+kC,EAAagK,GAAmBhK,EAAY,CAAErG,WAAYC,GAAyB,GAAG,OAJjFoD,GAAOjgC,EAAG+uC,KAASS,GAAqBxvC,EAAG+uC,GAAQlS,GAAyB,EAAGoQ,GAAmB,QACvGjtC,EAAE+uC,IAAQ7wC,IAAO,GAIV+xC,GAAoBjwC,EAAG9B,EAAK+kC,IAC9BuM,GAAqBxvC,EAAG9B,EAAK+kC,EACxC,EAEIkN,GAAoB,SAA0BnwC,EAAG2oC,GACnDjG,GAAS1iC,GACT,IAAIowC,EAAa1S,GAAgBiL,GAC7BH,EAAOD,GAAW6H,GAAY7I,OAAO8I,GAAuBD,IAIhE,OAHAvB,GAASrG,EAAM,SAAUtqC,GAClBqjC,KAAet9B,GAAKq4B,GAAuB8T,EAAYlyC,IAAM0kC,GAAgB5iC,EAAG9B,EAAKkyC,EAAWlyC,GACzG,GACS8B,CACT,EAMIs8B,GAAwB,SAA8Bh5B,GACxD,IAAI3C,EAAIwgC,GAAc79B,GAClBs5B,EAAa34B,GAAKyrC,GAA4BzwC,KAAM0B,GACxD,QAAI1B,OAASmwC,IAAmBnP,GAAO0P,GAAYhvC,KAAOs/B,GAAO2P,GAAwBjvC,QAClFi8B,IAAeqD,GAAOhhC,KAAM0B,KAAOs/B,GAAO0P,GAAYhvC,IAAMs/B,GAAOhhC,KAAM8vC,KAAW9vC,KAAK8vC,IAAQpuC,KACpGi8B,EACN,EAEIgF,GAA4B,SAAkC5hC,EAAGW,GACnE,IAAI45B,EAAKmD,GAAgB19B,GACrB9B,EAAMijC,GAAcxgC,GACxB,GAAI45B,IAAO6U,KAAmBnP,GAAO0P,GAAYzxC,IAAS+hC,GAAO2P,GAAwB1xC,GAAzF,CACA,IAAIy+B,EAAa4S,GAA+BhV,EAAIr8B,GAIpD,OAHIy+B,IAAcsD,GAAO0P,GAAYzxC,IAAU+hC,GAAO1F,EAAIwU,KAAWxU,EAAGwU,IAAQ7wC,KAC9Ey+B,EAAWC,YAAa,GAEnBD,CALwF,CAMjG,EAEI4N,GAAuB,SAA6BvqC,GACtD,IAAIooC,EAAQqH,GAA0B/R,GAAgB19B,IAClD0yB,EAAS,GAIb,OAHAmc,GAASzG,EAAO,SAAUlqC,GACnB+hC,GAAO0P,GAAYzxC,IAAS+hC,GAAOiI,GAAYhqC,IAAMuB,GAAKizB,EAAQx0B,EAC3E,GACSw0B,CACT,EAEI2d,GAAyB,SAAUrwC,GACrC,IAAIswC,EAAsBtwC,IAAMovC,GAC5BhH,EAAQqH,GAA0Ba,EAAsBV,GAAyBlS,GAAgB19B,IACjG0yB,EAAS,GAMb,OALAmc,GAASzG,EAAO,SAAUlqC,IACpB+hC,GAAO0P,GAAYzxC,IAAUoyC,IAAuBrQ,GAAOmP,GAAiBlxC,IAC9EuB,GAAKizB,EAAQid,GAAWzxC,GAE9B,GACSw0B,CACT,EAIK0N,KAuBHwK,GAFAM,IApBAhM,GAAU,WACR,GAAIlB,GAAckN,GAAiBjsC,MAAO,MAAM,IAAIs+B,GAAU,+BAC9D,IAAI2S,EAAejrC,UAAU7F,aAA2B,IAAjB6F,UAAU,GAA+B6nC,GAAU7nC,UAAU,SAAhC,EAChEuW,EAAM2kB,GAAI+P,GACVK,EAAS,SAAUnuC,GACrB,IAAI4lC,OAAiB,IAAT/oC,KAAqBw7B,GAAax7B,KAC1C+oC,IAAUoH,IAAiBnrC,GAAKssC,EAAQX,GAAwBxtC,GAChE69B,GAAO+H,EAAO+G,KAAW9O,GAAO+H,EAAM+G,IAASvzB,KAAMwsB,EAAM+G,IAAQvzB,IAAO,GAC9E,IAAImhB,EAAaE,GAAyB,EAAGz6B,GAC7C,IACE6tC,GAAoBjI,EAAOxsB,EAAKmhB,EACxC,OAAexvB,GACP,KAAMA,aAAiBkiC,IAAa,MAAMliC,EAC1C4iC,GAAuB/H,EAAOxsB,EAAKmhB,EAC3C,CACA,EAEI,OADI4E,IAAesO,IAAYI,GAAoBb,GAAiB5zB,EAAK,CAAEuhB,cAAc,EAAMxtB,IAAKghC,IAC7F3L,GAAKppB,EAAK00B,EACrB,GAE4BlH,IAEK,WAAY,WACzC,OAAOmG,GAAiBlwC,MAAMuc,GAClC,GAEEovB,GAAc1L,GAAS,gBAAiB,SAAUgR,GAChD,OAAOtL,GAAKzE,GAAI+P,GAAcA,EAClC,GAEE1O,GAA2BxkC,EAAIs/B,GAC/B4G,GAAqBlmC,EAAI4lC,GACzBmG,GAAuB/rC,EAAImzC,GAC3BzC,GAA+B1wC,EAAI4kC,GACnCwL,GAA0BpwC,EAAIswC,GAA4BtwC,EAAIutC,GAC9DiD,GAA4BxwC,EAAIqzC,GAEhCvF,GAA6B9tC,EAAI,SAAUoH,GACzC,OAAOwgC,GAAKjE,GAAgBv8B,GAAOA,EACvC,EAEMm9B,IAEFyM,GAAsB9C,GAAiB,cAAe,CACpDnO,cAAc,EACd7jB,IAAK,WACH,OAAOi2B,GAAiBlwC,MAAMixC,WACtC,KAQAxwC,GAAE,CAAEi7B,QAAQ,EAAyBiK,MAAM,EAAMF,QAAStE,GAAevB,MAAOuB,IAAiB,CAC/FxB,OAAQM,KAGV2P,GAAStG,GAAW/H,IAAwB,SAAUp8B,GACpDkqC,GAAsBlqC,EACxB,GAEA1E,GAAE,CAAEiqB,OAAQslB,GAAQ5K,MAAM,EAAMK,QAAStE,IAAiB,CACxDoQ,UAAW,WAAcX,IAAa,CAAK,EAC3CY,UAAW,WAAcZ,IAAa,CAAM,IAG9CnwC,GAAE,CAAEiqB,OAAQ,SAAU0a,MAAM,EAAMK,QAAStE,GAAevB,MAAO0C,IAAe,CAG9E4I,OAtHY,SAAgBnqC,EAAG2oC,GAC/B,gBAAOA,EAA2BsE,GAAmBjtC,GAAKmwC,GAAkBlD,GAAmBjtC,GAAI2oC,EACrG,EAuHEvM,eAAgBwG,GAGhB8F,iBAAkByH,GAGlB3T,yBAA0BoF,KAG5BliC,GAAE,CAAEiqB,OAAQ,SAAU0a,MAAM,EAAMK,QAAStE,IAAiB,CAG1DiK,oBAAqBE,KAKvBiE,KAIAnD,GAAenM,GAAS+P,IAExB/G,GAAW6G,KAAU,ECrQrB,IAGA2B,GAHoB1V,MAGgB4D,OAAY,OAAOA,OAAO+R,OCH1DjxC,GAAIs7B,GACJ6C,GAAahC,GACboE,GAAS/C,GACTjwB,GAAWgyB,GACXa,GAASO,GACTuQ,GAAyBrQ,GAEzBsQ,GAAyB/Q,GAAO,6BAChCgR,GAAyBhR,GAAO,6BAIpCpgC,GAAE,CAAEiqB,OAAQ,SAAU0a,MAAM,EAAMK,QAASkM,IAA0B,CACnEG,IAAO,SAAU7yC,GACf,IAAImkC,EAASp1B,GAAS/O,GACtB,GAAI+hC,GAAO4Q,GAAwBxO,GAAS,OAAOwO,GAAuBxO,GAC1E,IAAI1D,EAASd,GAAW,SAAXA,CAAqBwE,GAGlC,OAFAwO,GAAuBxO,GAAU1D,EACjCmS,GAAuBnS,GAAU0D,EAC1B1D,CACX,ICpBA,IAAIj/B,GAAIs7B,GACJiF,GAASpE,GACTmD,GAAW9B,GACXiC,GAAcF,GAEd2R,GAAyBrQ,GAEzBuQ,GAHSzQ,GAGuB,6BAIpC3gC,GAAE,CAAEiqB,OAAQ,SAAU0a,MAAM,EAAMK,QAASkM,IAA0B,CACnED,OAAQ,SAAgBK,GACtB,IAAKhS,GAASgS,GAAM,MAAM,IAAIzT,UAAU4B,GAAY6R,GAAO,oBAC3D,GAAI/Q,GAAO6Q,GAAwBE,GAAM,OAAOF,GAAuBE,EAC3E,ICfA,IAAI1tB,GAAW0X,GACXmU,GAAmBtT,GAAuC3iB,ICD1DwiB,GAAcV,GACdiF,GAASpE,GAEToV,GAAeC,YACfC,GAAYhqC,SACZiqC,GAAe5wC,OAAO4wC,aACtBC,GAAK3V,GAAY,GAAG4V,QACpB7vC,GAAQi6B,GAAY,GAAGj6B,OACvBq5B,GAAOY,GAAY,IAAIZ,MAEvByW,GAAa,CACf,MAAO,IACP,OAAQ,KACR,MAAO,IACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,MAGLC,GAAkB,gBAElBC,GAAqB,oBCpBzBC,IAFY1W,GAEY,WACtB,IAAI2W,EAAY,mBAEZ9vB,EAAMlU,KAAKikC,QAAQD,GAEvB,OAAQhkC,KAAKkkC,UAAUhwB,IAAQlU,KAAKC,UAAUiU,KAAS8vB,CACzD,GCTIjyC,GAAIs7B,GACJ6C,GAAahC,GACbT,GAAQ8B,GACRj5B,GAAOg7B,GACPvD,GAAc2E,GACdxF,GAAQ0F,GACR9iC,GAAUgkC,GACVxF,GAAa0F,GACbkQ,GHLa,SAAmB7xC,GAClC,IAAKsjB,GAAStjB,GAAI,OAAO,EACzB,IAAIwC,EAAQ2sC,GAAiBnvC,GAC7B,QAASwC,GAAwB,YAAfA,EAAMxE,IAC1B,EGEIghC,GAAWsE,GACXrG,GAAUiK,GACVj6B,GAAWo6B,GACXiD,GAAanD,GACb2K,GFYa,SAAUpa,EAAQ96B,GAGjC,IAFA,IAAIm1C,GAAe,EACf3vC,EAAQ,GACLxF,EAAI86B,EAAOt4B,QAAQ,CACxB,IAAI4yC,EAAMX,GAAG3Z,EAAQ96B,GACrB,GAAY,OAARo1C,EAAc,CAChB,IAAIC,EAAWxwC,GAAMi2B,EAAQ96B,EAAGA,EAAI,GACpC,GAAIqjC,GAAOsR,GAAYU,GACrB7vC,GAASmvC,GAAWU,GACpBr1C,GAAK,MACb,IAA8B,QAAbq1C,EAMJ,MAAM,IAAIhB,GAAa,6BAA+BgB,EAAW,KAJtE,IAAIC,EAAgBzwC,GAAMi2B,EAD1B96B,GAAK,EACgCA,EAAI,GACzC,IAAKk+B,GAAK0W,GAAiBU,GAAgB,MAAM,IAAIjB,GAAa,0BAA4Br0C,GAC9FwF,GAASgvC,GAAaD,GAAUe,EAAe,KAC/Ct1C,GAAK,CACoE,CACjF,KAAA,IAAuB,MAARo1C,EAAa,CACtBD,GAAe,EACfn1C,IACA,KACN,CACM,GAAIk+B,GAAK2W,GAAoBO,SAAY,IAAIf,GAAa,+CAAiDr0C,GAC3GwF,GAAS4vC,EACTp1C,GACN,CACA,CACE,GAAIm1C,EAAc,MAAM,IAAId,GAAa,2BAA6Br0C,GACtE,MAAO,CAAEwF,QAAc+vC,IAAKv1C,EAC9B,EExCIujC,GAAM6M,GACN5M,GAAgB8M,GAChBkF,GAAkBjF,GAElB3O,GAAUh+B,OACV6xC,GAAaxU,GAAW,OAAQ,aAChC/C,GAAOY,GAAY,IAAIZ,MACvBwW,GAAS5V,GAAY,GAAG4V,QACxB9iC,GAAaktB,GAAY,GAAGltB,YAC5BjN,GAAUm6B,GAAY,GAAGn6B,SACzBE,GAAQi6B,GAAY,GAAGj6B,OACvBhC,GAAOi8B,GAAY,GAAGj8B,MACtB6yC,GAAiB5W,GAAY,IAAIzuB,UAEjCslC,GAAa,mBACbC,GAAgB,oBAChBC,GAAe,oBAEfC,GAAOvS,KACPwS,GAAcD,GAAKtzC,OAEnBwzC,IAA4BxS,IAAiBvF,GAAM,WACrD,IAAI8D,EAASd,GAAW,SAAXA,CAAqB,uBAElC,MAAgC,WAAzBwU,GAAW,CAAC1T,KAEgB,OAA9B0T,GAAW,CAAEl1C,EAAGwhC,KAEe,OAA/B0T,GAAWtmC,OAAO4yB,GACzB,GAGIkU,GAAqBhY,GAAM,WAC7B,MAAsC,qBAA/BwX,GAAW,iBACY,cAAzBA,GAAW,SAClB,GAEIS,GAAuCF,GAA2B,SAAUrY,EAAIwY,GAClF,IAAIlgB,EAAOyX,GAAWrlC,WAClB+tC,EAAYC,GAAoBF,GACpC,GAAK9W,GAAW+W,SAAsB,IAAPzY,IAAoByE,GAASzE,GAM5D,OALA1H,EAAK,GAAK,SAAU30B,EAAKkE,GAGvB,GADI65B,GAAW+W,KAAY5wC,EAAQ6B,GAAK+uC,EAAW/zC,KAAMu/B,GAAQtgC,GAAMkE,KAClE48B,GAAS58B,GAAQ,OAAOA,CACjC,EACSg5B,GAAMiX,GAAY,KAAMxf,EACjC,EAAIwf,GAEAa,GAAmB,SAAU3qC,EAAO4qC,EAAQ9Q,GAC9C,IAAIvM,EAAOwb,GAAOjP,EAAQ8Q,EAAS,GAC/BC,EAAO9B,GAAOjP,EAAQ8Q,EAAS,GACnC,OAAKrY,GAAK0X,GAAejqC,KAAWuyB,GAAK2X,GAAcW,IAAWtY,GAAK2X,GAAclqC,KAAWuyB,GAAK0X,GAAe1c,GAC3G,MAAQwc,GAAe9jC,GAAWjG,EAAO,GAAI,IAC7CA,CACX,EAEI0qC,GAAsB,SAAUF,GAClC,GAAI9W,GAAW8W,GAAW,OAAOA,EACjC,GAAKt1C,GAAQs1C,GAAb,CAGA,IAFA,IAAIM,EAAYN,EAAS3zC,OACrBopC,EAAO,GACF5rC,EAAI,EAAGA,EAAIy2C,EAAWz2C,IAAK,CAClC,IAAImd,EAAUg5B,EAASn2C,GACD,iBAAXmd,EAAqBta,GAAK+oC,EAAMzuB,GAChB,iBAAXA,GAA4C,WAArBkjB,GAAQljB,IAA8C,WAArBkjB,GAAQljB,IAAuBta,GAAK+oC,EAAMv7B,GAAS8M,GAC/H,CACE,IAAIu5B,EAAa9K,EAAKppC,OAClBqf,GAAO,EACX,OAAO,SAAUvgB,EAAKkE,GACpB,GAAIqc,EAEF,OADAA,GAAO,EACArc,EAET,GAAI3E,GAAQwB,MAAO,OAAOmD,EAC1B,IAAA,IAAShB,EAAI,EAAGA,EAAIkyC,EAAYlyC,OAASonC,EAAKpnC,KAAOlD,EAAK,OAAOkE,CACrE,CAjB0B,CAkB1B,EAKIiwC,IAAY3yC,GAAE,CAAEiqB,OAAQ,OAAQ0a,MAAM,EAAgBK,OAAQkO,IAA4BC,KAAuBT,IAAmB,CACtIxkC,UAAW,SAAmBnH,EAAMssC,EAAUQ,GAC5C,IAAIC,EAAmBP,GAAoBF,GACvCU,EAAa,GAEbhmC,EAAOqlC,GAAqCrsC,EAAM,SAAUvI,EAAKkE,GAEnE,IAAI/E,EAAI4+B,GAAWuX,GAAoBvvC,GAAKuvC,EAAkBv0C,KAAMu/B,GAAQtgC,GAAMkE,GAASA,EAC3F,OAAQgwC,IAAmBP,GAAUx0C,GAAKq1C,IAAQjzC,GAAKg0C,EAAYp2C,EAAEu0C,SAAW,GAAKv0C,CAC3F,EAAOk2C,GAEH,GAAmB,iBAAR9lC,EAAkB,OAAOA,EAIpC,GAFIolC,KAAoBplC,EAAOlM,GAAQkM,EAAM8kC,GAAYW,KAErDd,GAAiB,OAAO3kC,EAK5B,IAHA,IAAIilB,EAAS,GACTtzB,EAASqO,EAAKrO,OAETxC,EAAI,EAAGA,EAAIwC,EAAQxC,IAAK,CAC/B,IAAIo1C,EAAMV,GAAO7jC,EAAM7Q,GACvB,GAAY,MAARo1C,EAAa,CACf,IAAIG,EAAML,GAAgBrkC,IAAQ7Q,GAAGu1C,IAAM,EACvC9P,EAAS5gC,GAAMgM,EAAM7Q,EAAGu1C,GAC5Bzf,GAAUjxB,GAAM4gC,EAAQ,EAAGsQ,MAAiBD,GACxCe,EAAWhyC,GAAM4gC,EAAQsQ,KACzB,IAAMtQ,EAAS,IACnBzlC,EAAIu1C,CACZ,MAAazf,GAAUsf,CACvB,CAEI,OAAOtf,CACX,ICjIA,IAGI8a,GAA8BvO,GAC9Bc,GAAWM,GAJPrF,GAYN,CAAErR,OAAQ,SAAU0a,MAAM,EAAMK,QAXd7I,IACRqB,GAMyB,WAAcsQ,GAA4BxwC,EAAE,EAAG,IAIhC,CAClD0hC,sBAAuB,SAA+BnE,GACpD,IAAI8V,EAAyB7C,GAA4BxwC,EACzD,OAAOqzC,EAAyBA,EAAuBtQ,GAASxF,IAAO,EAC3E,IChB4BS,GAIN,gBCJMA,GAIN,iBCJMA,GAIN,WCJMA,GAIN,eCJMA,GAIN,sBCJMA,GAIN,YCJMA,GAIN,SCJMA,GAIN,YCJMA,GAIN,WCJMA,GAIN,UCJMA,GAIN,WCJMA,GAIN,SCJtB,IACIwT,GAA0B3S,GADFb,GAKN,eAItBwT,KCTA,IAAI3Q,GAAa7C,GAEbqQ,GAAiBnO,GADOrB,GAKN,eAItBwP,GAAexN,GAAW,UAAW,UCVT7C,GAIN,eCHDa,GADJb,GAKSrtB,KAAM,QAAQ,GCiBxC,ICRI+lC,GAAmBC,GAAmCC,GDU1DjV,GAFWkP,GAEWjP,OExBtBiV,GAAiB,CAAA,ECAbtS,GAAcvG,GACdiF,GAASpE,GAETV,GAAoBP,SAAS34B,UAE7B6xC,GAAgBvS,IAAex1B,OAAOywB,yBAEtC4E,GAASnB,GAAO9E,GAAmB,QAKvC4Y,GAAiB,CAEfC,OALW5S,IAA0D,cAA1D,WAAgC,EAAiBh9B,KAM5D0+B,aALiB1B,MAAYG,IAAgBA,IAAeuS,GAAc3Y,GAAmB,QAAQ4B,eCRvGkX,IAFYjZ,GAEY,WACtB,SAASl5B,IAAI,CAGb,OAFAA,EAAEG,UAAUxD,YAAc,KAEnBsN,OAAOmoC,eAAe,IAAIpyC,KAASA,EAAEG,SAC9C,GCPIg+B,GAASjF,GACTiB,GAAaJ,GACbkE,GAAW7C,GAEXiX,GAA2B9T,GAE3B6I,GAHYjK,GAGS,YACrB9B,GAAUpxB,OACVqjC,GAAkBjS,GAAQl7B,UAK9BmyC,GAAiBD,GAA2BhX,GAAQ+W,eAAiB,SAAUl0C,GAC7E,IAAIojC,EAASrD,GAAS//B,GACtB,GAAIigC,GAAOmD,EAAQ8F,IAAW,OAAO9F,EAAO8F,IAC5C,IAAIzqC,EAAc2kC,EAAO3kC,YACzB,OAAIw9B,GAAWx9B,IAAgB2kC,aAAkB3kC,EACxCA,EAAYwD,UACZmhC,aAAkBjG,GAAUiS,GAAkB,IACzD,EJpBIvU,GAAQG,GACRiB,GAAaJ,GACbvY,GAAW4Z,GACXiN,GAASlL,GACTiV,GAAiB7T,GACjBuK,GAAgBrK,GAIhB8T,GAHkB5S,GAGS,YAC3B6S,IAAyB,EAOzB,GAAG9L,OAGC,SAFNoL,GAAgB,GAAGpL,SAIjBmL,GAAoCO,GAAeA,GAAeN,QACxB7nC,OAAO9J,YAAWyxC,GAAoBC,IAHlDW,IAAyB,GAO3D,IAAIC,IAA0BjxB,GAASowB,KAAsB7Y,GAAM,WACjE,IAAI15B,EAAO,CAAA,EAEX,OAAOuyC,GAAkBW,IAAUpwC,KAAK9C,KAAUA,CACpD,GAOK86B,OALDsY,GAA4C,CAAA,EACVpK,GAAOuJ,KAIXW,MAChCzJ,GAAc8I,GAAmBW,GAAU,WACzC,OAAOp1C,IACX,GAGA,IAAAu1C,GAAiB,CACfd,kBAAmBA,GACnBY,uBAAwBA,IK9CtBZ,GAAoB1Y,GAAuC0Y,kBAC3DvJ,GAAStO,GACTgB,GAA2BK,GAC3BmO,GAAiBpM,GACjBwV,GAAYpU,GAEZqU,GAAa,WAAc,OAAOz1C,MCNlCS,GAAIs7B,GACJ/2B,GAAO43B,GAEP8Y,GAAe1V,GAEf2V,GDGa,SAAUC,EAAqB7J,EAAMoI,EAAM0B,GAC1D,IAAIpP,EAAgBsF,EAAO,YAI3B,OAHA6J,EAAoB5yC,UAAYkoC,GAAOuJ,GAAmB,CAAEN,KAAMvW,KAA2BiY,EAAiB1B,KAC9G/H,GAAewJ,EAAqBnP,GAAe,GAAO,GAC1D+O,GAAU/O,GAAiBgP,GACpBG,CACT,ECRIX,GAAiBzS,GAEjB4J,GAAiBhI,GAEjBuH,GAAgB1D,GAEhBuN,GAAYtN,GACZ4N,GAAgBhI,GAEhBiI,GAAuBL,GAAaX,OAGpCM,GAAyBS,GAAcT,uBACvCD,GARkBhN,GAQS,YAC3B4N,GAAO,OACPC,GAAS,SACTC,GAAU,UAEVT,GAAa,WAAc,OAAOz1C,MAEtCm2C,GAAiB,SAAUC,EAAUrK,EAAM6J,EAAqBzB,EAAMkC,EAASC,EAAQ5R,GACrFiR,GAA0BC,EAAqB7J,EAAMoI,GAErD,IAqBIoC,EAA0BC,EAASC,EArBnCC,EAAqB,SAAUC,GACjC,GAAIA,IAASN,GAAWO,EAAiB,OAAOA,EAChD,IAAKvB,IAA0BsB,GAAQA,KAAQE,EAAmB,OAAOA,EAAkBF,GAE3F,OAAQA,GACN,KAAKX,GACL,KAAKC,GACL,KAAKC,GAAS,OAAO,WAAqB,OAAO,IAAIN,EAAoB51C,KAAM22C,IAGjF,OAAO,WAAc,OAAO,IAAIf,EAAoB51C,KAAM,CAC9D,EAEMymC,EAAgBsF,EAAO,YACvB+K,GAAwB,EACxBD,EAAoBT,EAASpzC,UAC7B+zC,EAAiBF,EAAkBzB,KAClCyB,EAAkB,eAClBR,GAAWQ,EAAkBR,GAC9BO,GAAmBvB,IAA0B0B,GAAkBL,EAAmBL,GAClFW,EAA6B,UAATjL,GAAmB8K,EAAkBz8B,SAA4B28B,EA+BzF,GA3BIC,IACFT,EAA2BtB,GAAe+B,EAAkBhyC,KAAK,IAAIoxC,OACpCtpC,OAAO9J,WAAauzC,EAAyBpC,OAS5E/H,GAAemK,EAA0B9P,GAAe,GAAM,GACjD+O,GAAU/O,GAAiBgP,IAKxCM,IAAwBM,IAAYJ,IAAUc,GAAkBA,EAAe5xC,OAAS8wC,KAIxFa,GAAwB,EACxBF,EAAkB,WAAoB,OAAO5xC,GAAK+xC,EAAgB/2C,QAKlEq2C,EAMF,GALAG,EAAU,CACRn7B,OAAQq7B,EAAmBT,IAC3B1M,KAAM+M,EAASM,EAAkBF,EAAmBV,IACpD57B,QAASs8B,EAAmBR,KAE1BxR,EAAQ,IAAK+R,KAAOD,GAClBnB,IAA0ByB,KAA2BL,KAAOI,KAC9DlL,GAAckL,EAAmBJ,EAAKD,EAAQC,SAE3Ch2C,GAAE,CAAEiqB,OAAQqhB,EAAMzG,OAAO,EAAMG,OAAQ4P,IAA0ByB,GAAyBN,GASnG,OALiB9R,GAAWmS,EAAkBzB,MAAcwB,GAC1DjL,GAAckL,EAAmBzB,GAAUwB,EAAiB,CAAe,GAE7EpB,GAAUzJ,GAAQ6K,EAEXJ,CACT,EClGAS,GAAiB,SAAU9zC,EAAOqS,GAChC,MAAO,CAAErS,QAAcqS,OACzB,ECJIipB,GAAkB1C,GAElByZ,GAAYvX,GACZyR,GAAsB1P,GACLoB,GAA+CrjC,EACpE,IAAIm5C,GAAiB5V,GACjB2V,GAAyBzU,GAIzB2U,GAAiB,iBACjBlH,GAAmBP,GAAoBp/B,IACvC4/B,GAAmBR,GAAoB3C,UAAUoK,IAYpCD,GAAe34C,MAAO,QAAS,SAAU64C,EAAUC,GAClEpH,GAAiBjwC,KAAM,CACrBjB,KAAMo4C,GACNzsB,OAAQ+T,GAAgB2Y,GACxBxO,MAAO,EACPyO,QAIJ,EAAG,WACD,IAAI9zC,EAAQ2sC,GAAiBlwC,MACzB0qB,EAASnnB,EAAMmnB,OACfke,EAAQrlC,EAAMqlC,QAClB,IAAKle,GAAUke,GAASle,EAAOvqB,OAE7B,OADAoD,EAAMmnB,OAAS,KACRusB,WAAkC,GAE3C,OAAQ1zC,EAAM8zC,MACZ,IAAK,OAAQ,OAAOJ,GAAuBrO,GAAO,GAClD,IAAK,SAAU,OAAOqO,GAAuBvsB,EAAOke,IAAQ,GAC5D,OAAOqO,GAAuB,CAACrO,EAAOle,EAAOke,KAAS,EAC1D,EAAG,UAKU4M,GAAU8B,UAAY9B,GAAUj3C,MChD7C,ICDIg5C,GDCa,CACfC,YAAa,EACbC,oBAAqB,EACrBC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,SAAU,EACVC,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,GC/BT9d,GAAayC,GACbmO,GAAiBpM,GACjBwV,GAAYpU,GAEhB,IAAA,IAASmY,MAAmBhC,GAC1BnL,GAAe5Q,GAAW+d,IAAkBA,IAC5C/D,GAAU+D,IAAmB/D,GAAUj3C,MCRzC,IAGAmhC,GAHa3D,GCAT2F,GAAkB3F,GAClBoB,GAAiBP,GAA+C7+B,EAEhEy7C,GAAW9X,GAAgB,YAC3BxF,GAAoBP,SAAS34B,eAIG,IAAhCk5B,GAAkBsd,KACpBrc,GAAejB,GAAmBsd,GAAU,CAC1Cr2C,MAAO,OCViB44B,GAIN,YCJtB,IAOA2D,GAPa3D,GCCTU,GAAcG,GAEd+C,GAHa5D,GAGO,UACpB2V,GAAS/R,GAAO+R,OAChB+H,GAAkBhd,GAAYkD,GAAO38B,UAAU8+B,SAInD4X,GAAiB/Z,GAAOga,oBAAsB,SAA4Bx2C,GACxE,IACE,YAA0C,IAAnCuuC,GAAO+H,GAAgBt2C,GAClC,OAAW+K,GACP,OAAO,CACX,CACA,ECfQ6tB,GAKN,CAAErR,OAAQ,SAAU0a,MAAM,GAAQ,CAClCuU,mBALuB/c,KCWzB,IAZA,IAAIiE,GAAS9E,GACT6C,GAAahC,GACbH,GAAcwB,GACd8B,GAAWC,GACX0B,GAAkBN,GAElBzB,GAASf,GAAW,UACpBgb,GAAqBja,GAAOka,kBAC5BzO,GAAsBxM,GAAW,SAAU,uBAC3C6a,GAAkBhd,GAAYkD,GAAO38B,UAAU8+B,SAC/CP,GAAwBV,GAAO,OAE1BljC,GAAI,EAAGm8C,GAAa1O,GAAoBzL,IAASoa,GAAmBD,GAAW35C,OAAQxC,GAAIo8C,GAAkBp8C,KAEpH,IACE,IAAIq8C,GAAYF,GAAWn8C,IACvBoiC,GAASJ,GAAOqa,SAA6BA,GACrD,OAAW9rC,IAAO,CAMlB,IAAA+rC,GAAiB,SAA2B92C,GAC1C,GAAIy2C,IAAsBA,GAAmBz2C,GAAQ,OAAO,EAC5D,IAEE,IADA,IAAIu8B,EAAS+Z,GAAgBt2C,GACpBhB,EAAI,EAAGonC,EAAO6B,GAAoB7J,IAAwB8S,EAAa9K,EAAKppC,OAAQgC,EAAIkyC,EAAYlyC,IAE3G,GAAIo/B,GAAsBgI,EAAKpnC,KAAOu9B,EAAQ,OAAO,CAE3D,OAAWxxB,IAAO,CAChB,OAAO,CACT,ECjCQ6tB,GAMN,CAAErR,OAAQ,SAAU0a,MAAM,EAAMK,QAAQ,GAAQ,CAChDoU,kBANsBjd,KCDIb,GAIN,iBCJMA,GAIN,cCJdA,GAKN,CAAErR,OAAQ,SAAU0a,MAAM,GAAoC,CAC9D8U,aALuBtd,KCDjBb,GAMN,CAAErR,OAAQ,SAAU0a,MAAM,EAAiCK,QAAQ,GAAQ,CAC3E0U,YANsBvd,KCDIb,GAIN,WCHMA,GAIN,eCJMA,GAIN,gBCJMA,GAEN,0BCHTA,ICAb,IAS6Bqe,GATzB3d,GAAcV,GACdgK,GAAsBnJ,GACtB5uB,GAAWiwB,GACXM,GAAyByB,GAEzBqS,GAAS5V,GAAY,GAAG4V,QACxB9iC,GAAaktB,GAAY,GAAGltB,YAC5BmtB,GAAcD,GAAY,GAAGj6B,OCP7B6vC,GD4Ba,CAMfA,QAzB2B+H,IAyBN,EAxBd,SAAUrR,EAAOsR,GACtB,IAGIC,EAAOC,EAHPr6C,EAAI8N,GAASuwB,GAAuBwK,IACpCn+B,EAAWm7B,GAAoBsU,GAC/BtnC,EAAO7S,EAAEC,OAEb,OAAIyK,EAAW,GAAKA,GAAYmI,EAAaqnC,GAAoB,QAAK,GACtEE,EAAQ/qC,GAAWrP,EAAG0K,IACP,OAAU0vC,EAAQ,OAAU1vC,EAAW,IAAMmI,IACtDwnC,EAAShrC,GAAWrP,EAAG0K,EAAW,IAAM,OAAU2vC,EAAS,MAC3DH,GACE/H,GAAOnyC,EAAG0K,GACV0vC,EACFF,GACE1d,GAAYx8B,EAAG0K,EAAUA,EAAW,GACV2vC,EAAS,OAAlCD,EAAQ,OAAU,IAA0B,KACzD,ICzBsDjI,OAClDrkC,GAAW4uB,GACX8S,GAAsBzR,GACtBiZ,GAAiBlX,GACjBiX,GAAyB7V,GAEzBoZ,GAAkB,kBAClBvK,GAAmBP,GAAoBp/B,IACvC4/B,GAAmBR,GAAoB3C,UAAUyN,IAIrDtD,GAAe31C,OAAQ,SAAU,SAAU61C,GACzCnH,GAAiBjwC,KAAM,CACrBjB,KAAMy7C,GACNpX,OAAQp1B,GAASopC,GACjBxO,MAAO,GAIX,EAAG,WACD,IAGI6R,EAHAl3C,EAAQ2sC,GAAiBlwC,MACzBojC,EAAS7/B,EAAM6/B,OACfwF,EAAQrlC,EAAMqlC,MAElB,OAAIA,GAASxF,EAAOjjC,OAAe82C,WAAkC,IACrEwD,EAAQpI,GAAOjP,EAAQwF,GACvBrlC,EAAMqlC,OAAS6R,EAAMt6C,OACd82C,GAAuBwD,GAAO,GACvC,GC7BA,IAAIzc,GAAUjC,GACVqE,GAAYxD,GACZwB,GAAoBH,GACpBuX,GAAYxV,GAGZoV,GAFkBhU,GAES,YAE/BsZ,GAAiB,SAAUpf,GACzB,IAAK8C,GAAkB9C,GAAK,OAAO8E,GAAU9E,EAAI8Z,KAC5ChV,GAAU9E,EAAI,eACdka,GAAUxX,GAAQ1C,GACzB,cCVwB2C,ICFxB,IACI6C,GAAWlE,GACXuJ,GAAoBlI,GACpB+J,GAAiBhI,GACjBoG,GAA2BhF,GAJvBrF,GA0BN,CAAErR,OAAQ,QAAS4a,OAAO,EAAgBG,OArBhCnE,GAEoB,WAC9B,OAAoD,aAA7C,GAAG9gC,KAAKwE,KAAK,CAAE7E,OAAQ,YAAe,EAC/C,KAIqC,WACnC,IAEE2M,OAAOqwB,eAAe,GAAI,SAAU,CAAEY,UAAU,IAASv9B,MAC7D,OAAW0N,IACP,OAAOA,cAAiBowB,SAC5B,CACA,CAEqCqc,IAIyB,CAE5Dn6C,KAAM,SAAc+c,GAClB,IAAIxc,EAAI+/B,GAAS9gC,MACbkmC,EAAMC,GAAkBplC,GACxB65C,EAAW50C,UAAU7F,OACzBimC,GAAyBF,EAAM0U,GAC/B,IAAA,IAASj9C,EAAI,EAAGA,EAAIi9C,EAAUj9C,IAC5BoD,EAAEmlC,GAAOlgC,UAAUrI,GACnBuoC,IAGF,OADA8B,GAAejnC,EAAGmlC,GACXA,CACX,ICvCA,IAAI1K,GAAaO,GACbvuB,GAAOovB,GAEXie,GAAiB,SAAUC,EAAaC,GACtC,IAAIC,EAAYxtC,GAAKstC,EAAc,aAC/BG,EAAaD,GAAaA,EAAUD,GACxC,GAAIE,EAAY,OAAOA,EACvB,IAAI1W,EAAoB/I,GAAWsf,GAC/BI,EAAkB3W,GAAqBA,EAAkBvhC,UAC7D,OAAOk4C,GAAmBA,EAAgBH,EAC5C,ECPAv6C,GAFgCo8B,GAEW,QAAS,QCHhDmC,GAAgBhD,GAChBvnB,GAASooB,GAETue,GAAiB58C,MAAMyE,sBAEV,SAAUs4B,GACzB,IAAI8f,EAAM9f,EAAG96B,KACb,OAAO86B,IAAO6f,IAAmBpc,GAAcoc,GAAgB7f,IAAO8f,IAAQD,GAAe36C,KAAQgU,GAAS4mC,CAChH,GCRA,IAAI36C,GAAIs7B,GACJv9B,GAAUo+B,GACVyK,GAAgBpJ,GAChB5Z,GAAW2b,GACX2I,GAAkBvH,GAClB+E,GAAoB7E,GACpB7C,GAAkB+D,GAClB6D,GAAiB3D,GACjBsF,GAAiB5D,GACjB1C,GAAkB2C,GAElBgX,GAAcjT,GAEdkT,GAH+BrT,GAGoB,SAEnDV,GAAU7F,GAAgB,WAC1B8F,GAASjpC,MACTgb,GAAM5C,KAAK4C,IAKf9Y,GAAE,CAAEiqB,OAAQ,QAAS4a,OAAO,EAAMG,QAAS6V,IAAuB,CAChE94C,MAAO,SAAeqiB,EAAOquB,GAC3B,IAKIqI,EAAa9nB,EAAQj2B,EALrBuD,EAAI09B,GAAgBz+B,MACpBG,EAASgmC,GAAkBplC,GAC3BlB,EAAI8oC,GAAgB9jB,EAAO1kB,GAC3Bq7C,EAAM7S,QAAwB,IAARuK,EAAoB/yC,EAAS+yC,EAAK/yC,GAG5D,GAAI3B,GAAQuC,KACVw6C,EAAcx6C,EAAEvB,aAEZ6nC,GAAckU,KAAiBA,IAAgB/T,IAAUhpC,GAAQ+8C,EAAYv4C,aAEtEqhB,GAASk3B,IAEE,QADpBA,EAAcA,EAAYhU,QAF1BgU,OAAc,GAKZA,IAAgB/T,SAA0B,IAAhB+T,GAC5B,OAAOF,GAAYt6C,EAAGlB,EAAG27C,GAI7B,IADA/nB,EAAS,SAAqB,IAAhB8nB,EAA4B/T,GAAS+T,GAAahiC,GAAIiiC,EAAM37C,EAAG,IACxErC,EAAI,EAAGqC,EAAI27C,EAAK37C,IAAKrC,IAASqC,KAAKkB,GAAGslC,GAAe5S,EAAQj2B,EAAGuD,EAAElB,IAEvE,OADAmoC,GAAevU,EAAQj2B,GAChBi2B,CACX,IC9CA,IAEAjxB,GAFgCo6B,GAEW,QAAS,SCHhDmC,GAAgBhD,GAChBvnB,GAASooB,GAETue,GAAiB58C,MAAMyE,UCD3BR,GDGiB,SAAU84B,GACzB,IAAI8f,EAAM9f,EAAG94B,MACb,OAAO84B,IAAO6f,IAAmBpc,GAAcoc,GAAgB7f,IAAO8f,IAAQD,GAAe34C,MAASgS,GAAS4mC,CACjH,cERarf,ICAb,IAAI/2B,GAAO+2B,GACP0H,GAAW7G,GACXwD,GAAYnC,GCFZwF,GAAW1H,GACX0f,GDGa,SAAU3b,EAAUuX,EAAMl0C,GACzC,IAAIu4C,EAAaC,EACjBlY,GAAS3D,GACT,IAEE,KADA4b,EAActb,GAAUN,EAAU,WAChB,CAChB,GAAa,UAATuX,EAAkB,MAAMl0C,EAC5B,OAAOA,CACb,CACIu4C,EAAc12C,GAAK02C,EAAa5b,EACpC,OAAW5xB,IACPytC,GAAa,EACbD,EAAcxtC,EAClB,CACE,GAAa,UAATmpC,EAAkB,MAAMl0C,EAC5B,GAAIw4C,EAAY,MAAMD,EAEtB,OADAjY,GAASiY,GACFv4C,CACT,EErBIqyC,GAAY5Y,GAEZwY,GAHkBrZ,GAGS,YAC3Bof,GAAiB58C,MAAMyE,UCJvBgC,GAAO+2B,GACPoE,GAAYvD,GACZ6G,GAAWxF,GACXiC,GAAcF,GACd0a,GAAoBtZ,GAEpB/C,GAAaC,UCNb93B,GAAOu1B,GACP/2B,GAAO43B,GACPkE,GAAW7C,GACX2d,GHCa,SAAU9b,EAAUtD,EAAIr5B,EAAO+yC,GAC9C,IACE,OAAOA,EAAU1Z,EAAGiH,GAAStgC,GAAO,GAAIA,EAAM,IAAMq5B,EAAGr5B,EAC3D,OAAW+K,IACPutC,GAAc3b,EAAU,QAAS5xB,GACrC,CACA,EGNI2tC,GFGa,SAAUvgB,GACzB,YAAc,IAAPA,IAAqBka,GAAUj3C,QAAU+8B,GAAM6f,GAAe/F,MAAc9Z,EACrF,EEJI+L,GAAgB/F,GAChB6E,GAAoB3D,GACpB6D,GAAiB3D,GACjBsF,GAAiB5D,GACjB0X,GDDa,SAAU7e,EAAU8e,GACnC,IAAIC,EAAiBh2C,UAAU7F,OAAS,EAAIu6C,GAAkBzd,GAAY8e,EAC1E,GAAI5b,GAAU6b,GAAiB,OAAOvY,GAASz+B,GAAKg3C,EAAgB/e,IACpE,MAAM,IAAIoB,GAAW6B,GAAYjD,GAAY,mBAC/C,ECFIyd,GAAoBzS,GAEpBT,GAASjpC,MCVT62C,GAFkBrZ,GAES,YAC3BkgB,IAAe,EAEnB,IACE,IAAI3U,GAAS,EACT4U,GAAqB,CACvB/H,KAAM,WACJ,MAAO,CAAE3+B,OAAQ8xB,KACvB,EACI6U,OAAU,WACRF,IAAe,CACrB,GAGEC,GAAmB9G,IAAY,WAC7B,OAAOp1C,IACX,EAEEzB,MAAMmS,KAAKwrC,GAAoB,WAAc,MAAM,CAAE,EACvD,CAAA,MAAShuC,IAAO,CAEhB,ICtBIwC,GFea,SAAc0rC,GAC7B,IAAIr7C,EAAI+/B,GAASsb,GACbC,EAAiBhV,GAAcrnC,MAC/Bs8C,EAAkBt2C,UAAU7F,OAC5Bo8C,EAAQD,EAAkB,EAAIt2C,UAAU,QAAK,EAC7Cw2C,OAAoB,IAAVD,EACVC,MAAiBh2C,GAAK+1C,EAAOD,EAAkB,EAAIt2C,UAAU,QAAK,IACtE,IAEI7F,EAAQszB,EAAQnN,EAAMwZ,EAAUqU,EAAMhxC,EAFtC64C,EAAiBtB,GAAkB35C,GACnC6nC,EAAQ,EAGZ,IAAIoT,GAAoBh8C,OAASwnC,IAAUqU,GAAsBG,GAW/D,IAFA77C,EAASgmC,GAAkBplC,GAC3B0yB,EAAS4oB,EAAiB,IAAIr8C,KAAKG,GAAUqnC,GAAOrnC,GAC9CA,EAASyoC,EAAOA,IACpBzlC,EAAQq5C,EAAUD,EAAMx7C,EAAE6nC,GAAQA,GAAS7nC,EAAE6nC,GAC7CvC,GAAe5S,EAAQmV,EAAOzlC,QAThC,IAHAswB,EAAS4oB,EAAiB,IAAIr8C,KAAS,GAEvCm0C,GADArU,EAAWgc,GAAY/6C,EAAGi7C,IACV7H,OACR7tB,EAAOthB,GAAKmvC,EAAMrU,IAAWtqB,KAAMozB,IACzCzlC,EAAQq5C,EAAUZ,GAA6B9b,EAAUyc,EAAO,CAACj2B,EAAKnjB,MAAOylC,IAAQ,GAAQtiB,EAAKnjB,MAClGkjC,GAAe5S,EAAQmV,EAAOzlC,GAWlC,OADA6kC,GAAevU,EAAQmV,GAChBnV,CACT,EE7CQsI,GAWN,CAAErR,OAAQ,QAAS0a,MAAM,EAAMK,QDYhB,SAAU5J,EAAM4gB,GAC/B,IACE,IAAKA,IAAiBR,GAAc,OAAO,CAC/C,OAAW/tC,IAAS,OAAO,CAAM,CAC/B,IAAIwuC,GAAoB,EACxB,IACE,IAAIvY,EAAS,CAAA,EAEbA,EAAOiR,IAAY,WACjB,MAAO,CACLjB,KAAM,WACJ,MAAO,CAAE3+B,KAAMknC,GAAoB,EAC7C,EAEA,EACI7gB,EAAKsI,EACT,OAAWj2B,IAAO,CAChB,OAAOwuC,CACT,CCrC2BC,CAA4B,SAAUC,GAE/Dr+C,MAAMmS,KAAKksC,EACb,IAIgE,CAC9DlsC,KAAMA,iBCVGutB,GAEW1/B,MAAMmS,MCL5B,SAASmsC,GAAkBh/C,EAAGK,IAC3B,MAAQA,GAAKA,EAAIL,EAAEsC,UAAYjC,EAAIL,EAAEsC,QACtC,IAAA,IAASrC,EAAI,EAAGN,EAAIe,MAAML,GAAIJ,EAAII,EAAGJ,IAAKN,EAAEM,GAAKD,EAAEC,GACnD,OAAON,CACT,CCAA,SAASs/C,GAAej/C,EAAGC,GACzB,OCJF,SAAyBD,GACvB,GAAIk/C,GAAel/C,GAAI,OAAOA,CAChC,CDESm/C,CAAen/C,IEFxB,SAA+BA,EAAGJ,GAChC,IAAIqB,EAAI,MAAQjB,EAAI,UAAO,IAAsBo/C,IAAWC,GAAmBr/C,IAAMA,EAAE,cACvF,GAAI,MAAQiB,EAAG,CACb,IAAIhB,EACFN,EACAG,EACAD,EACAQ,EAAI,GACJH,GAAI,EACJH,GAAI,EACN,IACE,GAAID,GAAKmB,EAAIA,EAAEkG,KAAKnH,IAAIs2C,KAAM,IAAM12C,QAG7B,OAASM,GAAKD,EAAIH,EAAEqH,KAAKlG,IAAI0W,QAAU2nC,GAAsBj/C,GAAG8G,KAAK9G,EAAGJ,EAAEqF,OAAQjF,EAAEiC,SAAW1C,GAAIM,GAAI,GAChH,OAASF,GACPD,GAAI,EAAIJ,EAAIK,CACd,CAAA,QACE,IACE,IAAKE,GAAK,MAAQe,EAAU,SAAMpB,EAAIoB,EAAU,SAAKgO,OAAOpP,KAAOA,GAAI,MACzE,CAAA,QACE,GAAIE,EAAG,MAAMJ,CACf,CACF,CACA,OAAOU,CACT,CACF,CFxB8Bk/C,CAAqBv/C,EAAGC,IGFtD,SAAqCD,EAAGK,GACtC,GAAIL,EAAG,CACL,IAAIw/C,EACJ,GAAI,iBAAmBx/C,EAAG,OAAOy/C,GAAiBz/C,EAAGK,GACrD,IAAIY,EAAIy+C,GAAuBF,EAAW,CAAA,EAAGrvC,SAAShJ,KAAKnH,IAAImH,KAAKq4C,EAAU,GAAG,GACjF,MAAO,WAAav+C,GAAKjB,EAAE2B,cAAgBV,EAAIjB,EAAE2B,YAAY2F,MAAO,QAAUrG,GAAK,QAAUA,EAAI0+C,GAAY3/C,GAAK,cAAgBiB,GAAK,2CAA2CoD,KAAKpD,GAAKw+C,GAAiBz/C,EAAGK,QAAK,CACvN,CACF,CHL4Du/C,CAA2B5/C,EAAGC,IIL1F,WACE,MAAM,IAAIwgC,UAAU,4IACtB,CJGgGof,EAChG,qBKLIj9C,GAAIs7B,GACJuG,GAAc1F,GACdO,GAAiBc,GAA+ClgC,EAKpE0C,GAAE,CAAEiqB,OAAQ,SAAU0a,MAAM,EAAMK,OAAQ34B,OAAOqwB,iBAAmBA,GAAgByC,MAAO0C,IAAe,CACxGnF,eAAgBA,KCPlB,IAEIrwB,GAFO8vB,GAEO9vB,OAEdqwB,GAAiB8G,GAAAvD,QAAiB,SAAwBpF,EAAIr8B,EAAK0+C,GACrE,OAAO7wC,GAAOqwB,eAAe7B,EAAIr8B,EAAK0+C,EACxC,EAEI7wC,GAAOqwB,eAAeyC,OAAMzC,GAAeyC,MAAO,uCCLnBwB,GAEWrjC,EAAE,aCLhD,SAAS6/C,GAAQhgD,GAGf,OAAOggD,GAAU,mBAAqBX,IAAW,iBAAmBY,GAAmB,SAAUjgD,GAC/F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBq/C,IAAWr/C,EAAE4B,cAAgBy9C,IAAWr/C,IAAMq/C,GAAQj6C,UAAY,gBAAkBpF,CACvH,GAAWA,EACb,aCPmCqgC,GAEWlgC,EAAE,gBCHhD,SAASmkC,GAAcpjC,GACrB,IAAInB,ECDN,SAAqBmB,EAAGjB,GACtB,GAAI,UAAY+/C,GAAQ9+C,KAAOA,EAAG,OAAOA,EACzC,IAAIhB,EAAIgB,EAAEg/C,IACV,YAAehgD,EAAG,CAChB,IAAIH,EAAIG,EAAEkH,KAAKlG,EAAGjB,GAClB,GAAI,UAAY+/C,GAAQjgD,GAAI,OAAOA,EACnC,MAAM,IAAI2gC,UAAU,+CACtB,CACA,OAAQ,WAAazgC,EAAI0D,OAASkZ,QAAQ3b,EAC5C,CDRUkjC,CAAYljC,EAAG,UACvB,MAAO,UAAY8+C,GAAQjgD,GAAKA,EAAIA,EAAI,EAC1C,CEGA,SAASogD,GAAajgD,EAAGD,EAAGiB,GAC1B,OAAOjB,GAPT,SAA2BC,EAAGD,GAC5B,IAAA,IAASiB,EAAI,EAAGA,EAAIjB,EAAEsC,OAAQrB,IAAK,CACjC,IAAIlB,EAAIC,EAAEiB,GACVlB,EAAE+/B,WAAa//B,EAAE+/B,aAAc,EAAI//B,EAAEkgC,cAAe,EAAI,UAAWlgC,IAAMA,EAAEmgC,UAAW,GAAKigB,GAAuBlgD,EAAGokC,GAActkC,EAAEqB,KAAMrB,EAC7I,CACF,CAEcqgD,CAAkBngD,EAAEkF,UAAWnF,GAAkCmgD,GAAuBlgD,EAAG,YAAa,CAClHigC,UAAU,IACRjgC,CACN,CCVA,SAASogD,GAAgBpgD,EAAGD,EAAGiB,GAC7B,OAAQjB,EAAIqkC,GAAcrkC,MAAOC,EAAIkgD,GAAuBlgD,EAAGD,EAAG,CAChEsF,MAAOrE,EACP6+B,YAAY,EACZG,cAAc,EACdC,UAAU,IACPjgC,EAAED,GAAKiB,EAAGhB,CACjB,CCRA,IACIqgD,GAAUvhB,GAAwC51B,OAD9C+0B,GASN,CAAErR,OAAQ,QAAS4a,OAAO,EAAMG,QAPCxH,GAEoB,WAKW,CAChEj3B,OAAQ,SAAgBymC,GACtB,OAAO0Q,GAAQn+C,KAAMytC,EAAYznC,UAAU7F,OAAS,EAAI6F,UAAU,QAAK,EAC3E,ICXA,IAEAgB,GAFgC41B,GAEW,QAAS,UCHhDmC,GAAgBhD,GAChBvnB,GAASooB,GAETue,GAAiB58C,MAAMyE,sBAEV,SAAUs4B,GACzB,IAAI8f,EAAM9f,EAAGt0B,OACb,OAAOs0B,IAAO6f,IAAmBpc,GAAcoc,GAAgB7f,IAAO8f,IAAQD,GAAen0C,OAAUwN,GAAS4mC,CAClH,GCRA,IACIta,GAAWlE,GACXwhB,GAAangB,GAFTlC,GASN,CAAErR,OAAQ,SAAU0a,MAAM,EAAMK,OANtBzF,GAEoB,WAAcoe,GAAW,EAAG,IAIK,CAC/D7U,KAAM,SAAcjO,GAClB,OAAO8iB,GAAWtd,GAASxF,GAC/B,gBCXWsB,GAEW9vB,OAAOy8B,MCH7B,IAAI3N,GAAQG,GCAR6T,GAAW7T,GAAwCt2B,QAOvD44C,GDLiB,SAAUxW,EAAa5K,GACtC,IAAIzoB,EAAS,GAAGqzB,GAChB,QAASrzB,GAAUonB,GAAM,WAEvBpnB,EAAOxP,KAAK,KAAMi4B,GAAY,WAAc,OAAO,GAAM,EAC7D,EACA,CCLoBqhB,CAAoB,WAOpC,GAAG74C,QAH2B,SAAiBgoC,GACjD,OAAOmC,GAAS5vC,KAAMytC,EAAYznC,UAAU7F,OAAS,EAAI6F,UAAU,QAAK,EAE1E,ECVQ+1B,GAMN,CAAErR,OAAQ,QAAS4a,OAAO,EAAMG,OAAQ,GAAGhgC,UAL/Bm3B,IAKsD,CAClEn3B,QANYm3B,KCAd,IAEAn3B,GAFgCm3B,GAEW,QAAS,WCHhDoB,GAAUjC,GACViF,GAASpE,GACTmC,GAAgBd,GAChBzpB,GCHSunB,GDMTof,GAAiB58C,MAAMyE,UAEvBu0C,GAAe,CACjBO,cAAc,EACdU,UAAU,eAGK,SAAUld,GACzB,IAAI8f,EAAM9f,EAAG71B,QACb,OAAO61B,IAAO6f,IAAmBpc,GAAcoc,GAAgB7f,IAAO8f,IAAQD,GAAe11C,SACxFu7B,GAAOuW,GAAcvZ,GAAQ1C,IAAO9mB,GAAS4mC,CACpD,GEjBA,IAAI36C,GAAIs7B,GAEJv9B,GAAUy/B,GAEVsgB,GAHc3hB,GAGc,GAAG4hB,SAC/Bt8C,GAAO,CAAC,EAAG,GAMfzB,GAAE,CAAEiqB,OAAQ,QAAS4a,OAAO,EAAMG,OAAQlkC,OAAOW,MAAUX,OAAOW,GAAKs8C,YAAc,CACnFA,QAAS,WAGP,OADIhgD,GAAQwB,QAAOA,KAAKG,OAASH,KAAKG,QAC/Bo+C,GAAcv+C,KACzB,ICfA,IAEAw+C,GAFgC5hB,GAEW,QAAS,WCHhDmC,GAAgBhD,GAChBvnB,GAASooB,GAETue,GAAiB58C,MAAMyE,sBAEV,SAAUs4B,GACzB,IAAI8f,EAAM9f,EAAGkjB,QACb,OAAOljB,IAAO6f,IAAmBpc,GAAcoc,GAAgB7f,IAAO8f,IAAQD,GAAeqD,QAAWhqC,GAAS4mC,CACnH,eCTiBrf,ICEjB,IAEAuM,GAFgC1L,GAEW,QAAS,UCHhDmC,GAAgBhD,GAChBvnB,GAASooB,GAETue,GAAiB58C,MAAMyE,sBAEV,SAAUs4B,GACzB,IAAI8f,EAAM9f,EAAGgN,OACb,OAAOhN,IAAO6f,IAAmBpc,GAAcoc,GAAgB7f,IAAO8f,IAAQD,GAAe7S,OAAU9zB,GAAS4mC,CAClH;;;;;;GCSA,IAAIqD,GAkBAC,GAA6B,GAI7BC,GAA6B,GAC7BC,GAA6B,GAC7BC,GAA6B,GAC7BC,GAA6B,GAC7BC,GAA6B,GAC7BC,GAA6B,GAE7BC,GAA6B,GAQ7BC,GAAiB,GA0DjBC,IAA4CjB,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAxKO,GAAoB,CAAA,EA7F5B,EAgDO,OA9CE,EA+CO,KA9CN,EA+CO,KA9CV,EA+CO,KA9CN,EA+CO,KA9Cb,EA+CO,KA9CT,EA+CO,KA9CL,EA+CO,KA9CP,EA+CO,KA9CI,GA+CO,MAoCqlBP,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBO,GAlFvwB,GA+CO,KA9CJ,GA+CO,KA9CX,GA+CO,QA9CP,GA+CO,QA9CN,GA+CO,SA+B+7BC,GA9Bh7B,KA9CP,GA+CO,KA9CP,GA+CO,KA9CP,GA+CO,KA2BgrCC,GA1BhrC,KA0BgvCT,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBO,GAAmBG,GAzBn6C,KAyBm+CC,GAxBn+C,KAwBmiDC,GAvBniD,KAuBmmDC,GAtBnmD,KAsBmqDC,GArBnqD,KA9CP,GA+CO,KAoBmyDC,GAnBnyD,KA9CP,GA+CO,KA9CP,GA+CO,KA9CP,GA+CO,KAgBmiEf,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBA,GAAgBO,GA9D1sE,GA+CO,KA9CP,GA+CO,KA9CP,GA+CO,KAas5ES,GAZl6E,KA7CP,GA8CO,KA7CP,GA8CO,KA7CP,GA8CO,KA7CP,GA8CO,KA7CP,GA8CO,KA7CP,GA8CO,KAM0rFhB,GAAgBA,GAAgBA,GAAgBO,GAnDjvF,GA8CO,KA7CP,GA8CO,KA7CP,GA8CO,MAoB5B,SAASW,GAAYlhD,GACnB,IAAIm/C,EACJ,OAAKn/C,EAGEmhD,GAAwBhC,EAAWiC,GAAaphD,IAAI8G,KAAKq4C,EAAU,SAAU1xB,GAClF,SAAUA,EAAK,KAAOA,GAAM,IAAMA,EAAKhV,KAAK4oC,IAAI,EAAG,GACrD,GAAGp/C,OAJM,CAKX,CAGA,SAASq/C,GAAWC,EAAOC,GAGzB,IAFA,IAAIC,EAAUP,GAAYK,GACtBG,EAAaR,GAAYM,GAG3BC,QADAC,EAEiB,IAHV,CAMP,GAAID,EAAU,EACZ,OAAO,EAET,GAAIF,EAAME,KAAaD,EAAOE,GAC5B,OAAO,CAEX,CACA,OAAO,CACT,CAGA,IAAIC,GAAqB,WACvB,SAASA,KClKX,SAAyB3hD,EAAGV,GAC1B,KAAMU,aAAaV,GAAI,MAAM,IAAI8gC,UAAU,oCAC7C,CDiKIwhB,CAAgB9/C,KAAM6/C,GACtB7/C,KAAK+/C,YAAc,GACnB//C,KAAKggD,eAAiB,GACtBhgD,KAAKigD,YAAc,GACnBjgD,KAAKkgD,WAAa,GAClBlgD,KAAKmgD,iBAAmB,EAC1B,CAwrCA,OArrCApC,GAAa8B,EAAO,CAAC,CACnB5gD,IAAK,qBACLkE,MAAO,WACL,OAA+B,IAA3BnD,KAAKkgD,WAAW//C,OA3JV,EA8JHH,KAAKkgD,WAAWlgD,KAAKkgD,WAAW//C,OAAS,EAClD,GAGC,CACDlB,IAAK,2BACLkE,MAAO,WACL,OAAqC,IAAjCnD,KAAKmgD,iBAAiBhgD,OArKhB,EAwKHH,KAAKmgD,iBAAiBngD,KAAKmgD,iBAAiBhgD,OAAS,EAC9D,GAGC,CACDlB,IAAK,gBACLkE,MAAO,WACL,OAA+B,IAA3BnD,KAAKkgD,WAAW//C,OA/KV,EAkLHH,KAAKkgD,WAAWrqC,KACzB,GAGC,CACD5W,IAAK,sBACLkE,MAAO,WACL,OAAqC,IAAjCnD,KAAKmgD,iBAAiBhgD,OAzLhB,EA4LHH,KAAKmgD,iBAAiBtqC,KAC/B,GAGC,CACD5W,IAAK,iBACLkE,MAAO,SAAwBub,GAC7B1e,KAAKkgD,WAAW1/C,KAAKke,EACvB,GAGC,CACDzf,IAAK,uBACLkE,MAAO,SAA8Bub,GACnC1e,KAAKmgD,iBAAiB3/C,KAAKke,EAC7B,GAGC,CACDzf,IAAK,+BACLkE,MAAO,WACL,IAAIi9C,EAAWC,EAAWC,EACtBC,EAAM,GAIV,OAHAC,GAAyBJ,EAAYK,GAAyBJ,EAAY9C,GAAuB+C,EAAYtgD,KAAKmgD,kBAAkBn7C,KAAKs7C,IAAYt7C,KAAKq7C,IAAYr7C,KAAKo7C,EAAW,SAAU7iC,GAC9LgjC,GAAOpB,GAAiB5hC,EAC1B,GACOgjC,CACT,GAGC,CACDthD,IAAK,kBACLkE,MAAO,SAAyB3F,GAC9BwC,KAAKigD,YAAcjgD,KAAKigD,YAAYS,UAAUljD,EAChD,GAGC,CACDyB,IAAK,8BACLkE,MAAO,WACLnD,KAAK+/C,aAzKiB,GA0KxB,GAGC,CACD9gD,IAAK,6BACLkE,MAAO,SAAoClF,GACzC+B,KAAKggD,gBAAkB/hD,CACzB,GAGC,CACDgB,IAAK,oCACLkE,MAAO,WACLnD,KAAK+/C,aAAe//C,KAAKggD,cAC3B,GAGC,CACD/gD,IAAK,qBACLkE,MAAO,WACL,OAAOnD,KAAKggD,eAAe7/C,OAAS,CACtC,GAGC,CACDlB,IAAK,sBACLkE,MAAO,WACLnD,KAAKggD,eAAiB,EACxB,GAGC,CACD/gD,IAAK,kCACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CApQK,EAKL,GAgQRC,EAAQ,CAjQA,EACA,GAkQRC,EAAQ,CAtQM,GAuQlB,OAAQrB,GAAWx/C,KAAKkgD,WAAYS,IAAUnB,GAAWx/C,KAAKkgD,WAAYU,KAAWpB,GAAWx/C,KAAKmgD,iBAAkBU,EACzH,GAGC,CACD5hD,IAAK,gCACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CAhRK,EAKL,KA4QRC,EAAQ,CA7QA,EACA,KA8QRC,EAAQ,CAlRM,EAkRchC,GAA4BA,GAA4BI,GAA4BH,GAjRxG,EAGA,GA+QZ,OAAQU,GAAWx/C,KAAKkgD,WAAYS,IAAUnB,GAAWx/C,KAAKkgD,WAAYU,KAAWpB,GAAWx/C,KAAKmgD,iBAAkBU,EACzH,GAGC,CACD5hD,IAAK,0CACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CA1RA,EAGA,GAyRRC,EAAQ,CA7RM,EA6Rc/B,GAA4BA,GAA4BI,GAA4BH,IACpH,OAAOU,GAAWx/C,KAAKkgD,WAAYS,IAAUnB,GAAWx/C,KAAKmgD,iBAAkBS,EACjF,GAGC,CACD3hD,IAAK,kCACLkE,MAAO,WAEL,IAAIu8C,EAAS,CAtSK,EAIN,GAmSZ,OAAOF,GAAWx/C,KAAKmgD,iBAAkBT,EAC3C,GAGC,CACDzgD,IAAK,yCACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CA9SA,EAJO,GAoTfC,EAAQ,CAjTM,EAiTc/B,GAA4BA,GAA4BI,GAA4BH,IACpH,OAAOU,GAAWx/C,KAAKkgD,WAAYS,IAAUnB,GAAWx/C,KAAKmgD,iBAAkBS,EACjF,GAGC,CACD3hD,IAAK,0CACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CAzTA,EAFK,GA6TbC,EAAQ,CA5TM,EA4Tc/B,GAA4BA,GAA4BI,GAA4BH,IACpH,OAAOU,GAAWx/C,KAAKkgD,WAAYS,IAAUnB,GAAWx/C,KAAKmgD,iBAAkBS,EACjF,GAGC,CACD3hD,IAAK,kDACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CApUA,EAMG,IA+Tf,OAAOnB,GAAWx/C,KAAKkgD,WAAYS,EACrC,GAGC,CACD1hD,IAAK,2CACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CAvUG,IAyUXC,EAAQ,CAAC1B,IACb,OAAOM,GAAWx/C,KAAKkgD,WAAYS,IAAUnB,GAAWx/C,KAAKmgD,iBAAkBS,EACjF,GAGC,CACD3hD,IAAK,yBACLkE,MAAO,WACL,OA1VoB,IA0VbnD,KAAK8gD,0BACd,GAGC,CACD7hD,IAAK,uCACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CA5VA,KA8VRC,EAAQ,CApWQ,EAMR,GA+VZ,OAAOpB,GAAWx/C,KAAKkgD,WAAYS,IAAUnB,GAAWx/C,KAAKmgD,iBAAkBS,EACjF,GAGC,CACD3hD,IAAK,mDACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CA3WM,EA2Wc9B,GAA4BA,GAA4BI,GAA4BH,IACpH,OAAOU,GAAWx/C,KAAKmgD,iBAAkBQ,EAC3C,GAGC,CACD1hD,IAAK,yBACLkE,MAAO,WACL,OA/WY,IA+WLnD,KAAK+gD,sBA/WA,IA+WwC/gD,KAAK8gD,0BAC3D,GAGC,CACD7hD,IAAK,uCACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CAtXW,GAsXc1B,IAEjC2B,EAAQ,CAzXA,GA0XZ,OAAOpB,GAAWx/C,KAAKkgD,WAAYS,IAAUnB,GAAWx/C,KAAKmgD,iBAAkBS,EACjF,GAGC,CACD3hD,IAAK,yBACLkE,MAAO,WACL,OAxWa,KAwWNnD,KAAK+gD,oBACd,GAGC,CACD9hD,IAAK,oCACLkE,MAAO,WACL,OA1YU,IA0YHnD,KAAK+gD,oBACd,GAGC,CACD9hD,IAAK,0CACLkE,MAAO,WAEL,IAAIw9C,EAAQ,CAlZF,EA2BG,IAwXb,OAAOnB,GAAWx/C,KAAKkgD,WAAYS,EACrC,GAGC,CACD1hD,IAAK,0CACLkE,MAAO,WACL,OAvZuB,KAuZhBnD,KAAK+gD,oBACd,GAGC,CACD9hD,IAAK,aACLkE,MAAO,WAEL,GAAgC,IAA5BnD,KAAKigD,YAAY9/C,OACnB,MAAO,CA1aC,EA0aW,GAErB,IAAI6gD,EAAchhD,KAAKigD,YAAYS,UAAU,EAAG,GAGhD,GA/UN,SAAuB1iD,GACrB,OAAQA,GACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACH,OAAO,EAEX,OAAO,CACT,CAoUUijD,CAAcD,GAEhB,OADAhhD,KAAKkhD,gBAAgB,GACd,CAhbK,EAgbWF,GAIzB,OAAQA,GACN,IArYwB,IAuYtB,OADAhhD,KAAKkhD,gBAAgB,GACd,CAtbQ,EAsbaF,GAC9B,IAvYyB,IAyYvB,OADAhhD,KAAKkhD,gBAAgB,GACd,CAxbS,EAwbaF,GAC/B,IAzYsB,IA2YpB,OADAhhD,KAAKkhD,gBAAgB,GACd,CA1bM,EA0baF,GAC5B,IA3YuB,IA6YrB,OADAhhD,KAAKkhD,gBAAgB,GACd,CA5bO,EA4baF,GAC7B,IA7YiB,IA+Yf,OADAhhD,KAAKkhD,gBAAgB,GACd,CA9bC,EA8baF,GACvB,IA/Ye,IAiZb,OADAhhD,KAAKkhD,gBAAgB,GACd,CAhcD,EAgcaF,GACrB,IAjZiB,IAmZf,OADAhhD,KAAKkhD,gBAAgB,GACd,CAlcC,EAkcaF,GACvB,IAnZiB,IAqZf,OADAhhD,KAAKkhD,gBAAgB,GACd,CApcC,EAocaF,GACvB,IArZ4B,KAuZ1B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAtcY,GAscaF,GAClC,IAvZiB,IAyZf,OADAhhD,KAAKkhD,gBAAgB,GACd,CAxcC,GAwcaF,GACvB,IAzZoB,IA2ZlB,OADAhhD,KAAKkhD,gBAAgB,GACd,CA1cI,GA0caF,GAC1B,IAxZgC,IA0Z9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAACxC,GAA4BsC,GACtC,IA1ZgC,IA4Z9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CA3cgB,GA2caF,GACtC,IA5ZgC,IA8Z9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CA7cgB,GA6caF,GACtC,IA9ZgC,IAga9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CA/cgB,GA+caF,GACtC,IAhagC,IAka9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAACvC,GAA4BqC,GACtC,IAlagC,IAoa9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAACtC,GAA4BoC,GACtC,IApagC,IAsa9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAACrC,GAA4BmC,GACtC,IAtagC,IAwa9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAACpC,GAA4BkC,GACtC,IAxagC,IA0a9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAACnC,GAA4BiC,GACtC,IA1agC,IA4a9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAAClC,GAA4BgC,GACtC,IA5agC,IA8a9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CA7dgB,GA6daF,GACtC,IA9agC,IAgb9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAACjC,GAA4B+B,GACtC,IAhbgC,IAkb9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAjegB,GAieaF,GACtC,IAlbgC,IAob9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAnegB,GAmeaF,GACtC,IApbgC,IAsb9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAregB,GAqeaF,GACtC,IAtbgC,IAwb9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAvegB,GAueaF,GACtC,IAxbgC,IA0b9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CAzegB,GAyeaF,GACtC,IA1bgC,IA4b9B,OADAhhD,KAAKkhD,gBAAgB,GACd,CA3egB,GA2eaF,GACtC,IA5boB,IA8blB,OADAhhD,KAAKkhD,gBAAgB,GACd,CAAChC,GAAgB8B,GAC1B,IA9boB,IAgclB,OADAhhD,KAAKkhD,gBAAgB,GACd,CA9eI,GA8eaF,GAC1B,IAhcoB,IAkclB,OADAhhD,KAAKkhD,gBAAgB,GACd,CAhfI,GAgfaF,GAC1B,IAlcoB,IAoclB,OADAhhD,KAAKkhD,gBAAgB,GACd,CAlfI,GAkfaF,GAC1B,IApcoB,IAsclB,OADAhhD,KAAKkhD,gBAAgB,GACd,CApfI,GAofaF,GAC1B,IAtcoB,IAwclB,OADAhhD,KAAKkhD,gBAAgB,GACd,CAtfI,GAsfaF,GAC1B,IAxcoB,IA0clB,OADAhhD,KAAKkhD,gBAAgB,GACd,CAxfI,GAwfaF,GAC1B,IA1coB,IA4clB,OADAhhD,KAAKkhD,gBAAgB,GACd,CA1fI,GA0faF,GAC1B,IA5coB,IA8clB,OADAhhD,KAAKkhD,gBAAgB,GACd,CA5fI,GA4faF,GAC1B,IA9coB,IAgdlB,OADAhhD,KAAKkhD,gBAAgB,GACd,CA9fI,GA8faF,GAC1B,QAEE,OADAhhD,KAAKkhD,gBAAgB,GACd,CAhgBE,GAggBaF,GAE5B,GAIC,CACD/hD,IAAK,eACLkE,MAAO,SAAsBg+C,GAC3B,IACEC,EADEC,EAAQrhD,KAGZ,IADAA,KAAKigD,YAAckB,IACV,CACP,IACEG,EAAoBxE,GADC98C,KAAKuhD,aAC2B,GACrD7iC,EAAQ4iC,EAAkB,GAC1BN,EAAcM,EAAkB,GAClC,OAAQ5iC,GACN,KA/jBM,EAikBJ,MACF,KAjkBU,EAkkBR,GAAI1e,KAAKwhD,yBAA0B,CACjCxhD,KAAK+/C,aAAeiB,EACpB,QACF,CACAhhD,KAAKyhD,2BAA2BT,GAChC,MACF,KA5hBS,GA8hBHhhD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAIP5hD,KAAK+/C,aAAeiB,EACpB,MACF,KAjlBe,EAwlBb,GALIhhD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAEP5hD,KAAK+/C,aAAeiB,EAChBhhD,KAAKwhD,yBACP,SAEFxhD,KAAK6hD,eAAenjC,GAChB1e,KAAK8hD,2CAEP9hD,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,uBAIP/hD,KAAKgiD,qBApmBS,GAqmBd,MACF,KAtmBgB,EAumBd,GAAIhiD,KAAKwhD,yBAA0B,CACjCxhD,KAAK+/C,aAAeiB,EACpB,QACF,CAGIhhD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAIP5hD,KAAK+/C,aAAeiB,EAGpBhhD,KAAK6hD,eAAenjC,GAEpB1e,KAAK+hD,sBACL,MACF,KAznBa,EAkoBX,GAPI/hD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAIP5hD,KAAK+/C,aAAeiB,EAChBhhD,KAAKwhD,yBACP,SAEFxhD,KAAK6hD,eAAenjC,GAChB1e,KAAKiiD,4CAEPjiD,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,uBAIP/hD,KAAKgiD,qBA9oBO,GA+oBZ,MACF,KAhpBc,EAipBZ,GAAIhiD,KAAKwhD,yBAA0B,CACjCxhD,KAAK+/C,aAAeiB,EACpB,QACF,CAGIhhD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAEP5hD,KAAK+/C,aAAeiB,EAGpBhhD,KAAK6hD,eAAenjC,GAEpB1e,KAAK+hD,sBACL,MACF,KA9pBQ,EAgqBN,GAAI/hD,KAAKkiD,0CAA2C,CAElDliD,KAAK2hD,oCACL3hD,KAAK4hD,sBAGL5hD,KAAK+/C,aAAeiB,EAGpBhhD,KAAKmiD,gBACL,QACF,CAWA,GARIniD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAIP5hD,KAAK+/C,aAAeiB,EACpBhhD,KAAK6hD,eAAenjC,GAChB1e,KAAKoiD,yBAEPpiD,KAAKgiD,qBAxrBD,QAyrBN,GAAWhiD,KAAKqiD,uCAEdriD,KAAK+hD,2BACP,GAAW/hD,KAAKsiD,kCAEdtiD,KAAKgiD,qBAAqBnD,IAC1B7+C,KAAKgiD,qBAAqBnD,IAC1B7+C,KAAKgiD,qBAAqB/C,IAC1Bj/C,KAAKgiD,qBAAqBlD,IAC1B9+C,KAAKgiD,qBArsBD,GAssBJhiD,KAAKgiD,qBAnsBD,QAosBN,GAAWhiD,KAAKuiD,gCAEdviD,KAAK+hD,2BACP,GAAW/hD,KAAKwiD,0CAEdxiD,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,sBAEL/hD,KAAKgiD,qBA9sBD,OA+sBN,KAAWhiD,KAAKyiD,kCAId,MAAM,IAAI9vC,MAAM,sCAFhB3S,KAAK+hD,qBAGP,CACA,MACF,KAztBQ,EA0tBN,GAAI/hD,KAAKwhD,yBAA0B,CACjCxhD,KAAK+/C,aAAeiB,EACpB,QACF,CACIhhD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAEP5hD,KAAK+/C,aAAeiB,EACpBhhD,KAAK6hD,eAAenjC,GACpB1e,KAAK+hD,sBACL,MACF,KAAKrD,GACH,GAAI1+C,KAAK0iD,uCAAwC,CAC/C1iD,KAAKyhD,2BAA2BT,GACG,IAA/BhhD,KAAKggD,eAAe7/C,SACtBH,KAAK2hD,oCACL3hD,KAAK4hD,sBACL5hD,KAAKmiD,gBACLniD,KAAKmiD,iBAEP,QACF,CAEA,GADAniD,KAAK+/C,aAAeiB,EAChBhhD,KAAKwhD,yBACP,SAOF,GALAxhD,KAAK2iD,qBAAuB,WAC1B,IAAIz7B,EAAO,CAAC03B,IACR/zC,EAAQ,CAAC8zC,GAA4BK,GAA4BH,GAA4BH,IACjG,OAAOc,GAAW6B,EAAMnB,WAAYh5B,IAASs4B,GAAW6B,EAAMlB,iBAAkBt1C,EAClF,GACK7K,KAAK2iD,uBACR,SAEF3iD,KAAK6hD,eAAenjC,GACpB1e,KAAK+hD,sBACL,MACF,KArvBuB,GAuvBrB,GAAI/hD,KAAK0iD,uCAAwC,CAC/C1iD,KAAKyhD,2BAA2BT,GAGG,IAA/BhhD,KAAKggD,eAAe7/C,SACtBH,KAAK2hD,oCACL3hD,KAAK4hD,sBAGL5hD,KAAKmiD,gBACLniD,KAAKmiD,iBAEP,QACF,CAGA,GAAIniD,KAAKkiD,0CAA2C,CAElDliD,KAAK2hD,oCACL3hD,KAAK4hD,sBAGL5hD,KAAK+/C,aAAeiB,EAGpBhhD,KAAKmiD,gBACL,QACF,CAMA,GAHAniD,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SAEF,MACF,KAAK7C,GAEH,GAAI3+C,KAAK0iD,uCAAwC,CAC/C1iD,KAAKyhD,2BAA2BT,GAGG,IAA/BhhD,KAAKggD,eAAe7/C,SACtBH,KAAK2hD,oCACL3hD,KAAK4hD,sBAGL5hD,KAAKmiD,gBACLniD,KAAKmiD,iBAEP,QACF,CAGA,GAAIniD,KAAK4iD,0CAA2C,CAClD5iD,KAAKyhD,2BAA2BT,GAChC,QACF,CAMA,GAHAhhD,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SAIFxhD,KAAK6hD,eAAenjC,GACpB1e,KAAK+hD,sBACL,MACF,KAAKnD,GAEH,GAAI5+C,KAAK0iD,uCAAwC,CAC/C1iD,KAAKyhD,2BAA2BT,GAEG,IAA/BhhD,KAAKggD,eAAe7/C,SACtBH,KAAK2hD,oCACL3hD,KAAK4hD,sBAEL5hD,KAAKmiD,gBACLniD,KAAKmiD,iBAEP,QACF,CAGA,GAAIniD,KAAKkiD,0CAA2C,CAElDliD,KAAK2hD,oCACL3hD,KAAK4hD,sBAGL5hD,KAAK+/C,aAAeiB,EAGpBhhD,KAAKmiD,gBACL,QACF,CAYA,GATIniD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAIP5hD,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SAIFxhD,KAAK6hD,eAAenjC,GAChB1e,KAAKoiD,0BAGPpiD,KAAKgiD,qBAAqBrD,IAC1B3+C,KAAKgiD,qBAAqBhD,IAC1Bh/C,KAAKgiD,qBAAqBnD,IAC1B7+C,KAAKgiD,qBAAqBtD,MAI1B1+C,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,sBAEL/hD,KAAKgiD,qBAAqBrD,IAC1B3+C,KAAKgiD,qBAAqBhD,IAC1Bh/C,KAAKgiD,qBAAqBnD,IAC1B7+C,KAAKgiD,qBAAqBtD,KAE5B,MACF,KAAKG,GAKH,GAHA7+C,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SAmBF,GAfAxhD,KAAK6iD,sBAAwB,WAC3B,IAAI37B,EAAO,CAAC03B,GAA4BF,IACpC7zC,EAAQ,CAAC8zC,GAA4BK,GAA4BH,IACrE,OAAOW,GAAW6B,EAAMnB,WAAYh5B,IAASs4B,GAAW6B,EAAMlB,iBAAkBt1C,EAClF,EACA7K,KAAK8iD,qBAAuB,WAC1B,IAAI57B,EAAO,CAAC43B,GAA4BG,IACpCp0C,EAAQ,CAACg0C,GAA4BA,IACzC,OAAOW,GAAW6B,EAAMnB,WAAYh5B,IAASs4B,GAAW6B,EAAMlB,iBAAkBt1C,EAClF,EACA7K,KAAK+iD,qBAAuB,WAC1B,IAAI77B,EAAO,CAAC43B,GAA4BG,GAA4BJ,IAChEh0C,EAAQ,CAACg0C,IACb,OAAOW,GAAW6B,EAAMnB,WAAYh5B,IAASs4B,GAAW6B,EAAMlB,iBAAkBt1C,EAClF,GACK7K,KAAK6iD,0BAA4B7iD,KAAK8iD,yBAA2B9iD,KAAK+iD,uBACzE,SAEF/iD,KAAK6hD,eAAenjC,GACpB1e,KAAK+hD,sBACL,MACF,KAAKjD,GAEH,GAAI9+C,KAAKkiD,0CAA2C,CAElDliD,KAAK2hD,oCACL3hD,KAAK4hD,sBAGL5hD,KAAK+/C,aAAeiB,EAGpBhhD,KAAKmiD,gBACL,QACF,CAYA,GATIniD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAIP5hD,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SAIFxhD,KAAK6hD,eAAenjC,GAChB1e,KAAKoiD,0BAEPpiD,KAAKgiD,qBAAqBnD,IAC1B7+C,KAAKgiD,qBAAqBnD,IAC1B7+C,KAAKgiD,qBAAqB/C,KAG1Bj/C,KAAK+hD,sBAEP,MACF,KAAKhD,GAEH,GAAI/+C,KAAKkiD,0CAA2C,CAElDliD,KAAK2hD,oCACL3hD,KAAK4hD,sBAGL5hD,KAAK+/C,aAAeiB,EAGpBhhD,KAAKmiD,gBACL,QACF,CAMA,GAHAniD,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SASF,GALAxhD,KAAKgjD,oBAAsB,WACzB,IAAI97B,EAAO,CAz9BQ,IA09Bfrc,EAAQ,CAAC8zC,GAA4BM,GAA4BF,IACrE,OAAOS,GAAW6B,EAAMnB,WAAYh5B,IAASs4B,GAAW6B,EAAMlB,iBAAkBt1C,EAClF,GACK7K,KAAKgjD,sBACR,SAEFhjD,KAAK6hD,eAAenjC,GACpB1e,KAAK+hD,sBACL,MACF,KAAK/C,GAKH,GAHAh/C,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SASF,GALAxhD,KAAKijD,sBAAwB,WAC3B,IAAI/7B,EAAO,CAAC03B,GAA4BF,GAA4BG,IAChEh0C,EAAQ,CAAC8zC,GAA4BK,IACzC,OAAOQ,GAAW6B,EAAMnB,WAAYh5B,IAASs4B,GAAW6B,EAAMlB,iBAAkBt1C,EAClF,GACK7K,KAAKijD,wBACR,SAEFjjD,KAAK6hD,eAAenjC,GACpB1e,KAAK+hD,sBACL,MACF,KAx/BuB,GA0/BrB,GAAI/hD,KAAKkiD,0CAA2C,CAElDliD,KAAK2hD,oCACL3hD,KAAK4hD,sBAGL5hD,KAAK+/C,aAAeiB,EAGpBhhD,KAAKmiD,gBACL,QACF,CAYA,GATIniD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAIP5hD,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SAIFxhD,KAAK6hD,eAAenjC,GAChB1e,KAAKoiD,0BAGPpiD,KAAKgiD,qBAAqBrD,IAC1B3+C,KAAKgiD,qBAAqB/C,IAC1Bj/C,KAAKgiD,qBAAqBjD,MAI1B/+C,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,sBAEL/hD,KAAKgiD,qBAAqBrD,IAC1B3+C,KAAKgiD,qBAAqB/C,IAC1Bj/C,KAAKgiD,qBAAqBjD,KAE5B,MACF,KAAKE,GAEH,GAAIj/C,KAAKkiD,0CAA2C,CAClDliD,KAAK6hD,eAAenjC,GACpB1e,KAAKggD,gBAAkBgB,EACvB,QACF,CAMA,GAHAhhD,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SAgBF,GAZAxhD,KAAKkjD,qBAAuB,WAC1B,IAAIh8B,EAAO,CA5jCQ,GA4jCqB63B,IACpCl0C,EAAQ,CAAC8zC,GAA4BM,IACzC,OAAOO,GAAW6B,EAAMnB,WAAYh5B,IAASs4B,GAAW6B,EAAMlB,iBAAkBt1C,EAClF,EAGA7K,KAAKmjD,oBAAsB,WACzB,IAAIj8B,EAAO,CAAC43B,IACRj0C,EAAQ,CAACg0C,GAA4BA,GAA4BI,IACrE,OAAOO,GAAW6B,EAAMnB,WAAYh5B,IAASs4B,GAAW6B,EAAMlB,iBAAkBt1C,EAClF,GACK7K,KAAKkjD,yBAA2BljD,KAAKmjD,sBACxC,SAEFnjD,KAAK6hD,eAAenjC,GACpB1e,KAAK+hD,sBACL,MACF,KA3kCuB,GA4kCvB,KA3kCuB,GA4kCvB,KA3kCuB,GA4kCvB,KA3kCuB,GA4kCvB,KAzlCuB,GA0lCvB,KAzlCuB,GA0lCvB,KA5kCuB,GA8kCrB,GAAI/hD,KAAK0iD,uCAAwC,CAC/C1iD,KAAKyhD,2BAA2BT,GAEG,IAA/BhhD,KAAKggD,eAAe7/C,SACtBH,KAAK2hD,oCACL3hD,KAAK4hD,sBAEL5hD,KAAKmiD,gBACLniD,KAAKmiD,iBAEP,QACF,CAMA,GAHAniD,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SAEF,MACF,KApmCuB,GAsmCrB,GAAIxhD,KAAK0iD,uCAAwC,CAC/C1iD,KAAKyhD,2BAA2BT,GAEG,IAA/BhhD,KAAKggD,eAAe7/C,SACtBH,KAAK2hD,oCACL3hD,KAAK4hD,sBAEL5hD,KAAKmiD,gBACLniD,KAAKmiD,iBAEP,QACF,CAGA,GAAIniD,KAAK4iD,0CAA2C,CAClD5iD,KAAKyhD,2BAA2BT,GAChC,QACF,CAMA,GAHAhhD,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SAEF,MACF,KAAKtC,GACL,KA9nCW,GA+nCX,KA9nCW,GA+nCX,KA9nCW,GA+nCX,KA9nCW,GA+nCX,KA9nCW,GA+nCX,KA9nCW,GA+nCX,KA9nCW,GA+nCX,KA9nCW,GA+nCX,KA9nCW,GA+nCT,GAAIl/C,KAAK0iD,uCAAwC,CAC/C1iD,KAAKyhD,2BAA2BT,GAEG,IAA/BhhD,KAAKggD,eAAe7/C,SACtBH,KAAK2hD,oCACL3hD,KAAK4hD,sBAEL5hD,KAAKmiD,gBACLniD,KAAKmiD,iBAEP,QACF,CAmBA,GAhBIniD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAIH5hD,KAAKojD,6CACPpjD,KAAKqjD,8BAELrjD,KAAK+hD,uBAIP/hD,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,0BAA4BxhD,KAAKsjD,yBACxC,SAIF,GAAItjD,KAAKujD,oCAAqC,CAC5CvjD,KAAK6hD,eA7qCA,IA+qCL7hD,KAAK+hD,sBACL,QACF,CAMA,GAHA/hD,KAAK6hD,eAprCE,IAurCH7hD,KAAKoiD,yBACP,SACSpiD,KAAKwjD,qDAEdxjD,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,sBACL/hD,KAAK+hD,uBAEP,MACF,KA3tCQ,EA6tCN,GAAI/hD,KAAKwhD,yBAA0B,CACjCxhD,KAAK+/C,aAAeiB,EACpB,QACF,CAEAhhD,KAAKyhD,2BAA2BT,GAChChhD,KAAK6hD,eAAenjC,GACpB,MACF,KAtuCM,EA2uCJ,GAHA1e,KAAK+/C,aAAeiB,EAGhBhhD,KAAKwhD,yBACP,SAIFxhD,KAAK6hD,eAAenjC,GACpB1e,KAAKgiD,qBAAqB9C,IAC1B,MACF,KA/uCQ,GAivCN,GAAIl/C,KAAKkiD,0CAA2C,CAElDliD,KAAK2hD,oCACL3hD,KAAK4hD,sBAGL5hD,KAAK+/C,aAAeiB,EAGpBhhD,KAAKmiD,gBACL,QACF,CAAA,GAAWniD,KAAKwhD,yBAA0B,CACxCxhD,KAAK+/C,aAAeiB,EACpB,QACF,CACA,MACF,KAlwCmB,GAqwCjB,GAAIhhD,KAAKkiD,0CAA2C,CAElDliD,KAAK2hD,oCACL3hD,KAAK4hD,sBAGL5hD,KAAK+/C,aAAeiB,EAGpBhhD,KAAKmiD,gBACL,QACF,CAGAniD,KAAK6hD,eAAenjC,GACpB1e,KAAKyhD,2BAruCmB,MAsuCxB,MACF,KApxCW,GAuxCT,GAAIzhD,KAAKwhD,yBAA0B,CACjCxhD,KAAK+/C,aAAeiB,EACpB,QACF,CAUA,GAPIhhD,KAAK0hD,uBACP1hD,KAAK2hD,oCACL3hD,KAAK4hD,uBAIP5hD,KAAK6hD,eAAenjC,GAChB1e,KAAKyjD,kDAEP,IAAA,IAAS9lD,EAAI,EAAGA,EAAI,EAAGA,IAErBqC,KAAK+hD,sBAKT/hD,KAAKgiD,qBAAqB9C,IAC1B,MACF,QACE,MAAM,IAAIvsC,MAAM+wC,GAAwBtC,EAAY,sBAAsB9Y,OAAO5pB,EAAO,uBAAuB1Z,KAAKo8C,EAAWJ,EAAa,MAIhJ,GAh0CQ,IAg0CJtiC,EACF,KAEJ,CACF,GAGC,CACDzf,IAAK,eACLkE,MAAO,WACL,OAAOnD,KAAK+/C,YAAc//C,KAAK2jD,8BACjC,KAEK9D,CACT,CAjsCyB,GE3JlB,MAAM+D,GAIX,WAAApkD,GAHQqkD,EAAA7jD,KAAA,SACA6jD,EAAA7jD,KAAA,qBAA6B,IAGnCA,KAAK8jD,MAAQ,IAAIjE,EACnB,CAKA,WAAAkE,CAAY3zC,GACVpQ,KAAK8jD,MAAME,aAAa5zC,EAC1B,CAKA,eAAA6zC,GACE,OAAOjkD,KAAK8jD,MAAMI,cACpB,CASA,YAAAC,CAAaC,GACX,IACE,MAAMC,EAAerkD,KAAKikD,kBACpBzpC,EAAS9L,KAAKgF,MAAM2wC,GAE1B,GAAI7pC,GAA4B,iBAAXA,GAAuB4pC,KAAa5pC,EAAQ,CAC/D,MAAMrX,EAAQqX,EAAO4pC,GACA,iBAAVjhD,IAEK,KAAVA,GAA4C,KAA5BnD,KAAKskD,qBACvBtkD,KAAKskD,mBAAqBnhD,GAGhC,CACF,CAAA,MAEA,CAEA,OAAOnD,KAAKskD,kBACd,CAKA,KAAAC,GACEvkD,KAAK8jD,MAAQ,IAAIjE,GACjB7/C,KAAKskD,mBAAqB,EAC5B,EAUK,MCnCDE,GAAqC,CACzC/tB,eAAgB,uBAChBxiB,UAAW,GACXihB,MALwB,sCAOxBjN,UAAW5gB,GAAOC,SAMdW,GAAqB9E,IACzB,MAAM4E,EAAU5E,EAAM6E,OACtB,IALsB,CAAC7E,GACvB,qCAAqCjB,KAAKiB,GAIrCshD,CAAgB18C,GACnB,OAAOy8C,GAAev8B,UAExB,GAAuB,IAAnBlgB,EAAQ5H,OAAc,CACxB,MAAMtC,EAAIkK,EAAQ,GACZrJ,EAAIqJ,EAAQ,GACZzG,EAAIyG,EAAQ,GAClB,MAAO,IAAIlK,IAAIA,IAAIa,IAAIA,IAAI4C,IAAIA,IAAIiB,aACrC,CACA,OAAOwF,EAAQxF,eAGXmiD,GAAgB,CAACC,EAAkBC,KACvC,MACMhiC,EADa3a,GAAkB08C,GACdniD,MAAM,GACvBqiD,EAAahgC,GAA0B3c,SAAS0a,EAAIpgB,MAAMqiB,EAAOA,EAAQ,GAAI,IAE7EigC,EAAUC,GACDA,GAAW,EAAIH,GACxBI,EAASD,IAA4Bt/B,OAH5BtiB,EAGkC4hD,EAHRpuC,KAAK4C,IAAI,EAAG5C,KAAK+O,IAAI,IAAK/O,KAAKsuC,MAAM9hD,MAGpB6K,SAAS,IAAI2C,SAAS,EAAG,KAHrE,IAACxN,GAKTtF,EAAIinD,EAAOD,EAAU,IACrBnmD,EAAIomD,EAAOD,EAAU,IACrBvjD,EAAIwjD,EAAOD,EAAU,IAE3B,MAAO,IAAIG,EAAMnnD,KAAKmnD,EAAMtmD,KAAKsmD,EAAM1jD,MA2BnC4jD,GAAmB,qBACnBC,GAAqB,uBACrBl4B,GAAiB,mBACjBm4B,GAAyB,mCAUzBC,GAAyB,CAAC79C,EAAcimB,KAC5C,IAAIK,EAA4B,GAChC,GAA4B,oBAAjBhH,aAA8B,CACvC,MAAMqH,EAAQrH,aAAajE,QAAQqiC,IACnC,GAAI/2B,EACF,IAAML,EAAWpf,KAAKgF,MAAMya,EAAQ,CAAA,MAAuB,CAE/D,CACwB,IAApBL,EAAS3tB,SACX2tB,EAAWN,MAEb,MAAM/Q,EAAKqR,EAAShe,OAAO,CAAC5R,EAAGW,IAAM8X,KAAK4C,IAAIrb,EAAGW,EAAE4d,IAAK,GAAK,EAM7D,OALAqR,EAASttB,KAAK,CAAEic,GAAAA,EAAIjV,OAAMimB,WACE,oBAAjB3G,eACTA,aAAa/C,QAAQmhC,GAAkBx2C,KAAKC,UAAUmf,IACtDhH,aAAa/C,QAAQohC,GAAoB1uC,KAAKC,MAAM1I,aAE/CyO,GAGH6oC,GAAsB,CAAC7oC,EAAYjV,KACvC,GAA4B,oBAAjBsf,aAA8B,OACzC,MAAMqH,EAAQrH,aAAajE,QAAQqiC,IACnC,GAAK/2B,EACL,IACE,MACMo3B,EADW72C,KAAKgF,MAAMya,GACHzoB,IAAK7G,GAAsBA,EAAE4d,KAAOA,EAAK,IAAK5d,EAAG2I,QAAS3I,GACnFioB,aAAa/C,QAAQmhC,GAAkBx2C,KAAKC,UAAU42C,IACtDz+B,aAAa/C,QAAQohC,GAAoB1uC,KAAKC,MAAM1I,WACtD,CAAA,MAAuB,GAGnBw3C,GAAc,EAAGx3B,aAErB,MAAOy3B,EAAQC,GAAax3B,GAAS,IACP,oBAAjBpH,cAC2C,SAA7CA,aAAajE,QAAQ,sBAKzBzY,EAAYu7C,GAAiBz3B,IAAS,IACtC/jB,EAAaokB,GAAkBL,IAAS,IACxC03B,EAAcC,GAAmB33B,IAAS,IAC1C43B,EAAwBC,GAA6B73B,GAAS,IACvC,oBAAjBpH,cAG6C,SAAjDA,aAAajE,QAAQuiC,MAEvB96C,EAAgB07C,GAAqB93B,GAC1Cd,IAEItY,EAAoBgxC,IAA2BL,EAE/C71B,EAAcH,GAA6B,MAC3CI,EAAYJ,GAA2B,MACvCK,EAAiBL,GAAmB,IACpCw2B,EAAsBx2B,GAAgC,MACtDy2B,EAAkBz2B,GAAsB,MACxCS,EAAkBT,GAAsB,MACxCU,EAAiBV,GAAsB,MACvCW,EAAkBX,GAA4B,MAC9CC,EAAiBD,IAAO,GACxB02B,EAAkB12B,IAAO,GACzB22B,EAA0B32B,IAAO,GACjC42B,EAAoB52B,GAAsB,MAGhD+B,GAAU,KACR,GAAI1c,EAEF,YADA6wC,GAAc,GAGhB,GAAIF,EAAQ,OACZ,GAA4B,oBAAjB3+B,cAA+E,SAA/CA,aAAajE,QAAQ,sBAAkC,OAElG8iC,GAAc,GACd,MAAMW,EAAQ5/C,WAAW,KACvBi/C,GAAc,GACc,oBAAjB7+B,cACTA,aAAa/C,QAAQ,qBAAsB,SAE5C,KACH,MAAO,IAAM5c,aAAam/C,IACzB,CAACb,EAAQ3wC,IAEZ,MAAMyxC,EAAoB,KACQ,OAA5BL,EAAgBvgD,UAClBwB,aAAa++C,EAAgBvgD,SAC7BugD,EAAgBvgD,QAAU,OAIxB6gD,EAAmB,KACQ,OAA3Br2B,EAAexqB,UACjBiN,cAAcud,EAAexqB,SAC7BwqB,EAAexqB,QAAU,MAEvByqB,EAAgBzqB,UAClByqB,EAAgBzqB,QAAQwS,QAAQia,MAAM,QACtChC,EAAgBzqB,QAAU,MAExBkqB,EAAUlqB,UACZkqB,EAAUlqB,QAAQ2sB,YAAY7sB,QAAS3G,GAAMA,EAAE0zB,QAC/C3C,EAAUlqB,QAAU,MAEtBuqB,EAAgBvqB,QAAU,MAGtB8gD,EAAsBn4C,MAAOmD,EAAY0F,KAC7C,IAAK6W,EAAO/Z,UAAW,OACvB,MAAMif,EAAWzhB,EAAK1S,MAAQ,aACxB2nD,EAAMxzB,EAASliB,SAAS,OAAS,MAAQkiB,EAASliB,SAAS,OAAS,MAAQ,OAC5EgD,EAAO,IAAIof,KAAK,CAAC3hB,GAAO,SAASi1C,IAAO,CAAE3nD,KAAMm0B,IAEhDhf,EACoB,oBAAjB4S,aAA+BA,aAAajE,QAAQoK,IAAkB,KACzEoG,EAAc3Q,KAAiB/I,QAC/BgtC,EAAS,IAAI/C,GACnByC,EAAkB1gD,QAAU,KAC5BkgD,GAAgB,GAChBG,EAAkB,gBAClBG,EAAgBxgD,SAAU,EAC1BsK,QAAQsC,KAAK,oDAAoD4E,KAEjE,IACE,MAAM0c,E/MiWmB,EAC7BvmB,EACAwmB,EACA7f,EACAC,EACA8Z,EAMA+F,KAEA,IACIE,EADAlf,GAAY,EAEZmf,EAAiC,KAyJrC,MAAO,CACL1B,KAAM,KACJzd,GAAY,EACRkf,GACFA,EAAaG,SAAShC,MAAM,QAE1B8B,GAAgBA,EAAajc,YAAchB,UAAUiB,MACvDgc,EAAa/b,SAGjB3C,KAjKkB,IAAIjP,QAAc+H,MAAO7H,EAAS0L,yBACpD,IAEE,GAAI4C,SAAkBtO,IACtB,MAAM4tB,QAAkBtgB,GAAgBzG,EAASwmB,EAAW7f,EAAWC,EAAW,MAE5EogB,EAAmBD,EAAUE,WAC7BC,EAAWH,EAAU7sB,KAQ3B,GANA,OAAA4N,EAAA2e,EAAOU,kBAAPrf,EAAApQ,KAAA+uB,EAAyB,CACvBQ,WAAYD,EACZI,UAAWF,IAITzf,SAAkBtO,IAEtB,MAAMmgD,EAAc,IAAIvyC,SACxBuyC,EAAYtyC,OAAO,aAAcL,GACjC2yC,EAAYtyC,OAAO,aAAcggB,GACjCsyB,EAAYtyC,OAAO,YAAakgB,GAChCoyB,EAAYtyC,OAAO,QAAS0Z,EAAOkH,OAC/BlH,EAAOqF,aAAauzB,EAAYtyC,OAAO,eAAgB0Z,EAAOqF,aAClEuzB,EAAYtyC,OAAO,qBAAsB/S,OAAO4M,QAAQ6f,EAAOlZ,qBAE/D,MAAM+xC,QAAoBtyC,MAAM,GAAGlH,GAAiBC,cAAqB,CACvEkH,OAAQ,OACRC,KAAMmyC,IAGR,IAAKC,EAAYnyC,GACf,MAAM,IAAI/B,YAAYtE,GAAew4C,IAIvC,GADA5yB,EAAe,OAAAjL,EAAA69B,EAAYpyC,WAAZ,EAAAuU,EAAkB3T,aAC5B4e,EAAc,MAAM,IAAIthB,MAAM,qCAEnC,MAAM2C,EAAU,IAAIC,YACpB,IA2DI+gB,EA3DA/lB,EAAS,GACTsE,EAAgB,GAEpB,MACME,GADO,CAEX,MAAMS,KAAEA,EAAArS,MAAMA,SAAgB8wB,EAAaxe,OAC3C,GAAID,EAAM,MAEVjF,GAAU+E,EAAQI,OAAOvS,EAAO,CAAEwS,QAAQ,IAC1C,MAAMlG,EAASc,EAAO+C,MAAM,cAC5B/C,EAASd,EAAOoG,OAAS,GAEzB,IAAA,MAAWzF,KAASX,EAAQ,CAC1B,MAAM1K,EAAOoO,GAAqB/C,GAClC,GAAKrL,EAGL,GAAkB,YAAdA,EAAKhG,MAAsBgG,EAAKwvB,WAClC,OAAAtL,EAAA8K,EAAOU,kBAAPxL,EAAAjkB,KAAA+uB,EAAyB,CACvBQ,WAAYxvB,EAAKwvB,WACjBG,UAAWL,EAAU7sB,YAKzB,GAAkB,cAAdzC,EAAKhG,MAA8C,iBAAfgG,EAAKihB,MAK7C,GAAkB,aAAdjhB,EAAKhG,MAMT,GAAkB,UAAdgG,EAAKhG,KACP,MAAM,IAAI4T,MAAM5N,EAAKmJ,OAAS,kBAN9B2G,EAAgB9P,EAAK+hD,gBAAkB,GACvC,OAAArxB,EAAA1B,EAAO8B,kBAAPJ,EAAAzwB,KAAA+uB,EAAyBlf,QANzB,OAAAygB,EAAAvB,EAAOmC,4BAAmBnxB,EAAKihB,MAanC,CACF,CASA,GANIiO,IACFA,EAAa/d,cACb+d,OAAe,GAIblf,IAAcF,EAEhB,OAAOpO,IAETwJ,QAAQsC,KACN,gDAAgDyb,EAAOtW,sBAAsBtK,yBAAuCe,QAAQ6f,EAAOlZ,sBAIrI,OAAA8gB,EAAA7B,EAAOnkB,qBAAPgmB,EAAA5wB,KAAA+uB,EAA4B,aAE5B,IACEuC,QAAkBngB,GAChB7I,EACAuH,EACA1G,QAAQ6f,EAAOlZ,mBACf,IAAMC,EACLiC,IACCkd,EAAeld,GAGrB,OAASuf,GACP,GAAIxhB,EACF,OAAOtO,IAETwJ,QAAQ0D,KACN,+CAA+C4iB,aAAmB5jB,MAAQ4jB,EAAQ3nB,QAAUrN,OAAOg1B,MAErGD,QAAkB1hB,GAChBtH,EACAuH,EACA1G,QAAQ6f,EAAOlZ,mBACf,IAAMC,EACLI,IACC8e,EAAe9e,GAGrB,EAEKJ,GAAauhB,EAAU7mB,OAAOtP,OAAS,QACpCqP,GACJ8mB,EAAU7mB,OACV6mB,EAAU5mB,SACV4mB,EAAU3mB,WACVokB,EAAOnkB,oBAGT,OAAAkmB,EAAA/B,EAAOnkB,qBAAPkmB,EAAA9wB,KAAA+uB,EAA4B,QAG9BttB,GACF,OAASqM,GACP,MAAM4gB,EAAM5gB,aAAeH,MAAQG,EAAIlE,QAAUrN,OAAOuR,GACxD,OAAAmjB,EAAAlC,EAAOrhB,UAAPujB,EAAAjxB,KAAA+uB,EAAiBL,GACjBvhB,EAAOW,EACT,CAAA,QACE,MAAAmhB,GAAAA,EAAcG,SAAShC,MAAM,QACzB8B,GAAgBA,EAAajc,YAAchB,UAAUiB,MACvDgc,EAAa/b,QAEf+b,EAAe,IACjB,M+MtgBqB6yB,CACjB/4B,EAAOyI,eACPziB,EACAga,EAAO/Z,UACPC,EACA,CACEghB,MAAOlH,EAAOkH,MACdxd,MAAO,SACP2b,cACAve,kBAAmBqC,GAErB,CACEsd,gBAAkB1vB,UACZA,EAAKwvB,YAAsC,oBAAjBzN,cAC5BA,aAAa/C,QAAQkJ,GAAgBloB,EAAKwvB,aAExC,OAAAnf,EAAArQ,EAAK2vB,gBAAL,EAAAtf,EAAgBpN,SAClBq9C,GAAuBtgD,EAAK2vB,WAAW,IAG3CwB,iBAAmBlQ,IACjB2gC,EAAO5C,YAAY/9B,GACnB,MAAMxe,EDhMc,CAACm/C,GACxBA,EAAOxC,aAAa,SC+LJ6C,CAAiBL,GAC1Bn/C,IACF++C,IACAP,EAAkBx+C,GACgB,OAA9B6+C,EAAkB1gD,QACpB0gD,EAAkB1gD,QAAU0/C,GAAuB79C,GAAM,GAEzD89C,GAAoBe,EAAkB1gD,QAAS6B,KAIrDquB,gBAAkBhhB,IAChB,MAAMigB,E5MtHqB,CACrCjgB,IAEA,MAAM2F,EAASiK,GAAmB5P,GAClC,MAAO,CACLoyC,YAAazsC,EAAO2K,OAAStQ,EAC7BuQ,UAAW5K,EAAO4K,Y4MgHO8hC,CAAwBryC,GACnCsyC,EAAYryB,EAASmyB,aAAepyC,EACR,OAA9BwxC,EAAkB1gD,QACpB2/C,GAAoBe,EAAkB1gD,QAASwhD,GAE/C9B,GAAuB8B,GAAW,GAEpCnB,EAAkBmB,GAGdryB,EAAS1P,UAAUjlB,OAAS,G7M+iBZmO,OAAO8W,IACrC,IAAA,MAAWgiC,KAAYhiC,EACrB,GAAsB,aAAlBgiC,EAAS/hC,KAKb,GAAsB,WAAlB+hC,EAAS/hC,KAKb,GAAsB,mBAAlB+hC,EAAS/hC,MAKb,GAAsB,aAAlB+hC,EAAS/hC,YACsBgG,GAAgB+7B,GAE/C,iBAPIx6B,gBALAtC,GAAc88B,cALd38B,GAAgB28B,I6MjjBTC,CAAiBvyB,EAAS1P,WAAWgN,MAAOtf,IAC/C7C,QAAQ/B,MAAM,wBAAyB4E,MAI7ClD,mBAAqBrM,IACnB0M,QAAQsC,KAAK,uBAAuBhP,wBAA4B4T,MAElEzE,QAAUxE,IACR+B,QAAQ/B,MAAM,gCAAgCA,KAC9C83C,EAAkB,SAIxBC,EAAoBtgD,QAAUkuB,QACxBA,EAAWre,IACnB,OAAStH,IACP+B,QAAQ/B,MAAM,+BAAgCA,IAC9C83C,EAAkB,KACpB,CAAA,QACEC,EAAoBtgD,QAAU,KAC9BkgD,GAAgB,GAChBM,EAAgBxgD,SAAU,EAC1BsK,QAAQsC,KAAK,sDAAsD4E,IACrE,GAGImwC,EAAuBh5C,UAC3B,IAAIohB,EAAe/pB,UAAWwgD,EAAgBxgD,QAA9C,CACAygD,EAAwBzgD,SAAU,EAClCqgD,EAAkB,eAClB/1C,QAAQsC,KAAK,8CAA8CuC,KAE3D,IACE,MAAMa,QAAe8hB,UAAUC,aAAaC,aAAa,CAAE7jB,OAAO,IAClE+b,EAAUlqB,QAAUgQ,EAEpB,MAAM4xC,EAA6B,CAAEzvB,mBAAoB,MACzD,IAAA,MAAWE,IAAQ,CAAC,wBAAyB,yBAA0B,cACrE,GAAIJ,cAAcK,gBAAgBD,GAAO,CAAEuvB,EAAK73C,SAAWsoB,EAAM,KAAO,CAG1E,MAAMtF,EAAW,IAAIkF,cAAcjiB,EAAQ4xC,GAC3C33B,EAAYjqB,QAAU+sB,EACtB5C,EAAenqB,QAAU,GAEzB+sB,EAASC,gBAAmB70B,IACtBA,EAAEiH,KAAKgO,KAAO,KAAkBpN,QAAQnF,KAAK1C,EAAEiH,OAGrD2tB,EAASE,OAAStkB,UAChBigB,GAAe,GACfmB,EAAe/pB,SAAU,EACzB6gD,IAEA,MAAM/0C,EAAO,IAAIC,KAAKoe,EAAenqB,QAAS,CAC5C5G,KAAM2zB,EAAShjB,UAAY,eAE7BogB,EAAenqB,QAAU,GACP,IAAd8L,EAAKsB,WAKH0zC,EAAoBh1C,EAAMqD,GAJ9BkxC,EAAkB,OAQtB,MAAM7tB,EACJ9lB,OAAO+lB,cACN/lB,OAAiEgmB,mBAEpE,GAAIF,EAAU,CACZ,MAAMqvB,EAAM,IAAIrvB,EAChB/H,EAAgBzqB,QAAU6hD,EAC1B,MAAMlvB,EAAWkvB,EAAIjvB,iBACrBD,EAASE,QAAU,IACJgvB,EAAI9uB,wBAAwB/iB,GACpCgjB,QAAQL,GACf,MAAMM,EAAY,IAAItpB,WAAWgpB,EAASO,mBAC1C,IAAIC,GAAiB,EAErB3I,EAAexqB,QAAU0M,OAAOC,YAAY,KAC1C,IAAKod,EAAe/pB,SAA8B,aAAnB+sB,EAASnvB,MAEtC,YADAijD,IAGFluB,EAASS,qBAAqBH,GAC9B,IAAII,EAAM,EACV,IAAA,MAAW56B,KAAKw6B,EAAWI,GAAO56B,EAGlC,GAFe46B,EAAMJ,EAAUz4B,OAAS,IA/Q5B,IAkRV,OAAgC,OAA5B+vB,EAAgBvqB,aAClBuqB,EAAgBvqB,QAAU8Q,KAAKC,YAG7BoiB,GAAkBriB,KAAKC,MAAQwZ,EAAgBvqB,QArRnC,KAsRd+sB,EAASF,QAIbsG,GAAiB,EACjB5I,EAAgBvqB,QAAU,MACzB,GACL,CAEA+sB,EAAS7N,MAAM,KACf0J,GAAe,GACfmB,EAAe/pB,SAAU,CAC3B,OAASuI,IACP,MAAMU,EAAUV,cAAiByE,MAAQzE,GAAMU,QAAUrN,OAAO2M,IAChE+B,QAAQ/B,MAAM,mCAAmCU,KAC7CA,EAAQrM,cAAcyO,SAAS,gBACjCo1C,EAAwBzgD,SAAU,GAEpCqgD,EAAkB,MAClBQ,IACAj4B,GAAe,GACfmB,EAAe/pB,SAAU,CAC3B,CA5FuD,GA+FnD8hD,EAAkB,KACtB,MAAM/0B,EAAW9C,EAAYjqB,QACzB+sB,GAA+B,aAAnBA,EAASnvB,OAEvBmvB,EAASE,OAAS,KAChBrE,GAAe,GACfmB,EAAe/pB,SAAU,EACzB6gD,IACAR,EAAkB,OAEpBtzB,EAASF,SAETjE,GAAe,GACfmB,EAAe/pB,SAAU,EACzB6gD,IACAR,EAAkB,QAIhB0B,EAAe,KACnB,MAAMC,GAAYlC,EACdkC,IAEE1B,EAAoBtgD,SACtBsgD,EAAoBtgD,QAAQ6sB,OAE9Bi1B,IACA5B,GAAgB,GAChBM,EAAgBxgD,SAAU,GAE5B+/C,EAAUiC,GACVhC,GAAc,GACc,oBAAjB7+B,cACTA,aAAa/C,QAAQ,mBAAoBxiB,OAAOomD,KA4EpD,OAnDAn2B,GAAU,KACR,MAAMo2B,EAAgB9pD,IACN,WAAVA,EAAEmB,KAAoBwmD,IACxBC,GAAU,GACkB,oBAAjB5+B,cACTA,aAAa/C,QAAQ,mBAAoB,WAM/C,OADArf,SAASjC,iBAAiB,UAAWmlD,GAC9B,IAAMljD,SAAShC,oBAAoB,UAAWklD,IACpD,CAACnC,IAGJj0B,GACE,IAAM,KACJ+0B,IACIN,EAAoBtgD,UACtBsgD,EAAoBtgD,QAAQ6sB,OAC5ByzB,EAAoBtgD,QAAU,MAEhC8hD,KAEF,IAIFj2B,GAAU,KACR,IAAK1c,EACH,OAEF,GAAI3K,GAAey7C,GAAgBQ,EAAwBzgD,QACzD,OAEF,MAAM2gD,EAAQj0C,OAAO3L,WAAW,MAE5BoO,GACC4a,EAAe/pB,SACfwgD,EAAgBxgD,SAChBygD,EAAwBzgD,UAEzBsK,QAAQsC,KAAK,6CACR+0C,MAEN,KACH,MAAO,KACLj1C,OAAOlL,aAAam/C,KAErB,CAACxxC,EAAmB3K,EAAay7C,IAGlCt5C,EAAAM,EAAA,CACG9M,SAAA,EAAC2lD,GACAl8C,EAACQ,GAAA,CACCC,WAAYs9C,EACZr9C,kBAAmBw9C,EACnBv9C,sBA9EwB,KAC9B,MAAMiqC,GAAQ2R,EACdC,EAA0B5R,GACE,oBAAjBrtB,cACTA,aAAa/C,QAAQqhC,GAAwB7jD,OAAO4yC,IAEtDlkC,QAAQsC,KAAK,8CAA8C4hC,MAyErDhqC,cACAC,aACAC,cAAe,KACbs7C,GAAc,GACd+B,KAEFj9C,qBAAsBq7C,EACtBx7C,iBACAC,eAAgB,KACdg8C,IACAmB,KAEFl9C,eAAgB,KACdw7C,EAAkB,MAClBO,OAILd,GACCl8C,EAACwkB,GAAA,CACC5hB,QA1FY,KAClBu5C,GAAU,GACLp7C,GACH07C,EAAkB54B,IAEQ,oBAAjBtG,cACTA,aAAa/C,QAAQ,mBAAoB,SAE3C9T,QAAQsC,KAAK,8BAmFPyb,SACAlZ,0BA8CV,IAAI+yC,GAAsC,KACtCC,GAAsC,KACtCC,IAAmB,EACnBC,IAAgB,EAMb,MAAMC,GAAO,CAAC1wB,EAAwB,MAC3C,GAAIywB,GAEF,YADA/3C,QAAQ0D,KAAK,gCAIf,MAAMu0C,EA5gBqB,CAC3B3wB,IAEA,MAAM7f,EAA0B,WAAlB6f,EAAQ7f,MAAqB,SAAW,MACtD,MAAO,CACL+e,eAAgBc,EAAQd,gBAAkB+tB,GAAe/tB,eACzDxiB,UAAWsjB,EAAQtjB,WAAauwC,GAAevwC,UAC/CihB,MAAOqC,EAAQrC,OAASsvB,GAAetvB,MACvCxd,QACAuQ,UAAWhgB,GAAkBsvB,EAAQtP,WAAau8B,GAAev8B,aAmgB7CkgC,CAAqB5wB,GAc3C,GAjiBiB,CAACtP,IAClB,MAAMxa,EAAaxF,GAAkBggB,GACrC5gB,GAAOC,QAAUmG,EACjBpG,GAAOE,aAAem9C,GAAcj3C,GAAY,KAChDpG,GAAOK,YAAc+F,GAghBrB26C,CAAWF,EAAcjgC,WAGrBsP,EAAQ8wB,aACVR,GAAkBnjD,SAAS6iB,eAAegQ,EAAQ8wB,aAClDN,IAAmB,IAEnBF,GAAkBnjD,SAASsjB,cAAc,OACzC6/B,GAAgBprC,GAAK,kBACrB/X,SAAS+P,KAAK4T,YAAYw/B,IAC1BE,IAAmB,IAGhBF,GAEH,YADA53C,QAAQ/B,MAAM,8BAIhB,MAAMo6C,EAAaT,GAAgBS,YAAcT,GAAgBU,aAAa,CAAEpxC,KAAM,SACtFmxC,EAAWE,kBAEX,MAAMpmD,EAAQsC,SAASsjB,cAAc,SACrC5lB,EAAM6a,YA7Ea,6zBA+EnB,MAAMwrC,EAAY/jD,SAASsjB,cAAc,OACzCygC,EAAUhsC,GAAK,qBAEf6rC,EAAWh0C,OAAOlS,EAAOqmD,GACzBX,GAAkBW,EAGlBxlD,IAAQuiD,GAAA,CAAYx3B,OAAQk6B,IAAmBO,GAC/CT,IAAgB,EAEhB/3C,QAAQC,IAAI,mCAMDw4C,GAAU,KAChBV,KAIDF,KACF7kD,EAAO,KAAM6kD,IACbA,GAAkB,MAGhBD,IAAmBE,IACrBrjD,SAAS+P,KAAK7V,YAAYipD,IAG5BA,GAAkB,KAClBE,IAAmB,EACnBC,IAAgB,EAChB/3C,QAAQC,IAAI,qBAMDy4C,GAAU,IAAMX,GAEvBY,GAAQ,CACZX,QACAS,WACAC,YAGoB,oBAAXt2C,SACRA,OAA6Cu2C,MAAQA","x_google_ignoreList":[0,1,2,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214]}
|