sykpcomposer 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/lexical/Lexical.dev.mjs","../node_modules/lexical/Lexical.prod.mjs","../node_modules/lexical/Lexical.mjs","../node_modules/@lexical/react/LexicalComposerContext.prod.mjs","../node_modules/@lexical/react/LexicalComposer.prod.mjs","../node_modules/@lexical/react/useLexicalEditable.prod.mjs","../node_modules/@lexical/text/LexicalText.dev.mjs","../node_modules/@lexical/text/LexicalText.prod.mjs","../node_modules/@lexical/text/LexicalText.mjs","../node_modules/@lexical/selection/LexicalSelection.dev.mjs","../node_modules/@lexical/selection/LexicalSelection.prod.mjs","../node_modules/@lexical/selection/LexicalSelection.mjs","../node_modules/@lexical/utils/LexicalUtils.dev.mjs","../node_modules/@lexical/utils/LexicalUtils.prod.mjs","../node_modules/@lexical/utils/LexicalUtils.mjs","../node_modules/@lexical/dragon/LexicalDragon.dev.mjs","../node_modules/@lexical/dragon/LexicalDragon.prod.mjs","../node_modules/@lexical/dragon/LexicalDragon.mjs","../node_modules/@lexical/html/LexicalHtml.dev.mjs","../node_modules/@lexical/html/LexicalHtml.prod.mjs","../node_modules/@lexical/html/LexicalHtml.mjs","../node_modules/@lexical/clipboard/LexicalClipboard.dev.mjs","../node_modules/@lexical/clipboard/LexicalClipboard.prod.mjs","../node_modules/@lexical/clipboard/LexicalClipboard.mjs","../node_modules/@lexical/plain-text/LexicalPlainText.dev.mjs","../node_modules/@lexical/plain-text/LexicalPlainText.prod.mjs","../node_modules/@lexical/plain-text/LexicalPlainText.mjs","../node_modules/@lexical/react/LexicalPlainTextPlugin.prod.mjs","../node_modules/@lexical/react/LexicalContentEditable.prod.mjs","../node_modules/@lexical/history/LexicalHistory.dev.mjs","../node_modules/@lexical/history/LexicalHistory.prod.mjs","../node_modules/@lexical/history/LexicalHistory.mjs","../node_modules/@lexical/react/LexicalHistoryPlugin.prod.mjs","../node_modules/@lexical/react/LexicalOnChangePlugin.prod.mjs","../node_modules/@lexical/react/LexicalErrorBoundary.prod.mjs","../src/components/Editor.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction createCommand(type) {\n return {\n type\n } ;\n}\nconst SELECTION_CHANGE_COMMAND = createCommand('SELECTION_CHANGE_COMMAND');\nconst SELECTION_INSERT_CLIPBOARD_NODES_COMMAND = createCommand('SELECTION_INSERT_CLIPBOARD_NODES_COMMAND');\nconst CLICK_COMMAND = createCommand('CLICK_COMMAND');\nconst DELETE_CHARACTER_COMMAND = createCommand('DELETE_CHARACTER_COMMAND');\nconst INSERT_LINE_BREAK_COMMAND = createCommand('INSERT_LINE_BREAK_COMMAND');\nconst INSERT_PARAGRAPH_COMMAND = createCommand('INSERT_PARAGRAPH_COMMAND');\nconst CONTROLLED_TEXT_INSERTION_COMMAND = createCommand('CONTROLLED_TEXT_INSERTION_COMMAND');\nconst PASTE_COMMAND = createCommand('PASTE_COMMAND');\nconst REMOVE_TEXT_COMMAND = createCommand('REMOVE_TEXT_COMMAND');\nconst DELETE_WORD_COMMAND = createCommand('DELETE_WORD_COMMAND');\nconst DELETE_LINE_COMMAND = createCommand('DELETE_LINE_COMMAND');\nconst FORMAT_TEXT_COMMAND = createCommand('FORMAT_TEXT_COMMAND');\nconst UNDO_COMMAND = createCommand('UNDO_COMMAND');\nconst REDO_COMMAND = createCommand('REDO_COMMAND');\nconst KEY_DOWN_COMMAND = createCommand('KEYDOWN_COMMAND');\nconst KEY_ARROW_RIGHT_COMMAND = createCommand('KEY_ARROW_RIGHT_COMMAND');\nconst MOVE_TO_END = createCommand('MOVE_TO_END');\nconst KEY_ARROW_LEFT_COMMAND = createCommand('KEY_ARROW_LEFT_COMMAND');\nconst MOVE_TO_START = createCommand('MOVE_TO_START');\nconst KEY_ARROW_UP_COMMAND = createCommand('KEY_ARROW_UP_COMMAND');\nconst KEY_ARROW_DOWN_COMMAND = createCommand('KEY_ARROW_DOWN_COMMAND');\nconst KEY_ENTER_COMMAND = createCommand('KEY_ENTER_COMMAND');\nconst KEY_SPACE_COMMAND = createCommand('KEY_SPACE_COMMAND');\nconst KEY_BACKSPACE_COMMAND = createCommand('KEY_BACKSPACE_COMMAND');\nconst KEY_ESCAPE_COMMAND = createCommand('KEY_ESCAPE_COMMAND');\nconst KEY_DELETE_COMMAND = createCommand('KEY_DELETE_COMMAND');\nconst KEY_TAB_COMMAND = createCommand('KEY_TAB_COMMAND');\nconst INSERT_TAB_COMMAND = createCommand('INSERT_TAB_COMMAND');\nconst INDENT_CONTENT_COMMAND = createCommand('INDENT_CONTENT_COMMAND');\nconst OUTDENT_CONTENT_COMMAND = createCommand('OUTDENT_CONTENT_COMMAND');\nconst DROP_COMMAND = createCommand('DROP_COMMAND');\nconst FORMAT_ELEMENT_COMMAND = createCommand('FORMAT_ELEMENT_COMMAND');\nconst DRAGSTART_COMMAND = createCommand('DRAGSTART_COMMAND');\nconst DRAGOVER_COMMAND = createCommand('DRAGOVER_COMMAND');\nconst DRAGEND_COMMAND = createCommand('DRAGEND_COMMAND');\nconst COPY_COMMAND = createCommand('COPY_COMMAND');\nconst CUT_COMMAND = createCommand('CUT_COMMAND');\nconst SELECT_ALL_COMMAND = createCommand('SELECT_ALL_COMMAND');\nconst CLEAR_EDITOR_COMMAND = createCommand('CLEAR_EDITOR_COMMAND');\nconst CLEAR_HISTORY_COMMAND = createCommand('CLEAR_HISTORY_COMMAND');\nconst CAN_REDO_COMMAND = createCommand('CAN_REDO_COMMAND');\nconst CAN_UNDO_COMMAND = createCommand('CAN_UNDO_COMMAND');\nconst FOCUS_COMMAND = createCommand('FOCUS_COMMAND');\nconst BLUR_COMMAND = createCommand('BLUR_COMMAND');\nconst KEY_MODIFIER_COMMAND = createCommand('KEY_MODIFIER_COMMAND');\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst CAN_USE_DOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst documentMode = CAN_USE_DOM && 'documentMode' in document ? document.documentMode : null;\nconst IS_APPLE = CAN_USE_DOM && /Mac|iPod|iPhone|iPad/.test(navigator.platform);\nconst IS_FIREFOX = CAN_USE_DOM && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);\nconst CAN_USE_BEFORE_INPUT = CAN_USE_DOM && 'InputEvent' in window && !documentMode ? 'getTargetRanges' in new window.InputEvent('input') : false;\nconst IS_SAFARI = CAN_USE_DOM && /Version\\/[\\d.]+.*Safari/.test(navigator.userAgent);\nconst IS_IOS = CAN_USE_DOM && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nconst IS_ANDROID = CAN_USE_DOM && /Android/.test(navigator.userAgent);\n\n// Keep these in case we need to use them in the future.\n// export const IS_WINDOWS: boolean = CAN_USE_DOM && /Win/.test(navigator.platform);\nconst IS_CHROME = CAN_USE_DOM && /^(?=.*Chrome).*/i.test(navigator.userAgent);\n// export const canUseTextInputEvent: boolean = CAN_USE_DOM && 'TextEvent' in window && !documentMode;\n\nconst IS_ANDROID_CHROME = CAN_USE_DOM && IS_ANDROID && IS_CHROME;\nconst IS_APPLE_WEBKIT = CAN_USE_DOM && /AppleWebKit\\/[\\d.]+/.test(navigator.userAgent) && !IS_CHROME;\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n// DOM\nconst DOM_ELEMENT_TYPE = 1;\nconst DOM_TEXT_TYPE = 3;\n\n// Reconciling\nconst NO_DIRTY_NODES = 0;\nconst HAS_DIRTY_NODES = 1;\nconst FULL_RECONCILE = 2;\n\n// Text node modes\nconst IS_NORMAL = 0;\nconst IS_TOKEN = 1;\nconst IS_SEGMENTED = 2;\n// IS_INERT = 3\n\n// Text node formatting\nconst IS_BOLD = 1;\nconst IS_ITALIC = 1 << 1;\nconst IS_STRIKETHROUGH = 1 << 2;\nconst IS_UNDERLINE = 1 << 3;\nconst IS_CODE = 1 << 4;\nconst IS_SUBSCRIPT = 1 << 5;\nconst IS_SUPERSCRIPT = 1 << 6;\nconst IS_HIGHLIGHT = 1 << 7;\nconst IS_ALL_FORMATTING = IS_BOLD | IS_ITALIC | IS_STRIKETHROUGH | IS_UNDERLINE | IS_CODE | IS_SUBSCRIPT | IS_SUPERSCRIPT | IS_HIGHLIGHT;\n\n// Text node details\nconst IS_DIRECTIONLESS = 1;\nconst IS_UNMERGEABLE = 1 << 1;\n\n// Element node formatting\nconst IS_ALIGN_LEFT = 1;\nconst IS_ALIGN_CENTER = 2;\nconst IS_ALIGN_RIGHT = 3;\nconst IS_ALIGN_JUSTIFY = 4;\nconst IS_ALIGN_START = 5;\nconst IS_ALIGN_END = 6;\n\n// Reconciliation\nconst NON_BREAKING_SPACE = '\\u00A0';\nconst ZERO_WIDTH_SPACE = '\\u200b';\n\n// For iOS/Safari we use a non breaking space, otherwise the cursor appears\n// overlapping the composed text.\nconst COMPOSITION_SUFFIX = IS_SAFARI || IS_IOS || IS_APPLE_WEBKIT ? NON_BREAKING_SPACE : ZERO_WIDTH_SPACE;\nconst DOUBLE_LINE_BREAK = '\\n\\n';\n\n// For FF, we need to use a non-breaking space, or it gets composition\n// in a stuck state.\nconst COMPOSITION_START_CHAR = IS_FIREFOX ? NON_BREAKING_SPACE : COMPOSITION_SUFFIX;\nconst RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC';\nconst LTR = 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' + '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' + '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF';\n\n// eslint-disable-next-line no-misleading-character-class\nconst RTL_REGEX = new RegExp('^[^' + LTR + ']*[' + RTL + ']');\n// eslint-disable-next-line no-misleading-character-class\nconst LTR_REGEX = new RegExp('^[^' + RTL + ']*[' + LTR + ']');\nconst TEXT_TYPE_TO_FORMAT = {\n bold: IS_BOLD,\n code: IS_CODE,\n highlight: IS_HIGHLIGHT,\n italic: IS_ITALIC,\n strikethrough: IS_STRIKETHROUGH,\n subscript: IS_SUBSCRIPT,\n superscript: IS_SUPERSCRIPT,\n underline: IS_UNDERLINE\n};\nconst DETAIL_TYPE_TO_DETAIL = {\n directionless: IS_DIRECTIONLESS,\n unmergeable: IS_UNMERGEABLE\n};\nconst ELEMENT_TYPE_TO_FORMAT = {\n center: IS_ALIGN_CENTER,\n end: IS_ALIGN_END,\n justify: IS_ALIGN_JUSTIFY,\n left: IS_ALIGN_LEFT,\n right: IS_ALIGN_RIGHT,\n start: IS_ALIGN_START\n};\nconst ELEMENT_FORMAT_TO_TYPE = {\n [IS_ALIGN_CENTER]: 'center',\n [IS_ALIGN_END]: 'end',\n [IS_ALIGN_JUSTIFY]: 'justify',\n [IS_ALIGN_LEFT]: 'left',\n [IS_ALIGN_RIGHT]: 'right',\n [IS_ALIGN_START]: 'start'\n};\nconst TEXT_MODE_TO_TYPE = {\n normal: IS_NORMAL,\n segmented: IS_SEGMENTED,\n token: IS_TOKEN\n};\nconst TEXT_TYPE_TO_MODE = {\n [IS_NORMAL]: 'normal',\n [IS_SEGMENTED]: 'segmented',\n [IS_TOKEN]: 'token'\n};\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction normalizeClassNames(...classNames) {\n const rval = [];\n for (const className of classNames) {\n if (className && typeof className === 'string') {\n for (const [s] of className.matchAll(/\\S+/g)) {\n rval.push(s);\n }\n }\n }\n return rval;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// The time between a text entry event and the mutation observer firing.\nconst TEXT_MUTATION_VARIANCE = 100;\nlet isProcessingMutations = false;\nlet lastTextEntryTimeStamp = 0;\nfunction getIsProcessingMutations() {\n return isProcessingMutations;\n}\nfunction updateTimeStamp(event) {\n lastTextEntryTimeStamp = event.timeStamp;\n}\nfunction initTextEntryListener(editor) {\n if (lastTextEntryTimeStamp === 0) {\n getWindow(editor).addEventListener('textInput', updateTimeStamp, true);\n }\n}\nfunction isManagedLineBreak(dom, target, editor) {\n return (\n // @ts-expect-error: internal field\n target.__lexicalLineBreak === dom ||\n // @ts-ignore We intentionally add this to the Node.\n dom[`__lexicalKey_${editor._key}`] !== undefined\n );\n}\nfunction getLastSelection(editor) {\n return editor.getEditorState().read(() => {\n const selection = $getSelection();\n return selection !== null ? selection.clone() : null;\n });\n}\nfunction $handleTextMutation(target, node, editor) {\n const domSelection = getDOMSelection(editor._window);\n let anchorOffset = null;\n let focusOffset = null;\n if (domSelection !== null && domSelection.anchorNode === target) {\n anchorOffset = domSelection.anchorOffset;\n focusOffset = domSelection.focusOffset;\n }\n const text = target.nodeValue;\n if (text !== null) {\n $updateTextNodeFromDOMContent(node, text, anchorOffset, focusOffset, false);\n }\n}\nfunction shouldUpdateTextNodeFromMutation(selection, targetDOM, targetNode) {\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n if (anchorNode.is(targetNode) && selection.format !== anchorNode.getFormat()) {\n return false;\n }\n }\n return targetDOM.nodeType === DOM_TEXT_TYPE && targetNode.isAttached();\n}\nfunction $flushMutations$1(editor, mutations, observer) {\n isProcessingMutations = true;\n const shouldFlushTextMutations = performance.now() - lastTextEntryTimeStamp > TEXT_MUTATION_VARIANCE;\n try {\n updateEditor(editor, () => {\n const selection = $getSelection() || getLastSelection(editor);\n const badDOMTargets = new Map();\n const rootElement = editor.getRootElement();\n // We use the current editor state, as that reflects what is\n // actually \"on screen\".\n const currentEditorState = editor._editorState;\n const blockCursorElement = editor._blockCursorElement;\n let shouldRevertSelection = false;\n let possibleTextForFirefoxPaste = '';\n for (let i = 0; i < mutations.length; i++) {\n const mutation = mutations[i];\n const type = mutation.type;\n const targetDOM = mutation.target;\n let targetNode = $getNearestNodeFromDOMNode(targetDOM, currentEditorState);\n if (targetNode === null && targetDOM !== rootElement || $isDecoratorNode(targetNode)) {\n continue;\n }\n if (type === 'characterData') {\n // Text mutations are deferred and passed to mutation listeners to be\n // processed outside of the Lexical engine.\n if (shouldFlushTextMutations && $isTextNode(targetNode) && shouldUpdateTextNodeFromMutation(selection, targetDOM, targetNode)) {\n $handleTextMutation(\n // nodeType === DOM_TEXT_TYPE is a Text DOM node\n targetDOM, targetNode, editor);\n }\n } else if (type === 'childList') {\n shouldRevertSelection = true;\n // We attempt to \"undo\" any changes that have occurred outside\n // of Lexical. We want Lexical's editor state to be source of truth.\n // To the user, these will look like no-ops.\n const addedDOMs = mutation.addedNodes;\n for (let s = 0; s < addedDOMs.length; s++) {\n const addedDOM = addedDOMs[s];\n const node = $getNodeFromDOMNode(addedDOM);\n const parentDOM = addedDOM.parentNode;\n if (parentDOM != null && addedDOM !== blockCursorElement && node === null && (addedDOM.nodeName !== 'BR' || !isManagedLineBreak(addedDOM, parentDOM, editor))) {\n if (IS_FIREFOX) {\n const possibleText = addedDOM.innerText || addedDOM.nodeValue;\n if (possibleText) {\n possibleTextForFirefoxPaste += possibleText;\n }\n }\n parentDOM.removeChild(addedDOM);\n }\n }\n const removedDOMs = mutation.removedNodes;\n const removedDOMsLength = removedDOMs.length;\n if (removedDOMsLength > 0) {\n let unremovedBRs = 0;\n for (let s = 0; s < removedDOMsLength; s++) {\n const removedDOM = removedDOMs[s];\n if (removedDOM.nodeName === 'BR' && isManagedLineBreak(removedDOM, targetDOM, editor) || blockCursorElement === removedDOM) {\n targetDOM.appendChild(removedDOM);\n unremovedBRs++;\n }\n }\n if (removedDOMsLength !== unremovedBRs) {\n if (targetDOM === rootElement) {\n targetNode = internalGetRoot(currentEditorState);\n }\n badDOMTargets.set(targetDOM, targetNode);\n }\n }\n }\n }\n\n // Now we process each of the unique target nodes, attempting\n // to restore their contents back to the source of truth, which\n // is Lexical's \"current\" editor state. This is basically like\n // an internal revert on the DOM.\n if (badDOMTargets.size > 0) {\n for (const [targetDOM, targetNode] of badDOMTargets) {\n if ($isElementNode(targetNode)) {\n const childKeys = targetNode.getChildrenKeys();\n let currentDOM = targetDOM.firstChild;\n for (let s = 0; s < childKeys.length; s++) {\n const key = childKeys[s];\n const correctDOM = editor.getElementByKey(key);\n if (correctDOM === null) {\n continue;\n }\n if (currentDOM == null) {\n targetDOM.appendChild(correctDOM);\n currentDOM = correctDOM;\n } else if (currentDOM !== correctDOM) {\n targetDOM.replaceChild(correctDOM, currentDOM);\n }\n currentDOM = currentDOM.nextSibling;\n }\n } else if ($isTextNode(targetNode)) {\n targetNode.markDirty();\n }\n }\n }\n\n // Capture all the mutations made during this function. This\n // also prevents us having to process them on the next cycle\n // of onMutation, as these mutations were made by us.\n const records = observer.takeRecords();\n\n // Check for any random auto-added <br> elements, and remove them.\n // These get added by the browser when we undo the above mutations\n // and this can lead to a broken UI.\n if (records.length > 0) {\n for (let i = 0; i < records.length; i++) {\n const record = records[i];\n const addedNodes = record.addedNodes;\n const target = record.target;\n for (let s = 0; s < addedNodes.length; s++) {\n const addedDOM = addedNodes[s];\n const parentDOM = addedDOM.parentNode;\n if (parentDOM != null && addedDOM.nodeName === 'BR' && !isManagedLineBreak(addedDOM, target, editor)) {\n parentDOM.removeChild(addedDOM);\n }\n }\n }\n\n // Clear any of those removal mutations\n observer.takeRecords();\n }\n if (selection !== null) {\n if (shouldRevertSelection) {\n selection.dirty = true;\n $setSelection(selection);\n }\n if (IS_FIREFOX && isFirefoxClipboardEvents(editor)) {\n selection.insertRawText(possibleTextForFirefoxPaste);\n }\n }\n });\n } finally {\n isProcessingMutations = false;\n }\n}\nfunction $flushRootMutations(editor) {\n const observer = editor._observer;\n if (observer !== null) {\n const mutations = observer.takeRecords();\n $flushMutations$1(editor, mutations, observer);\n }\n}\nfunction initMutationObserver(editor) {\n initTextEntryListener(editor);\n editor._observer = new MutationObserver((mutations, observer) => {\n $flushMutations$1(editor, mutations, observer);\n });\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction $canSimpleTextNodesBeMerged(node1, node2) {\n const node1Mode = node1.__mode;\n const node1Format = node1.__format;\n const node1Style = node1.__style;\n const node2Mode = node2.__mode;\n const node2Format = node2.__format;\n const node2Style = node2.__style;\n return (node1Mode === null || node1Mode === node2Mode) && (node1Format === null || node1Format === node2Format) && (node1Style === null || node1Style === node2Style);\n}\nfunction $mergeTextNodes(node1, node2) {\n const writableNode1 = node1.mergeWithSibling(node2);\n const normalizedNodes = getActiveEditor()._normalizedNodes;\n normalizedNodes.add(node1.__key);\n normalizedNodes.add(node2.__key);\n return writableNode1;\n}\nfunction $normalizeTextNode(textNode) {\n let node = textNode;\n if (node.__text === '' && node.isSimpleText() && !node.isUnmergeable()) {\n node.remove();\n return;\n }\n\n // Backward\n let previousNode;\n while ((previousNode = node.getPreviousSibling()) !== null && $isTextNode(previousNode) && previousNode.isSimpleText() && !previousNode.isUnmergeable()) {\n if (previousNode.__text === '') {\n previousNode.remove();\n } else if ($canSimpleTextNodesBeMerged(previousNode, node)) {\n node = $mergeTextNodes(previousNode, node);\n break;\n } else {\n break;\n }\n }\n\n // Forward\n let nextNode;\n while ((nextNode = node.getNextSibling()) !== null && $isTextNode(nextNode) && nextNode.isSimpleText() && !nextNode.isUnmergeable()) {\n if (nextNode.__text === '') {\n nextNode.remove();\n } else if ($canSimpleTextNodesBeMerged(node, nextNode)) {\n node = $mergeTextNodes(node, nextNode);\n break;\n } else {\n break;\n }\n }\n}\nfunction $normalizeSelection(selection) {\n $normalizePoint(selection.anchor);\n $normalizePoint(selection.focus);\n return selection;\n}\nfunction $normalizePoint(point) {\n while (point.type === 'element') {\n const node = point.getNode();\n const offset = point.offset;\n let nextNode;\n let nextOffsetAtEnd;\n if (offset === node.getChildrenSize()) {\n nextNode = node.getChildAtIndex(offset - 1);\n nextOffsetAtEnd = true;\n } else {\n nextNode = node.getChildAtIndex(offset);\n nextOffsetAtEnd = false;\n }\n if ($isTextNode(nextNode)) {\n point.set(nextNode.__key, nextOffsetAtEnd ? nextNode.getTextContentSize() : 0, 'text');\n break;\n } else if (!$isElementNode(nextNode)) {\n break;\n }\n point.set(nextNode.__key, nextOffsetAtEnd ? nextNode.getChildrenSize() : 0, 'element');\n }\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nlet keyCounter = 1;\nfunction resetRandomKey() {\n keyCounter = 1;\n}\nfunction generateRandomKey() {\n return '' + keyCounter++;\n}\nfunction getRegisteredNodeOrThrow(editor, nodeType) {\n const registeredNode = editor._nodes.get(nodeType);\n if (registeredNode === undefined) {\n {\n throw Error(`registeredNode: Type ${nodeType} not found`);\n }\n }\n return registeredNode;\n}\nconst scheduleMicroTask = typeof queueMicrotask === 'function' ? queueMicrotask : fn => {\n // No window prefix intended (#1400)\n Promise.resolve().then(fn);\n};\nfunction $isSelectionCapturedInDecorator(node) {\n return $isDecoratorNode($getNearestNodeFromDOMNode(node));\n}\nfunction isSelectionCapturedInDecoratorInput(anchorDOM) {\n const activeElement = document.activeElement;\n if (activeElement === null) {\n return false;\n }\n const nodeName = activeElement.nodeName;\n return $isDecoratorNode($getNearestNodeFromDOMNode(anchorDOM)) && (nodeName === 'INPUT' || nodeName === 'TEXTAREA' || activeElement.contentEditable === 'true' && getEditorPropertyFromDOMNode(activeElement) == null);\n}\nfunction isSelectionWithinEditor(editor, anchorDOM, focusDOM) {\n const rootElement = editor.getRootElement();\n try {\n return rootElement !== null && rootElement.contains(anchorDOM) && rootElement.contains(focusDOM) &&\n // Ignore if selection is within nested editor\n anchorDOM !== null && !isSelectionCapturedInDecoratorInput(anchorDOM) && getNearestEditorFromDOMNode(anchorDOM) === editor;\n } catch (error) {\n return false;\n }\n}\n\n/**\n * @returns true if the given argument is a LexicalEditor instance from this build of Lexical\n */\nfunction isLexicalEditor(editor) {\n // Check instanceof to prevent issues with multiple embedded Lexical installations\n return editor instanceof LexicalEditor;\n}\nfunction getNearestEditorFromDOMNode(node) {\n let currentNode = node;\n while (currentNode != null) {\n const editor = getEditorPropertyFromDOMNode(currentNode);\n if (isLexicalEditor(editor)) {\n return editor;\n }\n currentNode = getParentElement(currentNode);\n }\n return null;\n}\n\n/** @internal */\nfunction getEditorPropertyFromDOMNode(node) {\n // @ts-expect-error: internal field\n return node ? node.__lexicalEditor : null;\n}\nfunction getTextDirection(text) {\n if (RTL_REGEX.test(text)) {\n return 'rtl';\n }\n if (LTR_REGEX.test(text)) {\n return 'ltr';\n }\n return null;\n}\nfunction $isTokenOrSegmented(node) {\n return node.isToken() || node.isSegmented();\n}\nfunction isDOMNodeLexicalTextNode(node) {\n return node.nodeType === DOM_TEXT_TYPE;\n}\nfunction getDOMTextNode(element) {\n let node = element;\n while (node != null) {\n if (isDOMNodeLexicalTextNode(node)) {\n return node;\n }\n node = node.firstChild;\n }\n return null;\n}\nfunction toggleTextFormatType(format, type, alignWithFormat) {\n const activeFormat = TEXT_TYPE_TO_FORMAT[type];\n if (alignWithFormat !== null && (format & activeFormat) === (alignWithFormat & activeFormat)) {\n return format;\n }\n let newFormat = format ^ activeFormat;\n if (type === 'subscript') {\n newFormat &= ~TEXT_TYPE_TO_FORMAT.superscript;\n } else if (type === 'superscript') {\n newFormat &= ~TEXT_TYPE_TO_FORMAT.subscript;\n }\n return newFormat;\n}\nfunction $isLeafNode(node) {\n return $isTextNode(node) || $isLineBreakNode(node) || $isDecoratorNode(node);\n}\nfunction $setNodeKey(node, existingKey) {\n if (existingKey != null) {\n {\n errorOnNodeKeyConstructorMismatch(node, existingKey);\n }\n node.__key = existingKey;\n return;\n }\n errorOnReadOnly();\n errorOnInfiniteTransforms();\n const editor = getActiveEditor();\n const editorState = getActiveEditorState();\n const key = generateRandomKey();\n editorState._nodeMap.set(key, node);\n // TODO Split this function into leaf/element\n if ($isElementNode(node)) {\n editor._dirtyElements.set(key, true);\n } else {\n editor._dirtyLeaves.add(key);\n }\n editor._cloneNotNeeded.add(key);\n editor._dirtyType = HAS_DIRTY_NODES;\n node.__key = key;\n}\nfunction errorOnNodeKeyConstructorMismatch(node, existingKey) {\n const editorState = internalGetActiveEditorState();\n if (!editorState) {\n // tests expect to be able to do this kind of clone without an active editor state\n return;\n }\n const existingNode = editorState._nodeMap.get(existingKey);\n if (existingNode && existingNode.constructor !== node.constructor) {\n // Lifted condition to if statement because the inverted logic is a bit confusing\n if (node.constructor.name !== existingNode.constructor.name) {\n {\n throw Error(`Lexical node with constructor ${node.constructor.name} attempted to re-use key from node in active editor state with constructor ${existingNode.constructor.name}. Keys must not be re-used when the type is changed.`);\n }\n } else {\n {\n throw Error(`Lexical node with constructor ${node.constructor.name} attempted to re-use key from node in active editor state with different constructor with the same name (possibly due to invalid Hot Module Replacement). Keys must not be re-used when the type is changed.`);\n }\n }\n }\n}\nfunction internalMarkParentElementsAsDirty(parentKey, nodeMap, dirtyElements) {\n let nextParentKey = parentKey;\n while (nextParentKey !== null) {\n if (dirtyElements.has(nextParentKey)) {\n return;\n }\n const node = nodeMap.get(nextParentKey);\n if (node === undefined) {\n break;\n }\n dirtyElements.set(nextParentKey, false);\n nextParentKey = node.__parent;\n }\n}\n\n// TODO #6031 this function or their callers have to adjust selection (i.e. insertBefore)\nfunction removeFromParent(node) {\n const oldParent = node.getParent();\n if (oldParent !== null) {\n const writableNode = node.getWritable();\n const writableParent = oldParent.getWritable();\n const prevSibling = node.getPreviousSibling();\n const nextSibling = node.getNextSibling();\n // TODO: this function duplicates a bunch of operations, can be simplified.\n if (prevSibling === null) {\n if (nextSibling !== null) {\n const writableNextSibling = nextSibling.getWritable();\n writableParent.__first = nextSibling.__key;\n writableNextSibling.__prev = null;\n } else {\n writableParent.__first = null;\n }\n } else {\n const writablePrevSibling = prevSibling.getWritable();\n if (nextSibling !== null) {\n const writableNextSibling = nextSibling.getWritable();\n writableNextSibling.__prev = writablePrevSibling.__key;\n writablePrevSibling.__next = writableNextSibling.__key;\n } else {\n writablePrevSibling.__next = null;\n }\n writableNode.__prev = null;\n }\n if (nextSibling === null) {\n if (prevSibling !== null) {\n const writablePrevSibling = prevSibling.getWritable();\n writableParent.__last = prevSibling.__key;\n writablePrevSibling.__next = null;\n } else {\n writableParent.__last = null;\n }\n } else {\n const writableNextSibling = nextSibling.getWritable();\n if (prevSibling !== null) {\n const writablePrevSibling = prevSibling.getWritable();\n writablePrevSibling.__next = writableNextSibling.__key;\n writableNextSibling.__prev = writablePrevSibling.__key;\n } else {\n writableNextSibling.__prev = null;\n }\n writableNode.__next = null;\n }\n writableParent.__size--;\n writableNode.__parent = null;\n }\n}\n\n// Never use this function directly! It will break\n// the cloning heuristic. Instead use node.getWritable().\nfunction internalMarkNodeAsDirty(node) {\n errorOnInfiniteTransforms();\n const latest = node.getLatest();\n const parent = latest.__parent;\n const editorState = getActiveEditorState();\n const editor = getActiveEditor();\n const nodeMap = editorState._nodeMap;\n const dirtyElements = editor._dirtyElements;\n if (parent !== null) {\n internalMarkParentElementsAsDirty(parent, nodeMap, dirtyElements);\n }\n const key = latest.__key;\n editor._dirtyType = HAS_DIRTY_NODES;\n if ($isElementNode(node)) {\n dirtyElements.set(key, true);\n } else {\n // TODO split internally MarkNodeAsDirty into two dedicated Element/leave functions\n editor._dirtyLeaves.add(key);\n }\n}\nfunction internalMarkSiblingsAsDirty(node) {\n const previousNode = node.getPreviousSibling();\n const nextNode = node.getNextSibling();\n if (previousNode !== null) {\n internalMarkNodeAsDirty(previousNode);\n }\n if (nextNode !== null) {\n internalMarkNodeAsDirty(nextNode);\n }\n}\nfunction $setCompositionKey(compositionKey) {\n errorOnReadOnly();\n const editor = getActiveEditor();\n const previousCompositionKey = editor._compositionKey;\n if (compositionKey !== previousCompositionKey) {\n editor._compositionKey = compositionKey;\n if (previousCompositionKey !== null) {\n const node = $getNodeByKey(previousCompositionKey);\n if (node !== null) {\n node.getWritable();\n }\n }\n if (compositionKey !== null) {\n const node = $getNodeByKey(compositionKey);\n if (node !== null) {\n node.getWritable();\n }\n }\n }\n}\nfunction $getCompositionKey() {\n if (isCurrentlyReadOnlyMode()) {\n return null;\n }\n const editor = getActiveEditor();\n return editor._compositionKey;\n}\nfunction $getNodeByKey(key, _editorState) {\n const editorState = _editorState || getActiveEditorState();\n const node = editorState._nodeMap.get(key);\n if (node === undefined) {\n return null;\n }\n return node;\n}\nfunction $getNodeFromDOMNode(dom, editorState) {\n const editor = getActiveEditor();\n // @ts-ignore We intentionally add this to the Node.\n const key = dom[`__lexicalKey_${editor._key}`];\n if (key !== undefined) {\n return $getNodeByKey(key, editorState);\n }\n return null;\n}\nfunction $getNearestNodeFromDOMNode(startingDOM, editorState) {\n let dom = startingDOM;\n while (dom != null) {\n const node = $getNodeFromDOMNode(dom, editorState);\n if (node !== null) {\n return node;\n }\n dom = getParentElement(dom);\n }\n return null;\n}\nfunction cloneDecorators(editor) {\n const currentDecorators = editor._decorators;\n const pendingDecorators = Object.assign({}, currentDecorators);\n editor._pendingDecorators = pendingDecorators;\n return pendingDecorators;\n}\nfunction getEditorStateTextContent(editorState) {\n return editorState.read(() => $getRoot().getTextContent());\n}\nfunction markAllNodesAsDirty(editor, type) {\n // Mark all existing text nodes as dirty\n updateEditor(editor, () => {\n const editorState = getActiveEditorState();\n if (editorState.isEmpty()) {\n return;\n }\n if (type === 'root') {\n $getRoot().markDirty();\n return;\n }\n const nodeMap = editorState._nodeMap;\n for (const [, node] of nodeMap) {\n node.markDirty();\n }\n }, editor._pendingEditorState === null ? {\n tag: 'history-merge'\n } : undefined);\n}\nfunction $getRoot() {\n return internalGetRoot(getActiveEditorState());\n}\nfunction internalGetRoot(editorState) {\n return editorState._nodeMap.get('root');\n}\nfunction $setSelection(selection) {\n errorOnReadOnly();\n const editorState = getActiveEditorState();\n if (selection !== null) {\n {\n if (Object.isFrozen(selection)) {\n {\n throw Error(`$setSelection called on frozen selection object. Ensure selection is cloned before passing in.`);\n }\n }\n }\n selection.dirty = true;\n selection.setCachedNodes(null);\n }\n editorState._selection = selection;\n}\nfunction $flushMutations() {\n errorOnReadOnly();\n const editor = getActiveEditor();\n $flushRootMutations(editor);\n}\nfunction $getNodeFromDOM(dom) {\n const editor = getActiveEditor();\n const nodeKey = getNodeKeyFromDOM(dom, editor);\n if (nodeKey === null) {\n const rootElement = editor.getRootElement();\n if (dom === rootElement) {\n return $getNodeByKey('root');\n }\n return null;\n }\n return $getNodeByKey(nodeKey);\n}\nfunction getTextNodeOffset(node, moveSelectionToEnd) {\n return moveSelectionToEnd ? node.getTextContentSize() : 0;\n}\nfunction getNodeKeyFromDOM(\n// Note that node here refers to a DOM Node, not an Lexical Node\ndom, editor) {\n let node = dom;\n while (node != null) {\n // @ts-ignore We intentionally add this to the Node.\n const key = node[`__lexicalKey_${editor._key}`];\n if (key !== undefined) {\n return key;\n }\n node = getParentElement(node);\n }\n return null;\n}\nfunction doesContainGrapheme(str) {\n return /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g.test(str);\n}\nfunction getEditorsToPropagate(editor) {\n const editorsToPropagate = [];\n let currentEditor = editor;\n while (currentEditor !== null) {\n editorsToPropagate.push(currentEditor);\n currentEditor = currentEditor._parentEditor;\n }\n return editorsToPropagate;\n}\nfunction createUID() {\n return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);\n}\nfunction getAnchorTextFromDOM(anchorNode) {\n if (anchorNode.nodeType === DOM_TEXT_TYPE) {\n return anchorNode.nodeValue;\n }\n return null;\n}\nfunction $updateSelectedTextFromDOM(isCompositionEnd, editor, data) {\n // Update the text content with the latest composition text\n const domSelection = getDOMSelection(editor._window);\n if (domSelection === null) {\n return;\n }\n const anchorNode = domSelection.anchorNode;\n let {\n anchorOffset,\n focusOffset\n } = domSelection;\n if (anchorNode !== null) {\n let textContent = getAnchorTextFromDOM(anchorNode);\n const node = $getNearestNodeFromDOMNode(anchorNode);\n if (textContent !== null && $isTextNode(node)) {\n // Data is intentionally truthy, as we check for boolean, null and empty string.\n if (textContent === COMPOSITION_SUFFIX && data) {\n const offset = data.length;\n textContent = data;\n anchorOffset = offset;\n focusOffset = offset;\n }\n if (textContent !== null) {\n $updateTextNodeFromDOMContent(node, textContent, anchorOffset, focusOffset, isCompositionEnd);\n }\n }\n }\n}\nfunction $updateTextNodeFromDOMContent(textNode, textContent, anchorOffset, focusOffset, compositionEnd) {\n let node = textNode;\n if (node.isAttached() && (compositionEnd || !node.isDirty())) {\n const isComposing = node.isComposing();\n let normalizedTextContent = textContent;\n if ((isComposing || compositionEnd) && textContent[textContent.length - 1] === COMPOSITION_SUFFIX) {\n normalizedTextContent = textContent.slice(0, -1);\n }\n const prevTextContent = node.getTextContent();\n if (compositionEnd || normalizedTextContent !== prevTextContent) {\n if (normalizedTextContent === '') {\n $setCompositionKey(null);\n if (!IS_SAFARI && !IS_IOS && !IS_APPLE_WEBKIT) {\n // For composition (mainly Android), we have to remove the node on a later update\n const editor = getActiveEditor();\n setTimeout(() => {\n editor.update(() => {\n if (node.isAttached()) {\n node.remove();\n }\n });\n }, 20);\n } else {\n node.remove();\n }\n return;\n }\n const parent = node.getParent();\n const prevSelection = $getPreviousSelection();\n const prevTextContentSize = node.getTextContentSize();\n const compositionKey = $getCompositionKey();\n const nodeKey = node.getKey();\n if (node.isToken() || compositionKey !== null && nodeKey === compositionKey && !isComposing ||\n // Check if character was added at the start or boundaries when not insertable, and we need\n // to clear this input from occurring as that action wasn't permitted.\n $isRangeSelection(prevSelection) && (parent !== null && !parent.canInsertTextBefore() && prevSelection.anchor.offset === 0 || prevSelection.anchor.key === textNode.__key && prevSelection.anchor.offset === 0 && !node.canInsertTextBefore() && !isComposing || prevSelection.focus.key === textNode.__key && prevSelection.focus.offset === prevTextContentSize && !node.canInsertTextAfter() && !isComposing)) {\n node.markDirty();\n return;\n }\n const selection = $getSelection();\n if (!$isRangeSelection(selection) || anchorOffset === null || focusOffset === null) {\n node.setTextContent(normalizedTextContent);\n return;\n }\n selection.setTextNodeRange(node, anchorOffset, node, focusOffset);\n if (node.isSegmented()) {\n const originalTextContent = node.getTextContent();\n const replacement = $createTextNode(originalTextContent);\n node.replace(replacement);\n node = replacement;\n }\n node.setTextContent(normalizedTextContent);\n }\n }\n}\nfunction $previousSiblingDoesNotAcceptText(node) {\n const previousSibling = node.getPreviousSibling();\n return ($isTextNode(previousSibling) || $isElementNode(previousSibling) && previousSibling.isInline()) && !previousSibling.canInsertTextAfter();\n}\n\n// This function is connected to $shouldPreventDefaultAndInsertText and determines whether the\n// TextNode boundaries are writable or we should use the previous/next sibling instead. For example,\n// in the case of a LinkNode, boundaries are not writable.\nfunction $shouldInsertTextAfterOrBeforeTextNode(selection, node) {\n if (node.isSegmented()) {\n return true;\n }\n if (!selection.isCollapsed()) {\n return false;\n }\n const offset = selection.anchor.offset;\n const parent = node.getParentOrThrow();\n const isToken = node.isToken();\n if (offset === 0) {\n return !node.canInsertTextBefore() || !parent.canInsertTextBefore() && !node.isComposing() || isToken || $previousSiblingDoesNotAcceptText(node);\n } else if (offset === node.getTextContentSize()) {\n return !node.canInsertTextAfter() || !parent.canInsertTextAfter() && !node.isComposing() || isToken;\n } else {\n return false;\n }\n}\nfunction isTab(key, altKey, ctrlKey, metaKey) {\n return key === 'Tab' && !altKey && !ctrlKey && !metaKey;\n}\nfunction isBold(key, altKey, metaKey, ctrlKey) {\n return key.toLowerCase() === 'b' && !altKey && controlOrMeta(metaKey, ctrlKey);\n}\nfunction isItalic(key, altKey, metaKey, ctrlKey) {\n return key.toLowerCase() === 'i' && !altKey && controlOrMeta(metaKey, ctrlKey);\n}\nfunction isUnderline(key, altKey, metaKey, ctrlKey) {\n return key.toLowerCase() === 'u' && !altKey && controlOrMeta(metaKey, ctrlKey);\n}\nfunction isParagraph(key, shiftKey) {\n return isReturn(key) && !shiftKey;\n}\nfunction isLineBreak(key, shiftKey) {\n return isReturn(key) && shiftKey;\n}\n\n// Inserts a new line after the selection\n\nfunction isOpenLineBreak(key, ctrlKey) {\n // 79 = KeyO\n return IS_APPLE && ctrlKey && key.toLowerCase() === 'o';\n}\nfunction isDeleteWordBackward(key, altKey, ctrlKey) {\n return isBackspace(key) && (IS_APPLE ? altKey : ctrlKey);\n}\nfunction isDeleteWordForward(key, altKey, ctrlKey) {\n return isDelete(key) && (IS_APPLE ? altKey : ctrlKey);\n}\nfunction isDeleteLineBackward(key, metaKey) {\n return IS_APPLE && metaKey && isBackspace(key);\n}\nfunction isDeleteLineForward(key, metaKey) {\n return IS_APPLE && metaKey && isDelete(key);\n}\nfunction isDeleteBackward(key, altKey, metaKey, ctrlKey) {\n if (IS_APPLE) {\n if (altKey || metaKey) {\n return false;\n }\n return isBackspace(key) || key.toLowerCase() === 'h' && ctrlKey;\n }\n if (ctrlKey || altKey || metaKey) {\n return false;\n }\n return isBackspace(key);\n}\nfunction isDeleteForward(key, ctrlKey, shiftKey, altKey, metaKey) {\n if (IS_APPLE) {\n if (shiftKey || altKey || metaKey) {\n return false;\n }\n return isDelete(key) || key.toLowerCase() === 'd' && ctrlKey;\n }\n if (ctrlKey || altKey || metaKey) {\n return false;\n }\n return isDelete(key);\n}\nfunction isUndo(key, shiftKey, metaKey, ctrlKey) {\n return key.toLowerCase() === 'z' && !shiftKey && controlOrMeta(metaKey, ctrlKey);\n}\nfunction isRedo(key, shiftKey, metaKey, ctrlKey) {\n if (IS_APPLE) {\n return key.toLowerCase() === 'z' && metaKey && shiftKey;\n }\n return key.toLowerCase() === 'y' && ctrlKey || key.toLowerCase() === 'z' && ctrlKey && shiftKey;\n}\nfunction isCopy(key, shiftKey, metaKey, ctrlKey) {\n if (shiftKey) {\n return false;\n }\n if (key.toLowerCase() === 'c') {\n return IS_APPLE ? metaKey : ctrlKey;\n }\n return false;\n}\nfunction isCut(key, shiftKey, metaKey, ctrlKey) {\n if (shiftKey) {\n return false;\n }\n if (key.toLowerCase() === 'x') {\n return IS_APPLE ? metaKey : ctrlKey;\n }\n return false;\n}\nfunction isArrowLeft(key) {\n return key === 'ArrowLeft';\n}\nfunction isArrowRight(key) {\n return key === 'ArrowRight';\n}\nfunction isArrowUp(key) {\n return key === 'ArrowUp';\n}\nfunction isArrowDown(key) {\n return key === 'ArrowDown';\n}\nfunction isMoveBackward(key, ctrlKey, altKey, metaKey) {\n return isArrowLeft(key) && !ctrlKey && !metaKey && !altKey;\n}\nfunction isMoveToStart(key, ctrlKey, shiftKey, altKey, metaKey) {\n return isArrowLeft(key) && !altKey && !shiftKey && (ctrlKey || metaKey);\n}\nfunction isMoveForward(key, ctrlKey, altKey, metaKey) {\n return isArrowRight(key) && !ctrlKey && !metaKey && !altKey;\n}\nfunction isMoveToEnd(key, ctrlKey, shiftKey, altKey, metaKey) {\n return isArrowRight(key) && !altKey && !shiftKey && (ctrlKey || metaKey);\n}\nfunction isMoveUp(key, ctrlKey, metaKey) {\n return isArrowUp(key) && !ctrlKey && !metaKey;\n}\nfunction isMoveDown(key, ctrlKey, metaKey) {\n return isArrowDown(key) && !ctrlKey && !metaKey;\n}\nfunction isModifier(ctrlKey, shiftKey, altKey, metaKey) {\n return ctrlKey || shiftKey || altKey || metaKey;\n}\nfunction isSpace(key) {\n return key === ' ';\n}\nfunction controlOrMeta(metaKey, ctrlKey) {\n if (IS_APPLE) {\n return metaKey;\n }\n return ctrlKey;\n}\nfunction isReturn(key) {\n return key === 'Enter';\n}\nfunction isBackspace(key) {\n return key === 'Backspace';\n}\nfunction isEscape(key) {\n return key === 'Escape';\n}\nfunction isDelete(key) {\n return key === 'Delete';\n}\nfunction isSelectAll(key, metaKey, ctrlKey) {\n return key.toLowerCase() === 'a' && controlOrMeta(metaKey, ctrlKey);\n}\nfunction $selectAll() {\n const root = $getRoot();\n const selection = root.select(0, root.getChildrenSize());\n $setSelection($normalizeSelection(selection));\n}\nfunction getCachedClassNameArray(classNamesTheme, classNameThemeType) {\n if (classNamesTheme.__lexicalClassNameCache === undefined) {\n classNamesTheme.__lexicalClassNameCache = {};\n }\n const classNamesCache = classNamesTheme.__lexicalClassNameCache;\n const cachedClassNames = classNamesCache[classNameThemeType];\n if (cachedClassNames !== undefined) {\n return cachedClassNames;\n }\n const classNames = classNamesTheme[classNameThemeType];\n // As we're using classList, we need\n // to handle className tokens that have spaces.\n // The easiest way to do this to convert the\n // className tokens to an array that can be\n // applied to classList.add()/remove().\n if (typeof classNames === 'string') {\n const classNamesArr = normalizeClassNames(classNames);\n classNamesCache[classNameThemeType] = classNamesArr;\n return classNamesArr;\n }\n return classNames;\n}\nfunction setMutatedNode(mutatedNodes, registeredNodes, mutationListeners, node, mutation) {\n if (mutationListeners.size === 0) {\n return;\n }\n const nodeType = node.__type;\n const nodeKey = node.__key;\n const registeredNode = registeredNodes.get(nodeType);\n if (registeredNode === undefined) {\n {\n throw Error(`Type ${nodeType} not in registeredNodes`);\n }\n }\n const klass = registeredNode.klass;\n let mutatedNodesByType = mutatedNodes.get(klass);\n if (mutatedNodesByType === undefined) {\n mutatedNodesByType = new Map();\n mutatedNodes.set(klass, mutatedNodesByType);\n }\n const prevMutation = mutatedNodesByType.get(nodeKey);\n // If the node has already been \"destroyed\", yet we are\n // re-making it, then this means a move likely happened.\n // We should change the mutation to be that of \"updated\"\n // instead.\n const isMove = prevMutation === 'destroyed' && mutation === 'created';\n if (prevMutation === undefined || isMove) {\n mutatedNodesByType.set(nodeKey, isMove ? 'updated' : mutation);\n }\n}\nfunction $nodesOfType(klass) {\n const klassType = klass.getType();\n const editorState = getActiveEditorState();\n if (editorState._readOnly) {\n const nodes = getCachedTypeToNodeMap(editorState).get(klassType);\n return nodes ? Array.from(nodes.values()) : [];\n }\n const nodes = editorState._nodeMap;\n const nodesOfType = [];\n for (const [, node] of nodes) {\n if (node instanceof klass && node.__type === klassType && node.isAttached()) {\n nodesOfType.push(node);\n }\n }\n return nodesOfType;\n}\nfunction resolveElement(element, isBackward, focusOffset) {\n const parent = element.getParent();\n let offset = focusOffset;\n let block = element;\n if (parent !== null) {\n if (isBackward && focusOffset === 0) {\n offset = block.getIndexWithinParent();\n block = parent;\n } else if (!isBackward && focusOffset === block.getChildrenSize()) {\n offset = block.getIndexWithinParent() + 1;\n block = parent;\n }\n }\n return block.getChildAtIndex(isBackward ? offset - 1 : offset);\n}\nfunction $getAdjacentNode(focus, isBackward) {\n const focusOffset = focus.offset;\n if (focus.type === 'element') {\n const block = focus.getNode();\n return resolveElement(block, isBackward, focusOffset);\n } else {\n const focusNode = focus.getNode();\n if (isBackward && focusOffset === 0 || !isBackward && focusOffset === focusNode.getTextContentSize()) {\n const possibleNode = isBackward ? focusNode.getPreviousSibling() : focusNode.getNextSibling();\n if (possibleNode === null) {\n return resolveElement(focusNode.getParentOrThrow(), isBackward, focusNode.getIndexWithinParent() + (isBackward ? 0 : 1));\n }\n return possibleNode;\n }\n }\n return null;\n}\nfunction isFirefoxClipboardEvents(editor) {\n const event = getWindow(editor).event;\n const inputType = event && event.inputType;\n return inputType === 'insertFromPaste' || inputType === 'insertFromPasteAsQuotation';\n}\nfunction dispatchCommand(editor, command, payload) {\n return triggerCommandListeners(editor, command, payload);\n}\nfunction $textContentRequiresDoubleLinebreakAtEnd(node) {\n return !$isRootNode(node) && !node.isLastChild() && !node.isInline();\n}\nfunction getElementByKeyOrThrow(editor, key) {\n const element = editor._keyToDOMMap.get(key);\n if (element === undefined) {\n {\n throw Error(`Reconciliation: could not find DOM element for node key ${key}`);\n }\n }\n return element;\n}\nfunction getParentElement(node) {\n const parentElement = node.assignedSlot || node.parentElement;\n return parentElement !== null && parentElement.nodeType === 11 ? parentElement.host : parentElement;\n}\nfunction scrollIntoViewIfNeeded(editor, selectionRect, rootElement) {\n const doc = rootElement.ownerDocument;\n const defaultView = doc.defaultView;\n if (defaultView === null) {\n return;\n }\n let {\n top: currentTop,\n bottom: currentBottom\n } = selectionRect;\n let targetTop = 0;\n let targetBottom = 0;\n let element = rootElement;\n while (element !== null) {\n const isBodyElement = element === doc.body;\n if (isBodyElement) {\n targetTop = 0;\n targetBottom = getWindow(editor).innerHeight;\n } else {\n const targetRect = element.getBoundingClientRect();\n targetTop = targetRect.top;\n targetBottom = targetRect.bottom;\n }\n let diff = 0;\n if (currentTop < targetTop) {\n diff = -(targetTop - currentTop);\n } else if (currentBottom > targetBottom) {\n diff = currentBottom - targetBottom;\n }\n if (diff !== 0) {\n if (isBodyElement) {\n // Only handles scrolling of Y axis\n defaultView.scrollBy(0, diff);\n } else {\n const scrollTop = element.scrollTop;\n element.scrollTop += diff;\n const yOffset = element.scrollTop - scrollTop;\n currentTop -= yOffset;\n currentBottom -= yOffset;\n }\n }\n if (isBodyElement) {\n break;\n }\n element = getParentElement(element);\n }\n}\nfunction $hasUpdateTag(tag) {\n const editor = getActiveEditor();\n return editor._updateTags.has(tag);\n}\nfunction $addUpdateTag(tag) {\n errorOnReadOnly();\n const editor = getActiveEditor();\n editor._updateTags.add(tag);\n}\nfunction $maybeMoveChildrenSelectionToParent(parentNode) {\n const selection = $getSelection();\n if (!$isRangeSelection(selection) || !$isElementNode(parentNode)) {\n return selection;\n }\n const {\n anchor,\n focus\n } = selection;\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n if ($hasAncestor(anchorNode, parentNode)) {\n anchor.set(parentNode.__key, 0, 'element');\n }\n if ($hasAncestor(focusNode, parentNode)) {\n focus.set(parentNode.__key, 0, 'element');\n }\n return selection;\n}\nfunction $hasAncestor(child, targetNode) {\n let parent = child.getParent();\n while (parent !== null) {\n if (parent.is(targetNode)) {\n return true;\n }\n parent = parent.getParent();\n }\n return false;\n}\nfunction getDefaultView(domElem) {\n const ownerDoc = domElem.ownerDocument;\n return ownerDoc && ownerDoc.defaultView || null;\n}\nfunction getWindow(editor) {\n const windowObj = editor._window;\n if (windowObj === null) {\n {\n throw Error(`window object not found`);\n }\n }\n return windowObj;\n}\nfunction $isInlineElementOrDecoratorNode(node) {\n return $isElementNode(node) && node.isInline() || $isDecoratorNode(node) && node.isInline();\n}\nfunction $getNearestRootOrShadowRoot(node) {\n let parent = node.getParentOrThrow();\n while (parent !== null) {\n if ($isRootOrShadowRoot(parent)) {\n return parent;\n }\n parent = parent.getParentOrThrow();\n }\n return parent;\n}\nfunction $isRootOrShadowRoot(node) {\n return $isRootNode(node) || $isElementNode(node) && node.isShadowRoot();\n}\n\n/**\n * Returns a shallow clone of node with a new key\n *\n * @param node - The node to be copied.\n * @returns The copy of the node.\n */\nfunction $copyNode(node) {\n const copy = node.constructor.clone(node);\n $setNodeKey(copy, null);\n return copy;\n}\nfunction $applyNodeReplacement(node) {\n const editor = getActiveEditor();\n const nodeType = node.constructor.getType();\n const registeredNode = editor._nodes.get(nodeType);\n if (registeredNode === undefined) {\n {\n throw Error(`$initializeNode failed. Ensure node has been registered to the editor. You can do this by passing the node class via the \"nodes\" array in the editor config.`);\n }\n }\n const replaceFunc = registeredNode.replace;\n if (replaceFunc !== null) {\n const replacementNode = replaceFunc(node);\n if (!(replacementNode instanceof node.constructor)) {\n {\n throw Error(`$initializeNode failed. Ensure replacement node is a subclass of the original node.`);\n }\n }\n return replacementNode;\n }\n return node;\n}\nfunction errorOnInsertTextNodeOnRoot(node, insertNode) {\n const parentNode = node.getParent();\n if ($isRootNode(parentNode) && !$isElementNode(insertNode) && !$isDecoratorNode(insertNode)) {\n {\n throw Error(`Only element or decorator nodes can be inserted in to the root node`);\n }\n }\n}\nfunction $getNodeByKeyOrThrow(key) {\n const node = $getNodeByKey(key);\n if (node === null) {\n {\n throw Error(`Expected node with key ${key} to exist but it's not in the nodeMap.`);\n }\n }\n return node;\n}\nfunction createBlockCursorElement(editorConfig) {\n const theme = editorConfig.theme;\n const element = document.createElement('div');\n element.contentEditable = 'false';\n element.setAttribute('data-lexical-cursor', 'true');\n let blockCursorTheme = theme.blockCursor;\n if (blockCursorTheme !== undefined) {\n if (typeof blockCursorTheme === 'string') {\n const classNamesArr = normalizeClassNames(blockCursorTheme);\n // @ts-expect-error: intentional\n blockCursorTheme = theme.blockCursor = classNamesArr;\n }\n if (blockCursorTheme !== undefined) {\n element.classList.add(...blockCursorTheme);\n }\n }\n return element;\n}\nfunction needsBlockCursor(node) {\n return ($isDecoratorNode(node) || $isElementNode(node) && !node.canBeEmpty()) && !node.isInline();\n}\nfunction removeDOMBlockCursorElement(blockCursorElement, editor, rootElement) {\n rootElement.style.removeProperty('caret-color');\n editor._blockCursorElement = null;\n const parentElement = blockCursorElement.parentElement;\n if (parentElement !== null) {\n parentElement.removeChild(blockCursorElement);\n }\n}\nfunction updateDOMBlockCursorElement(editor, rootElement, nextSelection) {\n let blockCursorElement = editor._blockCursorElement;\n if ($isRangeSelection(nextSelection) && nextSelection.isCollapsed() && nextSelection.anchor.type === 'element' && rootElement.contains(document.activeElement)) {\n const anchor = nextSelection.anchor;\n const elementNode = anchor.getNode();\n const offset = anchor.offset;\n const elementNodeSize = elementNode.getChildrenSize();\n let isBlockCursor = false;\n let insertBeforeElement = null;\n if (offset === elementNodeSize) {\n const child = elementNode.getChildAtIndex(offset - 1);\n if (needsBlockCursor(child)) {\n isBlockCursor = true;\n }\n } else {\n const child = elementNode.getChildAtIndex(offset);\n if (needsBlockCursor(child)) {\n const sibling = child.getPreviousSibling();\n if (sibling === null || needsBlockCursor(sibling)) {\n isBlockCursor = true;\n insertBeforeElement = editor.getElementByKey(child.__key);\n }\n }\n }\n if (isBlockCursor) {\n const elementDOM = editor.getElementByKey(elementNode.__key);\n if (blockCursorElement === null) {\n editor._blockCursorElement = blockCursorElement = createBlockCursorElement(editor._config);\n }\n rootElement.style.caretColor = 'transparent';\n if (insertBeforeElement === null) {\n elementDOM.appendChild(blockCursorElement);\n } else {\n elementDOM.insertBefore(blockCursorElement, insertBeforeElement);\n }\n return;\n }\n }\n // Remove cursor\n if (blockCursorElement !== null) {\n removeDOMBlockCursorElement(blockCursorElement, editor, rootElement);\n }\n}\nfunction getDOMSelection(targetWindow) {\n return !CAN_USE_DOM ? null : (targetWindow || window).getSelection();\n}\nfunction $splitNode(node, offset) {\n let startNode = node.getChildAtIndex(offset);\n if (startNode == null) {\n startNode = node;\n }\n if (!!$isRootOrShadowRoot(node)) {\n throw Error(`Can not call $splitNode() on root element`);\n }\n const recurse = currentNode => {\n const parent = currentNode.getParentOrThrow();\n const isParentRoot = $isRootOrShadowRoot(parent);\n // The node we start split from (leaf) is moved, but its recursive\n // parents are copied to create separate tree\n const nodeToMove = currentNode === startNode && !isParentRoot ? currentNode : $copyNode(currentNode);\n if (isParentRoot) {\n if (!($isElementNode(currentNode) && $isElementNode(nodeToMove))) {\n throw Error(`Children of a root must be ElementNode`);\n }\n currentNode.insertAfter(nodeToMove);\n return [currentNode, nodeToMove, nodeToMove];\n } else {\n const [leftTree, rightTree, newParent] = recurse(parent);\n const nextSiblings = currentNode.getNextSiblings();\n newParent.append(nodeToMove, ...nextSiblings);\n return [leftTree, rightTree, nodeToMove];\n }\n };\n const [leftTree, rightTree] = recurse(startNode);\n return [leftTree, rightTree];\n}\n\n/**\n * @param x - The element being tested\n * @returns Returns true if x is an HTML anchor tag, false otherwise\n */\nfunction isHTMLAnchorElement(x) {\n return isHTMLElement(x) && x.tagName === 'A';\n}\n\n/**\n * @param x - The element being testing\n * @returns Returns true if x is an HTML element, false otherwise.\n */\nfunction isHTMLElement(x) {\n // @ts-ignore-next-line - strict check on nodeType here should filter out non-Element EventTarget implementors\n return x.nodeType === 1;\n}\n\n/**\n *\n * @param node - the Dom Node to check\n * @returns if the Dom Node is an inline node\n */\nfunction isInlineDomNode(node) {\n const inlineNodes = new RegExp(/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var|#text)$/, 'i');\n return node.nodeName.match(inlineNodes) !== null;\n}\n\n/**\n *\n * @param node - the Dom Node to check\n * @returns if the Dom Node is a block node\n */\nfunction isBlockDomNode(node) {\n const blockNodes = new RegExp(/^(address|article|aside|blockquote|canvas|dd|div|dl|dt|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hr|li|main|nav|noscript|ol|p|pre|section|table|td|tfoot|ul|video)$/, 'i');\n return node.nodeName.match(blockNodes) !== null;\n}\n\n/**\n * This function is for internal use of the library.\n * Please do not use it as it may change in the future.\n */\nfunction INTERNAL_$isBlock(node) {\n if ($isRootNode(node) || $isDecoratorNode(node) && !node.isInline()) {\n return true;\n }\n if (!$isElementNode(node) || $isRootOrShadowRoot(node)) {\n return false;\n }\n const firstChild = node.getFirstChild();\n const isLeafElement = firstChild === null || $isLineBreakNode(firstChild) || $isTextNode(firstChild) || firstChild.isInline();\n return !node.isInline() && node.canBeEmpty() !== false && isLeafElement;\n}\nfunction $getAncestor(node, predicate) {\n let parent = node;\n while (parent !== null && parent.getParent() !== null && !predicate(parent)) {\n parent = parent.getParentOrThrow();\n }\n return predicate(parent) ? parent : null;\n}\n\n/**\n * Utility function for accessing current active editor instance.\n * @returns Current active editor\n */\nfunction $getEditor() {\n return getActiveEditor();\n}\n\n/** @internal */\n\n/**\n * @internal\n * Compute a cached Map of node type to nodes for a frozen EditorState\n */\nconst cachedNodeMaps = new WeakMap();\nconst EMPTY_TYPE_TO_NODE_MAP = new Map();\nfunction getCachedTypeToNodeMap(editorState) {\n // If this is a new Editor it may have a writable this._editorState\n // with only a 'root' entry.\n if (!editorState._readOnly && editorState.isEmpty()) {\n return EMPTY_TYPE_TO_NODE_MAP;\n }\n if (!editorState._readOnly) {\n throw Error(`getCachedTypeToNodeMap called with a writable EditorState`);\n }\n let typeToNodeMap = cachedNodeMaps.get(editorState);\n if (!typeToNodeMap) {\n typeToNodeMap = new Map();\n cachedNodeMaps.set(editorState, typeToNodeMap);\n for (const [nodeKey, node] of editorState._nodeMap) {\n const nodeType = node.__type;\n let nodeMap = typeToNodeMap.get(nodeType);\n if (!nodeMap) {\n nodeMap = new Map();\n typeToNodeMap.set(nodeType, nodeMap);\n }\n nodeMap.set(nodeKey, node);\n }\n }\n return typeToNodeMap;\n}\n\n/**\n * Returns a clone of a node using `node.constructor.clone()` followed by\n * `clone.afterCloneFrom(node)`. The resulting clone must have the same key,\n * parent/next/prev pointers, and other properties that are not set by\n * `node.constructor.clone` (format, style, etc.). This is primarily used by\n * {@link LexicalNode.getWritable} to create a writable version of an\n * existing node. The clone is the same logical node as the original node,\n * do not try and use this function to duplicate or copy an existing node.\n *\n * Does not mutate the EditorState.\n * @param node - The node to be cloned.\n * @returns The clone of the node.\n */\nfunction $cloneWithProperties(latestNode) {\n const constructor = latestNode.constructor;\n const mutableNode = constructor.clone(latestNode);\n mutableNode.afterCloneFrom(latestNode);\n {\n if (!(mutableNode.__key === latestNode.__key)) {\n throw Error(`$cloneWithProperties: ${constructor.name}.clone(node) (with type '${constructor.getType()}') did not return a node with the same key, make sure to specify node.__key as the last argument to the constructor`);\n }\n if (!(mutableNode.__parent === latestNode.__parent && mutableNode.__next === latestNode.__next && mutableNode.__prev === latestNode.__prev)) {\n throw Error(`$cloneWithProperties: ${constructor.name}.clone(node) (with type '${constructor.getType()}') overrided afterCloneFrom but did not call super.afterCloneFrom(prevNode)`);\n }\n }\n return mutableNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction $garbageCollectDetachedDecorators(editor, pendingEditorState) {\n const currentDecorators = editor._decorators;\n const pendingDecorators = editor._pendingDecorators;\n let decorators = pendingDecorators || currentDecorators;\n const nodeMap = pendingEditorState._nodeMap;\n let key;\n for (key in decorators) {\n if (!nodeMap.has(key)) {\n if (decorators === currentDecorators) {\n decorators = cloneDecorators(editor);\n }\n delete decorators[key];\n }\n }\n}\nfunction $garbageCollectDetachedDeepChildNodes(node, parentKey, prevNodeMap, nodeMap, nodeMapDelete, dirtyNodes) {\n let child = node.getFirstChild();\n while (child !== null) {\n const childKey = child.__key;\n // TODO Revise condition below, redundant? LexicalNode already cleans up children when moving Nodes\n if (child.__parent === parentKey) {\n if ($isElementNode(child)) {\n $garbageCollectDetachedDeepChildNodes(child, childKey, prevNodeMap, nodeMap, nodeMapDelete, dirtyNodes);\n }\n\n // If we have created a node and it was dereferenced, then also\n // remove it from out dirty nodes Set.\n if (!prevNodeMap.has(childKey)) {\n dirtyNodes.delete(childKey);\n }\n nodeMapDelete.push(childKey);\n }\n child = child.getNextSibling();\n }\n}\nfunction $garbageCollectDetachedNodes(prevEditorState, editorState, dirtyLeaves, dirtyElements) {\n const prevNodeMap = prevEditorState._nodeMap;\n const nodeMap = editorState._nodeMap;\n // Store dirtyElements in a queue for later deletion; deleting dirty subtrees too early will\n // hinder accessing .__next on child nodes\n const nodeMapDelete = [];\n for (const [nodeKey] of dirtyElements) {\n const node = nodeMap.get(nodeKey);\n if (node !== undefined) {\n // Garbage collect node and its children if they exist\n if (!node.isAttached()) {\n if ($isElementNode(node)) {\n $garbageCollectDetachedDeepChildNodes(node, nodeKey, prevNodeMap, nodeMap, nodeMapDelete, dirtyElements);\n }\n // If we have created a node and it was dereferenced, then also\n // remove it from out dirty nodes Set.\n if (!prevNodeMap.has(nodeKey)) {\n dirtyElements.delete(nodeKey);\n }\n nodeMapDelete.push(nodeKey);\n }\n }\n }\n for (const nodeKey of nodeMapDelete) {\n nodeMap.delete(nodeKey);\n }\n for (const nodeKey of dirtyLeaves) {\n const node = nodeMap.get(nodeKey);\n if (node !== undefined && !node.isAttached()) {\n if (!prevNodeMap.has(nodeKey)) {\n dirtyLeaves.delete(nodeKey);\n }\n nodeMap.delete(nodeKey);\n }\n }\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nlet subTreeTextContent = '';\nlet subTreeDirectionedTextContent = '';\nlet subTreeTextFormat = null;\nlet subTreeTextStyle = '';\nlet editorTextContent = '';\nlet activeEditorConfig;\nlet activeEditor$1;\nlet activeEditorNodes;\nlet treatAllNodesAsDirty = false;\nlet activeEditorStateReadOnly = false;\nlet activeMutationListeners;\nlet activeTextDirection = null;\nlet activeDirtyElements;\nlet activeDirtyLeaves;\nlet activePrevNodeMap;\nlet activeNextNodeMap;\nlet activePrevKeyToDOMMap;\nlet mutatedNodes;\nfunction destroyNode(key, parentDOM) {\n const node = activePrevNodeMap.get(key);\n if (parentDOM !== null) {\n const dom = getPrevElementByKeyOrThrow(key);\n if (dom.parentNode === parentDOM) {\n parentDOM.removeChild(dom);\n }\n }\n\n // This logic is really important, otherwise we will leak DOM nodes\n // when their corresponding LexicalNodes are removed from the editor state.\n if (!activeNextNodeMap.has(key)) {\n activeEditor$1._keyToDOMMap.delete(key);\n }\n if ($isElementNode(node)) {\n const children = createChildrenArray(node, activePrevNodeMap);\n destroyChildren(children, 0, children.length - 1, null);\n }\n if (node !== undefined) {\n setMutatedNode(mutatedNodes, activeEditorNodes, activeMutationListeners, node, 'destroyed');\n }\n}\nfunction destroyChildren(children, _startIndex, endIndex, dom) {\n let startIndex = _startIndex;\n for (; startIndex <= endIndex; ++startIndex) {\n const child = children[startIndex];\n if (child !== undefined) {\n destroyNode(child, dom);\n }\n }\n}\nfunction setTextAlign(domStyle, value) {\n domStyle.setProperty('text-align', value);\n}\nconst DEFAULT_INDENT_VALUE = '40px';\nfunction setElementIndent(dom, indent) {\n const indentClassName = activeEditorConfig.theme.indent;\n if (typeof indentClassName === 'string') {\n const elementHasClassName = dom.classList.contains(indentClassName);\n if (indent > 0 && !elementHasClassName) {\n dom.classList.add(indentClassName);\n } else if (indent < 1 && elementHasClassName) {\n dom.classList.remove(indentClassName);\n }\n }\n const indentationBaseValue = getComputedStyle(dom).getPropertyValue('--lexical-indent-base-value') || DEFAULT_INDENT_VALUE;\n dom.style.setProperty('padding-inline-start', indent === 0 ? '' : `calc(${indent} * ${indentationBaseValue})`);\n}\nfunction setElementFormat(dom, format) {\n const domStyle = dom.style;\n if (format === 0) {\n setTextAlign(domStyle, '');\n } else if (format === IS_ALIGN_LEFT) {\n setTextAlign(domStyle, 'left');\n } else if (format === IS_ALIGN_CENTER) {\n setTextAlign(domStyle, 'center');\n } else if (format === IS_ALIGN_RIGHT) {\n setTextAlign(domStyle, 'right');\n } else if (format === IS_ALIGN_JUSTIFY) {\n setTextAlign(domStyle, 'justify');\n } else if (format === IS_ALIGN_START) {\n setTextAlign(domStyle, 'start');\n } else if (format === IS_ALIGN_END) {\n setTextAlign(domStyle, 'end');\n }\n}\nfunction $createNode(key, parentDOM, insertDOM) {\n const node = activeNextNodeMap.get(key);\n if (node === undefined) {\n {\n throw Error(`createNode: node does not exist in nodeMap`);\n }\n }\n const dom = node.createDOM(activeEditorConfig, activeEditor$1);\n storeDOMWithKey(key, dom, activeEditor$1);\n\n // This helps preserve the text, and stops spell check tools from\n // merging or break the spans (which happens if they are missing\n // this attribute).\n if ($isTextNode(node)) {\n dom.setAttribute('data-lexical-text', 'true');\n } else if ($isDecoratorNode(node)) {\n dom.setAttribute('data-lexical-decorator', 'true');\n }\n if ($isElementNode(node)) {\n const indent = node.__indent;\n const childrenSize = node.__size;\n if (indent !== 0) {\n setElementIndent(dom, indent);\n }\n if (childrenSize !== 0) {\n const endIndex = childrenSize - 1;\n const children = createChildrenArray(node, activeNextNodeMap);\n $createChildrenWithDirection(children, endIndex, node, dom);\n }\n const format = node.__format;\n if (format !== 0) {\n setElementFormat(dom, format);\n }\n if (!node.isInline()) {\n reconcileElementTerminatingLineBreak(null, node, dom);\n }\n if ($textContentRequiresDoubleLinebreakAtEnd(node)) {\n subTreeTextContent += DOUBLE_LINE_BREAK;\n editorTextContent += DOUBLE_LINE_BREAK;\n }\n } else {\n const text = node.getTextContent();\n if ($isDecoratorNode(node)) {\n const decorator = node.decorate(activeEditor$1, activeEditorConfig);\n if (decorator !== null) {\n reconcileDecorator(key, decorator);\n }\n // Decorators are always non editable\n dom.contentEditable = 'false';\n } else if ($isTextNode(node)) {\n if (!node.isDirectionless()) {\n subTreeDirectionedTextContent += text;\n }\n }\n subTreeTextContent += text;\n editorTextContent += text;\n }\n if (parentDOM !== null) {\n if (insertDOM != null) {\n parentDOM.insertBefore(dom, insertDOM);\n } else {\n // @ts-expect-error: internal field\n const possibleLineBreak = parentDOM.__lexicalLineBreak;\n if (possibleLineBreak != null) {\n parentDOM.insertBefore(dom, possibleLineBreak);\n } else {\n parentDOM.appendChild(dom);\n }\n }\n }\n {\n // Freeze the node in DEV to prevent accidental mutations\n Object.freeze(node);\n }\n setMutatedNode(mutatedNodes, activeEditorNodes, activeMutationListeners, node, 'created');\n return dom;\n}\nfunction $createChildrenWithDirection(children, endIndex, element, dom) {\n const previousSubTreeDirectionedTextContent = subTreeDirectionedTextContent;\n subTreeDirectionedTextContent = '';\n $createChildren(children, element, 0, endIndex, dom, null);\n reconcileBlockDirection(element, dom);\n subTreeDirectionedTextContent = previousSubTreeDirectionedTextContent;\n}\nfunction $createChildren(children, element, _startIndex, endIndex, dom, insertDOM) {\n const previousSubTreeTextContent = subTreeTextContent;\n subTreeTextContent = '';\n let startIndex = _startIndex;\n for (; startIndex <= endIndex; ++startIndex) {\n $createNode(children[startIndex], dom, insertDOM);\n const node = activeNextNodeMap.get(children[startIndex]);\n if (node !== null && $isTextNode(node)) {\n if (subTreeTextFormat === null) {\n subTreeTextFormat = node.getFormat();\n }\n if (subTreeTextStyle === '') {\n subTreeTextStyle = node.getStyle();\n }\n }\n }\n if ($textContentRequiresDoubleLinebreakAtEnd(element)) {\n subTreeTextContent += DOUBLE_LINE_BREAK;\n }\n // @ts-expect-error: internal field\n dom.__lexicalTextContent = subTreeTextContent;\n subTreeTextContent = previousSubTreeTextContent + subTreeTextContent;\n}\nfunction isLastChildLineBreakOrDecorator(childKey, nodeMap) {\n const node = nodeMap.get(childKey);\n return $isLineBreakNode(node) || $isDecoratorNode(node) && node.isInline();\n}\n\n// If we end an element with a LineBreakNode, then we need to add an additional <br>\nfunction reconcileElementTerminatingLineBreak(prevElement, nextElement, dom) {\n const prevLineBreak = prevElement !== null && (prevElement.__size === 0 || isLastChildLineBreakOrDecorator(prevElement.__last, activePrevNodeMap));\n const nextLineBreak = nextElement.__size === 0 || isLastChildLineBreakOrDecorator(nextElement.__last, activeNextNodeMap);\n if (prevLineBreak) {\n if (!nextLineBreak) {\n // @ts-expect-error: internal field\n const element = dom.__lexicalLineBreak;\n if (element != null) {\n try {\n dom.removeChild(element);\n } catch (error) {\n if (typeof error === 'object' && error != null) {\n const msg = `${error.toString()} Parent: ${dom.tagName}, child: ${element.tagName}.`;\n throw new Error(msg);\n } else {\n throw error;\n }\n }\n }\n\n // @ts-expect-error: internal field\n dom.__lexicalLineBreak = null;\n }\n } else if (nextLineBreak) {\n const element = document.createElement('br');\n // @ts-expect-error: internal field\n dom.__lexicalLineBreak = element;\n dom.appendChild(element);\n }\n}\nfunction reconcileParagraphFormat(element) {\n if ($isParagraphNode(element) && subTreeTextFormat != null && subTreeTextFormat !== element.__textFormat && !activeEditorStateReadOnly) {\n element.setTextFormat(subTreeTextFormat);\n element.setTextStyle(subTreeTextStyle);\n }\n}\nfunction reconcileParagraphStyle(element) {\n if ($isParagraphNode(element) && subTreeTextStyle !== '' && subTreeTextStyle !== element.__textStyle && !activeEditorStateReadOnly) {\n element.setTextStyle(subTreeTextStyle);\n }\n}\nfunction reconcileBlockDirection(element, dom) {\n const previousSubTreeDirectionTextContent =\n // @ts-expect-error: internal field\n dom.__lexicalDirTextContent;\n // @ts-expect-error: internal field\n const previousDirection = dom.__lexicalDir;\n if (previousSubTreeDirectionTextContent !== subTreeDirectionedTextContent || previousDirection !== activeTextDirection) {\n const hasEmptyDirectionedTextContent = subTreeDirectionedTextContent === '';\n const direction = hasEmptyDirectionedTextContent ? activeTextDirection : getTextDirection(subTreeDirectionedTextContent);\n if (direction !== previousDirection) {\n const classList = dom.classList;\n const theme = activeEditorConfig.theme;\n let previousDirectionTheme = previousDirection !== null ? theme[previousDirection] : undefined;\n let nextDirectionTheme = direction !== null ? theme[direction] : undefined;\n\n // Remove the old theme classes if they exist\n if (previousDirectionTheme !== undefined) {\n if (typeof previousDirectionTheme === 'string') {\n const classNamesArr = normalizeClassNames(previousDirectionTheme);\n previousDirectionTheme = theme[previousDirection] = classNamesArr;\n }\n\n // @ts-ignore: intentional\n classList.remove(...previousDirectionTheme);\n }\n if (direction === null || hasEmptyDirectionedTextContent && direction === 'ltr') {\n // Remove direction\n dom.removeAttribute('dir');\n } else {\n // Apply the new theme classes if they exist\n if (nextDirectionTheme !== undefined) {\n if (typeof nextDirectionTheme === 'string') {\n const classNamesArr = normalizeClassNames(nextDirectionTheme);\n // @ts-expect-error: intentional\n nextDirectionTheme = theme[direction] = classNamesArr;\n }\n if (nextDirectionTheme !== undefined) {\n classList.add(...nextDirectionTheme);\n }\n }\n\n // Update direction\n dom.dir = direction;\n }\n if (!activeEditorStateReadOnly) {\n const writableNode = element.getWritable();\n writableNode.__dir = direction;\n }\n }\n activeTextDirection = direction;\n // @ts-expect-error: internal field\n dom.__lexicalDirTextContent = subTreeDirectionedTextContent;\n // @ts-expect-error: internal field\n dom.__lexicalDir = direction;\n }\n}\nfunction $reconcileChildrenWithDirection(prevElement, nextElement, dom) {\n const previousSubTreeDirectionTextContent = subTreeDirectionedTextContent;\n subTreeDirectionedTextContent = '';\n subTreeTextFormat = null;\n subTreeTextStyle = '';\n $reconcileChildren(prevElement, nextElement, dom);\n reconcileBlockDirection(nextElement, dom);\n reconcileParagraphFormat(nextElement);\n reconcileParagraphStyle(nextElement);\n subTreeDirectionedTextContent = previousSubTreeDirectionTextContent;\n}\nfunction createChildrenArray(element, nodeMap) {\n const children = [];\n let nodeKey = element.__first;\n while (nodeKey !== null) {\n const node = nodeMap.get(nodeKey);\n if (node === undefined) {\n {\n throw Error(`createChildrenArray: node does not exist in nodeMap`);\n }\n }\n children.push(nodeKey);\n nodeKey = node.__next;\n }\n return children;\n}\nfunction $reconcileChildren(prevElement, nextElement, dom) {\n const previousSubTreeTextContent = subTreeTextContent;\n const prevChildrenSize = prevElement.__size;\n const nextChildrenSize = nextElement.__size;\n subTreeTextContent = '';\n if (prevChildrenSize === 1 && nextChildrenSize === 1) {\n const prevFirstChildKey = prevElement.__first;\n const nextFrstChildKey = nextElement.__first;\n if (prevFirstChildKey === nextFrstChildKey) {\n $reconcileNode(prevFirstChildKey, dom);\n } else {\n const lastDOM = getPrevElementByKeyOrThrow(prevFirstChildKey);\n const replacementDOM = $createNode(nextFrstChildKey, null, null);\n try {\n dom.replaceChild(replacementDOM, lastDOM);\n } catch (error) {\n if (typeof error === 'object' && error != null) {\n const msg = `${error.toString()} Parent: ${dom.tagName}, new child: {tag: ${replacementDOM.tagName} key: ${nextFrstChildKey}}, old child: {tag: ${lastDOM.tagName}, key: ${prevFirstChildKey}}.`;\n throw new Error(msg);\n } else {\n throw error;\n }\n }\n destroyNode(prevFirstChildKey, null);\n }\n const nextChildNode = activeNextNodeMap.get(nextFrstChildKey);\n if ($isTextNode(nextChildNode)) {\n if (subTreeTextFormat === null) {\n subTreeTextFormat = nextChildNode.getFormat();\n }\n if (subTreeTextStyle === '') {\n subTreeTextStyle = nextChildNode.getStyle();\n }\n }\n } else {\n const prevChildren = createChildrenArray(prevElement, activePrevNodeMap);\n const nextChildren = createChildrenArray(nextElement, activeNextNodeMap);\n if (prevChildrenSize === 0) {\n if (nextChildrenSize !== 0) {\n $createChildren(nextChildren, nextElement, 0, nextChildrenSize - 1, dom, null);\n }\n } else if (nextChildrenSize === 0) {\n if (prevChildrenSize !== 0) {\n // @ts-expect-error: internal field\n const lexicalLineBreak = dom.__lexicalLineBreak;\n const canUseFastPath = lexicalLineBreak == null;\n destroyChildren(prevChildren, 0, prevChildrenSize - 1, canUseFastPath ? null : dom);\n if (canUseFastPath) {\n // Fast path for removing DOM nodes\n dom.textContent = '';\n }\n }\n } else {\n $reconcileNodeChildren(nextElement, prevChildren, nextChildren, prevChildrenSize, nextChildrenSize, dom);\n }\n }\n if ($textContentRequiresDoubleLinebreakAtEnd(nextElement)) {\n subTreeTextContent += DOUBLE_LINE_BREAK;\n }\n\n // @ts-expect-error: internal field\n dom.__lexicalTextContent = subTreeTextContent;\n subTreeTextContent = previousSubTreeTextContent + subTreeTextContent;\n}\nfunction $reconcileNode(key, parentDOM) {\n const prevNode = activePrevNodeMap.get(key);\n let nextNode = activeNextNodeMap.get(key);\n if (prevNode === undefined || nextNode === undefined) {\n {\n throw Error(`reconcileNode: prevNode or nextNode does not exist in nodeMap`);\n }\n }\n const isDirty = treatAllNodesAsDirty || activeDirtyLeaves.has(key) || activeDirtyElements.has(key);\n const dom = getElementByKeyOrThrow(activeEditor$1, key);\n\n // If the node key points to the same instance in both states\n // and isn't dirty, we just update the text content cache\n // and return the existing DOM Node.\n if (prevNode === nextNode && !isDirty) {\n if ($isElementNode(prevNode)) {\n // @ts-expect-error: internal field\n const previousSubTreeTextContent = dom.__lexicalTextContent;\n if (previousSubTreeTextContent !== undefined) {\n subTreeTextContent += previousSubTreeTextContent;\n editorTextContent += previousSubTreeTextContent;\n }\n\n // @ts-expect-error: internal field\n const previousSubTreeDirectionTextContent = dom.__lexicalDirTextContent;\n if (previousSubTreeDirectionTextContent !== undefined) {\n subTreeDirectionedTextContent += previousSubTreeDirectionTextContent;\n }\n } else {\n const text = prevNode.getTextContent();\n if ($isTextNode(prevNode) && !prevNode.isDirectionless()) {\n subTreeDirectionedTextContent += text;\n }\n editorTextContent += text;\n subTreeTextContent += text;\n }\n return dom;\n }\n // If the node key doesn't point to the same instance in both maps,\n // it means it were cloned. If they're also dirty, we mark them as mutated.\n if (prevNode !== nextNode && isDirty) {\n setMutatedNode(mutatedNodes, activeEditorNodes, activeMutationListeners, nextNode, 'updated');\n }\n\n // Update node. If it returns true, we need to unmount and re-create the node\n if (nextNode.updateDOM(prevNode, dom, activeEditorConfig)) {\n const replacementDOM = $createNode(key, null, null);\n if (parentDOM === null) {\n {\n throw Error(`reconcileNode: parentDOM is null`);\n }\n }\n parentDOM.replaceChild(replacementDOM, dom);\n destroyNode(key, null);\n return replacementDOM;\n }\n if ($isElementNode(prevNode) && $isElementNode(nextNode)) {\n // Reconcile element children\n const nextIndent = nextNode.__indent;\n if (nextIndent !== prevNode.__indent) {\n setElementIndent(dom, nextIndent);\n }\n const nextFormat = nextNode.__format;\n if (nextFormat !== prevNode.__format) {\n setElementFormat(dom, nextFormat);\n }\n if (isDirty) {\n $reconcileChildrenWithDirection(prevNode, nextNode, dom);\n if (!$isRootNode(nextNode) && !nextNode.isInline()) {\n reconcileElementTerminatingLineBreak(prevNode, nextNode, dom);\n }\n }\n if ($textContentRequiresDoubleLinebreakAtEnd(nextNode)) {\n subTreeTextContent += DOUBLE_LINE_BREAK;\n editorTextContent += DOUBLE_LINE_BREAK;\n }\n } else {\n const text = nextNode.getTextContent();\n if ($isDecoratorNode(nextNode)) {\n const decorator = nextNode.decorate(activeEditor$1, activeEditorConfig);\n if (decorator !== null) {\n reconcileDecorator(key, decorator);\n }\n } else if ($isTextNode(nextNode) && !nextNode.isDirectionless()) {\n // Handle text content, for LTR, LTR cases.\n subTreeDirectionedTextContent += text;\n }\n subTreeTextContent += text;\n editorTextContent += text;\n }\n if (!activeEditorStateReadOnly && $isRootNode(nextNode) && nextNode.__cachedText !== editorTextContent) {\n // Cache the latest text content.\n const nextRootNode = nextNode.getWritable();\n nextRootNode.__cachedText = editorTextContent;\n nextNode = nextRootNode;\n }\n {\n // Freeze the node in DEV to prevent accidental mutations\n Object.freeze(nextNode);\n }\n return dom;\n}\nfunction reconcileDecorator(key, decorator) {\n let pendingDecorators = activeEditor$1._pendingDecorators;\n const currentDecorators = activeEditor$1._decorators;\n if (pendingDecorators === null) {\n if (currentDecorators[key] === decorator) {\n return;\n }\n pendingDecorators = cloneDecorators(activeEditor$1);\n }\n pendingDecorators[key] = decorator;\n}\nfunction getFirstChild(element) {\n return element.firstChild;\n}\nfunction getNextSibling(element) {\n let nextSibling = element.nextSibling;\n if (nextSibling !== null && nextSibling === activeEditor$1._blockCursorElement) {\n nextSibling = nextSibling.nextSibling;\n }\n return nextSibling;\n}\nfunction $reconcileNodeChildren(nextElement, prevChildren, nextChildren, prevChildrenLength, nextChildrenLength, dom) {\n const prevEndIndex = prevChildrenLength - 1;\n const nextEndIndex = nextChildrenLength - 1;\n let prevChildrenSet;\n let nextChildrenSet;\n let siblingDOM = getFirstChild(dom);\n let prevIndex = 0;\n let nextIndex = 0;\n while (prevIndex <= prevEndIndex && nextIndex <= nextEndIndex) {\n const prevKey = prevChildren[prevIndex];\n const nextKey = nextChildren[nextIndex];\n if (prevKey === nextKey) {\n siblingDOM = getNextSibling($reconcileNode(nextKey, dom));\n prevIndex++;\n nextIndex++;\n } else {\n if (prevChildrenSet === undefined) {\n prevChildrenSet = new Set(prevChildren);\n }\n if (nextChildrenSet === undefined) {\n nextChildrenSet = new Set(nextChildren);\n }\n const nextHasPrevKey = nextChildrenSet.has(prevKey);\n const prevHasNextKey = prevChildrenSet.has(nextKey);\n if (!nextHasPrevKey) {\n // Remove prev\n siblingDOM = getNextSibling(getPrevElementByKeyOrThrow(prevKey));\n destroyNode(prevKey, dom);\n prevIndex++;\n } else if (!prevHasNextKey) {\n // Create next\n $createNode(nextKey, dom, siblingDOM);\n nextIndex++;\n } else {\n // Move next\n const childDOM = getElementByKeyOrThrow(activeEditor$1, nextKey);\n if (childDOM === siblingDOM) {\n siblingDOM = getNextSibling($reconcileNode(nextKey, dom));\n } else {\n if (siblingDOM != null) {\n dom.insertBefore(childDOM, siblingDOM);\n } else {\n dom.appendChild(childDOM);\n }\n $reconcileNode(nextKey, dom);\n }\n prevIndex++;\n nextIndex++;\n }\n }\n const node = activeNextNodeMap.get(nextKey);\n if (node !== null && $isTextNode(node)) {\n if (subTreeTextFormat === null) {\n subTreeTextFormat = node.getFormat();\n }\n if (subTreeTextStyle === '') {\n subTreeTextStyle = node.getStyle();\n }\n }\n }\n const appendNewChildren = prevIndex > prevEndIndex;\n const removeOldChildren = nextIndex > nextEndIndex;\n if (appendNewChildren && !removeOldChildren) {\n const previousNode = nextChildren[nextEndIndex + 1];\n const insertDOM = previousNode === undefined ? null : activeEditor$1.getElementByKey(previousNode);\n $createChildren(nextChildren, nextElement, nextIndex, nextEndIndex, dom, insertDOM);\n } else if (removeOldChildren && !appendNewChildren) {\n destroyChildren(prevChildren, prevIndex, prevEndIndex, dom);\n }\n}\nfunction $reconcileRoot(prevEditorState, nextEditorState, editor, dirtyType, dirtyElements, dirtyLeaves) {\n // We cache text content to make retrieval more efficient.\n // The cache must be rebuilt during reconciliation to account for any changes.\n subTreeTextContent = '';\n editorTextContent = '';\n subTreeDirectionedTextContent = '';\n // Rather than pass around a load of arguments through the stack recursively\n // we instead set them as bindings within the scope of the module.\n treatAllNodesAsDirty = dirtyType === FULL_RECONCILE;\n activeTextDirection = null;\n activeEditor$1 = editor;\n activeEditorConfig = editor._config;\n activeEditorNodes = editor._nodes;\n activeMutationListeners = activeEditor$1._listeners.mutation;\n activeDirtyElements = dirtyElements;\n activeDirtyLeaves = dirtyLeaves;\n activePrevNodeMap = prevEditorState._nodeMap;\n activeNextNodeMap = nextEditorState._nodeMap;\n activeEditorStateReadOnly = nextEditorState._readOnly;\n activePrevKeyToDOMMap = new Map(editor._keyToDOMMap);\n // We keep track of mutated nodes so we can trigger mutation\n // listeners later in the update cycle.\n const currentMutatedNodes = new Map();\n mutatedNodes = currentMutatedNodes;\n $reconcileNode('root', null);\n // We don't want a bunch of void checks throughout the scope\n // so instead we make it seem that these values are always set.\n // We also want to make sure we clear them down, otherwise we\n // can leak memory.\n // @ts-ignore\n activeEditor$1 = undefined;\n // @ts-ignore\n activeEditorNodes = undefined;\n // @ts-ignore\n activeDirtyElements = undefined;\n // @ts-ignore\n activeDirtyLeaves = undefined;\n // @ts-ignore\n activePrevNodeMap = undefined;\n // @ts-ignore\n activeNextNodeMap = undefined;\n // @ts-ignore\n activeEditorConfig = undefined;\n // @ts-ignore\n activePrevKeyToDOMMap = undefined;\n // @ts-ignore\n mutatedNodes = undefined;\n return currentMutatedNodes;\n}\nfunction storeDOMWithKey(key, dom, editor) {\n const keyToDOMMap = editor._keyToDOMMap;\n // @ts-ignore We intentionally add this to the Node.\n dom['__lexicalKey_' + editor._key] = key;\n keyToDOMMap.set(key, dom);\n}\nfunction getPrevElementByKeyOrThrow(key) {\n const element = activePrevKeyToDOMMap.get(key);\n if (element === undefined) {\n {\n throw Error(`Reconciliation: could not find DOM element for node key ${key}`);\n }\n }\n return element;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst PASS_THROUGH_COMMAND = Object.freeze({});\nconst ANDROID_COMPOSITION_LATENCY = 30;\nconst rootElementEvents = [['keydown', onKeyDown], ['pointerdown', onPointerDown], ['compositionstart', onCompositionStart], ['compositionend', onCompositionEnd], ['input', onInput], ['click', onClick], ['cut', PASS_THROUGH_COMMAND], ['copy', PASS_THROUGH_COMMAND], ['dragstart', PASS_THROUGH_COMMAND], ['dragover', PASS_THROUGH_COMMAND], ['dragend', PASS_THROUGH_COMMAND], ['paste', PASS_THROUGH_COMMAND], ['focus', PASS_THROUGH_COMMAND], ['blur', PASS_THROUGH_COMMAND], ['drop', PASS_THROUGH_COMMAND]];\nif (CAN_USE_BEFORE_INPUT) {\n rootElementEvents.push(['beforeinput', (event, editor) => onBeforeInput(event, editor)]);\n}\nlet lastKeyDownTimeStamp = 0;\nlet lastKeyCode = null;\nlet lastBeforeInputInsertTextTimeStamp = 0;\nlet unprocessedBeforeInputData = null;\nconst rootElementsRegistered = new WeakMap();\nlet isSelectionChangeFromDOMUpdate = false;\nlet isSelectionChangeFromMouseDown = false;\nlet isInsertLineBreak = false;\nlet isFirefoxEndingComposition = false;\nlet collapsedSelectionFormat = [0, '', 0, 'root', 0];\n\n// This function is used to determine if Lexical should attempt to override\n// the default browser behavior for insertion of text and use its own internal\n// heuristics. This is an extremely important function, and makes much of Lexical\n// work as intended between different browsers and across word, line and character\n// boundary/formats. It also is important for text replacement, node schemas and\n// composition mechanics.\n\nfunction $shouldPreventDefaultAndInsertText(selection, domTargetRange, text, timeStamp, isBeforeInput) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = anchor.getNode();\n const editor = getActiveEditor();\n const domSelection = getDOMSelection(editor._window);\n const domAnchorNode = domSelection !== null ? domSelection.anchorNode : null;\n const anchorKey = anchor.key;\n const backingAnchorElement = editor.getElementByKey(anchorKey);\n const textLength = text.length;\n return anchorKey !== focus.key ||\n // If we're working with a non-text node.\n !$isTextNode(anchorNode) ||\n // If we are replacing a range with a single character or grapheme, and not composing.\n (!isBeforeInput && (!CAN_USE_BEFORE_INPUT ||\n // We check to see if there has been\n // a recent beforeinput event for \"textInput\". If there has been one in the last\n // 50ms then we proceed as normal. However, if there is not, then this is likely\n // a dangling `input` event caused by execCommand('insertText').\n lastBeforeInputInsertTextTimeStamp < timeStamp + 50) || anchorNode.isDirty() && textLength < 2 || doesContainGrapheme(text)) && anchor.offset !== focus.offset && !anchorNode.isComposing() ||\n // Any non standard text node.\n $isTokenOrSegmented(anchorNode) ||\n // If the text length is more than a single character and we're either\n // dealing with this in \"beforeinput\" or where the node has already recently\n // been changed (thus is dirty).\n anchorNode.isDirty() && textLength > 1 ||\n // If the DOM selection element is not the same as the backing node during beforeinput.\n (isBeforeInput || !CAN_USE_BEFORE_INPUT) && backingAnchorElement !== null && !anchorNode.isComposing() && domAnchorNode !== getDOMTextNode(backingAnchorElement) ||\n // If TargetRange is not the same as the DOM selection; browser trying to edit random parts\n // of the editor.\n domSelection !== null && domTargetRange !== null && (!domTargetRange.collapsed || domTargetRange.startContainer !== domSelection.anchorNode || domTargetRange.startOffset !== domSelection.anchorOffset) ||\n // Check if we're changing from bold to italics, or some other format.\n anchorNode.getFormat() !== selection.format || anchorNode.getStyle() !== selection.style ||\n // One last set of heuristics to check against.\n $shouldInsertTextAfterOrBeforeTextNode(selection, anchorNode);\n}\nfunction shouldSkipSelectionChange(domNode, offset) {\n return domNode !== null && domNode.nodeValue !== null && domNode.nodeType === DOM_TEXT_TYPE && offset !== 0 && offset !== domNode.nodeValue.length;\n}\nfunction onSelectionChange(domSelection, editor, isActive) {\n const {\n anchorNode: anchorDOM,\n anchorOffset,\n focusNode: focusDOM,\n focusOffset\n } = domSelection;\n if (isSelectionChangeFromDOMUpdate) {\n isSelectionChangeFromDOMUpdate = false;\n\n // If native DOM selection is on a DOM element, then\n // we should continue as usual, as Lexical's selection\n // may have normalized to a better child. If the DOM\n // element is a text node, we can safely apply this\n // optimization and skip the selection change entirely.\n // We also need to check if the offset is at the boundary,\n // because in this case, we might need to normalize to a\n // sibling instead.\n if (shouldSkipSelectionChange(anchorDOM, anchorOffset) && shouldSkipSelectionChange(focusDOM, focusOffset)) {\n return;\n }\n }\n updateEditor(editor, () => {\n // Non-active editor don't need any extra logic for selection, it only needs update\n // to reconcile selection (set it to null) to ensure that only one editor has non-null selection.\n if (!isActive) {\n $setSelection(null);\n return;\n }\n if (!isSelectionWithinEditor(editor, anchorDOM, focusDOM)) {\n return;\n }\n const selection = $getSelection();\n\n // Update the selection format\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor;\n const anchorNode = anchor.getNode();\n if (selection.isCollapsed()) {\n // Badly interpreted range selection when collapsed - #1482\n if (domSelection.type === 'Range' && domSelection.anchorNode === domSelection.focusNode) {\n selection.dirty = true;\n }\n\n // If we have marked a collapsed selection format, and we're\n // within the given time range – then attempt to use that format\n // instead of getting the format from the anchor node.\n const windowEvent = getWindow(editor).event;\n const currentTimeStamp = windowEvent ? windowEvent.timeStamp : performance.now();\n const [lastFormat, lastStyle, lastOffset, lastKey, timeStamp] = collapsedSelectionFormat;\n const root = $getRoot();\n const isRootTextContentEmpty = editor.isComposing() === false && root.getTextContent() === '';\n if (currentTimeStamp < timeStamp + 200 && anchor.offset === lastOffset && anchor.key === lastKey) {\n selection.format = lastFormat;\n selection.style = lastStyle;\n } else {\n if (anchor.type === 'text') {\n if (!$isTextNode(anchorNode)) {\n throw Error(`Point.getNode() must return TextNode when type is text`);\n }\n selection.format = anchorNode.getFormat();\n selection.style = anchorNode.getStyle();\n } else if (anchor.type === 'element' && !isRootTextContentEmpty) {\n const lastNode = anchor.getNode();\n selection.style = '';\n if (lastNode instanceof ParagraphNode && lastNode.getChildrenSize() === 0) {\n selection.format = lastNode.getTextFormat();\n selection.style = lastNode.getTextStyle();\n } else {\n selection.format = 0;\n }\n }\n }\n } else {\n const anchorKey = anchor.key;\n const focus = selection.focus;\n const focusKey = focus.key;\n const nodes = selection.getNodes();\n const nodesLength = nodes.length;\n const isBackward = selection.isBackward();\n const startOffset = isBackward ? focusOffset : anchorOffset;\n const endOffset = isBackward ? anchorOffset : focusOffset;\n const startKey = isBackward ? focusKey : anchorKey;\n const endKey = isBackward ? anchorKey : focusKey;\n let combinedFormat = IS_ALL_FORMATTING;\n let hasTextNodes = false;\n for (let i = 0; i < nodesLength; i++) {\n const node = nodes[i];\n const textContentSize = node.getTextContentSize();\n if ($isTextNode(node) && textContentSize !== 0 &&\n // Exclude empty text nodes at boundaries resulting from user's selection\n !(i === 0 && node.__key === startKey && startOffset === textContentSize || i === nodesLength - 1 && node.__key === endKey && endOffset === 0)) {\n // TODO: what about style?\n hasTextNodes = true;\n combinedFormat &= node.getFormat();\n if (combinedFormat === 0) {\n break;\n }\n }\n }\n selection.format = hasTextNodes ? combinedFormat : 0;\n }\n }\n dispatchCommand(editor, SELECTION_CHANGE_COMMAND, undefined);\n });\n}\n\n// This is a work-around is mainly Chrome specific bug where if you select\n// the contents of an empty block, you cannot easily unselect anything.\n// This results in a tiny selection box that looks buggy/broken. This can\n// also help other browsers when selection might \"appear\" lost, when it\n// really isn't.\nfunction onClick(event, editor) {\n updateEditor(editor, () => {\n const selection = $getSelection();\n const domSelection = getDOMSelection(editor._window);\n const lastSelection = $getPreviousSelection();\n if (domSelection) {\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor;\n const anchorNode = anchor.getNode();\n if (anchor.type === 'element' && anchor.offset === 0 && selection.isCollapsed() && !$isRootNode(anchorNode) && $getRoot().getChildrenSize() === 1 && anchorNode.getTopLevelElementOrThrow().isEmpty() && lastSelection !== null && selection.is(lastSelection)) {\n domSelection.removeAllRanges();\n selection.dirty = true;\n } else if (event.detail === 3 && !selection.isCollapsed()) {\n // Tripple click causing selection to overflow into the nearest element. In that\n // case visually it looks like a single element content is selected, focus node\n // is actually at the beginning of the next element (if present) and any manipulations\n // with selection (formatting) are affecting second element as well\n const focus = selection.focus;\n const focusNode = focus.getNode();\n if (anchorNode !== focusNode) {\n if ($isElementNode(anchorNode)) {\n anchorNode.select(0);\n } else {\n anchorNode.getParentOrThrow().select(0);\n }\n }\n }\n } else if (event.pointerType === 'touch') {\n // This is used to update the selection on touch devices when the user clicks on text after a\n // node selection. See isSelectionChangeFromMouseDown for the inverse\n const domAnchorNode = domSelection.anchorNode;\n if (domAnchorNode !== null) {\n const nodeType = domAnchorNode.nodeType;\n // If the user is attempting to click selection back onto text, then\n // we should attempt create a range selection.\n // When we click on an empty paragraph node or the end of a paragraph that ends\n // with an image/poll, the nodeType will be ELEMENT_NODE\n if (nodeType === DOM_ELEMENT_TYPE || nodeType === DOM_TEXT_TYPE) {\n const newSelection = $internalCreateRangeSelection(lastSelection, domSelection, editor, event);\n $setSelection(newSelection);\n }\n }\n }\n }\n dispatchCommand(editor, CLICK_COMMAND, event);\n });\n}\nfunction onPointerDown(event, editor) {\n // TODO implement text drag & drop\n const target = event.target;\n const pointerType = event.pointerType;\n if (target instanceof Node && pointerType !== 'touch') {\n updateEditor(editor, () => {\n // Drag & drop should not recompute selection until mouse up; otherwise the initially\n // selected content is lost.\n if (!$isSelectionCapturedInDecorator(target)) {\n isSelectionChangeFromMouseDown = true;\n }\n });\n }\n}\nfunction getTargetRange(event) {\n if (!event.getTargetRanges) {\n return null;\n }\n const targetRanges = event.getTargetRanges();\n if (targetRanges.length === 0) {\n return null;\n }\n return targetRanges[0];\n}\nfunction $canRemoveText(anchorNode, focusNode) {\n return anchorNode !== focusNode || $isElementNode(anchorNode) || $isElementNode(focusNode) || !anchorNode.isToken() || !focusNode.isToken();\n}\nfunction isPossiblyAndroidKeyPress(timeStamp) {\n return lastKeyCode === 'MediaLast' && timeStamp < lastKeyDownTimeStamp + ANDROID_COMPOSITION_LATENCY;\n}\nfunction onBeforeInput(event, editor) {\n const inputType = event.inputType;\n const targetRange = getTargetRange(event);\n\n // We let the browser do its own thing for composition.\n if (inputType === 'deleteCompositionText' ||\n // If we're pasting in FF, we shouldn't get this event\n // as the `paste` event should have triggered, unless the\n // user has dom.event.clipboardevents.enabled disabled in\n // about:config. In that case, we need to process the\n // pasted content in the DOM mutation phase.\n IS_FIREFOX && isFirefoxClipboardEvents(editor)) {\n return;\n } else if (inputType === 'insertCompositionText') {\n return;\n }\n updateEditor(editor, () => {\n const selection = $getSelection();\n if (inputType === 'deleteContentBackward') {\n if (selection === null) {\n // Use previous selection\n const prevSelection = $getPreviousSelection();\n if (!$isRangeSelection(prevSelection)) {\n return;\n }\n $setSelection(prevSelection.clone());\n }\n if ($isRangeSelection(selection)) {\n const isSelectionAnchorSameAsFocus = selection.anchor.key === selection.focus.key;\n if (isPossiblyAndroidKeyPress(event.timeStamp) && editor.isComposing() && isSelectionAnchorSameAsFocus) {\n $setCompositionKey(null);\n lastKeyDownTimeStamp = 0;\n // Fixes an Android bug where selection flickers when backspacing\n setTimeout(() => {\n updateEditor(editor, () => {\n $setCompositionKey(null);\n });\n }, ANDROID_COMPOSITION_LATENCY);\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n anchorNode.markDirty();\n selection.format = anchorNode.getFormat();\n if (!$isTextNode(anchorNode)) {\n throw Error(`Anchor node must be a TextNode`);\n }\n selection.style = anchorNode.getStyle();\n }\n } else {\n $setCompositionKey(null);\n event.preventDefault();\n // Chromium Android at the moment seems to ignore the preventDefault\n // on 'deleteContentBackward' and still deletes the content. Which leads\n // to multiple deletions. So we let the browser handle the deletion in this case.\n const selectedNodeText = selection.anchor.getNode().getTextContent();\n const hasSelectedAllTextInNode = selection.anchor.offset === 0 && selection.focus.offset === selectedNodeText.length;\n const shouldLetBrowserHandleDelete = IS_ANDROID_CHROME && isSelectionAnchorSameAsFocus && !hasSelectedAllTextInNode;\n if (!shouldLetBrowserHandleDelete) {\n dispatchCommand(editor, DELETE_CHARACTER_COMMAND, true);\n }\n }\n return;\n }\n }\n if (!$isRangeSelection(selection)) {\n return;\n }\n const data = event.data;\n\n // This represents the case when two beforeinput events are triggered at the same time (without a\n // full event loop ending at input). This happens with MacOS with the default keyboard settings,\n // a combination of autocorrection + autocapitalization.\n // Having Lexical run everything in controlled mode would fix the issue without additional code\n // but this would kill the massive performance win from the most common typing event.\n // Alternatively, when this happens we can prematurely update our EditorState based on the DOM\n // content, a job that would usually be the input event's responsibility.\n if (unprocessedBeforeInputData !== null) {\n $updateSelectedTextFromDOM(false, editor, unprocessedBeforeInputData);\n }\n if ((!selection.dirty || unprocessedBeforeInputData !== null) && selection.isCollapsed() && !$isRootNode(selection.anchor.getNode()) && targetRange !== null) {\n selection.applyDOMRange(targetRange);\n }\n unprocessedBeforeInputData = null;\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n if (inputType === 'insertText' || inputType === 'insertTranspose') {\n if (data === '\\n') {\n event.preventDefault();\n dispatchCommand(editor, INSERT_LINE_BREAK_COMMAND, false);\n } else if (data === DOUBLE_LINE_BREAK) {\n event.preventDefault();\n dispatchCommand(editor, INSERT_PARAGRAPH_COMMAND, undefined);\n } else if (data == null && event.dataTransfer) {\n // Gets around a Safari text replacement bug.\n const text = event.dataTransfer.getData('text/plain');\n event.preventDefault();\n selection.insertRawText(text);\n } else if (data != null && $shouldPreventDefaultAndInsertText(selection, targetRange, data, event.timeStamp, true)) {\n event.preventDefault();\n dispatchCommand(editor, CONTROLLED_TEXT_INSERTION_COMMAND, data);\n } else {\n unprocessedBeforeInputData = data;\n }\n lastBeforeInputInsertTextTimeStamp = event.timeStamp;\n return;\n }\n\n // Prevent the browser from carrying out\n // the input event, so we can control the\n // output.\n event.preventDefault();\n switch (inputType) {\n case 'insertFromYank':\n case 'insertFromDrop':\n case 'insertReplacementText':\n {\n dispatchCommand(editor, CONTROLLED_TEXT_INSERTION_COMMAND, event);\n break;\n }\n case 'insertFromComposition':\n {\n // This is the end of composition\n $setCompositionKey(null);\n dispatchCommand(editor, CONTROLLED_TEXT_INSERTION_COMMAND, event);\n break;\n }\n case 'insertLineBreak':\n {\n // Used for Android\n $setCompositionKey(null);\n dispatchCommand(editor, INSERT_LINE_BREAK_COMMAND, false);\n break;\n }\n case 'insertParagraph':\n {\n // Used for Android\n $setCompositionKey(null);\n\n // Safari does not provide the type \"insertLineBreak\".\n // So instead, we need to infer it from the keyboard event.\n // We do not apply this logic to iOS to allow newline auto-capitalization\n // work without creating linebreaks when pressing Enter\n if (isInsertLineBreak && !IS_IOS) {\n isInsertLineBreak = false;\n dispatchCommand(editor, INSERT_LINE_BREAK_COMMAND, false);\n } else {\n dispatchCommand(editor, INSERT_PARAGRAPH_COMMAND, undefined);\n }\n break;\n }\n case 'insertFromPaste':\n case 'insertFromPasteAsQuotation':\n {\n dispatchCommand(editor, PASTE_COMMAND, event);\n break;\n }\n case 'deleteByComposition':\n {\n if ($canRemoveText(anchorNode, focusNode)) {\n dispatchCommand(editor, REMOVE_TEXT_COMMAND, event);\n }\n break;\n }\n case 'deleteByDrag':\n case 'deleteByCut':\n {\n dispatchCommand(editor, REMOVE_TEXT_COMMAND, event);\n break;\n }\n case 'deleteContent':\n {\n dispatchCommand(editor, DELETE_CHARACTER_COMMAND, false);\n break;\n }\n case 'deleteWordBackward':\n {\n dispatchCommand(editor, DELETE_WORD_COMMAND, true);\n break;\n }\n case 'deleteWordForward':\n {\n dispatchCommand(editor, DELETE_WORD_COMMAND, false);\n break;\n }\n case 'deleteHardLineBackward':\n case 'deleteSoftLineBackward':\n {\n dispatchCommand(editor, DELETE_LINE_COMMAND, true);\n break;\n }\n case 'deleteContentForward':\n case 'deleteHardLineForward':\n case 'deleteSoftLineForward':\n {\n dispatchCommand(editor, DELETE_LINE_COMMAND, false);\n break;\n }\n case 'formatStrikeThrough':\n {\n dispatchCommand(editor, FORMAT_TEXT_COMMAND, 'strikethrough');\n break;\n }\n case 'formatBold':\n {\n dispatchCommand(editor, FORMAT_TEXT_COMMAND, 'bold');\n break;\n }\n case 'formatItalic':\n {\n dispatchCommand(editor, FORMAT_TEXT_COMMAND, 'italic');\n break;\n }\n case 'formatUnderline':\n {\n dispatchCommand(editor, FORMAT_TEXT_COMMAND, 'underline');\n break;\n }\n case 'historyUndo':\n {\n dispatchCommand(editor, UNDO_COMMAND, undefined);\n break;\n }\n case 'historyRedo':\n {\n dispatchCommand(editor, REDO_COMMAND, undefined);\n break;\n }\n // NO-OP\n }\n });\n}\nfunction onInput(event, editor) {\n // We don't want the onInput to bubble, in the case of nested editors.\n event.stopPropagation();\n updateEditor(editor, () => {\n const selection = $getSelection();\n const data = event.data;\n const targetRange = getTargetRange(event);\n if (data != null && $isRangeSelection(selection) && $shouldPreventDefaultAndInsertText(selection, targetRange, data, event.timeStamp, false)) {\n // Given we're over-riding the default behavior, we will need\n // to ensure to disable composition before dispatching the\n // insertText command for when changing the sequence for FF.\n if (isFirefoxEndingComposition) {\n $onCompositionEndImpl(editor, data);\n isFirefoxEndingComposition = false;\n }\n const anchor = selection.anchor;\n const anchorNode = anchor.getNode();\n const domSelection = getDOMSelection(editor._window);\n if (domSelection === null) {\n return;\n }\n const isBackward = selection.isBackward();\n const startOffset = isBackward ? selection.anchor.offset : selection.focus.offset;\n const endOffset = isBackward ? selection.focus.offset : selection.anchor.offset;\n // If the content is the same as inserted, then don't dispatch an insertion.\n // Given onInput doesn't take the current selection (it uses the previous)\n // we can compare that against what the DOM currently says.\n if (!CAN_USE_BEFORE_INPUT || selection.isCollapsed() || !$isTextNode(anchorNode) || domSelection.anchorNode === null || anchorNode.getTextContent().slice(0, startOffset) + data + anchorNode.getTextContent().slice(startOffset + endOffset) !== getAnchorTextFromDOM(domSelection.anchorNode)) {\n dispatchCommand(editor, CONTROLLED_TEXT_INSERTION_COMMAND, data);\n }\n const textLength = data.length;\n\n // Another hack for FF, as it's possible that the IME is still\n // open, even though compositionend has already fired (sigh).\n if (IS_FIREFOX && textLength > 1 && event.inputType === 'insertCompositionText' && !editor.isComposing()) {\n selection.anchor.offset -= textLength;\n }\n\n // This ensures consistency on Android.\n if (!IS_SAFARI && !IS_IOS && !IS_APPLE_WEBKIT && editor.isComposing()) {\n lastKeyDownTimeStamp = 0;\n $setCompositionKey(null);\n }\n } else {\n const characterData = data !== null ? data : undefined;\n $updateSelectedTextFromDOM(false, editor, characterData);\n\n // onInput always fires after onCompositionEnd for FF.\n if (isFirefoxEndingComposition) {\n $onCompositionEndImpl(editor, data || undefined);\n isFirefoxEndingComposition = false;\n }\n }\n\n // Also flush any other mutations that might have occurred\n // since the change.\n $flushMutations();\n });\n unprocessedBeforeInputData = null;\n}\nfunction onCompositionStart(event, editor) {\n updateEditor(editor, () => {\n const selection = $getSelection();\n if ($isRangeSelection(selection) && !editor.isComposing()) {\n const anchor = selection.anchor;\n const node = selection.anchor.getNode();\n $setCompositionKey(anchor.key);\n if (\n // If it has been 30ms since the last keydown, then we should\n // apply the empty space heuristic. We can't do this for Safari,\n // as the keydown fires after composition start.\n event.timeStamp < lastKeyDownTimeStamp + ANDROID_COMPOSITION_LATENCY ||\n // FF has issues around composing multibyte characters, so we also\n // need to invoke the empty space heuristic below.\n anchor.type === 'element' || !selection.isCollapsed() || node.getFormat() !== selection.format || $isTextNode(node) && node.getStyle() !== selection.style) {\n // We insert a zero width character, ready for the composition\n // to get inserted into the new node we create. If\n // we don't do this, Safari will fail on us because\n // there is no text node matching the selection.\n dispatchCommand(editor, CONTROLLED_TEXT_INSERTION_COMMAND, COMPOSITION_START_CHAR);\n }\n }\n });\n}\nfunction $onCompositionEndImpl(editor, data) {\n const compositionKey = editor._compositionKey;\n $setCompositionKey(null);\n\n // Handle termination of composition.\n if (compositionKey !== null && data != null) {\n // Composition can sometimes move to an adjacent DOM node when backspacing.\n // So check for the empty case.\n if (data === '') {\n const node = $getNodeByKey(compositionKey);\n const textNode = getDOMTextNode(editor.getElementByKey(compositionKey));\n if (textNode !== null && textNode.nodeValue !== null && $isTextNode(node)) {\n $updateTextNodeFromDOMContent(node, textNode.nodeValue, null, null, true);\n }\n return;\n }\n\n // Composition can sometimes be that of a new line. In which case, we need to\n // handle that accordingly.\n if (data[data.length - 1] === '\\n') {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n // If the last character is a line break, we also need to insert\n // a line break.\n const focus = selection.focus;\n selection.anchor.set(focus.key, focus.offset, focus.type);\n dispatchCommand(editor, KEY_ENTER_COMMAND, null);\n return;\n }\n }\n }\n $updateSelectedTextFromDOM(true, editor, data);\n}\nfunction onCompositionEnd(event, editor) {\n // Firefox fires onCompositionEnd before onInput, but Chrome/Webkit,\n // fire onInput before onCompositionEnd. To ensure the sequence works\n // like Chrome/Webkit we use the isFirefoxEndingComposition flag to\n // defer handling of onCompositionEnd in Firefox till we have processed\n // the logic in onInput.\n if (IS_FIREFOX) {\n isFirefoxEndingComposition = true;\n } else {\n updateEditor(editor, () => {\n $onCompositionEndImpl(editor, event.data);\n });\n }\n}\nfunction onKeyDown(event, editor) {\n lastKeyDownTimeStamp = event.timeStamp;\n lastKeyCode = event.key;\n if (editor.isComposing()) {\n return;\n }\n const {\n key,\n shiftKey,\n ctrlKey,\n metaKey,\n altKey\n } = event;\n if (dispatchCommand(editor, KEY_DOWN_COMMAND, event)) {\n return;\n }\n if (key == null) {\n return;\n }\n if (isMoveForward(key, ctrlKey, altKey, metaKey)) {\n dispatchCommand(editor, KEY_ARROW_RIGHT_COMMAND, event);\n } else if (isMoveToEnd(key, ctrlKey, shiftKey, altKey, metaKey)) {\n dispatchCommand(editor, MOVE_TO_END, event);\n } else if (isMoveBackward(key, ctrlKey, altKey, metaKey)) {\n dispatchCommand(editor, KEY_ARROW_LEFT_COMMAND, event);\n } else if (isMoveToStart(key, ctrlKey, shiftKey, altKey, metaKey)) {\n dispatchCommand(editor, MOVE_TO_START, event);\n } else if (isMoveUp(key, ctrlKey, metaKey)) {\n dispatchCommand(editor, KEY_ARROW_UP_COMMAND, event);\n } else if (isMoveDown(key, ctrlKey, metaKey)) {\n dispatchCommand(editor, KEY_ARROW_DOWN_COMMAND, event);\n } else if (isLineBreak(key, shiftKey)) {\n isInsertLineBreak = true;\n dispatchCommand(editor, KEY_ENTER_COMMAND, event);\n } else if (isSpace(key)) {\n dispatchCommand(editor, KEY_SPACE_COMMAND, event);\n } else if (isOpenLineBreak(key, ctrlKey)) {\n event.preventDefault();\n isInsertLineBreak = true;\n dispatchCommand(editor, INSERT_LINE_BREAK_COMMAND, true);\n } else if (isParagraph(key, shiftKey)) {\n isInsertLineBreak = false;\n dispatchCommand(editor, KEY_ENTER_COMMAND, event);\n } else if (isDeleteBackward(key, altKey, metaKey, ctrlKey)) {\n if (isBackspace(key)) {\n dispatchCommand(editor, KEY_BACKSPACE_COMMAND, event);\n } else {\n event.preventDefault();\n dispatchCommand(editor, DELETE_CHARACTER_COMMAND, true);\n }\n } else if (isEscape(key)) {\n dispatchCommand(editor, KEY_ESCAPE_COMMAND, event);\n } else if (isDeleteForward(key, ctrlKey, shiftKey, altKey, metaKey)) {\n if (isDelete(key)) {\n dispatchCommand(editor, KEY_DELETE_COMMAND, event);\n } else {\n event.preventDefault();\n dispatchCommand(editor, DELETE_CHARACTER_COMMAND, false);\n }\n } else if (isDeleteWordBackward(key, altKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, DELETE_WORD_COMMAND, true);\n } else if (isDeleteWordForward(key, altKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, DELETE_WORD_COMMAND, false);\n } else if (isDeleteLineBackward(key, metaKey)) {\n event.preventDefault();\n dispatchCommand(editor, DELETE_LINE_COMMAND, true);\n } else if (isDeleteLineForward(key, metaKey)) {\n event.preventDefault();\n dispatchCommand(editor, DELETE_LINE_COMMAND, false);\n } else if (isBold(key, altKey, metaKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, FORMAT_TEXT_COMMAND, 'bold');\n } else if (isUnderline(key, altKey, metaKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, FORMAT_TEXT_COMMAND, 'underline');\n } else if (isItalic(key, altKey, metaKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, FORMAT_TEXT_COMMAND, 'italic');\n } else if (isTab(key, altKey, ctrlKey, metaKey)) {\n dispatchCommand(editor, KEY_TAB_COMMAND, event);\n } else if (isUndo(key, shiftKey, metaKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, UNDO_COMMAND, undefined);\n } else if (isRedo(key, shiftKey, metaKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, REDO_COMMAND, undefined);\n } else {\n const prevSelection = editor._editorState._selection;\n if ($isNodeSelection(prevSelection)) {\n if (isCopy(key, shiftKey, metaKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, COPY_COMMAND, event);\n } else if (isCut(key, shiftKey, metaKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, CUT_COMMAND, event);\n } else if (isSelectAll(key, metaKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, SELECT_ALL_COMMAND, event);\n }\n // FF does it well (no need to override behavior)\n } else if (!IS_FIREFOX && isSelectAll(key, metaKey, ctrlKey)) {\n event.preventDefault();\n dispatchCommand(editor, SELECT_ALL_COMMAND, event);\n }\n }\n if (isModifier(ctrlKey, shiftKey, altKey, metaKey)) {\n dispatchCommand(editor, KEY_MODIFIER_COMMAND, event);\n }\n}\nfunction getRootElementRemoveHandles(rootElement) {\n // @ts-expect-error: internal field\n let eventHandles = rootElement.__lexicalEventHandles;\n if (eventHandles === undefined) {\n eventHandles = [];\n // @ts-expect-error: internal field\n rootElement.__lexicalEventHandles = eventHandles;\n }\n return eventHandles;\n}\n\n// Mapping root editors to their active nested editors, contains nested editors\n// mapping only, so if root editor is selected map will have no reference to free up memory\nconst activeNestedEditorsMap = new Map();\nfunction onDocumentSelectionChange(event) {\n const target = event.target;\n const targetWindow = target == null ? null : target.nodeType === 9 ? target.defaultView : target.ownerDocument.defaultView;\n const domSelection = getDOMSelection(targetWindow);\n if (domSelection === null) {\n return;\n }\n const nextActiveEditor = getNearestEditorFromDOMNode(domSelection.anchorNode);\n if (nextActiveEditor === null) {\n return;\n }\n if (isSelectionChangeFromMouseDown) {\n isSelectionChangeFromMouseDown = false;\n updateEditor(nextActiveEditor, () => {\n const lastSelection = $getPreviousSelection();\n const domAnchorNode = domSelection.anchorNode;\n if (domAnchorNode === null) {\n return;\n }\n const nodeType = domAnchorNode.nodeType;\n // If the user is attempting to click selection back onto text, then\n // we should attempt create a range selection.\n // When we click on an empty paragraph node or the end of a paragraph that ends\n // with an image/poll, the nodeType will be ELEMENT_NODE\n if (nodeType !== DOM_ELEMENT_TYPE && nodeType !== DOM_TEXT_TYPE) {\n return;\n }\n const newSelection = $internalCreateRangeSelection(lastSelection, domSelection, nextActiveEditor, event);\n $setSelection(newSelection);\n });\n }\n\n // When editor receives selection change event, we're checking if\n // it has any sibling editors (within same parent editor) that were active\n // before, and trigger selection change on it to nullify selection.\n const editors = getEditorsToPropagate(nextActiveEditor);\n const rootEditor = editors[editors.length - 1];\n const rootEditorKey = rootEditor._key;\n const activeNestedEditor = activeNestedEditorsMap.get(rootEditorKey);\n const prevActiveEditor = activeNestedEditor || rootEditor;\n if (prevActiveEditor !== nextActiveEditor) {\n onSelectionChange(domSelection, prevActiveEditor, false);\n }\n onSelectionChange(domSelection, nextActiveEditor, true);\n\n // If newly selected editor is nested, then add it to the map, clean map otherwise\n if (nextActiveEditor !== rootEditor) {\n activeNestedEditorsMap.set(rootEditorKey, nextActiveEditor);\n } else if (activeNestedEditor) {\n activeNestedEditorsMap.delete(rootEditorKey);\n }\n}\nfunction stopLexicalPropagation(event) {\n // We attach a special property to ensure the same event doesn't re-fire\n // for parent editors.\n // @ts-ignore\n event._lexicalHandled = true;\n}\nfunction hasStoppedLexicalPropagation(event) {\n // @ts-ignore\n const stopped = event._lexicalHandled === true;\n return stopped;\n}\nfunction addRootElementEvents(rootElement, editor) {\n // We only want to have a single global selectionchange event handler, shared\n // between all editor instances.\n const doc = rootElement.ownerDocument;\n const documentRootElementsCount = rootElementsRegistered.get(doc);\n if (documentRootElementsCount === undefined || documentRootElementsCount < 1) {\n doc.addEventListener('selectionchange', onDocumentSelectionChange);\n }\n rootElementsRegistered.set(doc, (documentRootElementsCount || 0) + 1);\n\n // @ts-expect-error: internal field\n rootElement.__lexicalEditor = editor;\n const removeHandles = getRootElementRemoveHandles(rootElement);\n for (let i = 0; i < rootElementEvents.length; i++) {\n const [eventName, onEvent] = rootElementEvents[i];\n const eventHandler = typeof onEvent === 'function' ? event => {\n if (hasStoppedLexicalPropagation(event)) {\n return;\n }\n stopLexicalPropagation(event);\n if (editor.isEditable() || eventName === 'click') {\n onEvent(event, editor);\n }\n } : event => {\n if (hasStoppedLexicalPropagation(event)) {\n return;\n }\n stopLexicalPropagation(event);\n const isEditable = editor.isEditable();\n switch (eventName) {\n case 'cut':\n return isEditable && dispatchCommand(editor, CUT_COMMAND, event);\n case 'copy':\n return dispatchCommand(editor, COPY_COMMAND, event);\n case 'paste':\n return isEditable && dispatchCommand(editor, PASTE_COMMAND, event);\n case 'dragstart':\n return isEditable && dispatchCommand(editor, DRAGSTART_COMMAND, event);\n case 'dragover':\n return isEditable && dispatchCommand(editor, DRAGOVER_COMMAND, event);\n case 'dragend':\n return isEditable && dispatchCommand(editor, DRAGEND_COMMAND, event);\n case 'focus':\n return isEditable && dispatchCommand(editor, FOCUS_COMMAND, event);\n case 'blur':\n {\n return isEditable && dispatchCommand(editor, BLUR_COMMAND, event);\n }\n case 'drop':\n return isEditable && dispatchCommand(editor, DROP_COMMAND, event);\n }\n };\n rootElement.addEventListener(eventName, eventHandler);\n removeHandles.push(() => {\n rootElement.removeEventListener(eventName, eventHandler);\n });\n }\n}\nfunction removeRootElementEvents(rootElement) {\n const doc = rootElement.ownerDocument;\n const documentRootElementsCount = rootElementsRegistered.get(doc);\n if (!(documentRootElementsCount !== undefined)) {\n throw Error(`Root element not registered`);\n } // We only want to have a single global selectionchange event handler, shared\n // between all editor instances.\n const newCount = documentRootElementsCount - 1;\n if (!(newCount >= 0)) {\n throw Error(`Root element count less than 0`);\n }\n rootElementsRegistered.set(doc, newCount);\n if (newCount === 0) {\n doc.removeEventListener('selectionchange', onDocumentSelectionChange);\n }\n const editor = getEditorPropertyFromDOMNode(rootElement);\n if (isLexicalEditor(editor)) {\n cleanActiveNestedEditorsMap(editor);\n // @ts-expect-error: internal field\n rootElement.__lexicalEditor = null;\n } else if (editor) {\n {\n throw Error(`Attempted to remove event handlers from a node that does not belong to this build of Lexical`);\n }\n }\n const removeHandles = getRootElementRemoveHandles(rootElement);\n for (let i = 0; i < removeHandles.length; i++) {\n removeHandles[i]();\n }\n\n // @ts-expect-error: internal field\n rootElement.__lexicalEventHandles = [];\n}\nfunction cleanActiveNestedEditorsMap(editor) {\n if (editor._parentEditor !== null) {\n // For nested editor cleanup map if this editor was marked as active\n const editors = getEditorsToPropagate(editor);\n const rootEditor = editors[editors.length - 1];\n const rootEditorKey = rootEditor._key;\n if (activeNestedEditorsMap.get(rootEditorKey) === editor) {\n activeNestedEditorsMap.delete(rootEditorKey);\n }\n } else {\n // For top-level editors cleanup map\n activeNestedEditorsMap.delete(editor._key);\n }\n}\nfunction markSelectionChangeFromDOMUpdate() {\n isSelectionChangeFromDOMUpdate = true;\n}\nfunction markCollapsedSelectionFormat(format, style, offset, key, timeStamp) {\n collapsedSelectionFormat = [format, style, offset, key, timeStamp];\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction $removeNode(nodeToRemove, restoreSelection, preserveEmptyParent) {\n errorOnReadOnly();\n const key = nodeToRemove.__key;\n const parent = nodeToRemove.getParent();\n if (parent === null) {\n return;\n }\n const selection = $maybeMoveChildrenSelectionToParent(nodeToRemove);\n let selectionMoved = false;\n if ($isRangeSelection(selection) && restoreSelection) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n if (anchor.key === key) {\n moveSelectionPointToSibling(anchor, nodeToRemove, parent, nodeToRemove.getPreviousSibling(), nodeToRemove.getNextSibling());\n selectionMoved = true;\n }\n if (focus.key === key) {\n moveSelectionPointToSibling(focus, nodeToRemove, parent, nodeToRemove.getPreviousSibling(), nodeToRemove.getNextSibling());\n selectionMoved = true;\n }\n } else if ($isNodeSelection(selection) && restoreSelection && nodeToRemove.isSelected()) {\n nodeToRemove.selectPrevious();\n }\n if ($isRangeSelection(selection) && restoreSelection && !selectionMoved) {\n // Doing this is O(n) so lets avoid it unless we need to do it\n const index = nodeToRemove.getIndexWithinParent();\n removeFromParent(nodeToRemove);\n $updateElementSelectionOnCreateDeleteNode(selection, parent, index, -1);\n } else {\n removeFromParent(nodeToRemove);\n }\n if (!preserveEmptyParent && !$isRootOrShadowRoot(parent) && !parent.canBeEmpty() && parent.isEmpty()) {\n $removeNode(parent, restoreSelection);\n }\n if (restoreSelection && $isRootNode(parent) && parent.isEmpty()) {\n parent.selectEnd();\n }\n}\nclass LexicalNode {\n // Allow us to look up the type including static props\n\n /** @internal */\n\n /** @internal */\n //@ts-ignore We set the key in the constructor.\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n // Flow doesn't support abstract classes unfortunately, so we can't _force_\n // subclasses of Node to implement statics. All subclasses of Node should have\n // a static getType and clone method though. We define getType and clone here so we can call it\n // on any Node, and we throw this error by default since the subclass should provide\n // their own implementation.\n /**\n * Returns the string type of this node. Every node must\n * implement this and it MUST BE UNIQUE amongst nodes registered\n * on the editor.\n *\n */\n static getType() {\n {\n throw Error(`LexicalNode: Node ${this.name} does not implement .getType().`);\n }\n }\n\n /**\n * Clones this node, creating a new node with a different key\n * and adding it to the EditorState (but not attaching it anywhere!). All nodes must\n * implement this method.\n *\n */\n static clone(_data) {\n {\n throw Error(`LexicalNode: Node ${this.name} does not implement .clone().`);\n }\n }\n\n /**\n * Perform any state updates on the clone of prevNode that are not already\n * handled by the constructor call in the static clone method. If you have\n * state to update in your clone that is not handled directly by the\n * constructor, it is advisable to override this method but it is required\n * to include a call to `super.afterCloneFrom(prevNode)` in your\n * implementation. This is only intended to be called by\n * {@link $cloneWithProperties} function or via a super call.\n *\n * @example\n * ```ts\n * class ClassesTextNode extends TextNode {\n * // Not shown: static getType, static importJSON, exportJSON, createDOM, updateDOM\n * __classes = new Set<string>();\n * static clone(node: ClassesTextNode): ClassesTextNode {\n * // The inherited TextNode constructor is used here, so\n * // classes is not set by this method.\n * return new ClassesTextNode(node.__text, node.__key);\n * }\n * afterCloneFrom(node: this): void {\n * // This calls TextNode.afterCloneFrom and LexicalNode.afterCloneFrom\n * // for necessary state updates\n * super.afterCloneFrom(node);\n * this.__addClasses(node.__classes);\n * }\n * // This method is a private implementation detail, it is not\n * // suitable for the public API because it does not call getWritable\n * __addClasses(classNames: Iterable<string>): this {\n * for (const className of classNames) {\n * this.__classes.add(className);\n * }\n * return this;\n * }\n * addClass(...classNames: string[]): this {\n * return this.getWritable().__addClasses(classNames);\n * }\n * removeClass(...classNames: string[]): this {\n * const node = this.getWritable();\n * for (const className of classNames) {\n * this.__classes.delete(className);\n * }\n * return this;\n * }\n * getClasses(): Set<string> {\n * return this.getLatest().__classes;\n * }\n * }\n * ```\n *\n */\n afterCloneFrom(prevNode) {\n this.__parent = prevNode.__parent;\n this.__next = prevNode.__next;\n this.__prev = prevNode.__prev;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n constructor(key) {\n this.__type = this.constructor.getType();\n this.__parent = null;\n this.__prev = null;\n this.__next = null;\n $setNodeKey(this, key);\n {\n if (this.__type !== 'root') {\n errorOnReadOnly();\n errorOnTypeKlassMismatch(this.__type, this.constructor);\n }\n }\n }\n // Getters and Traversers\n\n /**\n * Returns the string type of this node.\n */\n getType() {\n return this.__type;\n }\n isInline() {\n {\n throw Error(`LexicalNode: Node ${this.constructor.name} does not implement .isInline().`);\n }\n }\n\n /**\n * Returns true if there is a path between this node and the RootNode, false otherwise.\n * This is a way of determining if the node is \"attached\" EditorState. Unattached nodes\n * won't be reconciled and will ultimatelt be cleaned up by the Lexical GC.\n */\n isAttached() {\n let nodeKey = this.__key;\n while (nodeKey !== null) {\n if (nodeKey === 'root') {\n return true;\n }\n const node = $getNodeByKey(nodeKey);\n if (node === null) {\n break;\n }\n nodeKey = node.__parent;\n }\n return false;\n }\n\n /**\n * Returns true if this node is contained within the provided Selection., false otherwise.\n * Relies on the algorithms implemented in {@link BaseSelection.getNodes} to determine\n * what's included.\n *\n * @param selection - The selection that we want to determine if the node is in.\n */\n isSelected(selection) {\n const targetSelection = selection || $getSelection();\n if (targetSelection == null) {\n return false;\n }\n const isSelected = targetSelection.getNodes().some(n => n.__key === this.__key);\n if ($isTextNode(this)) {\n return isSelected;\n }\n // For inline images inside of element nodes.\n // Without this change the image will be selected if the cursor is before or after it.\n const isElementRangeSelection = $isRangeSelection(targetSelection) && targetSelection.anchor.type === 'element' && targetSelection.focus.type === 'element';\n if (isElementRangeSelection) {\n if (targetSelection.isCollapsed()) {\n return false;\n }\n const parentNode = this.getParent();\n if ($isDecoratorNode(this) && this.isInline() && parentNode) {\n const firstPoint = targetSelection.isBackward() ? targetSelection.focus : targetSelection.anchor;\n const firstElement = firstPoint.getNode();\n if (firstPoint.offset === firstElement.getChildrenSize() && firstElement.is(parentNode) && firstElement.getLastChildOrThrow().is(this)) {\n return false;\n }\n }\n }\n return isSelected;\n }\n\n /**\n * Returns this nodes key.\n */\n getKey() {\n // Key is stable between copies\n return this.__key;\n }\n\n /**\n * Returns the zero-based index of this node within the parent.\n */\n getIndexWithinParent() {\n const parent = this.getParent();\n if (parent === null) {\n return -1;\n }\n let node = parent.getFirstChild();\n let index = 0;\n while (node !== null) {\n if (this.is(node)) {\n return index;\n }\n index++;\n node = node.getNextSibling();\n }\n return -1;\n }\n\n /**\n * Returns the parent of this node, or null if none is found.\n */\n getParent() {\n const parent = this.getLatest().__parent;\n if (parent === null) {\n return null;\n }\n return $getNodeByKey(parent);\n }\n\n /**\n * Returns the parent of this node, or throws if none is found.\n */\n getParentOrThrow() {\n const parent = this.getParent();\n if (parent === null) {\n {\n throw Error(`Expected node ${this.__key} to have a parent.`);\n }\n }\n return parent;\n }\n\n /**\n * Returns the highest (in the EditorState tree)\n * non-root ancestor of this node, or null if none is found. See {@link lexical!$isRootOrShadowRoot}\n * for more information on which Elements comprise \"roots\".\n */\n getTopLevelElement() {\n let node = this;\n while (node !== null) {\n const parent = node.getParent();\n if ($isRootOrShadowRoot(parent)) {\n if (!($isElementNode(node) || node === this && $isDecoratorNode(node))) {\n throw Error(`Children of root nodes must be elements or decorators`);\n }\n return node;\n }\n node = parent;\n }\n return null;\n }\n\n /**\n * Returns the highest (in the EditorState tree)\n * non-root ancestor of this node, or throws if none is found. See {@link lexical!$isRootOrShadowRoot}\n * for more information on which Elements comprise \"roots\".\n */\n getTopLevelElementOrThrow() {\n const parent = this.getTopLevelElement();\n if (parent === null) {\n {\n throw Error(`Expected node ${this.__key} to have a top parent element.`);\n }\n }\n return parent;\n }\n\n /**\n * Returns a list of the every ancestor of this node,\n * all the way up to the RootNode.\n *\n */\n getParents() {\n const parents = [];\n let node = this.getParent();\n while (node !== null) {\n parents.push(node);\n node = node.getParent();\n }\n return parents;\n }\n\n /**\n * Returns a list of the keys of every ancestor of this node,\n * all the way up to the RootNode.\n *\n */\n getParentKeys() {\n const parents = [];\n let node = this.getParent();\n while (node !== null) {\n parents.push(node.__key);\n node = node.getParent();\n }\n return parents;\n }\n\n /**\n * Returns the \"previous\" siblings - that is, the node that comes\n * before this one in the same parent.\n *\n */\n getPreviousSibling() {\n const self = this.getLatest();\n const prevKey = self.__prev;\n return prevKey === null ? null : $getNodeByKey(prevKey);\n }\n\n /**\n * Returns the \"previous\" siblings - that is, the nodes that come between\n * this one and the first child of it's parent, inclusive.\n *\n */\n getPreviousSiblings() {\n const siblings = [];\n const parent = this.getParent();\n if (parent === null) {\n return siblings;\n }\n let node = parent.getFirstChild();\n while (node !== null) {\n if (node.is(this)) {\n break;\n }\n siblings.push(node);\n node = node.getNextSibling();\n }\n return siblings;\n }\n\n /**\n * Returns the \"next\" siblings - that is, the node that comes\n * after this one in the same parent\n *\n */\n getNextSibling() {\n const self = this.getLatest();\n const nextKey = self.__next;\n return nextKey === null ? null : $getNodeByKey(nextKey);\n }\n\n /**\n * Returns all \"next\" siblings - that is, the nodes that come between this\n * one and the last child of it's parent, inclusive.\n *\n */\n getNextSiblings() {\n const siblings = [];\n let node = this.getNextSibling();\n while (node !== null) {\n siblings.push(node);\n node = node.getNextSibling();\n }\n return siblings;\n }\n\n /**\n * Returns the closest common ancestor of this node and the provided one or null\n * if one cannot be found.\n *\n * @param node - the other node to find the common ancestor of.\n */\n getCommonAncestor(node) {\n const a = this.getParents();\n const b = node.getParents();\n if ($isElementNode(this)) {\n a.unshift(this);\n }\n if ($isElementNode(node)) {\n b.unshift(node);\n }\n const aLength = a.length;\n const bLength = b.length;\n if (aLength === 0 || bLength === 0 || a[aLength - 1] !== b[bLength - 1]) {\n return null;\n }\n const bSet = new Set(b);\n for (let i = 0; i < aLength; i++) {\n const ancestor = a[i];\n if (bSet.has(ancestor)) {\n return ancestor;\n }\n }\n return null;\n }\n\n /**\n * Returns true if the provided node is the exact same one as this node, from Lexical's perspective.\n * Always use this instead of referential equality.\n *\n * @param object - the node to perform the equality comparison on.\n */\n is(object) {\n if (object == null) {\n return false;\n }\n return this.__key === object.__key;\n }\n\n /**\n * Returns true if this node logical precedes the target node in the editor state.\n *\n * @param targetNode - the node we're testing to see if it's after this one.\n */\n isBefore(targetNode) {\n if (this === targetNode) {\n return false;\n }\n if (targetNode.isParentOf(this)) {\n return true;\n }\n if (this.isParentOf(targetNode)) {\n return false;\n }\n const commonAncestor = this.getCommonAncestor(targetNode);\n let indexA = 0;\n let indexB = 0;\n let node = this;\n while (true) {\n const parent = node.getParentOrThrow();\n if (parent === commonAncestor) {\n indexA = node.getIndexWithinParent();\n break;\n }\n node = parent;\n }\n node = targetNode;\n while (true) {\n const parent = node.getParentOrThrow();\n if (parent === commonAncestor) {\n indexB = node.getIndexWithinParent();\n break;\n }\n node = parent;\n }\n return indexA < indexB;\n }\n\n /**\n * Returns true if this node is the parent of the target node, false otherwise.\n *\n * @param targetNode - the would-be child node.\n */\n isParentOf(targetNode) {\n const key = this.__key;\n if (key === targetNode.__key) {\n return false;\n }\n let node = targetNode;\n while (node !== null) {\n if (node.__key === key) {\n return true;\n }\n node = node.getParent();\n }\n return false;\n }\n\n // TO-DO: this function can be simplified a lot\n /**\n * Returns a list of nodes that are between this node and\n * the target node in the EditorState.\n *\n * @param targetNode - the node that marks the other end of the range of nodes to be returned.\n */\n getNodesBetween(targetNode) {\n const isBefore = this.isBefore(targetNode);\n const nodes = [];\n const visited = new Set();\n let node = this;\n while (true) {\n if (node === null) {\n break;\n }\n const key = node.__key;\n if (!visited.has(key)) {\n visited.add(key);\n nodes.push(node);\n }\n if (node === targetNode) {\n break;\n }\n const child = $isElementNode(node) ? isBefore ? node.getFirstChild() : node.getLastChild() : null;\n if (child !== null) {\n node = child;\n continue;\n }\n const nextSibling = isBefore ? node.getNextSibling() : node.getPreviousSibling();\n if (nextSibling !== null) {\n node = nextSibling;\n continue;\n }\n const parent = node.getParentOrThrow();\n if (!visited.has(parent.__key)) {\n nodes.push(parent);\n }\n if (parent === targetNode) {\n break;\n }\n let parentSibling = null;\n let ancestor = parent;\n do {\n if (ancestor === null) {\n {\n throw Error(`getNodesBetween: ancestor is null`);\n }\n }\n parentSibling = isBefore ? ancestor.getNextSibling() : ancestor.getPreviousSibling();\n ancestor = ancestor.getParent();\n if (ancestor !== null) {\n if (parentSibling === null && !visited.has(ancestor.__key)) {\n nodes.push(ancestor);\n }\n } else {\n break;\n }\n } while (parentSibling === null);\n node = parentSibling;\n }\n if (!isBefore) {\n nodes.reverse();\n }\n return nodes;\n }\n\n /**\n * Returns true if this node has been marked dirty during this update cycle.\n *\n */\n isDirty() {\n const editor = getActiveEditor();\n const dirtyLeaves = editor._dirtyLeaves;\n return dirtyLeaves !== null && dirtyLeaves.has(this.__key);\n }\n\n /**\n * Returns the latest version of the node from the active EditorState.\n * This is used to avoid getting values from stale node references.\n *\n */\n getLatest() {\n const latest = $getNodeByKey(this.__key);\n if (latest === null) {\n {\n throw Error(`Lexical node does not exist in active editor state. Avoid using the same node references between nested closures from editorState.read/editor.update.`);\n }\n }\n return latest;\n }\n\n /**\n * Returns a mutable version of the node using {@link $cloneWithProperties}\n * if necessary. Will throw an error if called outside of a Lexical Editor\n * {@link LexicalEditor.update} callback.\n *\n */\n getWritable() {\n errorOnReadOnly();\n const editorState = getActiveEditorState();\n const editor = getActiveEditor();\n const nodeMap = editorState._nodeMap;\n const key = this.__key;\n // Ensure we get the latest node from pending state\n const latestNode = this.getLatest();\n const cloneNotNeeded = editor._cloneNotNeeded;\n const selection = $getSelection();\n if (selection !== null) {\n selection.setCachedNodes(null);\n }\n if (cloneNotNeeded.has(key)) {\n // Transforms clear the dirty node set on each iteration to keep track on newly dirty nodes\n internalMarkNodeAsDirty(latestNode);\n return latestNode;\n }\n const mutableNode = $cloneWithProperties(latestNode);\n cloneNotNeeded.add(key);\n internalMarkNodeAsDirty(mutableNode);\n // Update reference in node map\n nodeMap.set(key, mutableNode);\n return mutableNode;\n }\n\n /**\n * Returns the text content of the node. Override this for\n * custom nodes that should have a representation in plain text\n * format (for copy + paste, for example)\n *\n */\n getTextContent() {\n return '';\n }\n\n /**\n * Returns the length of the string produced by calling getTextContent on this node.\n *\n */\n getTextContentSize() {\n return this.getTextContent().length;\n }\n\n // View\n\n /**\n * Called during the reconciliation process to determine which nodes\n * to insert into the DOM for this Lexical Node.\n *\n * This method must return exactly one HTMLElement. Nested elements are not supported.\n *\n * Do not attempt to update the Lexical EditorState during this phase of the update lifecyle.\n *\n * @param _config - allows access to things like the EditorTheme (to apply classes) during reconciliation.\n * @param _editor - allows access to the editor for context during reconciliation.\n *\n * */\n createDOM(_config, _editor) {\n {\n throw Error(`createDOM: base method not extended`);\n }\n }\n\n /**\n * Called when a node changes and should update the DOM\n * in whatever way is necessary to make it align with any changes that might\n * have happened during the update.\n *\n * Returning \"true\" here will cause lexical to unmount and recreate the DOM node\n * (by calling createDOM). You would need to do this if the element tag changes,\n * for instance.\n *\n * */\n updateDOM(_prevNode, _dom, _config) {\n {\n throw Error(`updateDOM: base method not extended`);\n }\n }\n\n /**\n * Controls how the this node is serialized to HTML. This is important for\n * copy and paste between Lexical and non-Lexical editors, or Lexical editors with different namespaces,\n * in which case the primary transfer format is HTML. It's also important if you're serializing\n * to HTML for any other reason via {@link @lexical/html!$generateHtmlFromNodes}. You could\n * also use this method to build your own HTML renderer.\n *\n * */\n exportDOM(editor) {\n const element = this.createDOM(editor._config, editor);\n return {\n element\n };\n }\n\n /**\n * Controls how the this node is serialized to JSON. This is important for\n * copy and paste between Lexical editors sharing the same namespace. It's also important\n * if you're serializing to JSON for persistent storage somewhere.\n * See [Serialization & Deserialization](https://lexical.dev/docs/concepts/serialization#lexical---html).\n *\n * */\n exportJSON() {\n {\n throw Error(`exportJSON: base method not extended`);\n }\n }\n\n /**\n * Controls how the this node is deserialized from JSON. This is usually boilerplate,\n * but provides an abstraction between the node implementation and serialized interface that can\n * be important if you ever make breaking changes to a node schema (by adding or removing properties).\n * See [Serialization & Deserialization](https://lexical.dev/docs/concepts/serialization#lexical---html).\n *\n * */\n static importJSON(_serializedNode) {\n {\n throw Error(`LexicalNode: Node ${this.name} does not implement .importJSON().`);\n }\n }\n /**\n * @experimental\n *\n * Registers the returned function as a transform on the node during\n * Editor initialization. Most such use cases should be addressed via\n * the {@link LexicalEditor.registerNodeTransform} API.\n *\n * Experimental - use at your own risk.\n */\n static transform() {\n return null;\n }\n\n // Setters and mutators\n\n /**\n * Removes this LexicalNode from the EditorState. If the node isn't re-inserted\n * somewhere, the Lexical garbage collector will eventually clean it up.\n *\n * @param preserveEmptyParent - If falsy, the node's parent will be removed if\n * it's empty after the removal operation. This is the default behavior, subject to\n * other node heuristics such as {@link ElementNode#canBeEmpty}\n * */\n remove(preserveEmptyParent) {\n $removeNode(this, true, preserveEmptyParent);\n }\n\n /**\n * Replaces this LexicalNode with the provided node, optionally transferring the children\n * of the replaced node to the replacing node.\n *\n * @param replaceWith - The node to replace this one with.\n * @param includeChildren - Whether or not to transfer the children of this node to the replacing node.\n * */\n replace(replaceWith, includeChildren) {\n errorOnReadOnly();\n let selection = $getSelection();\n if (selection !== null) {\n selection = selection.clone();\n }\n errorOnInsertTextNodeOnRoot(this, replaceWith);\n const self = this.getLatest();\n const toReplaceKey = this.__key;\n const key = replaceWith.__key;\n const writableReplaceWith = replaceWith.getWritable();\n const writableParent = this.getParentOrThrow().getWritable();\n const size = writableParent.__size;\n removeFromParent(writableReplaceWith);\n const prevSibling = self.getPreviousSibling();\n const nextSibling = self.getNextSibling();\n const prevKey = self.__prev;\n const nextKey = self.__next;\n const parentKey = self.__parent;\n $removeNode(self, false, true);\n if (prevSibling === null) {\n writableParent.__first = key;\n } else {\n const writablePrevSibling = prevSibling.getWritable();\n writablePrevSibling.__next = key;\n }\n writableReplaceWith.__prev = prevKey;\n if (nextSibling === null) {\n writableParent.__last = key;\n } else {\n const writableNextSibling = nextSibling.getWritable();\n writableNextSibling.__prev = key;\n }\n writableReplaceWith.__next = nextKey;\n writableReplaceWith.__parent = parentKey;\n writableParent.__size = size;\n if (includeChildren) {\n if (!($isElementNode(this) && $isElementNode(writableReplaceWith))) {\n throw Error(`includeChildren should only be true for ElementNodes`);\n }\n this.getChildren().forEach(child => {\n writableReplaceWith.append(child);\n });\n }\n if ($isRangeSelection(selection)) {\n $setSelection(selection);\n const anchor = selection.anchor;\n const focus = selection.focus;\n if (anchor.key === toReplaceKey) {\n $moveSelectionPointToEnd(anchor, writableReplaceWith);\n }\n if (focus.key === toReplaceKey) {\n $moveSelectionPointToEnd(focus, writableReplaceWith);\n }\n }\n if ($getCompositionKey() === toReplaceKey) {\n $setCompositionKey(key);\n }\n return writableReplaceWith;\n }\n\n /**\n * Inserts a node after this LexicalNode (as the next sibling).\n *\n * @param nodeToInsert - The node to insert after this one.\n * @param restoreSelection - Whether or not to attempt to resolve the\n * selection to the appropriate place after the operation is complete.\n * */\n insertAfter(nodeToInsert, restoreSelection = true) {\n errorOnReadOnly();\n errorOnInsertTextNodeOnRoot(this, nodeToInsert);\n const writableSelf = this.getWritable();\n const writableNodeToInsert = nodeToInsert.getWritable();\n const oldParent = writableNodeToInsert.getParent();\n const selection = $getSelection();\n let elementAnchorSelectionOnNode = false;\n let elementFocusSelectionOnNode = false;\n if (oldParent !== null) {\n // TODO: this is O(n), can we improve?\n const oldIndex = nodeToInsert.getIndexWithinParent();\n removeFromParent(writableNodeToInsert);\n if ($isRangeSelection(selection)) {\n const oldParentKey = oldParent.__key;\n const anchor = selection.anchor;\n const focus = selection.focus;\n elementAnchorSelectionOnNode = anchor.type === 'element' && anchor.key === oldParentKey && anchor.offset === oldIndex + 1;\n elementFocusSelectionOnNode = focus.type === 'element' && focus.key === oldParentKey && focus.offset === oldIndex + 1;\n }\n }\n const nextSibling = this.getNextSibling();\n const writableParent = this.getParentOrThrow().getWritable();\n const insertKey = writableNodeToInsert.__key;\n const nextKey = writableSelf.__next;\n if (nextSibling === null) {\n writableParent.__last = insertKey;\n } else {\n const writableNextSibling = nextSibling.getWritable();\n writableNextSibling.__prev = insertKey;\n }\n writableParent.__size++;\n writableSelf.__next = insertKey;\n writableNodeToInsert.__next = nextKey;\n writableNodeToInsert.__prev = writableSelf.__key;\n writableNodeToInsert.__parent = writableSelf.__parent;\n if (restoreSelection && $isRangeSelection(selection)) {\n const index = this.getIndexWithinParent();\n $updateElementSelectionOnCreateDeleteNode(selection, writableParent, index + 1);\n const writableParentKey = writableParent.__key;\n if (elementAnchorSelectionOnNode) {\n selection.anchor.set(writableParentKey, index + 2, 'element');\n }\n if (elementFocusSelectionOnNode) {\n selection.focus.set(writableParentKey, index + 2, 'element');\n }\n }\n return nodeToInsert;\n }\n\n /**\n * Inserts a node before this LexicalNode (as the previous sibling).\n *\n * @param nodeToInsert - The node to insert before this one.\n * @param restoreSelection - Whether or not to attempt to resolve the\n * selection to the appropriate place after the operation is complete.\n * */\n insertBefore(nodeToInsert, restoreSelection = true) {\n errorOnReadOnly();\n errorOnInsertTextNodeOnRoot(this, nodeToInsert);\n const writableSelf = this.getWritable();\n const writableNodeToInsert = nodeToInsert.getWritable();\n const insertKey = writableNodeToInsert.__key;\n removeFromParent(writableNodeToInsert);\n const prevSibling = this.getPreviousSibling();\n const writableParent = this.getParentOrThrow().getWritable();\n const prevKey = writableSelf.__prev;\n // TODO: this is O(n), can we improve?\n const index = this.getIndexWithinParent();\n if (prevSibling === null) {\n writableParent.__first = insertKey;\n } else {\n const writablePrevSibling = prevSibling.getWritable();\n writablePrevSibling.__next = insertKey;\n }\n writableParent.__size++;\n writableSelf.__prev = insertKey;\n writableNodeToInsert.__prev = prevKey;\n writableNodeToInsert.__next = writableSelf.__key;\n writableNodeToInsert.__parent = writableSelf.__parent;\n const selection = $getSelection();\n if (restoreSelection && $isRangeSelection(selection)) {\n const parent = this.getParentOrThrow();\n $updateElementSelectionOnCreateDeleteNode(selection, parent, index);\n }\n return nodeToInsert;\n }\n\n /**\n * Whether or not this node has a required parent. Used during copy + paste operations\n * to normalize nodes that would otherwise be orphaned. For example, ListItemNodes without\n * a ListNode parent or TextNodes with a ParagraphNode parent.\n *\n * */\n isParentRequired() {\n return false;\n }\n\n /**\n * The creation logic for any required parent. Should be implemented if {@link isParentRequired} returns true.\n *\n * */\n createParentElementNode() {\n return $createParagraphNode();\n }\n selectStart() {\n return this.selectPrevious();\n }\n selectEnd() {\n return this.selectNext(0, 0);\n }\n\n /**\n * Moves selection to the previous sibling of this node, at the specified offsets.\n *\n * @param anchorOffset - The anchor offset for selection.\n * @param focusOffset - The focus offset for selection\n * */\n selectPrevious(anchorOffset, focusOffset) {\n errorOnReadOnly();\n const prevSibling = this.getPreviousSibling();\n const parent = this.getParentOrThrow();\n if (prevSibling === null) {\n return parent.select(0, 0);\n }\n if ($isElementNode(prevSibling)) {\n return prevSibling.select();\n } else if (!$isTextNode(prevSibling)) {\n const index = prevSibling.getIndexWithinParent() + 1;\n return parent.select(index, index);\n }\n return prevSibling.select(anchorOffset, focusOffset);\n }\n\n /**\n * Moves selection to the next sibling of this node, at the specified offsets.\n *\n * @param anchorOffset - The anchor offset for selection.\n * @param focusOffset - The focus offset for selection\n * */\n selectNext(anchorOffset, focusOffset) {\n errorOnReadOnly();\n const nextSibling = this.getNextSibling();\n const parent = this.getParentOrThrow();\n if (nextSibling === null) {\n return parent.select();\n }\n if ($isElementNode(nextSibling)) {\n return nextSibling.select(0, 0);\n } else if (!$isTextNode(nextSibling)) {\n const index = nextSibling.getIndexWithinParent();\n return parent.select(index, index);\n }\n return nextSibling.select(anchorOffset, focusOffset);\n }\n\n /**\n * Marks a node dirty, triggering transforms and\n * forcing it to be reconciled during the update cycle.\n *\n * */\n markDirty() {\n this.getWritable();\n }\n}\nfunction errorOnTypeKlassMismatch(type, klass) {\n const registeredNode = getActiveEditor()._nodes.get(type);\n // Common error - split in its own invariant\n if (registeredNode === undefined) {\n {\n throw Error(`Create node: Attempted to create node ${klass.name} that was not configured to be used on the editor.`);\n }\n }\n const editorKlass = registeredNode.klass;\n if (editorKlass !== klass) {\n {\n throw Error(`Create node: Type ${type} in node ${klass.name} does not match registered node ${editorKlass.name} with the same type`);\n }\n }\n}\n\n/**\n * Insert a series of nodes after this LexicalNode (as next siblings)\n *\n * @param firstToInsert - The first node to insert after this one.\n * @param lastToInsert - The last node to insert after this one. Must be a\n * later sibling of FirstNode. If not provided, it will be its last sibling.\n */\nfunction insertRangeAfter(node, firstToInsert, lastToInsert) {\n const lastToInsert2 = firstToInsert.getParentOrThrow().getLastChild();\n let current = firstToInsert;\n const nodesToInsert = [firstToInsert];\n while (current !== lastToInsert2) {\n if (!current.getNextSibling()) {\n {\n throw Error(`insertRangeAfter: lastToInsert must be a later sibling of firstToInsert`);\n }\n }\n current = current.getNextSibling();\n nodesToInsert.push(current);\n }\n let currentNode = node;\n for (const nodeToInsert of nodesToInsert) {\n currentNode = currentNode.insertAfter(nodeToInsert);\n }\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/** @noInheritDoc */\nclass LineBreakNode extends LexicalNode {\n static getType() {\n return 'linebreak';\n }\n static clone(node) {\n return new LineBreakNode(node.__key);\n }\n constructor(key) {\n super(key);\n }\n getTextContent() {\n return '\\n';\n }\n createDOM() {\n return document.createElement('br');\n }\n updateDOM() {\n return false;\n }\n static importDOM() {\n return {\n br: node => {\n if (isOnlyChildInBlockNode(node) || isLastChildInBlockNode(node)) {\n return null;\n }\n return {\n conversion: $convertLineBreakElement,\n priority: 0\n };\n }\n };\n }\n static importJSON(serializedLineBreakNode) {\n return $createLineBreakNode();\n }\n exportJSON() {\n return {\n type: 'linebreak',\n version: 1\n };\n }\n}\nfunction $convertLineBreakElement(node) {\n return {\n node: $createLineBreakNode()\n };\n}\nfunction $createLineBreakNode() {\n return $applyNodeReplacement(new LineBreakNode());\n}\nfunction $isLineBreakNode(node) {\n return node instanceof LineBreakNode;\n}\nfunction isOnlyChildInBlockNode(node) {\n const parentElement = node.parentElement;\n if (parentElement !== null && isBlockDomNode(parentElement)) {\n const firstChild = parentElement.firstChild;\n if (firstChild === node || firstChild.nextSibling === node && isWhitespaceDomTextNode(firstChild)) {\n const lastChild = parentElement.lastChild;\n if (lastChild === node || lastChild.previousSibling === node && isWhitespaceDomTextNode(lastChild)) {\n return true;\n }\n }\n }\n return false;\n}\nfunction isLastChildInBlockNode(node) {\n const parentElement = node.parentElement;\n if (parentElement !== null && isBlockDomNode(parentElement)) {\n // check if node is first child, because only childs dont count\n const firstChild = parentElement.firstChild;\n if (firstChild === node || firstChild.nextSibling === node && isWhitespaceDomTextNode(firstChild)) {\n return false;\n }\n\n // check if its last child\n const lastChild = parentElement.lastChild;\n if (lastChild === node || lastChild.previousSibling === node && isWhitespaceDomTextNode(lastChild)) {\n return true;\n }\n }\n return false;\n}\nfunction isWhitespaceDomTextNode(node) {\n return node.nodeType === DOM_TEXT_TYPE && /^( |\\t|\\r?\\n)+$/.test(node.textContent || '');\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction getElementOuterTag(node, format) {\n if (format & IS_CODE) {\n return 'code';\n }\n if (format & IS_HIGHLIGHT) {\n return 'mark';\n }\n if (format & IS_SUBSCRIPT) {\n return 'sub';\n }\n if (format & IS_SUPERSCRIPT) {\n return 'sup';\n }\n return null;\n}\nfunction getElementInnerTag(node, format) {\n if (format & IS_BOLD) {\n return 'strong';\n }\n if (format & IS_ITALIC) {\n return 'em';\n }\n return 'span';\n}\nfunction setTextThemeClassNames(tag, prevFormat, nextFormat, dom, textClassNames) {\n const domClassList = dom.classList;\n // Firstly we handle the base theme.\n let classNames = getCachedClassNameArray(textClassNames, 'base');\n if (classNames !== undefined) {\n domClassList.add(...classNames);\n }\n // Secondly we handle the special case: underline + strikethrough.\n // We have to do this as we need a way to compose the fact that\n // the same CSS property will need to be used: text-decoration.\n // In an ideal world we shouldn't have to do this, but there's no\n // easy workaround for many atomic CSS systems today.\n classNames = getCachedClassNameArray(textClassNames, 'underlineStrikethrough');\n let hasUnderlineStrikethrough = false;\n const prevUnderlineStrikethrough = prevFormat & IS_UNDERLINE && prevFormat & IS_STRIKETHROUGH;\n const nextUnderlineStrikethrough = nextFormat & IS_UNDERLINE && nextFormat & IS_STRIKETHROUGH;\n if (classNames !== undefined) {\n if (nextUnderlineStrikethrough) {\n hasUnderlineStrikethrough = true;\n if (!prevUnderlineStrikethrough) {\n domClassList.add(...classNames);\n }\n } else if (prevUnderlineStrikethrough) {\n domClassList.remove(...classNames);\n }\n }\n for (const key in TEXT_TYPE_TO_FORMAT) {\n const format = key;\n const flag = TEXT_TYPE_TO_FORMAT[format];\n classNames = getCachedClassNameArray(textClassNames, key);\n if (classNames !== undefined) {\n if (nextFormat & flag) {\n if (hasUnderlineStrikethrough && (key === 'underline' || key === 'strikethrough')) {\n if (prevFormat & flag) {\n domClassList.remove(...classNames);\n }\n continue;\n }\n if ((prevFormat & flag) === 0 || prevUnderlineStrikethrough && key === 'underline' || key === 'strikethrough') {\n domClassList.add(...classNames);\n }\n } else if (prevFormat & flag) {\n domClassList.remove(...classNames);\n }\n }\n }\n}\nfunction diffComposedText(a, b) {\n const aLength = a.length;\n const bLength = b.length;\n let left = 0;\n let right = 0;\n while (left < aLength && left < bLength && a[left] === b[left]) {\n left++;\n }\n while (right + left < aLength && right + left < bLength && a[aLength - right - 1] === b[bLength - right - 1]) {\n right++;\n }\n return [left, aLength - left - right, b.slice(left, bLength - right)];\n}\nfunction setTextContent(nextText, dom, node) {\n const firstChild = dom.firstChild;\n const isComposing = node.isComposing();\n // Always add a suffix if we're composing a node\n const suffix = isComposing ? COMPOSITION_SUFFIX : '';\n const text = nextText + suffix;\n if (firstChild == null) {\n dom.textContent = text;\n } else {\n const nodeValue = firstChild.nodeValue;\n if (nodeValue !== text) {\n if (isComposing || IS_FIREFOX) {\n // We also use the diff composed text for general text in FF to avoid\n // the spellcheck red line from flickering.\n const [index, remove, insert] = diffComposedText(nodeValue, text);\n if (remove !== 0) {\n // @ts-expect-error\n firstChild.deleteData(index, remove);\n }\n // @ts-expect-error\n firstChild.insertData(index, insert);\n } else {\n firstChild.nodeValue = text;\n }\n }\n }\n}\nfunction createTextInnerDOM(innerDOM, node, innerTag, format, text, config) {\n setTextContent(text, innerDOM, node);\n const theme = config.theme;\n // Apply theme class names\n const textClassNames = theme.text;\n if (textClassNames !== undefined) {\n setTextThemeClassNames(innerTag, 0, format, innerDOM, textClassNames);\n }\n}\nfunction wrapElementWith(element, tag) {\n const el = document.createElement(tag);\n el.appendChild(element);\n return el;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\n\n/** @noInheritDoc */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nclass TextNode extends LexicalNode {\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n static getType() {\n return 'text';\n }\n static clone(node) {\n return new TextNode(node.__text, node.__key);\n }\n afterCloneFrom(prevNode) {\n super.afterCloneFrom(prevNode);\n this.__format = prevNode.__format;\n this.__style = prevNode.__style;\n this.__mode = prevNode.__mode;\n this.__detail = prevNode.__detail;\n }\n constructor(text, key) {\n super(key);\n this.__text = text;\n this.__format = 0;\n this.__style = '';\n this.__mode = 0;\n this.__detail = 0;\n }\n\n /**\n * Returns a 32-bit integer that represents the TextFormatTypes currently applied to the\n * TextNode. You probably don't want to use this method directly - consider using TextNode.hasFormat instead.\n *\n * @returns a number representing the format of the text node.\n */\n getFormat() {\n const self = this.getLatest();\n return self.__format;\n }\n\n /**\n * Returns a 32-bit integer that represents the TextDetailTypes currently applied to the\n * TextNode. You probably don't want to use this method directly - consider using TextNode.isDirectionless\n * or TextNode.isUnmergeable instead.\n *\n * @returns a number representing the detail of the text node.\n */\n getDetail() {\n const self = this.getLatest();\n return self.__detail;\n }\n\n /**\n * Returns the mode (TextModeType) of the TextNode, which may be \"normal\", \"token\", or \"segmented\"\n *\n * @returns TextModeType.\n */\n getMode() {\n const self = this.getLatest();\n return TEXT_TYPE_TO_MODE[self.__mode];\n }\n\n /**\n * Returns the styles currently applied to the node. This is analogous to CSSText in the DOM.\n *\n * @returns CSSText-like string of styles applied to the underlying DOM node.\n */\n getStyle() {\n const self = this.getLatest();\n return self.__style;\n }\n\n /**\n * Returns whether or not the node is in \"token\" mode. TextNodes in token mode can be navigated through character-by-character\n * with a RangeSelection, but are deleted as a single entity (not invdividually by character).\n *\n * @returns true if the node is in token mode, false otherwise.\n */\n isToken() {\n const self = this.getLatest();\n return self.__mode === IS_TOKEN;\n }\n\n /**\n *\n * @returns true if Lexical detects that an IME or other 3rd-party script is attempting to\n * mutate the TextNode, false otherwise.\n */\n isComposing() {\n return this.__key === $getCompositionKey();\n }\n\n /**\n * Returns whether or not the node is in \"segemented\" mode. TextNodes in segemented mode can be navigated through character-by-character\n * with a RangeSelection, but are deleted in space-delimited \"segments\".\n *\n * @returns true if the node is in segmented mode, false otherwise.\n */\n isSegmented() {\n const self = this.getLatest();\n return self.__mode === IS_SEGMENTED;\n }\n /**\n * Returns whether or not the node is \"directionless\". Directionless nodes don't respect changes between RTL and LTR modes.\n *\n * @returns true if the node is directionless, false otherwise.\n */\n isDirectionless() {\n const self = this.getLatest();\n return (self.__detail & IS_DIRECTIONLESS) !== 0;\n }\n /**\n * Returns whether or not the node is unmergeable. In some scenarios, Lexical tries to merge\n * adjacent TextNodes into a single TextNode. If a TextNode is unmergeable, this won't happen.\n *\n * @returns true if the node is unmergeable, false otherwise.\n */\n isUnmergeable() {\n const self = this.getLatest();\n return (self.__detail & IS_UNMERGEABLE) !== 0;\n }\n\n /**\n * Returns whether or not the node has the provided format applied. Use this with the human-readable TextFormatType\n * string values to get the format of a TextNode.\n *\n * @param type - the TextFormatType to check for.\n *\n * @returns true if the node has the provided format, false otherwise.\n */\n hasFormat(type) {\n const formatFlag = TEXT_TYPE_TO_FORMAT[type];\n return (this.getFormat() & formatFlag) !== 0;\n }\n\n /**\n * Returns whether or not the node is simple text. Simple text is defined as a TextNode that has the string type \"text\"\n * (i.e., not a subclass) and has no mode applied to it (i.e., not segmented or token).\n *\n * @returns true if the node is simple text, false otherwise.\n */\n isSimpleText() {\n return this.__type === 'text' && this.__mode === 0;\n }\n\n /**\n * Returns the text content of the node as a string.\n *\n * @returns a string representing the text content of the node.\n */\n getTextContent() {\n const self = this.getLatest();\n return self.__text;\n }\n\n /**\n * Returns the format flags applied to the node as a 32-bit integer.\n *\n * @returns a number representing the TextFormatTypes applied to the node.\n */\n getFormatFlags(type, alignWithFormat) {\n const self = this.getLatest();\n const format = self.__format;\n return toggleTextFormatType(format, type, alignWithFormat);\n }\n\n /**\n *\n * @returns true if the text node supports font styling, false otherwise.\n */\n canHaveFormat() {\n return true;\n }\n\n // View\n\n createDOM(config, editor) {\n const format = this.__format;\n const outerTag = getElementOuterTag(this, format);\n const innerTag = getElementInnerTag(this, format);\n const tag = outerTag === null ? innerTag : outerTag;\n const dom = document.createElement(tag);\n let innerDOM = dom;\n if (this.hasFormat('code')) {\n dom.setAttribute('spellcheck', 'false');\n }\n if (outerTag !== null) {\n innerDOM = document.createElement(innerTag);\n dom.appendChild(innerDOM);\n }\n const text = this.__text;\n createTextInnerDOM(innerDOM, this, innerTag, format, text, config);\n const style = this.__style;\n if (style !== '') {\n dom.style.cssText = style;\n }\n return dom;\n }\n updateDOM(prevNode, dom, config) {\n const nextText = this.__text;\n const prevFormat = prevNode.__format;\n const nextFormat = this.__format;\n const prevOuterTag = getElementOuterTag(this, prevFormat);\n const nextOuterTag = getElementOuterTag(this, nextFormat);\n const prevInnerTag = getElementInnerTag(this, prevFormat);\n const nextInnerTag = getElementInnerTag(this, nextFormat);\n const prevTag = prevOuterTag === null ? prevInnerTag : prevOuterTag;\n const nextTag = nextOuterTag === null ? nextInnerTag : nextOuterTag;\n if (prevTag !== nextTag) {\n return true;\n }\n if (prevOuterTag === nextOuterTag && prevInnerTag !== nextInnerTag) {\n // should always be an element\n const prevInnerDOM = dom.firstChild;\n if (prevInnerDOM == null) {\n {\n throw Error(`updateDOM: prevInnerDOM is null or undefined`);\n }\n }\n const nextInnerDOM = document.createElement(nextInnerTag);\n createTextInnerDOM(nextInnerDOM, this, nextInnerTag, nextFormat, nextText, config);\n dom.replaceChild(nextInnerDOM, prevInnerDOM);\n return false;\n }\n let innerDOM = dom;\n if (nextOuterTag !== null) {\n if (prevOuterTag !== null) {\n innerDOM = dom.firstChild;\n if (innerDOM == null) {\n {\n throw Error(`updateDOM: innerDOM is null or undefined`);\n }\n }\n }\n }\n setTextContent(nextText, innerDOM, this);\n const theme = config.theme;\n // Apply theme class names\n const textClassNames = theme.text;\n if (textClassNames !== undefined && prevFormat !== nextFormat) {\n setTextThemeClassNames(nextInnerTag, prevFormat, nextFormat, innerDOM, textClassNames);\n }\n const prevStyle = prevNode.__style;\n const nextStyle = this.__style;\n if (prevStyle !== nextStyle) {\n dom.style.cssText = nextStyle;\n }\n return false;\n }\n static importDOM() {\n return {\n '#text': () => ({\n conversion: $convertTextDOMNode,\n priority: 0\n }),\n b: () => ({\n conversion: convertBringAttentionToElement,\n priority: 0\n }),\n code: () => ({\n conversion: convertTextFormatElement,\n priority: 0\n }),\n em: () => ({\n conversion: convertTextFormatElement,\n priority: 0\n }),\n i: () => ({\n conversion: convertTextFormatElement,\n priority: 0\n }),\n s: () => ({\n conversion: convertTextFormatElement,\n priority: 0\n }),\n span: () => ({\n conversion: convertSpanElement,\n priority: 0\n }),\n strong: () => ({\n conversion: convertTextFormatElement,\n priority: 0\n }),\n sub: () => ({\n conversion: convertTextFormatElement,\n priority: 0\n }),\n sup: () => ({\n conversion: convertTextFormatElement,\n priority: 0\n }),\n u: () => ({\n conversion: convertTextFormatElement,\n priority: 0\n })\n };\n }\n static importJSON(serializedNode) {\n const node = $createTextNode(serializedNode.text);\n node.setFormat(serializedNode.format);\n node.setDetail(serializedNode.detail);\n node.setMode(serializedNode.mode);\n node.setStyle(serializedNode.style);\n return node;\n }\n\n // This improves Lexical's basic text output in copy+paste plus\n // for headless mode where people might use Lexical to generate\n // HTML content and not have the ability to use CSS classes.\n exportDOM(editor) {\n let {\n element\n } = super.exportDOM(editor);\n if (!(element !== null && isHTMLElement(element))) {\n throw Error(`Expected TextNode createDOM to always return a HTMLElement`);\n }\n element.style.whiteSpace = 'pre-wrap';\n // This is the only way to properly add support for most clients,\n // even if it's semantically incorrect to have to resort to using\n // <b>, <u>, <s>, <i> elements.\n if (this.hasFormat('bold')) {\n element = wrapElementWith(element, 'b');\n }\n if (this.hasFormat('italic')) {\n element = wrapElementWith(element, 'i');\n }\n if (this.hasFormat('strikethrough')) {\n element = wrapElementWith(element, 's');\n }\n if (this.hasFormat('underline')) {\n element = wrapElementWith(element, 'u');\n }\n return {\n element\n };\n }\n exportJSON() {\n return {\n detail: this.getDetail(),\n format: this.getFormat(),\n mode: this.getMode(),\n style: this.getStyle(),\n text: this.getTextContent(),\n type: 'text',\n version: 1\n };\n }\n\n // Mutators\n selectionTransform(prevSelection, nextSelection) {\n return;\n }\n\n /**\n * Sets the node format to the provided TextFormatType or 32-bit integer. Note that the TextFormatType\n * version of the argument can only specify one format and doing so will remove all other formats that\n * may be applied to the node. For toggling behavior, consider using {@link TextNode.toggleFormat}\n *\n * @param format - TextFormatType or 32-bit integer representing the node format.\n *\n * @returns this TextNode.\n * // TODO 0.12 This should just be a `string`.\n */\n setFormat(format) {\n const self = this.getWritable();\n self.__format = typeof format === 'string' ? TEXT_TYPE_TO_FORMAT[format] : format;\n return self;\n }\n\n /**\n * Sets the node detail to the provided TextDetailType or 32-bit integer. Note that the TextDetailType\n * version of the argument can only specify one detail value and doing so will remove all other detail values that\n * may be applied to the node. For toggling behavior, consider using {@link TextNode.toggleDirectionless}\n * or {@link TextNode.toggleUnmergeable}\n *\n * @param detail - TextDetailType or 32-bit integer representing the node detail.\n *\n * @returns this TextNode.\n * // TODO 0.12 This should just be a `string`.\n */\n setDetail(detail) {\n const self = this.getWritable();\n self.__detail = typeof detail === 'string' ? DETAIL_TYPE_TO_DETAIL[detail] : detail;\n return self;\n }\n\n /**\n * Sets the node style to the provided CSSText-like string. Set this property as you\n * would an HTMLElement style attribute to apply inline styles to the underlying DOM Element.\n *\n * @param style - CSSText to be applied to the underlying HTMLElement.\n *\n * @returns this TextNode.\n */\n setStyle(style) {\n const self = this.getWritable();\n self.__style = style;\n return self;\n }\n\n /**\n * Applies the provided format to this TextNode if it's not present. Removes it if it's present.\n * The subscript and superscript formats are mutually exclusive.\n * Prefer using this method to turn specific formats on and off.\n *\n * @param type - TextFormatType to toggle.\n *\n * @returns this TextNode.\n */\n toggleFormat(type) {\n const format = this.getFormat();\n const newFormat = toggleTextFormatType(format, type, null);\n return this.setFormat(newFormat);\n }\n\n /**\n * Toggles the directionless detail value of the node. Prefer using this method over setDetail.\n *\n * @returns this TextNode.\n */\n toggleDirectionless() {\n const self = this.getWritable();\n self.__detail ^= IS_DIRECTIONLESS;\n return self;\n }\n\n /**\n * Toggles the unmergeable detail value of the node. Prefer using this method over setDetail.\n *\n * @returns this TextNode.\n */\n toggleUnmergeable() {\n const self = this.getWritable();\n self.__detail ^= IS_UNMERGEABLE;\n return self;\n }\n\n /**\n * Sets the mode of the node.\n *\n * @returns this TextNode.\n */\n setMode(type) {\n const mode = TEXT_MODE_TO_TYPE[type];\n if (this.__mode === mode) {\n return this;\n }\n const self = this.getWritable();\n self.__mode = mode;\n return self;\n }\n\n /**\n * Sets the text content of the node.\n *\n * @param text - the string to set as the text value of the node.\n *\n * @returns this TextNode.\n */\n setTextContent(text) {\n if (this.__text === text) {\n return this;\n }\n const self = this.getWritable();\n self.__text = text;\n return self;\n }\n\n /**\n * Sets the current Lexical selection to be a RangeSelection with anchor and focus on this TextNode at the provided offsets.\n *\n * @param _anchorOffset - the offset at which the Selection anchor will be placed.\n * @param _focusOffset - the offset at which the Selection focus will be placed.\n *\n * @returns the new RangeSelection.\n */\n select(_anchorOffset, _focusOffset) {\n errorOnReadOnly();\n let anchorOffset = _anchorOffset;\n let focusOffset = _focusOffset;\n const selection = $getSelection();\n const text = this.getTextContent();\n const key = this.__key;\n if (typeof text === 'string') {\n const lastOffset = text.length;\n if (anchorOffset === undefined) {\n anchorOffset = lastOffset;\n }\n if (focusOffset === undefined) {\n focusOffset = lastOffset;\n }\n } else {\n anchorOffset = 0;\n focusOffset = 0;\n }\n if (!$isRangeSelection(selection)) {\n return $internalMakeRangeSelection(key, anchorOffset, key, focusOffset, 'text', 'text');\n } else {\n const compositionKey = $getCompositionKey();\n if (compositionKey === selection.anchor.key || compositionKey === selection.focus.key) {\n $setCompositionKey(key);\n }\n selection.setTextNodeRange(this, anchorOffset, this, focusOffset);\n }\n return selection;\n }\n selectStart() {\n return this.select(0, 0);\n }\n selectEnd() {\n const size = this.getTextContentSize();\n return this.select(size, size);\n }\n\n /**\n * Inserts the provided text into this TextNode at the provided offset, deleting the number of characters\n * specified. Can optionally calculate a new selection after the operation is complete.\n *\n * @param offset - the offset at which the splice operation should begin.\n * @param delCount - the number of characters to delete, starting from the offset.\n * @param newText - the text to insert into the TextNode at the offset.\n * @param moveSelection - optional, whether or not to move selection to the end of the inserted substring.\n *\n * @returns this TextNode.\n */\n spliceText(offset, delCount, newText, moveSelection) {\n const writableSelf = this.getWritable();\n const text = writableSelf.__text;\n const handledTextLength = newText.length;\n let index = offset;\n if (index < 0) {\n index = handledTextLength + index;\n if (index < 0) {\n index = 0;\n }\n }\n const selection = $getSelection();\n if (moveSelection && $isRangeSelection(selection)) {\n const newOffset = offset + handledTextLength;\n selection.setTextNodeRange(writableSelf, newOffset, writableSelf, newOffset);\n }\n const updatedText = text.slice(0, index) + newText + text.slice(index + delCount);\n writableSelf.__text = updatedText;\n return writableSelf;\n }\n\n /**\n * This method is meant to be overriden by TextNode subclasses to control the behavior of those nodes\n * when a user event would cause text to be inserted before them in the editor. If true, Lexical will attempt\n * to insert text into this node. If false, it will insert the text in a new sibling node.\n *\n * @returns true if text can be inserted before the node, false otherwise.\n */\n canInsertTextBefore() {\n return true;\n }\n\n /**\n * This method is meant to be overriden by TextNode subclasses to control the behavior of those nodes\n * when a user event would cause text to be inserted after them in the editor. If true, Lexical will attempt\n * to insert text into this node. If false, it will insert the text in a new sibling node.\n *\n * @returns true if text can be inserted after the node, false otherwise.\n */\n canInsertTextAfter() {\n return true;\n }\n\n /**\n * Splits this TextNode at the provided character offsets, forming new TextNodes from the substrings\n * formed by the split, and inserting those new TextNodes into the editor, replacing the one that was split.\n *\n * @param splitOffsets - rest param of the text content character offsets at which this node should be split.\n *\n * @returns an Array containing the newly-created TextNodes.\n */\n splitText(...splitOffsets) {\n errorOnReadOnly();\n const self = this.getLatest();\n const textContent = self.getTextContent();\n const key = self.__key;\n const compositionKey = $getCompositionKey();\n const offsetsSet = new Set(splitOffsets);\n const parts = [];\n const textLength = textContent.length;\n let string = '';\n for (let i = 0; i < textLength; i++) {\n if (string !== '' && offsetsSet.has(i)) {\n parts.push(string);\n string = '';\n }\n string += textContent[i];\n }\n if (string !== '') {\n parts.push(string);\n }\n const partsLength = parts.length;\n if (partsLength === 0) {\n return [];\n } else if (parts[0] === textContent) {\n return [self];\n }\n const firstPart = parts[0];\n const parent = self.getParent();\n let writableNode;\n const format = self.getFormat();\n const style = self.getStyle();\n const detail = self.__detail;\n let hasReplacedSelf = false;\n if (self.isSegmented()) {\n // Create a new TextNode\n writableNode = $createTextNode(firstPart);\n writableNode.__format = format;\n writableNode.__style = style;\n writableNode.__detail = detail;\n hasReplacedSelf = true;\n } else {\n // For the first part, update the existing node\n writableNode = self.getWritable();\n writableNode.__text = firstPart;\n }\n\n // Handle selection\n const selection = $getSelection();\n\n // Then handle all other parts\n const splitNodes = [writableNode];\n let textSize = firstPart.length;\n for (let i = 1; i < partsLength; i++) {\n const part = parts[i];\n const partSize = part.length;\n const sibling = $createTextNode(part).getWritable();\n sibling.__format = format;\n sibling.__style = style;\n sibling.__detail = detail;\n const siblingKey = sibling.__key;\n const nextTextSize = textSize + partSize;\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n if (anchor.key === key && anchor.type === 'text' && anchor.offset > textSize && anchor.offset <= nextTextSize) {\n anchor.key = siblingKey;\n anchor.offset -= textSize;\n selection.dirty = true;\n }\n if (focus.key === key && focus.type === 'text' && focus.offset > textSize && focus.offset <= nextTextSize) {\n focus.key = siblingKey;\n focus.offset -= textSize;\n selection.dirty = true;\n }\n }\n if (compositionKey === key) {\n $setCompositionKey(siblingKey);\n }\n textSize = nextTextSize;\n splitNodes.push(sibling);\n }\n\n // Insert the nodes into the parent's children\n if (parent !== null) {\n internalMarkSiblingsAsDirty(this);\n const writableParent = parent.getWritable();\n const insertionIndex = this.getIndexWithinParent();\n if (hasReplacedSelf) {\n writableParent.splice(insertionIndex, 0, splitNodes);\n this.remove();\n } else {\n writableParent.splice(insertionIndex, 1, splitNodes);\n }\n if ($isRangeSelection(selection)) {\n $updateElementSelectionOnCreateDeleteNode(selection, parent, insertionIndex, partsLength - 1);\n }\n }\n return splitNodes;\n }\n\n /**\n * Merges the target TextNode into this TextNode, removing the target node.\n *\n * @param target - the TextNode to merge into this one.\n *\n * @returns this TextNode.\n */\n mergeWithSibling(target) {\n const isBefore = target === this.getPreviousSibling();\n if (!isBefore && target !== this.getNextSibling()) {\n {\n throw Error(`mergeWithSibling: sibling must be a previous or next sibling`);\n }\n }\n const key = this.__key;\n const targetKey = target.__key;\n const text = this.__text;\n const textLength = text.length;\n const compositionKey = $getCompositionKey();\n if (compositionKey === targetKey) {\n $setCompositionKey(key);\n }\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n if (anchor !== null && anchor.key === targetKey) {\n adjustPointOffsetForMergedSibling(anchor, isBefore, key, target, textLength);\n selection.dirty = true;\n }\n if (focus !== null && focus.key === targetKey) {\n adjustPointOffsetForMergedSibling(focus, isBefore, key, target, textLength);\n selection.dirty = true;\n }\n }\n const targetText = target.__text;\n const newText = isBefore ? targetText + text : text + targetText;\n this.setTextContent(newText);\n const writableSelf = this.getWritable();\n target.remove();\n return writableSelf;\n }\n\n /**\n * This method is meant to be overriden by TextNode subclasses to control the behavior of those nodes\n * when used with the registerLexicalTextEntity function. If you're using registerLexicalTextEntity, the\n * node class that you create and replace matched text with should return true from this method.\n *\n * @returns true if the node is to be treated as a \"text entity\", false otherwise.\n */\n isTextEntity() {\n return false;\n }\n}\nfunction convertSpanElement(domNode) {\n // domNode is a <span> since we matched it by nodeName\n const span = domNode;\n const style = span.style;\n return {\n forChild: applyTextFormatFromStyle(style),\n node: null\n };\n}\nfunction convertBringAttentionToElement(domNode) {\n // domNode is a <b> since we matched it by nodeName\n const b = domNode;\n // Google Docs wraps all copied HTML in a <b> with font-weight normal\n const hasNormalFontWeight = b.style.fontWeight === 'normal';\n return {\n forChild: applyTextFormatFromStyle(b.style, hasNormalFontWeight ? undefined : 'bold'),\n node: null\n };\n}\nconst preParentCache = new WeakMap();\nfunction isNodePre(node) {\n return node.nodeName === 'PRE' || node.nodeType === DOM_ELEMENT_TYPE && node.style !== undefined && node.style.whiteSpace !== undefined && node.style.whiteSpace.startsWith('pre');\n}\nfunction findParentPreDOMNode(node) {\n let cached;\n let parent = node.parentNode;\n const visited = [node];\n while (parent !== null && (cached = preParentCache.get(parent)) === undefined && !isNodePre(parent)) {\n visited.push(parent);\n parent = parent.parentNode;\n }\n const resultNode = cached === undefined ? parent : cached;\n for (let i = 0; i < visited.length; i++) {\n preParentCache.set(visited[i], resultNode);\n }\n return resultNode;\n}\nfunction $convertTextDOMNode(domNode) {\n const domNode_ = domNode;\n const parentDom = domNode.parentElement;\n if (!(parentDom !== null)) {\n throw Error(`Expected parentElement of Text not to be null`);\n }\n let textContent = domNode_.textContent || '';\n // No collapse and preserve segment break for pre, pre-wrap and pre-line\n if (findParentPreDOMNode(domNode_) !== null) {\n const parts = textContent.split(/(\\r?\\n|\\t)/);\n const nodes = [];\n const length = parts.length;\n for (let i = 0; i < length; i++) {\n const part = parts[i];\n if (part === '\\n' || part === '\\r\\n') {\n nodes.push($createLineBreakNode());\n } else if (part === '\\t') {\n nodes.push($createTabNode());\n } else if (part !== '') {\n nodes.push($createTextNode(part));\n }\n }\n return {\n node: nodes\n };\n }\n textContent = textContent.replace(/\\r/g, '').replace(/[ \\t\\n]+/g, ' ');\n if (textContent === '') {\n return {\n node: null\n };\n }\n if (textContent[0] === ' ') {\n // Traverse backward while in the same line. If content contains new line or tab -> pontential\n // delete, other elements can borrow from this one. Deletion depends on whether it's also the\n // last space (see next condition: textContent[textContent.length - 1] === ' '))\n let previousText = domNode_;\n let isStartOfLine = true;\n while (previousText !== null && (previousText = findTextInLine(previousText, false)) !== null) {\n const previousTextContent = previousText.textContent || '';\n if (previousTextContent.length > 0) {\n if (/[ \\t\\n]$/.test(previousTextContent)) {\n textContent = textContent.slice(1);\n }\n isStartOfLine = false;\n break;\n }\n }\n if (isStartOfLine) {\n textContent = textContent.slice(1);\n }\n }\n if (textContent[textContent.length - 1] === ' ') {\n // Traverse forward while in the same line, preserve if next inline will require a space\n let nextText = domNode_;\n let isEndOfLine = true;\n while (nextText !== null && (nextText = findTextInLine(nextText, true)) !== null) {\n const nextTextContent = (nextText.textContent || '').replace(/^( |\\t|\\r?\\n)+/, '');\n if (nextTextContent.length > 0) {\n isEndOfLine = false;\n break;\n }\n }\n if (isEndOfLine) {\n textContent = textContent.slice(0, textContent.length - 1);\n }\n }\n if (textContent === '') {\n return {\n node: null\n };\n }\n return {\n node: $createTextNode(textContent)\n };\n}\nfunction findTextInLine(text, forward) {\n let node = text;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let sibling;\n while ((sibling = forward ? node.nextSibling : node.previousSibling) === null) {\n const parentElement = node.parentElement;\n if (parentElement === null) {\n return null;\n }\n node = parentElement;\n }\n node = sibling;\n if (node.nodeType === DOM_ELEMENT_TYPE) {\n const display = node.style.display;\n if (display === '' && !isInlineDomNode(node) || display !== '' && !display.startsWith('inline')) {\n return null;\n }\n }\n let descendant = node;\n while ((descendant = forward ? node.firstChild : node.lastChild) !== null) {\n node = descendant;\n }\n if (node.nodeType === DOM_TEXT_TYPE) {\n return node;\n } else if (node.nodeName === 'BR') {\n return null;\n }\n }\n}\nconst nodeNameToTextFormat = {\n code: 'code',\n em: 'italic',\n i: 'italic',\n s: 'strikethrough',\n strong: 'bold',\n sub: 'subscript',\n sup: 'superscript',\n u: 'underline'\n};\nfunction convertTextFormatElement(domNode) {\n const format = nodeNameToTextFormat[domNode.nodeName.toLowerCase()];\n if (format === undefined) {\n return {\n node: null\n };\n }\n return {\n forChild: applyTextFormatFromStyle(domNode.style, format),\n node: null\n };\n}\nfunction $createTextNode(text = '') {\n return $applyNodeReplacement(new TextNode(text));\n}\nfunction $isTextNode(node) {\n return node instanceof TextNode;\n}\nfunction applyTextFormatFromStyle(style, shouldApply) {\n const fontWeight = style.fontWeight;\n const textDecoration = style.textDecoration.split(' ');\n // Google Docs uses span tags + font-weight for bold text\n const hasBoldFontWeight = fontWeight === '700' || fontWeight === 'bold';\n // Google Docs uses span tags + text-decoration: line-through for strikethrough text\n const hasLinethroughTextDecoration = textDecoration.includes('line-through');\n // Google Docs uses span tags + font-style for italic text\n const hasItalicFontStyle = style.fontStyle === 'italic';\n // Google Docs uses span tags + text-decoration: underline for underline text\n const hasUnderlineTextDecoration = textDecoration.includes('underline');\n // Google Docs uses span tags + vertical-align to specify subscript and superscript\n const verticalAlign = style.verticalAlign;\n return lexicalNode => {\n if (!$isTextNode(lexicalNode)) {\n return lexicalNode;\n }\n if (hasBoldFontWeight && !lexicalNode.hasFormat('bold')) {\n lexicalNode.toggleFormat('bold');\n }\n if (hasLinethroughTextDecoration && !lexicalNode.hasFormat('strikethrough')) {\n lexicalNode.toggleFormat('strikethrough');\n }\n if (hasItalicFontStyle && !lexicalNode.hasFormat('italic')) {\n lexicalNode.toggleFormat('italic');\n }\n if (hasUnderlineTextDecoration && !lexicalNode.hasFormat('underline')) {\n lexicalNode.toggleFormat('underline');\n }\n if (verticalAlign === 'sub' && !lexicalNode.hasFormat('subscript')) {\n lexicalNode.toggleFormat('subscript');\n }\n if (verticalAlign === 'super' && !lexicalNode.hasFormat('superscript')) {\n lexicalNode.toggleFormat('superscript');\n }\n if (shouldApply && !lexicalNode.hasFormat(shouldApply)) {\n lexicalNode.toggleFormat(shouldApply);\n }\n return lexicalNode;\n };\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/** @noInheritDoc */\nclass TabNode extends TextNode {\n static getType() {\n return 'tab';\n }\n static clone(node) {\n return new TabNode(node.__key);\n }\n afterCloneFrom(prevNode) {\n super.afterCloneFrom(prevNode);\n // TabNode __text can be either '\\t' or ''. insertText will remove the empty Node\n this.__text = prevNode.__text;\n }\n constructor(key) {\n super('\\t', key);\n this.__detail = IS_UNMERGEABLE;\n }\n static importDOM() {\n return null;\n }\n static importJSON(serializedTabNode) {\n const node = $createTabNode();\n node.setFormat(serializedTabNode.format);\n node.setStyle(serializedTabNode.style);\n return node;\n }\n exportJSON() {\n return {\n ...super.exportJSON(),\n type: 'tab',\n version: 1\n };\n }\n setTextContent(_text) {\n {\n throw Error(`TabNode does not support setTextContent`);\n }\n }\n setDetail(_detail) {\n {\n throw Error(`TabNode does not support setDetail`);\n }\n }\n setMode(_type) {\n {\n throw Error(`TabNode does not support setMode`);\n }\n }\n canInsertTextBefore() {\n return false;\n }\n canInsertTextAfter() {\n return false;\n }\n}\nfunction $createTabNode() {\n return $applyNodeReplacement(new TabNode());\n}\nfunction $isTabNode(node) {\n return node instanceof TabNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nclass Point {\n constructor(key, offset, type) {\n this._selection = null;\n this.key = key;\n this.offset = offset;\n this.type = type;\n }\n is(point) {\n return this.key === point.key && this.offset === point.offset && this.type === point.type;\n }\n isBefore(b) {\n let aNode = this.getNode();\n let bNode = b.getNode();\n const aOffset = this.offset;\n const bOffset = b.offset;\n if ($isElementNode(aNode)) {\n const aNodeDescendant = aNode.getDescendantByIndex(aOffset);\n aNode = aNodeDescendant != null ? aNodeDescendant : aNode;\n }\n if ($isElementNode(bNode)) {\n const bNodeDescendant = bNode.getDescendantByIndex(bOffset);\n bNode = bNodeDescendant != null ? bNodeDescendant : bNode;\n }\n if (aNode === bNode) {\n return aOffset < bOffset;\n }\n return aNode.isBefore(bNode);\n }\n getNode() {\n const key = this.key;\n const node = $getNodeByKey(key);\n if (node === null) {\n {\n throw Error(`Point.getNode: node not found`);\n }\n }\n return node;\n }\n set(key, offset, type) {\n const selection = this._selection;\n const oldKey = this.key;\n this.key = key;\n this.offset = offset;\n this.type = type;\n if (!isCurrentlyReadOnlyMode()) {\n if ($getCompositionKey() === oldKey) {\n $setCompositionKey(key);\n }\n if (selection !== null) {\n selection.setCachedNodes(null);\n selection.dirty = true;\n }\n }\n }\n}\nfunction $createPoint(key, offset, type) {\n // @ts-expect-error: intentionally cast as we use a class for perf reasons\n return new Point(key, offset, type);\n}\nfunction selectPointOnNode(point, node) {\n let key = node.__key;\n let offset = point.offset;\n let type = 'element';\n if ($isTextNode(node)) {\n type = 'text';\n const textContentLength = node.getTextContentSize();\n if (offset > textContentLength) {\n offset = textContentLength;\n }\n } else if (!$isElementNode(node)) {\n const nextSibling = node.getNextSibling();\n if ($isTextNode(nextSibling)) {\n key = nextSibling.__key;\n offset = 0;\n type = 'text';\n } else {\n const parentNode = node.getParent();\n if (parentNode) {\n key = parentNode.__key;\n offset = node.getIndexWithinParent() + 1;\n }\n }\n }\n point.set(key, offset, type);\n}\nfunction $moveSelectionPointToEnd(point, node) {\n if ($isElementNode(node)) {\n const lastNode = node.getLastDescendant();\n if ($isElementNode(lastNode) || $isTextNode(lastNode)) {\n selectPointOnNode(point, lastNode);\n } else {\n selectPointOnNode(point, node);\n }\n } else {\n selectPointOnNode(point, node);\n }\n}\nfunction $transferStartingElementPointToTextPoint(start, end, format, style) {\n const element = start.getNode();\n const placementNode = element.getChildAtIndex(start.offset);\n const textNode = $createTextNode();\n const target = $isRootNode(element) ? $createParagraphNode().append(textNode) : textNode;\n textNode.setFormat(format);\n textNode.setStyle(style);\n if (placementNode === null) {\n element.append(target);\n } else {\n placementNode.insertBefore(target);\n }\n // Transfer the element point to a text point.\n if (start.is(end)) {\n end.set(textNode.__key, 0, 'text');\n }\n start.set(textNode.__key, 0, 'text');\n}\nfunction $setPointValues(point, key, offset, type) {\n point.key = key;\n point.offset = offset;\n point.type = type;\n}\nclass NodeSelection {\n constructor(objects) {\n this._cachedNodes = null;\n this._nodes = objects;\n this.dirty = false;\n }\n getCachedNodes() {\n return this._cachedNodes;\n }\n setCachedNodes(nodes) {\n this._cachedNodes = nodes;\n }\n is(selection) {\n if (!$isNodeSelection(selection)) {\n return false;\n }\n const a = this._nodes;\n const b = selection._nodes;\n return a.size === b.size && Array.from(a).every(key => b.has(key));\n }\n isCollapsed() {\n return false;\n }\n isBackward() {\n return false;\n }\n getStartEndPoints() {\n return null;\n }\n add(key) {\n this.dirty = true;\n this._nodes.add(key);\n this._cachedNodes = null;\n }\n delete(key) {\n this.dirty = true;\n this._nodes.delete(key);\n this._cachedNodes = null;\n }\n clear() {\n this.dirty = true;\n this._nodes.clear();\n this._cachedNodes = null;\n }\n has(key) {\n return this._nodes.has(key);\n }\n clone() {\n return new NodeSelection(new Set(this._nodes));\n }\n extract() {\n return this.getNodes();\n }\n insertRawText(text) {\n // Do nothing?\n }\n insertText() {\n // Do nothing?\n }\n insertNodes(nodes) {\n const selectedNodes = this.getNodes();\n const selectedNodesLength = selectedNodes.length;\n const lastSelectedNode = selectedNodes[selectedNodesLength - 1];\n let selectionAtEnd;\n // Insert nodes\n if ($isTextNode(lastSelectedNode)) {\n selectionAtEnd = lastSelectedNode.select();\n } else {\n const index = lastSelectedNode.getIndexWithinParent() + 1;\n selectionAtEnd = lastSelectedNode.getParentOrThrow().select(index, index);\n }\n selectionAtEnd.insertNodes(nodes);\n // Remove selected nodes\n for (let i = 0; i < selectedNodesLength; i++) {\n selectedNodes[i].remove();\n }\n }\n getNodes() {\n const cachedNodes = this._cachedNodes;\n if (cachedNodes !== null) {\n return cachedNodes;\n }\n const objects = this._nodes;\n const nodes = [];\n for (const object of objects) {\n const node = $getNodeByKey(object);\n if (node !== null) {\n nodes.push(node);\n }\n }\n if (!isCurrentlyReadOnlyMode()) {\n this._cachedNodes = nodes;\n }\n return nodes;\n }\n getTextContent() {\n const nodes = this.getNodes();\n let textContent = '';\n for (let i = 0; i < nodes.length; i++) {\n textContent += nodes[i].getTextContent();\n }\n return textContent;\n }\n}\nfunction $isRangeSelection(x) {\n return x instanceof RangeSelection;\n}\nclass RangeSelection {\n constructor(anchor, focus, format, style) {\n this.anchor = anchor;\n this.focus = focus;\n anchor._selection = this;\n focus._selection = this;\n this._cachedNodes = null;\n this.format = format;\n this.style = style;\n this.dirty = false;\n }\n getCachedNodes() {\n return this._cachedNodes;\n }\n setCachedNodes(nodes) {\n this._cachedNodes = nodes;\n }\n\n /**\n * Used to check if the provided selections is equal to this one by value,\n * inluding anchor, focus, format, and style properties.\n * @param selection - the Selection to compare this one to.\n * @returns true if the Selections are equal, false otherwise.\n */\n is(selection) {\n if (!$isRangeSelection(selection)) {\n return false;\n }\n return this.anchor.is(selection.anchor) && this.focus.is(selection.focus) && this.format === selection.format && this.style === selection.style;\n }\n\n /**\n * Returns whether the Selection is \"collapsed\", meaning the anchor and focus are\n * the same node and have the same offset.\n *\n * @returns true if the Selection is collapsed, false otherwise.\n */\n isCollapsed() {\n return this.anchor.is(this.focus);\n }\n\n /**\n * Gets all the nodes in the Selection. Uses caching to make it generally suitable\n * for use in hot paths.\n *\n * @returns an Array containing all the nodes in the Selection\n */\n getNodes() {\n const cachedNodes = this._cachedNodes;\n if (cachedNodes !== null) {\n return cachedNodes;\n }\n const anchor = this.anchor;\n const focus = this.focus;\n const isBefore = anchor.isBefore(focus);\n const firstPoint = isBefore ? anchor : focus;\n const lastPoint = isBefore ? focus : anchor;\n let firstNode = firstPoint.getNode();\n let lastNode = lastPoint.getNode();\n const startOffset = firstPoint.offset;\n const endOffset = lastPoint.offset;\n if ($isElementNode(firstNode)) {\n const firstNodeDescendant = firstNode.getDescendantByIndex(startOffset);\n firstNode = firstNodeDescendant != null ? firstNodeDescendant : firstNode;\n }\n if ($isElementNode(lastNode)) {\n let lastNodeDescendant = lastNode.getDescendantByIndex(endOffset);\n // We don't want to over-select, as node selection infers the child before\n // the last descendant, not including that descendant.\n if (lastNodeDescendant !== null && lastNodeDescendant !== firstNode && lastNode.getChildAtIndex(endOffset) === lastNodeDescendant) {\n lastNodeDescendant = lastNodeDescendant.getPreviousSibling();\n }\n lastNode = lastNodeDescendant != null ? lastNodeDescendant : lastNode;\n }\n let nodes;\n if (firstNode.is(lastNode)) {\n if ($isElementNode(firstNode) && firstNode.getChildrenSize() > 0) {\n nodes = [];\n } else {\n nodes = [firstNode];\n }\n } else {\n nodes = firstNode.getNodesBetween(lastNode);\n }\n if (!isCurrentlyReadOnlyMode()) {\n this._cachedNodes = nodes;\n }\n return nodes;\n }\n\n /**\n * Sets this Selection to be of type \"text\" at the provided anchor and focus values.\n *\n * @param anchorNode - the anchor node to set on the Selection\n * @param anchorOffset - the offset to set on the Selection\n * @param focusNode - the focus node to set on the Selection\n * @param focusOffset - the focus offset to set on the Selection\n */\n setTextNodeRange(anchorNode, anchorOffset, focusNode, focusOffset) {\n $setPointValues(this.anchor, anchorNode.__key, anchorOffset, 'text');\n $setPointValues(this.focus, focusNode.__key, focusOffset, 'text');\n this._cachedNodes = null;\n this.dirty = true;\n }\n\n /**\n * Gets the (plain) text content of all the nodes in the selection.\n *\n * @returns a string representing the text content of all the nodes in the Selection\n */\n getTextContent() {\n const nodes = this.getNodes();\n if (nodes.length === 0) {\n return '';\n }\n const firstNode = nodes[0];\n const lastNode = nodes[nodes.length - 1];\n const anchor = this.anchor;\n const focus = this.focus;\n const isBefore = anchor.isBefore(focus);\n const [anchorOffset, focusOffset] = $getCharacterOffsets(this);\n let textContent = '';\n let prevWasElement = true;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ($isElementNode(node) && !node.isInline()) {\n if (!prevWasElement) {\n textContent += '\\n';\n }\n if (node.isEmpty()) {\n prevWasElement = false;\n } else {\n prevWasElement = true;\n }\n } else {\n prevWasElement = false;\n if ($isTextNode(node)) {\n let text = node.getTextContent();\n if (node === firstNode) {\n if (node === lastNode) {\n if (anchor.type !== 'element' || focus.type !== 'element' || focus.offset === anchor.offset) {\n text = anchorOffset < focusOffset ? text.slice(anchorOffset, focusOffset) : text.slice(focusOffset, anchorOffset);\n }\n } else {\n text = isBefore ? text.slice(anchorOffset) : text.slice(focusOffset);\n }\n } else if (node === lastNode) {\n text = isBefore ? text.slice(0, focusOffset) : text.slice(0, anchorOffset);\n }\n textContent += text;\n } else if (($isDecoratorNode(node) || $isLineBreakNode(node)) && (node !== lastNode || !this.isCollapsed())) {\n textContent += node.getTextContent();\n }\n }\n }\n return textContent;\n }\n\n /**\n * Attempts to map a DOM selection range onto this Lexical Selection,\n * setting the anchor, focus, and type accordingly\n *\n * @param range a DOM Selection range conforming to the StaticRange interface.\n */\n applyDOMRange(range) {\n const editor = getActiveEditor();\n const currentEditorState = editor.getEditorState();\n const lastSelection = currentEditorState._selection;\n const resolvedSelectionPoints = $internalResolveSelectionPoints(range.startContainer, range.startOffset, range.endContainer, range.endOffset, editor, lastSelection);\n if (resolvedSelectionPoints === null) {\n return;\n }\n const [anchorPoint, focusPoint] = resolvedSelectionPoints;\n $setPointValues(this.anchor, anchorPoint.key, anchorPoint.offset, anchorPoint.type);\n $setPointValues(this.focus, focusPoint.key, focusPoint.offset, focusPoint.type);\n this._cachedNodes = null;\n }\n\n /**\n * Creates a new RangeSelection, copying over all the property values from this one.\n *\n * @returns a new RangeSelection with the same property values as this one.\n */\n clone() {\n const anchor = this.anchor;\n const focus = this.focus;\n const selection = new RangeSelection($createPoint(anchor.key, anchor.offset, anchor.type), $createPoint(focus.key, focus.offset, focus.type), this.format, this.style);\n return selection;\n }\n\n /**\n * Toggles the provided format on all the TextNodes in the Selection.\n *\n * @param format a string TextFormatType to toggle on the TextNodes in the selection\n */\n toggleFormat(format) {\n this.format = toggleTextFormatType(this.format, format, null);\n this.dirty = true;\n }\n\n /**\n * Sets the value of the style property on the Selection\n *\n * @param style - the style to set at the value of the style property.\n */\n setStyle(style) {\n this.style = style;\n this.dirty = true;\n }\n\n /**\n * Returns whether the provided TextFormatType is present on the Selection. This will be true if any node in the Selection\n * has the specified format.\n *\n * @param type the TextFormatType to check for.\n * @returns true if the provided format is currently toggled on on the Selection, false otherwise.\n */\n hasFormat(type) {\n const formatFlag = TEXT_TYPE_TO_FORMAT[type];\n return (this.format & formatFlag) !== 0;\n }\n\n /**\n * Attempts to insert the provided text into the EditorState at the current Selection.\n * converts tabs, newlines, and carriage returns into LexicalNodes.\n *\n * @param text the text to insert into the Selection\n */\n insertRawText(text) {\n const parts = text.split(/(\\r?\\n|\\t)/);\n const nodes = [];\n const length = parts.length;\n for (let i = 0; i < length; i++) {\n const part = parts[i];\n if (part === '\\n' || part === '\\r\\n') {\n nodes.push($createLineBreakNode());\n } else if (part === '\\t') {\n nodes.push($createTabNode());\n } else {\n nodes.push($createTextNode(part));\n }\n }\n this.insertNodes(nodes);\n }\n\n /**\n * Attempts to insert the provided text into the EditorState at the current Selection as a new\n * Lexical TextNode, according to a series of insertion heuristics based on the selection type and position.\n *\n * @param text the text to insert into the Selection\n */\n insertText(text) {\n const anchor = this.anchor;\n const focus = this.focus;\n const format = this.format;\n const style = this.style;\n let firstPoint = anchor;\n let endPoint = focus;\n if (!this.isCollapsed() && focus.isBefore(anchor)) {\n firstPoint = focus;\n endPoint = anchor;\n }\n if (firstPoint.type === 'element') {\n $transferStartingElementPointToTextPoint(firstPoint, endPoint, format, style);\n }\n const startOffset = firstPoint.offset;\n let endOffset = endPoint.offset;\n const selectedNodes = this.getNodes();\n const selectedNodesLength = selectedNodes.length;\n let firstNode = selectedNodes[0];\n if (!$isTextNode(firstNode)) {\n {\n throw Error(`insertText: first node is not a text node`);\n }\n }\n const firstNodeText = firstNode.getTextContent();\n const firstNodeTextLength = firstNodeText.length;\n const firstNodeParent = firstNode.getParentOrThrow();\n const lastIndex = selectedNodesLength - 1;\n let lastNode = selectedNodes[lastIndex];\n if (selectedNodesLength === 1 && endPoint.type === 'element') {\n endOffset = firstNodeTextLength;\n endPoint.set(firstPoint.key, endOffset, 'text');\n }\n if (this.isCollapsed() && startOffset === firstNodeTextLength && (firstNode.isSegmented() || firstNode.isToken() || !firstNode.canInsertTextAfter() || !firstNodeParent.canInsertTextAfter() && firstNode.getNextSibling() === null)) {\n let nextSibling = firstNode.getNextSibling();\n if (!$isTextNode(nextSibling) || !nextSibling.canInsertTextBefore() || $isTokenOrSegmented(nextSibling)) {\n nextSibling = $createTextNode();\n nextSibling.setFormat(format);\n nextSibling.setStyle(style);\n if (!firstNodeParent.canInsertTextAfter()) {\n firstNodeParent.insertAfter(nextSibling);\n } else {\n firstNode.insertAfter(nextSibling);\n }\n }\n nextSibling.select(0, 0);\n firstNode = nextSibling;\n if (text !== '') {\n this.insertText(text);\n return;\n }\n } else if (this.isCollapsed() && startOffset === 0 && (firstNode.isSegmented() || firstNode.isToken() || !firstNode.canInsertTextBefore() || !firstNodeParent.canInsertTextBefore() && firstNode.getPreviousSibling() === null)) {\n let prevSibling = firstNode.getPreviousSibling();\n if (!$isTextNode(prevSibling) || $isTokenOrSegmented(prevSibling)) {\n prevSibling = $createTextNode();\n prevSibling.setFormat(format);\n if (!firstNodeParent.canInsertTextBefore()) {\n firstNodeParent.insertBefore(prevSibling);\n } else {\n firstNode.insertBefore(prevSibling);\n }\n }\n prevSibling.select();\n firstNode = prevSibling;\n if (text !== '') {\n this.insertText(text);\n return;\n }\n } else if (firstNode.isSegmented() && startOffset !== firstNodeTextLength) {\n const textNode = $createTextNode(firstNode.getTextContent());\n textNode.setFormat(format);\n firstNode.replace(textNode);\n firstNode = textNode;\n } else if (!this.isCollapsed() && text !== '') {\n // When the firstNode or lastNode parents are elements that\n // do not allow text to be inserted before or after, we first\n // clear the content. Then we normalize selection, then insert\n // the new content.\n const lastNodeParent = lastNode.getParent();\n if (!firstNodeParent.canInsertTextBefore() || !firstNodeParent.canInsertTextAfter() || $isElementNode(lastNodeParent) && (!lastNodeParent.canInsertTextBefore() || !lastNodeParent.canInsertTextAfter())) {\n this.insertText('');\n $normalizeSelectionPointsForBoundaries(this.anchor, this.focus, null);\n this.insertText(text);\n return;\n }\n }\n if (selectedNodesLength === 1) {\n if (firstNode.isToken()) {\n const textNode = $createTextNode(text);\n textNode.select();\n firstNode.replace(textNode);\n return;\n }\n const firstNodeFormat = firstNode.getFormat();\n const firstNodeStyle = firstNode.getStyle();\n if (startOffset === endOffset && (firstNodeFormat !== format || firstNodeStyle !== style)) {\n if (firstNode.getTextContent() === '') {\n firstNode.setFormat(format);\n firstNode.setStyle(style);\n } else {\n const textNode = $createTextNode(text);\n textNode.setFormat(format);\n textNode.setStyle(style);\n textNode.select();\n if (startOffset === 0) {\n firstNode.insertBefore(textNode, false);\n } else {\n const [targetNode] = firstNode.splitText(startOffset);\n targetNode.insertAfter(textNode, false);\n }\n // When composing, we need to adjust the anchor offset so that\n // we correctly replace that right range.\n if (textNode.isComposing() && this.anchor.type === 'text') {\n this.anchor.offset -= text.length;\n }\n return;\n }\n } else if ($isTabNode(firstNode)) {\n // We don't need to check for delCount because there is only the entire selected node case\n // that can hit here for content size 1 and with canInsertTextBeforeAfter false\n const textNode = $createTextNode(text);\n textNode.setFormat(format);\n textNode.setStyle(style);\n textNode.select();\n firstNode.replace(textNode);\n return;\n }\n const delCount = endOffset - startOffset;\n firstNode = firstNode.spliceText(startOffset, delCount, text, true);\n if (firstNode.getTextContent() === '') {\n firstNode.remove();\n } else if (this.anchor.type === 'text') {\n if (firstNode.isComposing()) {\n // When composing, we need to adjust the anchor offset so that\n // we correctly replace that right range.\n this.anchor.offset -= text.length;\n } else {\n this.format = firstNodeFormat;\n this.style = firstNodeStyle;\n }\n }\n } else {\n const markedNodeKeysForKeep = new Set([...firstNode.getParentKeys(), ...lastNode.getParentKeys()]);\n\n // We have to get the parent elements before the next section,\n // as in that section we might mutate the lastNode.\n const firstElement = $isElementNode(firstNode) ? firstNode : firstNode.getParentOrThrow();\n let lastElement = $isElementNode(lastNode) ? lastNode : lastNode.getParentOrThrow();\n let lastElementChild = lastNode;\n\n // If the last element is inline, we should instead look at getting\n // the nodes of its parent, rather than itself. This behavior will\n // then better match how text node insertions work. We will need to\n // also update the last element's child accordingly as we do this.\n if (!firstElement.is(lastElement) && lastElement.isInline()) {\n // Keep traversing till we have a non-inline element parent.\n do {\n lastElementChild = lastElement;\n lastElement = lastElement.getParentOrThrow();\n } while (lastElement.isInline());\n }\n\n // Handle mutations to the last node.\n if (endPoint.type === 'text' && (endOffset !== 0 || lastNode.getTextContent() === '') || endPoint.type === 'element' && lastNode.getIndexWithinParent() < endOffset) {\n if ($isTextNode(lastNode) && !lastNode.isToken() && endOffset !== lastNode.getTextContentSize()) {\n if (lastNode.isSegmented()) {\n const textNode = $createTextNode(lastNode.getTextContent());\n lastNode.replace(textNode);\n lastNode = textNode;\n }\n // root node selections only select whole nodes, so no text splice is necessary\n if (!$isRootNode(endPoint.getNode()) && endPoint.type === 'text') {\n lastNode = lastNode.spliceText(0, endOffset, '');\n }\n markedNodeKeysForKeep.add(lastNode.__key);\n } else {\n const lastNodeParent = lastNode.getParentOrThrow();\n if (!lastNodeParent.canBeEmpty() && lastNodeParent.getChildrenSize() === 1) {\n lastNodeParent.remove();\n } else {\n lastNode.remove();\n }\n }\n } else {\n markedNodeKeysForKeep.add(lastNode.__key);\n }\n\n // Either move the remaining nodes of the last parent to after\n // the first child, or remove them entirely. If the last parent\n // is the same as the first parent, this logic also works.\n const lastNodeChildren = lastElement.getChildren();\n const selectedNodesSet = new Set(selectedNodes);\n const firstAndLastElementsAreEqual = firstElement.is(lastElement);\n\n // We choose a target to insert all nodes after. In the case of having\n // and inline starting parent element with a starting node that has no\n // siblings, we should insert after the starting parent element, otherwise\n // we will incorrectly merge into the starting parent element.\n // TODO: should we keep on traversing parents if we're inside another\n // nested inline element?\n const insertionTarget = firstElement.isInline() && firstNode.getNextSibling() === null ? firstElement : firstNode;\n for (let i = lastNodeChildren.length - 1; i >= 0; i--) {\n const lastNodeChild = lastNodeChildren[i];\n if (lastNodeChild.is(firstNode) || $isElementNode(lastNodeChild) && lastNodeChild.isParentOf(firstNode)) {\n break;\n }\n if (lastNodeChild.isAttached()) {\n if (!selectedNodesSet.has(lastNodeChild) || lastNodeChild.is(lastElementChild)) {\n if (!firstAndLastElementsAreEqual) {\n insertionTarget.insertAfter(lastNodeChild, false);\n }\n } else {\n lastNodeChild.remove();\n }\n }\n }\n if (!firstAndLastElementsAreEqual) {\n // Check if we have already moved out all the nodes of the\n // last parent, and if so, traverse the parent tree and mark\n // them all as being able to deleted too.\n let parent = lastElement;\n let lastRemovedParent = null;\n while (parent !== null) {\n const children = parent.getChildren();\n const childrenLength = children.length;\n if (childrenLength === 0 || children[childrenLength - 1].is(lastRemovedParent)) {\n markedNodeKeysForKeep.delete(parent.__key);\n lastRemovedParent = parent;\n }\n parent = parent.getParent();\n }\n }\n\n // Ensure we do splicing after moving of nodes, as splicing\n // can have side-effects (in the case of hashtags).\n if (!firstNode.isToken()) {\n firstNode = firstNode.spliceText(startOffset, firstNodeTextLength - startOffset, text, true);\n if (firstNode.getTextContent() === '') {\n firstNode.remove();\n } else if (firstNode.isComposing() && this.anchor.type === 'text') {\n // When composing, we need to adjust the anchor offset so that\n // we correctly replace that right range.\n this.anchor.offset -= text.length;\n }\n } else if (startOffset === firstNodeTextLength) {\n firstNode.select();\n } else {\n const textNode = $createTextNode(text);\n textNode.select();\n firstNode.replace(textNode);\n }\n\n // Remove all selected nodes that haven't already been removed.\n for (let i = 1; i < selectedNodesLength; i++) {\n const selectedNode = selectedNodes[i];\n const key = selectedNode.__key;\n if (!markedNodeKeysForKeep.has(key)) {\n selectedNode.remove();\n }\n }\n }\n }\n\n /**\n * Removes the text in the Selection, adjusting the EditorState accordingly.\n */\n removeText() {\n this.insertText('');\n }\n\n /**\n * Applies the provided format to the TextNodes in the Selection, splitting or\n * merging nodes as necessary.\n *\n * @param formatType the format type to apply to the nodes in the Selection.\n */\n formatText(formatType) {\n if (this.isCollapsed()) {\n this.toggleFormat(formatType);\n // When changing format, we should stop composition\n $setCompositionKey(null);\n return;\n }\n const selectedNodes = this.getNodes();\n const selectedTextNodes = [];\n for (const selectedNode of selectedNodes) {\n if ($isTextNode(selectedNode)) {\n selectedTextNodes.push(selectedNode);\n }\n }\n const selectedTextNodesLength = selectedTextNodes.length;\n if (selectedTextNodesLength === 0) {\n this.toggleFormat(formatType);\n // When changing format, we should stop composition\n $setCompositionKey(null);\n return;\n }\n const anchor = this.anchor;\n const focus = this.focus;\n const isBackward = this.isBackward();\n const startPoint = isBackward ? focus : anchor;\n const endPoint = isBackward ? anchor : focus;\n let firstIndex = 0;\n let firstNode = selectedTextNodes[0];\n let startOffset = startPoint.type === 'element' ? 0 : startPoint.offset;\n\n // In case selection started at the end of text node use next text node\n if (startPoint.type === 'text' && startOffset === firstNode.getTextContentSize()) {\n firstIndex = 1;\n firstNode = selectedTextNodes[1];\n startOffset = 0;\n }\n if (firstNode == null) {\n return;\n }\n const firstNextFormat = firstNode.getFormatFlags(formatType, null);\n const lastIndex = selectedTextNodesLength - 1;\n let lastNode = selectedTextNodes[lastIndex];\n const endOffset = endPoint.type === 'text' ? endPoint.offset : lastNode.getTextContentSize();\n\n // Single node selected\n if (firstNode.is(lastNode)) {\n // No actual text is selected, so do nothing.\n if (startOffset === endOffset) {\n return;\n }\n // The entire node is selected or it is token, so just format it\n if ($isTokenOrSegmented(firstNode) || startOffset === 0 && endOffset === firstNode.getTextContentSize()) {\n firstNode.setFormat(firstNextFormat);\n } else {\n // Node is partially selected, so split it into two nodes\n // add style the selected one.\n const splitNodes = firstNode.splitText(startOffset, endOffset);\n const replacement = startOffset === 0 ? splitNodes[0] : splitNodes[1];\n replacement.setFormat(firstNextFormat);\n\n // Update selection only if starts/ends on text node\n if (startPoint.type === 'text') {\n startPoint.set(replacement.__key, 0, 'text');\n }\n if (endPoint.type === 'text') {\n endPoint.set(replacement.__key, endOffset - startOffset, 'text');\n }\n }\n this.format = firstNextFormat;\n return;\n }\n // Multiple nodes selected\n // The entire first node isn't selected, so split it\n if (startOffset !== 0 && !$isTokenOrSegmented(firstNode)) {\n [, firstNode] = firstNode.splitText(startOffset);\n startOffset = 0;\n }\n firstNode.setFormat(firstNextFormat);\n const lastNextFormat = lastNode.getFormatFlags(formatType, firstNextFormat);\n // If the offset is 0, it means no actual characters are selected,\n // so we skip formatting the last node altogether.\n if (endOffset > 0) {\n if (endOffset !== lastNode.getTextContentSize() && !$isTokenOrSegmented(lastNode)) {\n [lastNode] = lastNode.splitText(endOffset);\n }\n lastNode.setFormat(lastNextFormat);\n }\n\n // Process all text nodes in between\n for (let i = firstIndex + 1; i < lastIndex; i++) {\n const textNode = selectedTextNodes[i];\n const nextFormat = textNode.getFormatFlags(formatType, lastNextFormat);\n textNode.setFormat(nextFormat);\n }\n\n // Update selection only if starts/ends on text node\n if (startPoint.type === 'text') {\n startPoint.set(firstNode.__key, startOffset, 'text');\n }\n if (endPoint.type === 'text') {\n endPoint.set(lastNode.__key, endOffset, 'text');\n }\n this.format = firstNextFormat | lastNextFormat;\n }\n\n /**\n * Attempts to \"intelligently\" insert an arbitrary list of Lexical nodes into the EditorState at the\n * current Selection according to a set of heuristics that determine how surrounding nodes\n * should be changed, replaced, or moved to accomodate the incoming ones.\n *\n * @param nodes - the nodes to insert\n */\n insertNodes(nodes) {\n if (nodes.length === 0) {\n return;\n }\n if (this.anchor.key === 'root') {\n this.insertParagraph();\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n throw Error(`Expected RangeSelection after insertParagraph`);\n }\n return selection.insertNodes(nodes);\n }\n const firstPoint = this.isBackward() ? this.focus : this.anchor;\n const firstBlock = $getAncestor(firstPoint.getNode(), INTERNAL_$isBlock);\n const last = nodes[nodes.length - 1];\n\n // CASE 1: insert inside a code block\n if ('__language' in firstBlock && $isElementNode(firstBlock)) {\n if ('__language' in nodes[0]) {\n this.insertText(nodes[0].getTextContent());\n } else {\n const index = $removeTextAndSplitBlock(this);\n firstBlock.splice(index, 0, nodes);\n last.selectEnd();\n }\n return;\n }\n\n // CASE 2: All elements of the array are inline\n const notInline = node => ($isElementNode(node) || $isDecoratorNode(node)) && !node.isInline();\n if (!nodes.some(notInline)) {\n if (!$isElementNode(firstBlock)) {\n throw Error(`Expected 'firstBlock' to be an ElementNode`);\n }\n const index = $removeTextAndSplitBlock(this);\n firstBlock.splice(index, 0, nodes);\n last.selectEnd();\n return;\n }\n\n // CASE 3: At least 1 element of the array is not inline\n const blocksParent = $wrapInlineNodes(nodes);\n const nodeToSelect = blocksParent.getLastDescendant();\n const blocks = blocksParent.getChildren();\n const isMergeable = node => $isElementNode(node) && INTERNAL_$isBlock(node) && !node.isEmpty() && $isElementNode(firstBlock) && (!firstBlock.isEmpty() || firstBlock.canMergeWhenEmpty());\n const shouldInsert = !$isElementNode(firstBlock) || !firstBlock.isEmpty();\n const insertedParagraph = shouldInsert ? this.insertParagraph() : null;\n const lastToInsert = blocks[blocks.length - 1];\n let firstToInsert = blocks[0];\n if (isMergeable(firstToInsert)) {\n if (!$isElementNode(firstBlock)) {\n throw Error(`Expected 'firstBlock' to be an ElementNode`);\n }\n firstBlock.append(...firstToInsert.getChildren());\n firstToInsert = blocks[1];\n }\n if (firstToInsert) {\n insertRangeAfter(firstBlock, firstToInsert);\n }\n const lastInsertedBlock = $getAncestor(nodeToSelect, INTERNAL_$isBlock);\n if (insertedParagraph && $isElementNode(lastInsertedBlock) && (insertedParagraph.canMergeWhenEmpty() || INTERNAL_$isBlock(lastToInsert))) {\n lastInsertedBlock.append(...insertedParagraph.getChildren());\n insertedParagraph.remove();\n }\n if ($isElementNode(firstBlock) && firstBlock.isEmpty()) {\n firstBlock.remove();\n }\n nodeToSelect.selectEnd();\n\n // To understand this take a look at the test \"can wrap post-linebreak nodes into new element\"\n const lastChild = $isElementNode(firstBlock) ? firstBlock.getLastChild() : null;\n if ($isLineBreakNode(lastChild) && lastInsertedBlock !== firstBlock) {\n lastChild.remove();\n }\n }\n\n /**\n * Inserts a new ParagraphNode into the EditorState at the current Selection\n *\n * @returns the newly inserted node.\n */\n insertParagraph() {\n if (this.anchor.key === 'root') {\n const paragraph = $createParagraphNode();\n $getRoot().splice(this.anchor.offset, 0, [paragraph]);\n paragraph.select();\n return paragraph;\n }\n const index = $removeTextAndSplitBlock(this);\n const block = $getAncestor(this.anchor.getNode(), INTERNAL_$isBlock);\n if (!$isElementNode(block)) {\n throw Error(`Expected ancestor to be an ElementNode`);\n }\n const firstToAppend = block.getChildAtIndex(index);\n const nodesToInsert = firstToAppend ? [firstToAppend, ...firstToAppend.getNextSiblings()] : [];\n const newBlock = block.insertNewAfter(this, false);\n if (newBlock) {\n newBlock.append(...nodesToInsert);\n newBlock.selectStart();\n return newBlock;\n }\n // if newBlock is null, it means that block is of type CodeNode.\n return null;\n }\n\n /**\n * Inserts a logical linebreak, which may be a new LineBreakNode or a new ParagraphNode, into the EditorState at the\n * current Selection.\n */\n insertLineBreak(selectStart) {\n const lineBreak = $createLineBreakNode();\n this.insertNodes([lineBreak]);\n // this is used in MacOS with the command 'ctrl-O' (openLineBreak)\n if (selectStart) {\n const parent = lineBreak.getParentOrThrow();\n const index = lineBreak.getIndexWithinParent();\n parent.select(index, index);\n }\n }\n\n /**\n * Extracts the nodes in the Selection, splitting nodes where necessary\n * to get offset-level precision.\n *\n * @returns The nodes in the Selection\n */\n extract() {\n const selectedNodes = this.getNodes();\n const selectedNodesLength = selectedNodes.length;\n const lastIndex = selectedNodesLength - 1;\n const anchor = this.anchor;\n const focus = this.focus;\n let firstNode = selectedNodes[0];\n let lastNode = selectedNodes[lastIndex];\n const [anchorOffset, focusOffset] = $getCharacterOffsets(this);\n if (selectedNodesLength === 0) {\n return [];\n } else if (selectedNodesLength === 1) {\n if ($isTextNode(firstNode) && !this.isCollapsed()) {\n const startOffset = anchorOffset > focusOffset ? focusOffset : anchorOffset;\n const endOffset = anchorOffset > focusOffset ? anchorOffset : focusOffset;\n const splitNodes = firstNode.splitText(startOffset, endOffset);\n const node = startOffset === 0 ? splitNodes[0] : splitNodes[1];\n return node != null ? [node] : [];\n }\n return [firstNode];\n }\n const isBefore = anchor.isBefore(focus);\n if ($isTextNode(firstNode)) {\n const startOffset = isBefore ? anchorOffset : focusOffset;\n if (startOffset === firstNode.getTextContentSize()) {\n selectedNodes.shift();\n } else if (startOffset !== 0) {\n [, firstNode] = firstNode.splitText(startOffset);\n selectedNodes[0] = firstNode;\n }\n }\n if ($isTextNode(lastNode)) {\n const lastNodeText = lastNode.getTextContent();\n const lastNodeTextLength = lastNodeText.length;\n const endOffset = isBefore ? focusOffset : anchorOffset;\n if (endOffset === 0) {\n selectedNodes.pop();\n } else if (endOffset !== lastNodeTextLength) {\n [lastNode] = lastNode.splitText(endOffset);\n selectedNodes[lastIndex] = lastNode;\n }\n }\n return selectedNodes;\n }\n\n /**\n * Modifies the Selection according to the parameters and a set of heuristics that account for\n * various node types. Can be used to safely move or extend selection by one logical \"unit\" without\n * dealing explicitly with all the possible node types.\n *\n * @param alter the type of modification to perform\n * @param isBackward whether or not selection is backwards\n * @param granularity the granularity at which to apply the modification\n */\n modify(alter, isBackward, granularity) {\n const focus = this.focus;\n const anchor = this.anchor;\n const collapse = alter === 'move';\n\n // Handle the selection movement around decorators.\n const possibleNode = $getAdjacentNode(focus, isBackward);\n if ($isDecoratorNode(possibleNode) && !possibleNode.isIsolated()) {\n // Make it possible to move selection from range selection to\n // node selection on the node.\n if (collapse && possibleNode.isKeyboardSelectable()) {\n const nodeSelection = $createNodeSelection();\n nodeSelection.add(possibleNode.__key);\n $setSelection(nodeSelection);\n return;\n }\n const sibling = isBackward ? possibleNode.getPreviousSibling() : possibleNode.getNextSibling();\n if (!$isTextNode(sibling)) {\n const parent = possibleNode.getParentOrThrow();\n let offset;\n let elementKey;\n if ($isElementNode(sibling)) {\n elementKey = sibling.__key;\n offset = isBackward ? sibling.getChildrenSize() : 0;\n } else {\n offset = possibleNode.getIndexWithinParent();\n elementKey = parent.__key;\n if (!isBackward) {\n offset++;\n }\n }\n focus.set(elementKey, offset, 'element');\n if (collapse) {\n anchor.set(elementKey, offset, 'element');\n }\n return;\n } else {\n const siblingKey = sibling.__key;\n const offset = isBackward ? sibling.getTextContent().length : 0;\n focus.set(siblingKey, offset, 'text');\n if (collapse) {\n anchor.set(siblingKey, offset, 'text');\n }\n return;\n }\n }\n const editor = getActiveEditor();\n const domSelection = getDOMSelection(editor._window);\n if (!domSelection) {\n return;\n }\n const blockCursorElement = editor._blockCursorElement;\n const rootElement = editor._rootElement;\n // Remove the block cursor element if it exists. This will ensure selection\n // works as intended. If we leave it in the DOM all sorts of strange bugs\n // occur. :/\n if (rootElement !== null && blockCursorElement !== null && $isElementNode(possibleNode) && !possibleNode.isInline() && !possibleNode.canBeEmpty()) {\n removeDOMBlockCursorElement(blockCursorElement, editor, rootElement);\n }\n // We use the DOM selection.modify API here to \"tell\" us what the selection\n // will be. We then use it to update the Lexical selection accordingly. This\n // is much more reliable than waiting for a beforeinput and using the ranges\n // from getTargetRanges(), and is also better than trying to do it ourselves\n // using Intl.Segmenter or other workarounds that struggle with word segments\n // and line segments (especially with word wrapping and non-Roman languages).\n moveNativeSelection(domSelection, alter, isBackward ? 'backward' : 'forward', granularity);\n // Guard against no ranges\n if (domSelection.rangeCount > 0) {\n const range = domSelection.getRangeAt(0);\n // Apply the DOM selection to our Lexical selection.\n const anchorNode = this.anchor.getNode();\n const root = $isRootNode(anchorNode) ? anchorNode : $getNearestRootOrShadowRoot(anchorNode);\n this.applyDOMRange(range);\n this.dirty = true;\n if (!collapse) {\n // Validate selection; make sure that the new extended selection respects shadow roots\n const nodes = this.getNodes();\n const validNodes = [];\n let shrinkSelection = false;\n for (let i = 0; i < nodes.length; i++) {\n const nextNode = nodes[i];\n if ($hasAncestor(nextNode, root)) {\n validNodes.push(nextNode);\n } else {\n shrinkSelection = true;\n }\n }\n if (shrinkSelection && validNodes.length > 0) {\n // validNodes length check is a safeguard against an invalid selection; as getNodes()\n // will return an empty array in this case\n if (isBackward) {\n const firstValidNode = validNodes[0];\n if ($isElementNode(firstValidNode)) {\n firstValidNode.selectStart();\n } else {\n firstValidNode.getParentOrThrow().selectStart();\n }\n } else {\n const lastValidNode = validNodes[validNodes.length - 1];\n if ($isElementNode(lastValidNode)) {\n lastValidNode.selectEnd();\n } else {\n lastValidNode.getParentOrThrow().selectEnd();\n }\n }\n }\n\n // Because a range works on start and end, we might need to flip\n // the anchor and focus points to match what the DOM has, not what\n // the range has specifically.\n if (domSelection.anchorNode !== range.startContainer || domSelection.anchorOffset !== range.startOffset) {\n $swapPoints(this);\n }\n }\n }\n }\n /**\n * Helper for handling forward character and word deletion that prevents element nodes\n * like a table, columns layout being destroyed\n *\n * @param anchor the anchor\n * @param anchorNode the anchor node in the selection\n * @param isBackward whether or not selection is backwards\n */\n forwardDeletion(anchor, anchorNode, isBackward) {\n if (!isBackward && (\n // Delete forward handle case\n anchor.type === 'element' && $isElementNode(anchorNode) && anchor.offset === anchorNode.getChildrenSize() || anchor.type === 'text' && anchor.offset === anchorNode.getTextContentSize())) {\n const parent = anchorNode.getParent();\n const nextSibling = anchorNode.getNextSibling() || (parent === null ? null : parent.getNextSibling());\n if ($isElementNode(nextSibling) && nextSibling.isShadowRoot()) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Performs one logical character deletion operation on the EditorState based on the current Selection.\n * Handles different node types.\n *\n * @param isBackward whether or not the selection is backwards.\n */\n deleteCharacter(isBackward) {\n const wasCollapsed = this.isCollapsed();\n if (this.isCollapsed()) {\n const anchor = this.anchor;\n let anchorNode = anchor.getNode();\n if (this.forwardDeletion(anchor, anchorNode, isBackward)) {\n return;\n }\n\n // Handle the deletion around decorators.\n const focus = this.focus;\n const possibleNode = $getAdjacentNode(focus, isBackward);\n if ($isDecoratorNode(possibleNode) && !possibleNode.isIsolated()) {\n // Make it possible to move selection from range selection to\n // node selection on the node.\n if (possibleNode.isKeyboardSelectable() && $isElementNode(anchorNode) && anchorNode.getChildrenSize() === 0) {\n anchorNode.remove();\n const nodeSelection = $createNodeSelection();\n nodeSelection.add(possibleNode.__key);\n $setSelection(nodeSelection);\n } else {\n possibleNode.remove();\n const editor = getActiveEditor();\n editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n }\n return;\n } else if (!isBackward && $isElementNode(possibleNode) && $isElementNode(anchorNode) && anchorNode.isEmpty()) {\n anchorNode.remove();\n possibleNode.selectStart();\n return;\n }\n this.modify('extend', isBackward, 'character');\n if (!this.isCollapsed()) {\n const focusNode = focus.type === 'text' ? focus.getNode() : null;\n anchorNode = anchor.type === 'text' ? anchor.getNode() : null;\n if (focusNode !== null && focusNode.isSegmented()) {\n const offset = focus.offset;\n const textContentSize = focusNode.getTextContentSize();\n if (focusNode.is(anchorNode) || isBackward && offset !== textContentSize || !isBackward && offset !== 0) {\n $removeSegment(focusNode, isBackward, offset);\n return;\n }\n } else if (anchorNode !== null && anchorNode.isSegmented()) {\n const offset = anchor.offset;\n const textContentSize = anchorNode.getTextContentSize();\n if (anchorNode.is(focusNode) || isBackward && offset !== 0 || !isBackward && offset !== textContentSize) {\n $removeSegment(anchorNode, isBackward, offset);\n return;\n }\n }\n $updateCaretSelectionForUnicodeCharacter(this, isBackward);\n } else if (isBackward && anchor.offset === 0) {\n // Special handling around rich text nodes\n const element = anchor.type === 'element' ? anchor.getNode() : anchor.getNode().getParentOrThrow();\n if (element.collapseAtStart(this)) {\n return;\n }\n }\n }\n this.removeText();\n if (isBackward && !wasCollapsed && this.isCollapsed() && this.anchor.type === 'element' && this.anchor.offset === 0) {\n const anchorNode = this.anchor.getNode();\n if (anchorNode.isEmpty() && $isRootNode(anchorNode.getParent()) && anchorNode.getIndexWithinParent() === 0) {\n anchorNode.collapseAtStart(this);\n }\n }\n }\n\n /**\n * Performs one logical line deletion operation on the EditorState based on the current Selection.\n * Handles different node types.\n *\n * @param isBackward whether or not the selection is backwards.\n */\n deleteLine(isBackward) {\n if (this.isCollapsed()) {\n // Since `domSelection.modify('extend', ..., 'lineboundary')` works well for text selections\n // but doesn't properly handle selections which end on elements, a space character is added\n // for such selections transforming their anchor's type to 'text'\n const anchorIsElement = this.anchor.type === 'element';\n if (anchorIsElement) {\n this.insertText(' ');\n }\n this.modify('extend', isBackward, 'lineboundary');\n\n // If selection is extended to cover text edge then extend it one character more\n // to delete its parent element. Otherwise text content will be deleted but empty\n // parent node will remain\n const endPoint = isBackward ? this.focus : this.anchor;\n if (endPoint.offset === 0) {\n this.modify('extend', isBackward, 'character');\n }\n\n // Adjusts selection to include an extra character added for element anchors to remove it\n if (anchorIsElement) {\n const startPoint = isBackward ? this.anchor : this.focus;\n startPoint.set(startPoint.key, startPoint.offset + 1, startPoint.type);\n }\n }\n this.removeText();\n }\n\n /**\n * Performs one logical word deletion operation on the EditorState based on the current Selection.\n * Handles different node types.\n *\n * @param isBackward whether or not the selection is backwards.\n */\n deleteWord(isBackward) {\n if (this.isCollapsed()) {\n const anchor = this.anchor;\n const anchorNode = anchor.getNode();\n if (this.forwardDeletion(anchor, anchorNode, isBackward)) {\n return;\n }\n this.modify('extend', isBackward, 'word');\n }\n this.removeText();\n }\n\n /**\n * Returns whether the Selection is \"backwards\", meaning the focus\n * logically precedes the anchor in the EditorState.\n * @returns true if the Selection is backwards, false otherwise.\n */\n isBackward() {\n return this.focus.isBefore(this.anchor);\n }\n getStartEndPoints() {\n return [this.anchor, this.focus];\n }\n}\nfunction $isNodeSelection(x) {\n return x instanceof NodeSelection;\n}\nfunction getCharacterOffset(point) {\n const offset = point.offset;\n if (point.type === 'text') {\n return offset;\n }\n const parent = point.getNode();\n return offset === parent.getChildrenSize() ? parent.getTextContent().length : 0;\n}\nfunction $getCharacterOffsets(selection) {\n const anchorAndFocus = selection.getStartEndPoints();\n if (anchorAndFocus === null) {\n return [0, 0];\n }\n const [anchor, focus] = anchorAndFocus;\n if (anchor.type === 'element' && focus.type === 'element' && anchor.key === focus.key && anchor.offset === focus.offset) {\n return [0, 0];\n }\n return [getCharacterOffset(anchor), getCharacterOffset(focus)];\n}\nfunction $swapPoints(selection) {\n const focus = selection.focus;\n const anchor = selection.anchor;\n const anchorKey = anchor.key;\n const anchorOffset = anchor.offset;\n const anchorType = anchor.type;\n $setPointValues(anchor, focus.key, focus.offset, focus.type);\n $setPointValues(focus, anchorKey, anchorOffset, anchorType);\n selection._cachedNodes = null;\n}\nfunction moveNativeSelection(domSelection, alter, direction, granularity) {\n // Selection.modify() method applies a change to the current selection or cursor position,\n // but is still non-standard in some browsers.\n domSelection.modify(alter, direction, granularity);\n}\nfunction $updateCaretSelectionForUnicodeCharacter(selection, isBackward) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n if (anchorNode === focusNode && anchor.type === 'text' && focus.type === 'text') {\n // Handling of multibyte characters\n const anchorOffset = anchor.offset;\n const focusOffset = focus.offset;\n const isBefore = anchorOffset < focusOffset;\n const startOffset = isBefore ? anchorOffset : focusOffset;\n const endOffset = isBefore ? focusOffset : anchorOffset;\n const characterOffset = endOffset - 1;\n if (startOffset !== characterOffset) {\n const text = anchorNode.getTextContent().slice(startOffset, endOffset);\n if (!doesContainGrapheme(text)) {\n if (isBackward) {\n focus.offset = characterOffset;\n } else {\n anchor.offset = characterOffset;\n }\n }\n }\n }\n}\nfunction $removeSegment(node, isBackward, offset) {\n const textNode = node;\n const textContent = textNode.getTextContent();\n const split = textContent.split(/(?=\\s)/g);\n const splitLength = split.length;\n let segmentOffset = 0;\n let restoreOffset = 0;\n for (let i = 0; i < splitLength; i++) {\n const text = split[i];\n const isLast = i === splitLength - 1;\n restoreOffset = segmentOffset;\n segmentOffset += text.length;\n if (isBackward && segmentOffset === offset || segmentOffset > offset || isLast) {\n split.splice(i, 1);\n if (isLast) {\n restoreOffset = undefined;\n }\n break;\n }\n }\n const nextTextContent = split.join('').trim();\n if (nextTextContent === '') {\n textNode.remove();\n } else {\n textNode.setTextContent(nextTextContent);\n textNode.select(restoreOffset, restoreOffset);\n }\n}\nfunction shouldResolveAncestor(resolvedElement, resolvedOffset, lastPoint) {\n const parent = resolvedElement.getParent();\n return lastPoint === null || parent === null || !parent.canBeEmpty() || parent !== lastPoint.getNode();\n}\nfunction $internalResolveSelectionPoint(dom, offset, lastPoint, editor) {\n let resolvedOffset = offset;\n let resolvedNode;\n // If we have selection on an element, we will\n // need to figure out (using the offset) what text\n // node should be selected.\n\n if (dom.nodeType === DOM_ELEMENT_TYPE) {\n // Resolve element to a ElementNode, or TextNode, or null\n let moveSelectionToEnd = false;\n // Given we're moving selection to another node, selection is\n // definitely dirty.\n // We use the anchor to find which child node to select\n const childNodes = dom.childNodes;\n const childNodesLength = childNodes.length;\n const blockCursorElement = editor._blockCursorElement;\n // If the anchor is the same as length, then this means we\n // need to select the very last text node.\n if (resolvedOffset === childNodesLength) {\n moveSelectionToEnd = true;\n resolvedOffset = childNodesLength - 1;\n }\n let childDOM = childNodes[resolvedOffset];\n let hasBlockCursor = false;\n if (childDOM === blockCursorElement) {\n childDOM = childNodes[resolvedOffset + 1];\n hasBlockCursor = true;\n } else if (blockCursorElement !== null) {\n const blockCursorElementParent = blockCursorElement.parentNode;\n if (dom === blockCursorElementParent) {\n const blockCursorOffset = Array.prototype.indexOf.call(blockCursorElementParent.children, blockCursorElement);\n if (offset > blockCursorOffset) {\n resolvedOffset--;\n }\n }\n }\n resolvedNode = $getNodeFromDOM(childDOM);\n if ($isTextNode(resolvedNode)) {\n resolvedOffset = getTextNodeOffset(resolvedNode, moveSelectionToEnd);\n } else {\n let resolvedElement = $getNodeFromDOM(dom);\n // Ensure resolvedElement is actually a element.\n if (resolvedElement === null) {\n return null;\n }\n if ($isElementNode(resolvedElement)) {\n resolvedOffset = Math.min(resolvedElement.getChildrenSize(), resolvedOffset);\n let child = resolvedElement.getChildAtIndex(resolvedOffset);\n if ($isElementNode(child) && shouldResolveAncestor(child, resolvedOffset, lastPoint)) {\n const descendant = moveSelectionToEnd ? child.getLastDescendant() : child.getFirstDescendant();\n if (descendant === null) {\n resolvedElement = child;\n } else {\n child = descendant;\n resolvedElement = $isElementNode(child) ? child : child.getParentOrThrow();\n }\n resolvedOffset = 0;\n }\n if ($isTextNode(child)) {\n resolvedNode = child;\n resolvedElement = null;\n resolvedOffset = getTextNodeOffset(child, moveSelectionToEnd);\n } else if (child !== resolvedElement && moveSelectionToEnd && !hasBlockCursor) {\n resolvedOffset++;\n }\n } else {\n const index = resolvedElement.getIndexWithinParent();\n // When selecting decorators, there can be some selection issues when using resolvedOffset,\n // and instead we should be checking if we're using the offset\n if (offset === 0 && $isDecoratorNode(resolvedElement) && $getNodeFromDOM(dom) === resolvedElement) {\n resolvedOffset = index;\n } else {\n resolvedOffset = index + 1;\n }\n resolvedElement = resolvedElement.getParentOrThrow();\n }\n if ($isElementNode(resolvedElement)) {\n return $createPoint(resolvedElement.__key, resolvedOffset, 'element');\n }\n }\n } else {\n // TextNode or null\n resolvedNode = $getNodeFromDOM(dom);\n }\n if (!$isTextNode(resolvedNode)) {\n return null;\n }\n return $createPoint(resolvedNode.__key, resolvedOffset, 'text');\n}\nfunction resolveSelectionPointOnBoundary(point, isBackward, isCollapsed) {\n const offset = point.offset;\n const node = point.getNode();\n if (offset === 0) {\n const prevSibling = node.getPreviousSibling();\n const parent = node.getParent();\n if (!isBackward) {\n if ($isElementNode(prevSibling) && !isCollapsed && prevSibling.isInline()) {\n point.key = prevSibling.__key;\n point.offset = prevSibling.getChildrenSize();\n // @ts-expect-error: intentional\n point.type = 'element';\n } else if ($isTextNode(prevSibling)) {\n point.key = prevSibling.__key;\n point.offset = prevSibling.getTextContent().length;\n }\n } else if ((isCollapsed || !isBackward) && prevSibling === null && $isElementNode(parent) && parent.isInline()) {\n const parentSibling = parent.getPreviousSibling();\n if ($isTextNode(parentSibling)) {\n point.key = parentSibling.__key;\n point.offset = parentSibling.getTextContent().length;\n }\n }\n } else if (offset === node.getTextContent().length) {\n const nextSibling = node.getNextSibling();\n const parent = node.getParent();\n if (isBackward && $isElementNode(nextSibling) && nextSibling.isInline()) {\n point.key = nextSibling.__key;\n point.offset = 0;\n // @ts-expect-error: intentional\n point.type = 'element';\n } else if ((isCollapsed || isBackward) && nextSibling === null && $isElementNode(parent) && parent.isInline() && !parent.canInsertTextAfter()) {\n const parentSibling = parent.getNextSibling();\n if ($isTextNode(parentSibling)) {\n point.key = parentSibling.__key;\n point.offset = 0;\n }\n }\n }\n}\nfunction $normalizeSelectionPointsForBoundaries(anchor, focus, lastSelection) {\n if (anchor.type === 'text' && focus.type === 'text') {\n const isBackward = anchor.isBefore(focus);\n const isCollapsed = anchor.is(focus);\n\n // Attempt to normalize the offset to the previous sibling if we're at the\n // start of a text node and the sibling is a text node or inline element.\n resolveSelectionPointOnBoundary(anchor, isBackward, isCollapsed);\n resolveSelectionPointOnBoundary(focus, !isBackward, isCollapsed);\n if (isCollapsed) {\n focus.key = anchor.key;\n focus.offset = anchor.offset;\n focus.type = anchor.type;\n }\n const editor = getActiveEditor();\n if (editor.isComposing() && editor._compositionKey !== anchor.key && $isRangeSelection(lastSelection)) {\n const lastAnchor = lastSelection.anchor;\n const lastFocus = lastSelection.focus;\n $setPointValues(anchor, lastAnchor.key, lastAnchor.offset, lastAnchor.type);\n $setPointValues(focus, lastFocus.key, lastFocus.offset, lastFocus.type);\n }\n }\n}\nfunction $internalResolveSelectionPoints(anchorDOM, anchorOffset, focusDOM, focusOffset, editor, lastSelection) {\n if (anchorDOM === null || focusDOM === null || !isSelectionWithinEditor(editor, anchorDOM, focusDOM)) {\n return null;\n }\n const resolvedAnchorPoint = $internalResolveSelectionPoint(anchorDOM, anchorOffset, $isRangeSelection(lastSelection) ? lastSelection.anchor : null, editor);\n if (resolvedAnchorPoint === null) {\n return null;\n }\n const resolvedFocusPoint = $internalResolveSelectionPoint(focusDOM, focusOffset, $isRangeSelection(lastSelection) ? lastSelection.focus : null, editor);\n if (resolvedFocusPoint === null) {\n return null;\n }\n if (resolvedAnchorPoint.type === 'element' && resolvedFocusPoint.type === 'element') {\n const anchorNode = $getNodeFromDOM(anchorDOM);\n const focusNode = $getNodeFromDOM(focusDOM);\n // Ensure if we're selecting the content of a decorator that we\n // return null for this point, as it's not in the controlled scope\n // of Lexical.\n if ($isDecoratorNode(anchorNode) && $isDecoratorNode(focusNode)) {\n return null;\n }\n }\n\n // Handle normalization of selection when it is at the boundaries.\n $normalizeSelectionPointsForBoundaries(resolvedAnchorPoint, resolvedFocusPoint, lastSelection);\n return [resolvedAnchorPoint, resolvedFocusPoint];\n}\nfunction $isBlockElementNode(node) {\n return $isElementNode(node) && !node.isInline();\n}\n\n// This is used to make a selection when the existing\n// selection is null, i.e. forcing selection on the editor\n// when it current exists outside the editor.\n\nfunction $internalMakeRangeSelection(anchorKey, anchorOffset, focusKey, focusOffset, anchorType, focusType) {\n const editorState = getActiveEditorState();\n const selection = new RangeSelection($createPoint(anchorKey, anchorOffset, anchorType), $createPoint(focusKey, focusOffset, focusType), 0, '');\n selection.dirty = true;\n editorState._selection = selection;\n return selection;\n}\nfunction $createRangeSelection() {\n const anchor = $createPoint('root', 0, 'element');\n const focus = $createPoint('root', 0, 'element');\n return new RangeSelection(anchor, focus, 0, '');\n}\nfunction $createNodeSelection() {\n return new NodeSelection(new Set());\n}\nfunction $internalCreateSelection(editor) {\n const currentEditorState = editor.getEditorState();\n const lastSelection = currentEditorState._selection;\n const domSelection = getDOMSelection(editor._window);\n if ($isRangeSelection(lastSelection) || lastSelection == null) {\n return $internalCreateRangeSelection(lastSelection, domSelection, editor, null);\n }\n return lastSelection.clone();\n}\nfunction $createRangeSelectionFromDom(domSelection, editor) {\n return $internalCreateRangeSelection(null, domSelection, editor, null);\n}\nfunction $internalCreateRangeSelection(lastSelection, domSelection, editor, event) {\n const windowObj = editor._window;\n if (windowObj === null) {\n return null;\n }\n // When we create a selection, we try to use the previous\n // selection where possible, unless an actual user selection\n // change has occurred. When we do need to create a new selection\n // we validate we can have text nodes for both anchor and focus\n // nodes. If that holds true, we then return that selection\n // as a mutable object that we use for the editor state for this\n // update cycle. If a selection gets changed, and requires a\n // update to native DOM selection, it gets marked as \"dirty\".\n // If the selection changes, but matches with the existing\n // DOM selection, then we only need to sync it. Otherwise,\n // we generally bail out of doing an update to selection during\n // reconciliation unless there are dirty nodes that need\n // reconciling.\n\n const windowEvent = event || windowObj.event;\n const eventType = windowEvent ? windowEvent.type : undefined;\n const isSelectionChange = eventType === 'selectionchange';\n const useDOMSelection = !getIsProcessingMutations() && (isSelectionChange || eventType === 'beforeinput' || eventType === 'compositionstart' || eventType === 'compositionend' || eventType === 'click' && windowEvent && windowEvent.detail === 3 || eventType === 'drop' || eventType === undefined);\n let anchorDOM, focusDOM, anchorOffset, focusOffset;\n if (!$isRangeSelection(lastSelection) || useDOMSelection) {\n if (domSelection === null) {\n return null;\n }\n anchorDOM = domSelection.anchorNode;\n focusDOM = domSelection.focusNode;\n anchorOffset = domSelection.anchorOffset;\n focusOffset = domSelection.focusOffset;\n if (isSelectionChange && $isRangeSelection(lastSelection) && !isSelectionWithinEditor(editor, anchorDOM, focusDOM)) {\n return lastSelection.clone();\n }\n } else {\n return lastSelection.clone();\n }\n // Let's resolve the text nodes from the offsets and DOM nodes we have from\n // native selection.\n const resolvedSelectionPoints = $internalResolveSelectionPoints(anchorDOM, anchorOffset, focusDOM, focusOffset, editor, lastSelection);\n if (resolvedSelectionPoints === null) {\n return null;\n }\n const [resolvedAnchorPoint, resolvedFocusPoint] = resolvedSelectionPoints;\n return new RangeSelection(resolvedAnchorPoint, resolvedFocusPoint, !$isRangeSelection(lastSelection) ? 0 : lastSelection.format, !$isRangeSelection(lastSelection) ? '' : lastSelection.style);\n}\nfunction $getSelection() {\n const editorState = getActiveEditorState();\n return editorState._selection;\n}\nfunction $getPreviousSelection() {\n const editor = getActiveEditor();\n return editor._editorState._selection;\n}\nfunction $updateElementSelectionOnCreateDeleteNode(selection, parentNode, nodeOffset, times = 1) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n if (!parentNode.is(anchorNode) && !parentNode.is(focusNode)) {\n return;\n }\n const parentKey = parentNode.__key;\n // Single node. We shift selection but never redimension it\n if (selection.isCollapsed()) {\n const selectionOffset = anchor.offset;\n if (nodeOffset <= selectionOffset && times > 0 || nodeOffset < selectionOffset && times < 0) {\n const newSelectionOffset = Math.max(0, selectionOffset + times);\n anchor.set(parentKey, newSelectionOffset, 'element');\n focus.set(parentKey, newSelectionOffset, 'element');\n // The new selection might point to text nodes, try to resolve them\n $updateSelectionResolveTextNodes(selection);\n }\n } else {\n // Multiple nodes selected. We shift or redimension selection\n const isBackward = selection.isBackward();\n const firstPoint = isBackward ? focus : anchor;\n const firstPointNode = firstPoint.getNode();\n const lastPoint = isBackward ? anchor : focus;\n const lastPointNode = lastPoint.getNode();\n if (parentNode.is(firstPointNode)) {\n const firstPointOffset = firstPoint.offset;\n if (nodeOffset <= firstPointOffset && times > 0 || nodeOffset < firstPointOffset && times < 0) {\n firstPoint.set(parentKey, Math.max(0, firstPointOffset + times), 'element');\n }\n }\n if (parentNode.is(lastPointNode)) {\n const lastPointOffset = lastPoint.offset;\n if (nodeOffset <= lastPointOffset && times > 0 || nodeOffset < lastPointOffset && times < 0) {\n lastPoint.set(parentKey, Math.max(0, lastPointOffset + times), 'element');\n }\n }\n }\n // The new selection might point to text nodes, try to resolve them\n $updateSelectionResolveTextNodes(selection);\n}\nfunction $updateSelectionResolveTextNodes(selection) {\n const anchor = selection.anchor;\n const anchorOffset = anchor.offset;\n const focus = selection.focus;\n const focusOffset = focus.offset;\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n if (selection.isCollapsed()) {\n if (!$isElementNode(anchorNode)) {\n return;\n }\n const childSize = anchorNode.getChildrenSize();\n const anchorOffsetAtEnd = anchorOffset >= childSize;\n const child = anchorOffsetAtEnd ? anchorNode.getChildAtIndex(childSize - 1) : anchorNode.getChildAtIndex(anchorOffset);\n if ($isTextNode(child)) {\n let newOffset = 0;\n if (anchorOffsetAtEnd) {\n newOffset = child.getTextContentSize();\n }\n anchor.set(child.__key, newOffset, 'text');\n focus.set(child.__key, newOffset, 'text');\n }\n return;\n }\n if ($isElementNode(anchorNode)) {\n const childSize = anchorNode.getChildrenSize();\n const anchorOffsetAtEnd = anchorOffset >= childSize;\n const child = anchorOffsetAtEnd ? anchorNode.getChildAtIndex(childSize - 1) : anchorNode.getChildAtIndex(anchorOffset);\n if ($isTextNode(child)) {\n let newOffset = 0;\n if (anchorOffsetAtEnd) {\n newOffset = child.getTextContentSize();\n }\n anchor.set(child.__key, newOffset, 'text');\n }\n }\n if ($isElementNode(focusNode)) {\n const childSize = focusNode.getChildrenSize();\n const focusOffsetAtEnd = focusOffset >= childSize;\n const child = focusOffsetAtEnd ? focusNode.getChildAtIndex(childSize - 1) : focusNode.getChildAtIndex(focusOffset);\n if ($isTextNode(child)) {\n let newOffset = 0;\n if (focusOffsetAtEnd) {\n newOffset = child.getTextContentSize();\n }\n focus.set(child.__key, newOffset, 'text');\n }\n }\n}\nfunction applySelectionTransforms(nextEditorState, editor) {\n const prevEditorState = editor.getEditorState();\n const prevSelection = prevEditorState._selection;\n const nextSelection = nextEditorState._selection;\n if ($isRangeSelection(nextSelection)) {\n const anchor = nextSelection.anchor;\n const focus = nextSelection.focus;\n let anchorNode;\n if (anchor.type === 'text') {\n anchorNode = anchor.getNode();\n anchorNode.selectionTransform(prevSelection, nextSelection);\n }\n if (focus.type === 'text') {\n const focusNode = focus.getNode();\n if (anchorNode !== focusNode) {\n focusNode.selectionTransform(prevSelection, nextSelection);\n }\n }\n }\n}\nfunction moveSelectionPointToSibling(point, node, parent, prevSibling, nextSibling) {\n let siblingKey = null;\n let offset = 0;\n let type = null;\n if (prevSibling !== null) {\n siblingKey = prevSibling.__key;\n if ($isTextNode(prevSibling)) {\n offset = prevSibling.getTextContentSize();\n type = 'text';\n } else if ($isElementNode(prevSibling)) {\n offset = prevSibling.getChildrenSize();\n type = 'element';\n }\n } else {\n if (nextSibling !== null) {\n siblingKey = nextSibling.__key;\n if ($isTextNode(nextSibling)) {\n type = 'text';\n } else if ($isElementNode(nextSibling)) {\n type = 'element';\n }\n }\n }\n if (siblingKey !== null && type !== null) {\n point.set(siblingKey, offset, type);\n } else {\n offset = node.getIndexWithinParent();\n if (offset === -1) {\n // Move selection to end of parent\n offset = parent.getChildrenSize();\n }\n point.set(parent.__key, offset, 'element');\n }\n}\nfunction adjustPointOffsetForMergedSibling(point, isBefore, key, target, textLength) {\n if (point.type === 'text') {\n point.key = key;\n if (!isBefore) {\n point.offset += textLength;\n }\n } else if (point.offset > target.getIndexWithinParent()) {\n point.offset -= 1;\n }\n}\nfunction updateDOMSelection(prevSelection, nextSelection, editor, domSelection, tags, rootElement, nodeCount) {\n const anchorDOMNode = domSelection.anchorNode;\n const focusDOMNode = domSelection.focusNode;\n const anchorOffset = domSelection.anchorOffset;\n const focusOffset = domSelection.focusOffset;\n const activeElement = document.activeElement;\n\n // TODO: make this not hard-coded, and add another config option\n // that makes this configurable.\n if (tags.has('collaboration') && activeElement !== rootElement || activeElement !== null && isSelectionCapturedInDecoratorInput(activeElement)) {\n return;\n }\n if (!$isRangeSelection(nextSelection)) {\n // We don't remove selection if the prevSelection is null because\n // of editor.setRootElement(). If this occurs on init when the\n // editor is already focused, then this can cause the editor to\n // lose focus.\n if (prevSelection !== null && isSelectionWithinEditor(editor, anchorDOMNode, focusDOMNode)) {\n domSelection.removeAllRanges();\n }\n return;\n }\n const anchor = nextSelection.anchor;\n const focus = nextSelection.focus;\n const anchorKey = anchor.key;\n const focusKey = focus.key;\n const anchorDOM = getElementByKeyOrThrow(editor, anchorKey);\n const focusDOM = getElementByKeyOrThrow(editor, focusKey);\n const nextAnchorOffset = anchor.offset;\n const nextFocusOffset = focus.offset;\n const nextFormat = nextSelection.format;\n const nextStyle = nextSelection.style;\n const isCollapsed = nextSelection.isCollapsed();\n let nextAnchorNode = anchorDOM;\n let nextFocusNode = focusDOM;\n let anchorFormatOrStyleChanged = false;\n if (anchor.type === 'text') {\n nextAnchorNode = getDOMTextNode(anchorDOM);\n const anchorNode = anchor.getNode();\n anchorFormatOrStyleChanged = anchorNode.getFormat() !== nextFormat || anchorNode.getStyle() !== nextStyle;\n } else if ($isRangeSelection(prevSelection) && prevSelection.anchor.type === 'text') {\n anchorFormatOrStyleChanged = true;\n }\n if (focus.type === 'text') {\n nextFocusNode = getDOMTextNode(focusDOM);\n }\n\n // If we can't get an underlying text node for selection, then\n // we should avoid setting selection to something incorrect.\n if (nextAnchorNode === null || nextFocusNode === null) {\n return;\n }\n if (isCollapsed && (prevSelection === null || anchorFormatOrStyleChanged || $isRangeSelection(prevSelection) && (prevSelection.format !== nextFormat || prevSelection.style !== nextStyle))) {\n markCollapsedSelectionFormat(nextFormat, nextStyle, nextAnchorOffset, anchorKey, performance.now());\n }\n\n // Diff against the native DOM selection to ensure we don't do\n // an unnecessary selection update. We also skip this check if\n // we're moving selection to within an element, as this can\n // sometimes be problematic around scrolling.\n if (anchorOffset === nextAnchorOffset && focusOffset === nextFocusOffset && anchorDOMNode === nextAnchorNode && focusDOMNode === nextFocusNode &&\n // Badly interpreted range selection when collapsed - #1482\n !(domSelection.type === 'Range' && isCollapsed)) {\n // If the root element does not have focus, ensure it has focus\n if (activeElement === null || !rootElement.contains(activeElement)) {\n rootElement.focus({\n preventScroll: true\n });\n }\n if (anchor.type !== 'element') {\n return;\n }\n }\n\n // Apply the updated selection to the DOM. Note: this will trigger\n // a \"selectionchange\" event, although it will be asynchronous.\n try {\n domSelection.setBaseAndExtent(nextAnchorNode, nextAnchorOffset, nextFocusNode, nextFocusOffset);\n } catch (error) {\n // If we encounter an error, continue. This can sometimes\n // occur with FF and there's no good reason as to why it\n // should happen.\n {\n console.warn(error);\n }\n }\n if (!tags.has('skip-scroll-into-view') && nextSelection.isCollapsed() && rootElement !== null && rootElement === document.activeElement) {\n const selectionTarget = nextSelection instanceof RangeSelection && nextSelection.anchor.type === 'element' ? nextAnchorNode.childNodes[nextAnchorOffset] || null : domSelection.rangeCount > 0 ? domSelection.getRangeAt(0) : null;\n if (selectionTarget !== null) {\n let selectionRect;\n if (selectionTarget instanceof Text) {\n const range = document.createRange();\n range.selectNode(selectionTarget);\n selectionRect = range.getBoundingClientRect();\n } else {\n selectionRect = selectionTarget.getBoundingClientRect();\n }\n scrollIntoViewIfNeeded(editor, selectionRect, rootElement);\n }\n }\n markSelectionChangeFromDOMUpdate();\n}\nfunction $insertNodes(nodes) {\n let selection = $getSelection() || $getPreviousSelection();\n if (selection === null) {\n selection = $getRoot().selectEnd();\n }\n selection.insertNodes(nodes);\n}\nfunction $getTextContent() {\n const selection = $getSelection();\n if (selection === null) {\n return '';\n }\n return selection.getTextContent();\n}\nfunction $removeTextAndSplitBlock(selection) {\n let selection_ = selection;\n if (!selection.isCollapsed()) {\n selection_.removeText();\n }\n // A new selection can originate as a result of node replacement, in which case is registered via\n // $setSelection\n const newSelection = $getSelection();\n if ($isRangeSelection(newSelection)) {\n selection_ = newSelection;\n }\n if (!$isRangeSelection(selection_)) {\n throw Error(`Unexpected dirty selection to be null`);\n }\n const anchor = selection_.anchor;\n let node = anchor.getNode();\n let offset = anchor.offset;\n while (!INTERNAL_$isBlock(node)) {\n [node, offset] = $splitNodeAtPoint(node, offset);\n }\n return offset;\n}\nfunction $splitNodeAtPoint(node, offset) {\n const parent = node.getParent();\n if (!parent) {\n const paragraph = $createParagraphNode();\n $getRoot().append(paragraph);\n paragraph.select();\n return [$getRoot(), 0];\n }\n if ($isTextNode(node)) {\n const split = node.splitText(offset);\n if (split.length === 0) {\n return [parent, node.getIndexWithinParent()];\n }\n const x = offset === 0 ? 0 : 1;\n const index = split[0].getIndexWithinParent() + x;\n return [parent, index];\n }\n if (!$isElementNode(node) || offset === 0) {\n return [parent, node.getIndexWithinParent()];\n }\n const firstToAppend = node.getChildAtIndex(offset);\n if (firstToAppend) {\n const insertPoint = new RangeSelection($createPoint(node.__key, offset, 'element'), $createPoint(node.__key, offset, 'element'), 0, '');\n const newElement = node.insertNewAfter(insertPoint);\n if (newElement) {\n newElement.append(firstToAppend, ...firstToAppend.getNextSiblings());\n }\n }\n return [parent, node.getIndexWithinParent() + 1];\n}\nfunction $wrapInlineNodes(nodes) {\n // We temporarily insert the topLevelNodes into an arbitrary ElementNode,\n // since insertAfter does not work on nodes that have no parent (TO-DO: fix that).\n const virtualRoot = $createParagraphNode();\n let currentBlock = null;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const isLineBreakNode = $isLineBreakNode(node);\n if (isLineBreakNode || $isDecoratorNode(node) && node.isInline() || $isElementNode(node) && node.isInline() || $isTextNode(node) || node.isParentRequired()) {\n if (currentBlock === null) {\n currentBlock = node.createParentElementNode();\n virtualRoot.append(currentBlock);\n // In the case of LineBreakNode, we just need to\n // add an empty ParagraphNode to the topLevelBlocks.\n if (isLineBreakNode) {\n continue;\n }\n }\n if (currentBlock !== null) {\n currentBlock.append(node);\n }\n } else {\n virtualRoot.append(node);\n currentBlock = null;\n }\n }\n return virtualRoot;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nlet activeEditorState = null;\nlet activeEditor = null;\nlet isReadOnlyMode = false;\nlet isAttemptingToRecoverFromReconcilerError = false;\nlet infiniteTransformCount = 0;\nconst observerOptions = {\n characterData: true,\n childList: true,\n subtree: true\n};\nfunction isCurrentlyReadOnlyMode() {\n return isReadOnlyMode || activeEditorState !== null && activeEditorState._readOnly;\n}\nfunction errorOnReadOnly() {\n if (isReadOnlyMode) {\n {\n throw Error(`Cannot use method in read-only mode.`);\n }\n }\n}\nfunction errorOnInfiniteTransforms() {\n if (infiniteTransformCount > 99) {\n {\n throw Error(`One or more transforms are endlessly triggering additional transforms. May have encountered infinite recursion caused by transforms that have their preconditions too lose and/or conflict with each other.`);\n }\n }\n}\nfunction getActiveEditorState() {\n if (activeEditorState === null) {\n {\n throw Error(`Unable to find an active editor state. State helpers or node methods can only be used synchronously during the callback of editor.update(), editor.read(), or editorState.read().${collectBuildInformation()}`);\n }\n }\n return activeEditorState;\n}\nfunction getActiveEditor() {\n if (activeEditor === null) {\n {\n throw Error(`Unable to find an active editor. This method can only be used synchronously during the callback of editor.update() or editor.read().${collectBuildInformation()}`);\n }\n }\n return activeEditor;\n}\nfunction collectBuildInformation() {\n let compatibleEditors = 0;\n const incompatibleEditors = new Set();\n const thisVersion = LexicalEditor.version;\n if (typeof window !== 'undefined') {\n for (const node of document.querySelectorAll('[contenteditable]')) {\n const editor = getEditorPropertyFromDOMNode(node);\n if (isLexicalEditor(editor)) {\n compatibleEditors++;\n } else if (editor) {\n let version = String(editor.constructor.version || '<0.17.1');\n if (version === thisVersion) {\n version += ' (separately built, likely a bundler configuration issue)';\n }\n incompatibleEditors.add(version);\n }\n }\n }\n let output = ` Detected on the page: ${compatibleEditors} compatible editor(s) with version ${thisVersion}`;\n if (incompatibleEditors.size) {\n output += ` and incompatible editors with versions ${Array.from(incompatibleEditors).join(', ')}`;\n }\n return output;\n}\nfunction internalGetActiveEditor() {\n return activeEditor;\n}\nfunction internalGetActiveEditorState() {\n return activeEditorState;\n}\nfunction $applyTransforms(editor, node, transformsCache) {\n const type = node.__type;\n const registeredNode = getRegisteredNodeOrThrow(editor, type);\n let transformsArr = transformsCache.get(type);\n if (transformsArr === undefined) {\n transformsArr = Array.from(registeredNode.transforms);\n transformsCache.set(type, transformsArr);\n }\n const transformsArrLength = transformsArr.length;\n for (let i = 0; i < transformsArrLength; i++) {\n transformsArr[i](node);\n if (!node.isAttached()) {\n break;\n }\n }\n}\nfunction $isNodeValidForTransform(node, compositionKey) {\n return node !== undefined &&\n // We don't want to transform nodes being composed\n node.__key !== compositionKey && node.isAttached();\n}\nfunction $normalizeAllDirtyTextNodes(editorState, editor) {\n const dirtyLeaves = editor._dirtyLeaves;\n const nodeMap = editorState._nodeMap;\n for (const nodeKey of dirtyLeaves) {\n const node = nodeMap.get(nodeKey);\n if ($isTextNode(node) && node.isAttached() && node.isSimpleText() && !node.isUnmergeable()) {\n $normalizeTextNode(node);\n }\n }\n}\n\n/**\n * Transform heuristic:\n * 1. We transform leaves first. If transforms generate additional dirty nodes we repeat step 1.\n * The reasoning behind this is that marking a leaf as dirty marks all its parent elements as dirty too.\n * 2. We transform elements. If element transforms generate additional dirty nodes we repeat step 1.\n * If element transforms only generate additional dirty elements we only repeat step 2.\n *\n * Note that to keep track of newly dirty nodes and subtrees we leverage the editor._dirtyNodes and\n * editor._subtrees which we reset in every loop.\n */\nfunction $applyAllTransforms(editorState, editor) {\n const dirtyLeaves = editor._dirtyLeaves;\n const dirtyElements = editor._dirtyElements;\n const nodeMap = editorState._nodeMap;\n const compositionKey = $getCompositionKey();\n const transformsCache = new Map();\n let untransformedDirtyLeaves = dirtyLeaves;\n let untransformedDirtyLeavesLength = untransformedDirtyLeaves.size;\n let untransformedDirtyElements = dirtyElements;\n let untransformedDirtyElementsLength = untransformedDirtyElements.size;\n while (untransformedDirtyLeavesLength > 0 || untransformedDirtyElementsLength > 0) {\n if (untransformedDirtyLeavesLength > 0) {\n // We leverage editor._dirtyLeaves to track the new dirty leaves after the transforms\n editor._dirtyLeaves = new Set();\n for (const nodeKey of untransformedDirtyLeaves) {\n const node = nodeMap.get(nodeKey);\n if ($isTextNode(node) && node.isAttached() && node.isSimpleText() && !node.isUnmergeable()) {\n $normalizeTextNode(node);\n }\n if (node !== undefined && $isNodeValidForTransform(node, compositionKey)) {\n $applyTransforms(editor, node, transformsCache);\n }\n dirtyLeaves.add(nodeKey);\n }\n untransformedDirtyLeaves = editor._dirtyLeaves;\n untransformedDirtyLeavesLength = untransformedDirtyLeaves.size;\n\n // We want to prioritize node transforms over element transforms\n if (untransformedDirtyLeavesLength > 0) {\n infiniteTransformCount++;\n continue;\n }\n }\n\n // All dirty leaves have been processed. Let's do elements!\n // We have previously processed dirty leaves, so let's restart the editor leaves Set to track\n // new ones caused by element transforms\n editor._dirtyLeaves = new Set();\n editor._dirtyElements = new Map();\n for (const currentUntransformedDirtyElement of untransformedDirtyElements) {\n const nodeKey = currentUntransformedDirtyElement[0];\n const intentionallyMarkedAsDirty = currentUntransformedDirtyElement[1];\n if (nodeKey !== 'root' && !intentionallyMarkedAsDirty) {\n continue;\n }\n const node = nodeMap.get(nodeKey);\n if (node !== undefined && $isNodeValidForTransform(node, compositionKey)) {\n $applyTransforms(editor, node, transformsCache);\n }\n dirtyElements.set(nodeKey, intentionallyMarkedAsDirty);\n }\n untransformedDirtyLeaves = editor._dirtyLeaves;\n untransformedDirtyLeavesLength = untransformedDirtyLeaves.size;\n untransformedDirtyElements = editor._dirtyElements;\n untransformedDirtyElementsLength = untransformedDirtyElements.size;\n infiniteTransformCount++;\n }\n editor._dirtyLeaves = dirtyLeaves;\n editor._dirtyElements = dirtyElements;\n}\nfunction $parseSerializedNode(serializedNode) {\n const internalSerializedNode = serializedNode;\n return $parseSerializedNodeImpl(internalSerializedNode, getActiveEditor()._nodes);\n}\nfunction $parseSerializedNodeImpl(serializedNode, registeredNodes) {\n const type = serializedNode.type;\n const registeredNode = registeredNodes.get(type);\n if (registeredNode === undefined) {\n {\n throw Error(`parseEditorState: type \"${type}\" + not found`);\n }\n }\n const nodeClass = registeredNode.klass;\n if (serializedNode.type !== nodeClass.getType()) {\n {\n throw Error(`LexicalNode: Node ${nodeClass.name} does not implement .importJSON().`);\n }\n }\n const node = nodeClass.importJSON(serializedNode);\n const children = serializedNode.children;\n if ($isElementNode(node) && Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n const serializedJSONChildNode = children[i];\n const childNode = $parseSerializedNodeImpl(serializedJSONChildNode, registeredNodes);\n node.append(childNode);\n }\n }\n return node;\n}\nfunction parseEditorState(serializedEditorState, editor, updateFn) {\n const editorState = createEmptyEditorState();\n const previousActiveEditorState = activeEditorState;\n const previousReadOnlyMode = isReadOnlyMode;\n const previousActiveEditor = activeEditor;\n const previousDirtyElements = editor._dirtyElements;\n const previousDirtyLeaves = editor._dirtyLeaves;\n const previousCloneNotNeeded = editor._cloneNotNeeded;\n const previousDirtyType = editor._dirtyType;\n editor._dirtyElements = new Map();\n editor._dirtyLeaves = new Set();\n editor._cloneNotNeeded = new Set();\n editor._dirtyType = 0;\n activeEditorState = editorState;\n isReadOnlyMode = false;\n activeEditor = editor;\n try {\n const registeredNodes = editor._nodes;\n const serializedNode = serializedEditorState.root;\n $parseSerializedNodeImpl(serializedNode, registeredNodes);\n if (updateFn) {\n updateFn();\n }\n\n // Make the editorState immutable\n editorState._readOnly = true;\n {\n handleDEVOnlyPendingUpdateGuarantees(editorState);\n }\n } catch (error) {\n if (error instanceof Error) {\n editor._onError(error);\n }\n } finally {\n editor._dirtyElements = previousDirtyElements;\n editor._dirtyLeaves = previousDirtyLeaves;\n editor._cloneNotNeeded = previousCloneNotNeeded;\n editor._dirtyType = previousDirtyType;\n activeEditorState = previousActiveEditorState;\n isReadOnlyMode = previousReadOnlyMode;\n activeEditor = previousActiveEditor;\n }\n return editorState;\n}\n\n// This technically isn't an update but given we need\n// exposure to the module's active bindings, we have this\n// function here\n\nfunction readEditorState(editor, editorState, callbackFn) {\n const previousActiveEditorState = activeEditorState;\n const previousReadOnlyMode = isReadOnlyMode;\n const previousActiveEditor = activeEditor;\n activeEditorState = editorState;\n isReadOnlyMode = true;\n activeEditor = editor;\n try {\n return callbackFn();\n } finally {\n activeEditorState = previousActiveEditorState;\n isReadOnlyMode = previousReadOnlyMode;\n activeEditor = previousActiveEditor;\n }\n}\nfunction handleDEVOnlyPendingUpdateGuarantees(pendingEditorState) {\n // Given we can't Object.freeze the nodeMap as it's a Map,\n // we instead replace its set, clear and delete methods.\n const nodeMap = pendingEditorState._nodeMap;\n nodeMap.set = () => {\n throw new Error('Cannot call set() on a frozen Lexical node map');\n };\n nodeMap.clear = () => {\n throw new Error('Cannot call clear() on a frozen Lexical node map');\n };\n nodeMap.delete = () => {\n throw new Error('Cannot call delete() on a frozen Lexical node map');\n };\n}\nfunction $commitPendingUpdates(editor, recoveryEditorState) {\n const pendingEditorState = editor._pendingEditorState;\n const rootElement = editor._rootElement;\n const shouldSkipDOM = editor._headless || rootElement === null;\n if (pendingEditorState === null) {\n return;\n }\n\n // ======\n // Reconciliation has started.\n // ======\n\n const currentEditorState = editor._editorState;\n const currentSelection = currentEditorState._selection;\n const pendingSelection = pendingEditorState._selection;\n const needsUpdate = editor._dirtyType !== NO_DIRTY_NODES;\n const previousActiveEditorState = activeEditorState;\n const previousReadOnlyMode = isReadOnlyMode;\n const previousActiveEditor = activeEditor;\n const previouslyUpdating = editor._updating;\n const observer = editor._observer;\n let mutatedNodes = null;\n editor._pendingEditorState = null;\n editor._editorState = pendingEditorState;\n if (!shouldSkipDOM && needsUpdate && observer !== null) {\n activeEditor = editor;\n activeEditorState = pendingEditorState;\n isReadOnlyMode = false;\n // We don't want updates to sync block the reconciliation.\n editor._updating = true;\n try {\n const dirtyType = editor._dirtyType;\n const dirtyElements = editor._dirtyElements;\n const dirtyLeaves = editor._dirtyLeaves;\n observer.disconnect();\n mutatedNodes = $reconcileRoot(currentEditorState, pendingEditorState, editor, dirtyType, dirtyElements, dirtyLeaves);\n } catch (error) {\n // Report errors\n if (error instanceof Error) {\n editor._onError(error);\n }\n\n // Reset editor and restore incoming editor state to the DOM\n if (!isAttemptingToRecoverFromReconcilerError) {\n resetEditor(editor, null, rootElement, pendingEditorState);\n initMutationObserver(editor);\n editor._dirtyType = FULL_RECONCILE;\n isAttemptingToRecoverFromReconcilerError = true;\n $commitPendingUpdates(editor, currentEditorState);\n isAttemptingToRecoverFromReconcilerError = false;\n } else {\n // To avoid a possible situation of infinite loops, lets throw\n throw error;\n }\n return;\n } finally {\n observer.observe(rootElement, observerOptions);\n editor._updating = previouslyUpdating;\n activeEditorState = previousActiveEditorState;\n isReadOnlyMode = previousReadOnlyMode;\n activeEditor = previousActiveEditor;\n }\n }\n if (!pendingEditorState._readOnly) {\n pendingEditorState._readOnly = true;\n {\n handleDEVOnlyPendingUpdateGuarantees(pendingEditorState);\n if ($isRangeSelection(pendingSelection)) {\n Object.freeze(pendingSelection.anchor);\n Object.freeze(pendingSelection.focus);\n }\n Object.freeze(pendingSelection);\n }\n }\n const dirtyLeaves = editor._dirtyLeaves;\n const dirtyElements = editor._dirtyElements;\n const normalizedNodes = editor._normalizedNodes;\n const tags = editor._updateTags;\n const deferred = editor._deferred;\n if (needsUpdate) {\n editor._dirtyType = NO_DIRTY_NODES;\n editor._cloneNotNeeded.clear();\n editor._dirtyLeaves = new Set();\n editor._dirtyElements = new Map();\n editor._normalizedNodes = new Set();\n editor._updateTags = new Set();\n }\n $garbageCollectDetachedDecorators(editor, pendingEditorState);\n\n // ======\n // Reconciliation has finished. Now update selection and trigger listeners.\n // ======\n\n const domSelection = shouldSkipDOM ? null : getDOMSelection(editor._window);\n\n // Attempt to update the DOM selection, including focusing of the root element,\n // and scroll into view if needed.\n if (editor._editable &&\n // domSelection will be null in headless\n domSelection !== null && (needsUpdate || pendingSelection === null || pendingSelection.dirty)) {\n activeEditor = editor;\n activeEditorState = pendingEditorState;\n try {\n if (observer !== null) {\n observer.disconnect();\n }\n if (needsUpdate || pendingSelection === null || pendingSelection.dirty) {\n const blockCursorElement = editor._blockCursorElement;\n if (blockCursorElement !== null) {\n removeDOMBlockCursorElement(blockCursorElement, editor, rootElement);\n }\n updateDOMSelection(currentSelection, pendingSelection, editor, domSelection, tags, rootElement);\n }\n updateDOMBlockCursorElement(editor, rootElement, pendingSelection);\n if (observer !== null) {\n observer.observe(rootElement, observerOptions);\n }\n } finally {\n activeEditor = previousActiveEditor;\n activeEditorState = previousActiveEditorState;\n }\n }\n if (mutatedNodes !== null) {\n triggerMutationListeners(editor, mutatedNodes, tags, dirtyLeaves, currentEditorState);\n }\n if (!$isRangeSelection(pendingSelection) && pendingSelection !== null && (currentSelection === null || !currentSelection.is(pendingSelection))) {\n editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n }\n /**\n * Capture pendingDecorators after garbage collecting detached decorators\n */\n const pendingDecorators = editor._pendingDecorators;\n if (pendingDecorators !== null) {\n editor._decorators = pendingDecorators;\n editor._pendingDecorators = null;\n triggerListeners('decorator', editor, true, pendingDecorators);\n }\n\n // If reconciler fails, we reset whole editor (so current editor state becomes empty)\n // and attempt to re-render pendingEditorState. If that goes through we trigger\n // listeners, but instead use recoverEditorState which is current editor state before reset\n // This specifically important for collab that relies on prevEditorState from update\n // listener to calculate delta of changed nodes/properties\n triggerTextContentListeners(editor, recoveryEditorState || currentEditorState, pendingEditorState);\n triggerListeners('update', editor, true, {\n dirtyElements,\n dirtyLeaves,\n editorState: pendingEditorState,\n normalizedNodes,\n prevEditorState: recoveryEditorState || currentEditorState,\n tags\n });\n triggerDeferredUpdateCallbacks(editor, deferred);\n $triggerEnqueuedUpdates(editor);\n}\nfunction triggerTextContentListeners(editor, currentEditorState, pendingEditorState) {\n const currentTextContent = getEditorStateTextContent(currentEditorState);\n const latestTextContent = getEditorStateTextContent(pendingEditorState);\n if (currentTextContent !== latestTextContent) {\n triggerListeners('textcontent', editor, true, latestTextContent);\n }\n}\nfunction triggerMutationListeners(editor, mutatedNodes, updateTags, dirtyLeaves, prevEditorState) {\n const listeners = Array.from(editor._listeners.mutation);\n const listenersLength = listeners.length;\n for (let i = 0; i < listenersLength; i++) {\n const [listener, klass] = listeners[i];\n const mutatedNodesByType = mutatedNodes.get(klass);\n if (mutatedNodesByType !== undefined) {\n listener(mutatedNodesByType, {\n dirtyLeaves,\n prevEditorState,\n updateTags\n });\n }\n }\n}\nfunction triggerListeners(type, editor, isCurrentlyEnqueuingUpdates, ...payload) {\n const previouslyUpdating = editor._updating;\n editor._updating = isCurrentlyEnqueuingUpdates;\n try {\n const listeners = Array.from(editor._listeners[type]);\n for (let i = 0; i < listeners.length; i++) {\n // @ts-ignore\n listeners[i].apply(null, payload);\n }\n } finally {\n editor._updating = previouslyUpdating;\n }\n}\nfunction triggerCommandListeners(editor, type, payload) {\n if (editor._updating === false || activeEditor !== editor) {\n let returnVal = false;\n editor.update(() => {\n returnVal = triggerCommandListeners(editor, type, payload);\n });\n return returnVal;\n }\n const editors = getEditorsToPropagate(editor);\n for (let i = 4; i >= 0; i--) {\n for (let e = 0; e < editors.length; e++) {\n const currentEditor = editors[e];\n const commandListeners = currentEditor._commands;\n const listenerInPriorityOrder = commandListeners.get(type);\n if (listenerInPriorityOrder !== undefined) {\n const listenersSet = listenerInPriorityOrder[i];\n if (listenersSet !== undefined) {\n const listeners = Array.from(listenersSet);\n const listenersLength = listeners.length;\n for (let j = 0; j < listenersLength; j++) {\n if (listeners[j](payload, editor) === true) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n}\nfunction $triggerEnqueuedUpdates(editor) {\n const queuedUpdates = editor._updates;\n if (queuedUpdates.length !== 0) {\n const queuedUpdate = queuedUpdates.shift();\n if (queuedUpdate) {\n const [updateFn, options] = queuedUpdate;\n $beginUpdate(editor, updateFn, options);\n }\n }\n}\nfunction triggerDeferredUpdateCallbacks(editor, deferred) {\n editor._deferred = [];\n if (deferred.length !== 0) {\n const previouslyUpdating = editor._updating;\n editor._updating = true;\n try {\n for (let i = 0; i < deferred.length; i++) {\n deferred[i]();\n }\n } finally {\n editor._updating = previouslyUpdating;\n }\n }\n}\nfunction processNestedUpdates(editor, initialSkipTransforms) {\n const queuedUpdates = editor._updates;\n let skipTransforms = initialSkipTransforms || false;\n\n // Updates might grow as we process them, we so we'll need\n // to handle each update as we go until the updates array is\n // empty.\n while (queuedUpdates.length !== 0) {\n const queuedUpdate = queuedUpdates.shift();\n if (queuedUpdate) {\n const [nextUpdateFn, options] = queuedUpdate;\n let onUpdate;\n let tag;\n if (options !== undefined) {\n onUpdate = options.onUpdate;\n tag = options.tag;\n if (options.skipTransforms) {\n skipTransforms = true;\n }\n if (options.discrete) {\n const pendingEditorState = editor._pendingEditorState;\n if (!(pendingEditorState !== null)) {\n throw Error(`Unexpected empty pending editor state on discrete nested update`);\n }\n pendingEditorState._flushSync = true;\n }\n if (onUpdate) {\n editor._deferred.push(onUpdate);\n }\n if (tag) {\n editor._updateTags.add(tag);\n }\n }\n nextUpdateFn();\n }\n }\n return skipTransforms;\n}\nfunction $beginUpdate(editor, updateFn, options) {\n const updateTags = editor._updateTags;\n let onUpdate;\n let tag;\n let skipTransforms = false;\n let discrete = false;\n if (options !== undefined) {\n onUpdate = options.onUpdate;\n tag = options.tag;\n if (tag != null) {\n updateTags.add(tag);\n }\n skipTransforms = options.skipTransforms || false;\n discrete = options.discrete || false;\n }\n if (onUpdate) {\n editor._deferred.push(onUpdate);\n }\n const currentEditorState = editor._editorState;\n let pendingEditorState = editor._pendingEditorState;\n let editorStateWasCloned = false;\n if (pendingEditorState === null || pendingEditorState._readOnly) {\n pendingEditorState = editor._pendingEditorState = cloneEditorState(pendingEditorState || currentEditorState);\n editorStateWasCloned = true;\n }\n pendingEditorState._flushSync = discrete;\n const previousActiveEditorState = activeEditorState;\n const previousReadOnlyMode = isReadOnlyMode;\n const previousActiveEditor = activeEditor;\n const previouslyUpdating = editor._updating;\n activeEditorState = pendingEditorState;\n isReadOnlyMode = false;\n editor._updating = true;\n activeEditor = editor;\n try {\n if (editorStateWasCloned) {\n if (editor._headless) {\n if (currentEditorState._selection !== null) {\n pendingEditorState._selection = currentEditorState._selection.clone();\n }\n } else {\n pendingEditorState._selection = $internalCreateSelection(editor);\n }\n }\n const startingCompositionKey = editor._compositionKey;\n updateFn();\n skipTransforms = processNestedUpdates(editor, skipTransforms);\n applySelectionTransforms(pendingEditorState, editor);\n if (editor._dirtyType !== NO_DIRTY_NODES) {\n if (skipTransforms) {\n $normalizeAllDirtyTextNodes(pendingEditorState, editor);\n } else {\n $applyAllTransforms(pendingEditorState, editor);\n }\n processNestedUpdates(editor);\n $garbageCollectDetachedNodes(currentEditorState, pendingEditorState, editor._dirtyLeaves, editor._dirtyElements);\n }\n const endingCompositionKey = editor._compositionKey;\n if (startingCompositionKey !== endingCompositionKey) {\n pendingEditorState._flushSync = true;\n }\n const pendingSelection = pendingEditorState._selection;\n if ($isRangeSelection(pendingSelection)) {\n const pendingNodeMap = pendingEditorState._nodeMap;\n const anchorKey = pendingSelection.anchor.key;\n const focusKey = pendingSelection.focus.key;\n if (pendingNodeMap.get(anchorKey) === undefined || pendingNodeMap.get(focusKey) === undefined) {\n {\n throw Error(`updateEditor: selection has been lost because the previously selected nodes have been removed and selection wasn't moved to another node. Ensure selection changes after removing/replacing a selected node.`);\n }\n }\n } else if ($isNodeSelection(pendingSelection)) {\n // TODO: we should also validate node selection?\n if (pendingSelection._nodes.size === 0) {\n pendingEditorState._selection = null;\n }\n }\n } catch (error) {\n // Report errors\n if (error instanceof Error) {\n editor._onError(error);\n }\n\n // Restore existing editor state to the DOM\n editor._pendingEditorState = currentEditorState;\n editor._dirtyType = FULL_RECONCILE;\n editor._cloneNotNeeded.clear();\n editor._dirtyLeaves = new Set();\n editor._dirtyElements.clear();\n $commitPendingUpdates(editor);\n return;\n } finally {\n activeEditorState = previousActiveEditorState;\n isReadOnlyMode = previousReadOnlyMode;\n activeEditor = previousActiveEditor;\n editor._updating = previouslyUpdating;\n infiniteTransformCount = 0;\n }\n const shouldUpdate = editor._dirtyType !== NO_DIRTY_NODES || editorStateHasDirtySelection(pendingEditorState, editor);\n if (shouldUpdate) {\n if (pendingEditorState._flushSync) {\n pendingEditorState._flushSync = false;\n $commitPendingUpdates(editor);\n } else if (editorStateWasCloned) {\n scheduleMicroTask(() => {\n $commitPendingUpdates(editor);\n });\n }\n } else {\n pendingEditorState._flushSync = false;\n if (editorStateWasCloned) {\n updateTags.clear();\n editor._deferred = [];\n editor._pendingEditorState = null;\n }\n }\n}\nfunction updateEditor(editor, updateFn, options) {\n if (editor._updating) {\n editor._updates.push([updateFn, options]);\n } else {\n $beginUpdate(editor, updateFn, options);\n }\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\n\n/** @noInheritDoc */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nclass ElementNode extends LexicalNode {\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n constructor(key) {\n super(key);\n this.__first = null;\n this.__last = null;\n this.__size = 0;\n this.__format = 0;\n this.__style = '';\n this.__indent = 0;\n this.__dir = null;\n }\n afterCloneFrom(prevNode) {\n super.afterCloneFrom(prevNode);\n this.__first = prevNode.__first;\n this.__last = prevNode.__last;\n this.__size = prevNode.__size;\n this.__indent = prevNode.__indent;\n this.__format = prevNode.__format;\n this.__style = prevNode.__style;\n this.__dir = prevNode.__dir;\n }\n getFormat() {\n const self = this.getLatest();\n return self.__format;\n }\n getFormatType() {\n const format = this.getFormat();\n return ELEMENT_FORMAT_TO_TYPE[format] || '';\n }\n getStyle() {\n const self = this.getLatest();\n return self.__style;\n }\n getIndent() {\n const self = this.getLatest();\n return self.__indent;\n }\n getChildren() {\n const children = [];\n let child = this.getFirstChild();\n while (child !== null) {\n children.push(child);\n child = child.getNextSibling();\n }\n return children;\n }\n getChildrenKeys() {\n const children = [];\n let child = this.getFirstChild();\n while (child !== null) {\n children.push(child.__key);\n child = child.getNextSibling();\n }\n return children;\n }\n getChildrenSize() {\n const self = this.getLatest();\n return self.__size;\n }\n isEmpty() {\n return this.getChildrenSize() === 0;\n }\n isDirty() {\n const editor = getActiveEditor();\n const dirtyElements = editor._dirtyElements;\n return dirtyElements !== null && dirtyElements.has(this.__key);\n }\n isLastChild() {\n const self = this.getLatest();\n const parentLastChild = this.getParentOrThrow().getLastChild();\n return parentLastChild !== null && parentLastChild.is(self);\n }\n getAllTextNodes() {\n const textNodes = [];\n let child = this.getFirstChild();\n while (child !== null) {\n if ($isTextNode(child)) {\n textNodes.push(child);\n }\n if ($isElementNode(child)) {\n const subChildrenNodes = child.getAllTextNodes();\n textNodes.push(...subChildrenNodes);\n }\n child = child.getNextSibling();\n }\n return textNodes;\n }\n getFirstDescendant() {\n let node = this.getFirstChild();\n while ($isElementNode(node)) {\n const child = node.getFirstChild();\n if (child === null) {\n break;\n }\n node = child;\n }\n return node;\n }\n getLastDescendant() {\n let node = this.getLastChild();\n while ($isElementNode(node)) {\n const child = node.getLastChild();\n if (child === null) {\n break;\n }\n node = child;\n }\n return node;\n }\n getDescendantByIndex(index) {\n const children = this.getChildren();\n const childrenLength = children.length;\n // For non-empty element nodes, we resolve its descendant\n // (either a leaf node or the bottom-most element)\n if (index >= childrenLength) {\n const resolvedNode = children[childrenLength - 1];\n return $isElementNode(resolvedNode) && resolvedNode.getLastDescendant() || resolvedNode || null;\n }\n const resolvedNode = children[index];\n return $isElementNode(resolvedNode) && resolvedNode.getFirstDescendant() || resolvedNode || null;\n }\n getFirstChild() {\n const self = this.getLatest();\n const firstKey = self.__first;\n return firstKey === null ? null : $getNodeByKey(firstKey);\n }\n getFirstChildOrThrow() {\n const firstChild = this.getFirstChild();\n if (firstChild === null) {\n {\n throw Error(`Expected node ${this.__key} to have a first child.`);\n }\n }\n return firstChild;\n }\n getLastChild() {\n const self = this.getLatest();\n const lastKey = self.__last;\n return lastKey === null ? null : $getNodeByKey(lastKey);\n }\n getLastChildOrThrow() {\n const lastChild = this.getLastChild();\n if (lastChild === null) {\n {\n throw Error(`Expected node ${this.__key} to have a last child.`);\n }\n }\n return lastChild;\n }\n getChildAtIndex(index) {\n const size = this.getChildrenSize();\n let node;\n let i;\n if (index < size / 2) {\n node = this.getFirstChild();\n i = 0;\n while (node !== null && i <= index) {\n if (i === index) {\n return node;\n }\n node = node.getNextSibling();\n i++;\n }\n return null;\n }\n node = this.getLastChild();\n i = size - 1;\n while (node !== null && i >= index) {\n if (i === index) {\n return node;\n }\n node = node.getPreviousSibling();\n i--;\n }\n return null;\n }\n getTextContent() {\n let textContent = '';\n const children = this.getChildren();\n const childrenLength = children.length;\n for (let i = 0; i < childrenLength; i++) {\n const child = children[i];\n textContent += child.getTextContent();\n if ($isElementNode(child) && i !== childrenLength - 1 && !child.isInline()) {\n textContent += DOUBLE_LINE_BREAK;\n }\n }\n return textContent;\n }\n getTextContentSize() {\n let textContentSize = 0;\n const children = this.getChildren();\n const childrenLength = children.length;\n for (let i = 0; i < childrenLength; i++) {\n const child = children[i];\n textContentSize += child.getTextContentSize();\n if ($isElementNode(child) && i !== childrenLength - 1 && !child.isInline()) {\n textContentSize += DOUBLE_LINE_BREAK.length;\n }\n }\n return textContentSize;\n }\n getDirection() {\n const self = this.getLatest();\n return self.__dir;\n }\n hasFormat(type) {\n if (type !== '') {\n const formatFlag = ELEMENT_TYPE_TO_FORMAT[type];\n return (this.getFormat() & formatFlag) !== 0;\n }\n return false;\n }\n\n // Mutators\n\n select(_anchorOffset, _focusOffset) {\n errorOnReadOnly();\n const selection = $getSelection();\n let anchorOffset = _anchorOffset;\n let focusOffset = _focusOffset;\n const childrenCount = this.getChildrenSize();\n if (!this.canBeEmpty()) {\n if (_anchorOffset === 0 && _focusOffset === 0) {\n const firstChild = this.getFirstChild();\n if ($isTextNode(firstChild) || $isElementNode(firstChild)) {\n return firstChild.select(0, 0);\n }\n } else if ((_anchorOffset === undefined || _anchorOffset === childrenCount) && (_focusOffset === undefined || _focusOffset === childrenCount)) {\n const lastChild = this.getLastChild();\n if ($isTextNode(lastChild) || $isElementNode(lastChild)) {\n return lastChild.select();\n }\n }\n }\n if (anchorOffset === undefined) {\n anchorOffset = childrenCount;\n }\n if (focusOffset === undefined) {\n focusOffset = childrenCount;\n }\n const key = this.__key;\n if (!$isRangeSelection(selection)) {\n return $internalMakeRangeSelection(key, anchorOffset, key, focusOffset, 'element', 'element');\n } else {\n selection.anchor.set(key, anchorOffset, 'element');\n selection.focus.set(key, focusOffset, 'element');\n selection.dirty = true;\n }\n return selection;\n }\n selectStart() {\n const firstNode = this.getFirstDescendant();\n return firstNode ? firstNode.selectStart() : this.select();\n }\n selectEnd() {\n const lastNode = this.getLastDescendant();\n return lastNode ? lastNode.selectEnd() : this.select();\n }\n clear() {\n const writableSelf = this.getWritable();\n const children = this.getChildren();\n children.forEach(child => child.remove());\n return writableSelf;\n }\n append(...nodesToAppend) {\n return this.splice(this.getChildrenSize(), 0, nodesToAppend);\n }\n setDirection(direction) {\n const self = this.getWritable();\n self.__dir = direction;\n return self;\n }\n setFormat(type) {\n const self = this.getWritable();\n self.__format = type !== '' ? ELEMENT_TYPE_TO_FORMAT[type] : 0;\n return this;\n }\n setStyle(style) {\n const self = this.getWritable();\n self.__style = style || '';\n return this;\n }\n setIndent(indentLevel) {\n const self = this.getWritable();\n self.__indent = indentLevel;\n return this;\n }\n splice(start, deleteCount, nodesToInsert) {\n const nodesToInsertLength = nodesToInsert.length;\n const oldSize = this.getChildrenSize();\n const writableSelf = this.getWritable();\n const writableSelfKey = writableSelf.__key;\n const nodesToInsertKeys = [];\n const nodesToRemoveKeys = [];\n const nodeAfterRange = this.getChildAtIndex(start + deleteCount);\n let nodeBeforeRange = null;\n let newSize = oldSize - deleteCount + nodesToInsertLength;\n if (start !== 0) {\n if (start === oldSize) {\n nodeBeforeRange = this.getLastChild();\n } else {\n const node = this.getChildAtIndex(start);\n if (node !== null) {\n nodeBeforeRange = node.getPreviousSibling();\n }\n }\n }\n if (deleteCount > 0) {\n let nodeToDelete = nodeBeforeRange === null ? this.getFirstChild() : nodeBeforeRange.getNextSibling();\n for (let i = 0; i < deleteCount; i++) {\n if (nodeToDelete === null) {\n {\n throw Error(`splice: sibling not found`);\n }\n }\n const nextSibling = nodeToDelete.getNextSibling();\n const nodeKeyToDelete = nodeToDelete.__key;\n const writableNodeToDelete = nodeToDelete.getWritable();\n removeFromParent(writableNodeToDelete);\n nodesToRemoveKeys.push(nodeKeyToDelete);\n nodeToDelete = nextSibling;\n }\n }\n let prevNode = nodeBeforeRange;\n for (let i = 0; i < nodesToInsertLength; i++) {\n const nodeToInsert = nodesToInsert[i];\n if (prevNode !== null && nodeToInsert.is(prevNode)) {\n nodeBeforeRange = prevNode = prevNode.getPreviousSibling();\n }\n const writableNodeToInsert = nodeToInsert.getWritable();\n if (writableNodeToInsert.__parent === writableSelfKey) {\n newSize--;\n }\n removeFromParent(writableNodeToInsert);\n const nodeKeyToInsert = nodeToInsert.__key;\n if (prevNode === null) {\n writableSelf.__first = nodeKeyToInsert;\n writableNodeToInsert.__prev = null;\n } else {\n const writablePrevNode = prevNode.getWritable();\n writablePrevNode.__next = nodeKeyToInsert;\n writableNodeToInsert.__prev = writablePrevNode.__key;\n }\n if (nodeToInsert.__key === writableSelfKey) {\n {\n throw Error(`append: attempting to append self`);\n }\n }\n // Set child parent to self\n writableNodeToInsert.__parent = writableSelfKey;\n nodesToInsertKeys.push(nodeKeyToInsert);\n prevNode = nodeToInsert;\n }\n if (start + deleteCount === oldSize) {\n if (prevNode !== null) {\n const writablePrevNode = prevNode.getWritable();\n writablePrevNode.__next = null;\n writableSelf.__last = prevNode.__key;\n }\n } else if (nodeAfterRange !== null) {\n const writableNodeAfterRange = nodeAfterRange.getWritable();\n if (prevNode !== null) {\n const writablePrevNode = prevNode.getWritable();\n writableNodeAfterRange.__prev = prevNode.__key;\n writablePrevNode.__next = nodeAfterRange.__key;\n } else {\n writableNodeAfterRange.__prev = null;\n }\n }\n writableSelf.__size = newSize;\n\n // In case of deletion we need to adjust selection, unlink removed nodes\n // and clean up node itself if it becomes empty. None of these needed\n // for insertion-only cases\n if (nodesToRemoveKeys.length) {\n // Adjusting selection, in case node that was anchor/focus will be deleted\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const nodesToRemoveKeySet = new Set(nodesToRemoveKeys);\n const nodesToInsertKeySet = new Set(nodesToInsertKeys);\n const {\n anchor,\n focus\n } = selection;\n if (isPointRemoved(anchor, nodesToRemoveKeySet, nodesToInsertKeySet)) {\n moveSelectionPointToSibling(anchor, anchor.getNode(), this, nodeBeforeRange, nodeAfterRange);\n }\n if (isPointRemoved(focus, nodesToRemoveKeySet, nodesToInsertKeySet)) {\n moveSelectionPointToSibling(focus, focus.getNode(), this, nodeBeforeRange, nodeAfterRange);\n }\n // Cleanup if node can't be empty\n if (newSize === 0 && !this.canBeEmpty() && !$isRootOrShadowRoot(this)) {\n this.remove();\n }\n }\n }\n return writableSelf;\n }\n // JSON serialization\n exportJSON() {\n return {\n children: [],\n direction: this.getDirection(),\n format: this.getFormatType(),\n indent: this.getIndent(),\n type: 'element',\n version: 1\n };\n }\n // These are intended to be extends for specific element heuristics.\n insertNewAfter(selection, restoreSelection) {\n return null;\n }\n canIndent() {\n return true;\n }\n /*\n * This method controls the behavior of a the node during backwards\n * deletion (i.e., backspace) when selection is at the beginning of\n * the node (offset 0)\n */\n collapseAtStart(selection) {\n return false;\n }\n excludeFromCopy(destination) {\n return false;\n }\n /** @deprecated @internal */\n canReplaceWith(replacement) {\n return true;\n }\n /** @deprecated @internal */\n canInsertAfter(node) {\n return true;\n }\n canBeEmpty() {\n return true;\n }\n canInsertTextBefore() {\n return true;\n }\n canInsertTextAfter() {\n return true;\n }\n isInline() {\n return false;\n }\n // A shadow root is a Node that behaves like RootNode. The shadow root (and RootNode) mark the\n // end of the hiercharchy, most implementations should treat it as there's nothing (upwards)\n // beyond this point. For example, node.getTopLevelElement(), when performed inside a TableCellNode\n // will return the immediate first child underneath TableCellNode instead of RootNode.\n isShadowRoot() {\n return false;\n }\n /** @deprecated @internal */\n canMergeWith(node) {\n return false;\n }\n extractWithChild(child, selection, destination) {\n return false;\n }\n\n /**\n * Determines whether this node, when empty, can merge with a first block\n * of nodes being inserted.\n *\n * This method is specifically called in {@link RangeSelection.insertNodes}\n * to determine merging behavior during nodes insertion.\n *\n * @example\n * // In a ListItemNode or QuoteNode implementation:\n * canMergeWhenEmpty(): true {\n * return true;\n * }\n */\n canMergeWhenEmpty() {\n return false;\n }\n}\nfunction $isElementNode(node) {\n return node instanceof ElementNode;\n}\nfunction isPointRemoved(point, nodesToRemoveKeySet, nodesToInsertKeySet) {\n let node = point.getNode();\n while (node) {\n const nodeKey = node.__key;\n if (nodesToRemoveKeySet.has(nodeKey) && !nodesToInsertKeySet.has(nodeKey)) {\n return true;\n }\n node = node.getParent();\n }\n return false;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n/** @noInheritDoc */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nclass DecoratorNode extends LexicalNode {\n constructor(key) {\n super(key);\n }\n\n /**\n * The returned value is added to the LexicalEditor._decorators\n */\n decorate(editor, config) {\n {\n throw Error(`decorate: base method not extended`);\n }\n }\n isIsolated() {\n return false;\n }\n isInline() {\n return true;\n }\n isKeyboardSelectable() {\n return true;\n }\n}\nfunction $isDecoratorNode(node) {\n return node instanceof DecoratorNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/** @noInheritDoc */\nclass RootNode extends ElementNode {\n /** @internal */\n\n static getType() {\n return 'root';\n }\n static clone() {\n return new RootNode();\n }\n constructor() {\n super('root');\n this.__cachedText = null;\n }\n getTopLevelElementOrThrow() {\n {\n throw Error(`getTopLevelElementOrThrow: root nodes are not top level elements`);\n }\n }\n getTextContent() {\n const cachedText = this.__cachedText;\n if (isCurrentlyReadOnlyMode() || getActiveEditor()._dirtyType === NO_DIRTY_NODES) {\n if (cachedText !== null) {\n return cachedText;\n }\n }\n return super.getTextContent();\n }\n remove() {\n {\n throw Error(`remove: cannot be called on root nodes`);\n }\n }\n replace(node) {\n {\n throw Error(`replace: cannot be called on root nodes`);\n }\n }\n insertBefore(nodeToInsert) {\n {\n throw Error(`insertBefore: cannot be called on root nodes`);\n }\n }\n insertAfter(nodeToInsert) {\n {\n throw Error(`insertAfter: cannot be called on root nodes`);\n }\n }\n\n // View\n\n updateDOM(prevNode, dom) {\n return false;\n }\n\n // Mutate\n\n append(...nodesToAppend) {\n for (let i = 0; i < nodesToAppend.length; i++) {\n const node = nodesToAppend[i];\n if (!$isElementNode(node) && !$isDecoratorNode(node)) {\n {\n throw Error(`rootNode.append: Only element or decorator nodes can be appended to the root node`);\n }\n }\n }\n return super.append(...nodesToAppend);\n }\n static importJSON(serializedNode) {\n // We don't create a root, and instead use the existing root.\n const node = $getRoot();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n exportJSON() {\n return {\n children: [],\n direction: this.getDirection(),\n format: this.getFormatType(),\n indent: this.getIndent(),\n type: 'root',\n version: 1\n };\n }\n collapseAtStart() {\n return true;\n }\n}\nfunction $createRootNode() {\n return new RootNode();\n}\nfunction $isRootNode(node) {\n return node instanceof RootNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction editorStateHasDirtySelection(editorState, editor) {\n const currentSelection = editor.getEditorState()._selection;\n const pendingSelection = editorState._selection;\n\n // Check if we need to update because of changes in selection\n if (pendingSelection !== null) {\n if (pendingSelection.dirty || !pendingSelection.is(currentSelection)) {\n return true;\n }\n } else if (currentSelection !== null) {\n return true;\n }\n return false;\n}\nfunction cloneEditorState(current) {\n return new EditorState(new Map(current._nodeMap));\n}\nfunction createEmptyEditorState() {\n return new EditorState(new Map([['root', $createRootNode()]]));\n}\nfunction exportNodeToJSON(node) {\n const serializedNode = node.exportJSON();\n const nodeClass = node.constructor;\n if (serializedNode.type !== nodeClass.getType()) {\n {\n throw Error(`LexicalNode: Node ${nodeClass.name} does not match the serialized type. Check if .exportJSON() is implemented and it is returning the correct type.`);\n }\n }\n if ($isElementNode(node)) {\n const serializedChildren = serializedNode.children;\n if (!Array.isArray(serializedChildren)) {\n {\n throw Error(`LexicalNode: Node ${nodeClass.name} is an element but .exportJSON() does not have a children array.`);\n }\n }\n const children = node.getChildren();\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const serializedChildNode = exportNodeToJSON(child);\n serializedChildren.push(serializedChildNode);\n }\n }\n\n // @ts-expect-error\n return serializedNode;\n}\nclass EditorState {\n constructor(nodeMap, selection) {\n this._nodeMap = nodeMap;\n this._selection = selection || null;\n this._flushSync = false;\n this._readOnly = false;\n }\n isEmpty() {\n return this._nodeMap.size === 1 && this._selection === null;\n }\n read(callbackFn, options) {\n return readEditorState(options && options.editor || null, this, callbackFn);\n }\n clone(selection) {\n const editorState = new EditorState(this._nodeMap, selection === undefined ? this._selection : selection);\n editorState._readOnly = true;\n return editorState;\n }\n toJSON() {\n return readEditorState(null, this, () => ({\n root: exportNodeToJSON($getRoot())\n }));\n }\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n// TODO: Cleanup ArtificialNode__DO_NOT_USE #5966\nclass ArtificialNode__DO_NOT_USE extends ElementNode {\n static getType() {\n return 'artificial';\n }\n createDOM(config) {\n // this isnt supposed to be used and is not used anywhere but defining it to appease the API\n const dom = document.createElement('div');\n return dom;\n }\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/** @noInheritDoc */\nclass ParagraphNode extends ElementNode {\n /** @internal */\n\n constructor(key) {\n super(key);\n this.__textFormat = 0;\n this.__textStyle = '';\n }\n static getType() {\n return 'paragraph';\n }\n getTextFormat() {\n const self = this.getLatest();\n return self.__textFormat;\n }\n setTextFormat(type) {\n const self = this.getWritable();\n self.__textFormat = type;\n return self;\n }\n hasTextFormat(type) {\n const formatFlag = TEXT_TYPE_TO_FORMAT[type];\n return (this.getTextFormat() & formatFlag) !== 0;\n }\n getTextStyle() {\n const self = this.getLatest();\n return self.__textStyle;\n }\n setTextStyle(style) {\n const self = this.getWritable();\n self.__textStyle = style;\n return self;\n }\n static clone(node) {\n return new ParagraphNode(node.__key);\n }\n afterCloneFrom(prevNode) {\n super.afterCloneFrom(prevNode);\n this.__textFormat = prevNode.__textFormat;\n this.__textStyle = prevNode.__textStyle;\n }\n\n // View\n\n createDOM(config) {\n const dom = document.createElement('p');\n const classNames = getCachedClassNameArray(config.theme, 'paragraph');\n if (classNames !== undefined) {\n const domClassList = dom.classList;\n domClassList.add(...classNames);\n }\n return dom;\n }\n updateDOM(prevNode, dom, config) {\n return false;\n }\n static importDOM() {\n return {\n p: node => ({\n conversion: $convertParagraphElement,\n priority: 0\n })\n };\n }\n exportDOM(editor) {\n const {\n element\n } = super.exportDOM(editor);\n if (element && isHTMLElement(element)) {\n if (this.isEmpty()) {\n element.append(document.createElement('br'));\n }\n const formatType = this.getFormatType();\n element.style.textAlign = formatType;\n const direction = this.getDirection();\n if (direction) {\n element.dir = direction;\n }\n const indent = this.getIndent();\n if (indent > 0) {\n // padding-inline-start is not widely supported in email HTML, but\n // Lexical Reconciler uses padding-inline-start. Using text-indent instead.\n element.style.textIndent = `${indent * 20}px`;\n }\n }\n return {\n element\n };\n }\n static importJSON(serializedNode) {\n const node = $createParagraphNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n node.setTextFormat(serializedNode.textFormat);\n return node;\n }\n exportJSON() {\n return {\n ...super.exportJSON(),\n textFormat: this.getTextFormat(),\n textStyle: this.getTextStyle(),\n type: 'paragraph',\n version: 1\n };\n }\n\n // Mutation\n\n insertNewAfter(rangeSelection, restoreSelection) {\n const newElement = $createParagraphNode();\n newElement.setTextFormat(rangeSelection.format);\n newElement.setTextStyle(rangeSelection.style);\n const direction = this.getDirection();\n newElement.setDirection(direction);\n newElement.setFormat(this.getFormatType());\n newElement.setStyle(this.getTextStyle());\n this.insertAfter(newElement, restoreSelection);\n return newElement;\n }\n collapseAtStart() {\n const children = this.getChildren();\n // If we have an empty (trimmed) first paragraph and try and remove it,\n // delete the paragraph as long as we have another sibling to go to\n if (children.length === 0 || $isTextNode(children[0]) && children[0].getTextContent().trim() === '') {\n const nextSibling = this.getNextSibling();\n if (nextSibling !== null) {\n this.selectNext();\n this.remove();\n return true;\n }\n const prevSibling = this.getPreviousSibling();\n if (prevSibling !== null) {\n this.selectPrevious();\n this.remove();\n return true;\n }\n }\n return false;\n }\n}\nfunction $convertParagraphElement(element) {\n const node = $createParagraphNode();\n if (element.style) {\n node.setFormat(element.style.textAlign);\n const indent = parseInt(element.style.textIndent, 10) / 20;\n if (indent > 0) {\n node.setIndent(indent);\n }\n }\n return {\n node\n };\n}\nfunction $createParagraphNode() {\n return $applyNodeReplacement(new ParagraphNode());\n}\nfunction $isParagraphNode(node) {\n return node instanceof ParagraphNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n// https://github.com/microsoft/TypeScript/issues/3841\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\nconst DEFAULT_SKIP_INITIALIZATION = true;\nconst COMMAND_PRIORITY_EDITOR = 0;\nconst COMMAND_PRIORITY_LOW = 1;\nconst COMMAND_PRIORITY_NORMAL = 2;\nconst COMMAND_PRIORITY_HIGH = 3;\nconst COMMAND_PRIORITY_CRITICAL = 4;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n/**\n * Type helper for extracting the payload type from a command.\n *\n * @example\n * ```ts\n * const MY_COMMAND = createCommand<SomeType>();\n *\n * // ...\n *\n * editor.registerCommand(MY_COMMAND, payload => {\n * // Type of `payload` is inferred here. But lets say we want to extract a function to delegate to\n * handleMyCommand(editor, payload);\n * return true;\n * });\n *\n * function handleMyCommand(editor: LexicalEditor, payload: CommandPayloadType<typeof MY_COMMAND>) {\n * // `payload` is of type `SomeType`, extracted from the command.\n * }\n * ```\n */\n\nfunction resetEditor(editor, prevRootElement, nextRootElement, pendingEditorState) {\n const keyNodeMap = editor._keyToDOMMap;\n keyNodeMap.clear();\n editor._editorState = createEmptyEditorState();\n editor._pendingEditorState = pendingEditorState;\n editor._compositionKey = null;\n editor._dirtyType = NO_DIRTY_NODES;\n editor._cloneNotNeeded.clear();\n editor._dirtyLeaves = new Set();\n editor._dirtyElements.clear();\n editor._normalizedNodes = new Set();\n editor._updateTags = new Set();\n editor._updates = [];\n editor._blockCursorElement = null;\n const observer = editor._observer;\n if (observer !== null) {\n observer.disconnect();\n editor._observer = null;\n }\n\n // Remove all the DOM nodes from the root element\n if (prevRootElement !== null) {\n prevRootElement.textContent = '';\n }\n if (nextRootElement !== null) {\n nextRootElement.textContent = '';\n keyNodeMap.set('root', nextRootElement);\n }\n}\nfunction initializeConversionCache(nodes, additionalConversions) {\n const conversionCache = new Map();\n const handledConversions = new Set();\n const addConversionsToCache = map => {\n Object.keys(map).forEach(key => {\n let currentCache = conversionCache.get(key);\n if (currentCache === undefined) {\n currentCache = [];\n conversionCache.set(key, currentCache);\n }\n currentCache.push(map[key]);\n });\n };\n nodes.forEach(node => {\n const importDOM = node.klass.importDOM;\n if (importDOM == null || handledConversions.has(importDOM)) {\n return;\n }\n handledConversions.add(importDOM);\n const map = importDOM.call(node.klass);\n if (map !== null) {\n addConversionsToCache(map);\n }\n });\n if (additionalConversions) {\n addConversionsToCache(additionalConversions);\n }\n return conversionCache;\n}\n\n/**\n * Creates a new LexicalEditor attached to a single contentEditable (provided in the config). This is\n * the lowest-level initialization API for a LexicalEditor. If you're using React or another framework,\n * consider using the appropriate abstractions, such as LexicalComposer\n * @param editorConfig - the editor configuration.\n * @returns a LexicalEditor instance\n */\nfunction createEditor(editorConfig) {\n const config = editorConfig || {};\n const activeEditor = internalGetActiveEditor();\n const theme = config.theme || {};\n const parentEditor = editorConfig === undefined ? activeEditor : config.parentEditor || null;\n const disableEvents = config.disableEvents || false;\n const editorState = createEmptyEditorState();\n const namespace = config.namespace || (parentEditor !== null ? parentEditor._config.namespace : createUID());\n const initialEditorState = config.editorState;\n const nodes = [RootNode, TextNode, LineBreakNode, TabNode, ParagraphNode, ArtificialNode__DO_NOT_USE, ...(config.nodes || [])];\n const {\n onError,\n html\n } = config;\n const isEditable = config.editable !== undefined ? config.editable : true;\n let registeredNodes;\n if (editorConfig === undefined && activeEditor !== null) {\n registeredNodes = activeEditor._nodes;\n } else {\n registeredNodes = new Map();\n for (let i = 0; i < nodes.length; i++) {\n let klass = nodes[i];\n let replace = null;\n let replaceWithKlass = null;\n if (typeof klass !== 'function') {\n const options = klass;\n klass = options.replace;\n replace = options.with;\n replaceWithKlass = options.withKlass || null;\n }\n // Ensure custom nodes implement required methods and replaceWithKlass is instance of base klass.\n {\n // ArtificialNode__DO_NOT_USE can get renamed, so we use the type\n const nodeType = Object.prototype.hasOwnProperty.call(klass, 'getType') && klass.getType();\n const name = klass.name;\n if (replaceWithKlass) {\n if (!(replaceWithKlass.prototype instanceof klass)) {\n throw Error(`${replaceWithKlass.name} doesn't extend the ${name}`);\n }\n }\n if (name !== 'RootNode' && nodeType !== 'root' && nodeType !== 'artificial') {\n const proto = klass.prototype;\n ['getType', 'clone'].forEach(method => {\n // eslint-disable-next-line no-prototype-builtins\n if (!klass.hasOwnProperty(method)) {\n console.warn(`${name} must implement static \"${method}\" method`);\n }\n });\n if (\n // eslint-disable-next-line no-prototype-builtins\n !klass.hasOwnProperty('importDOM') &&\n // eslint-disable-next-line no-prototype-builtins\n klass.hasOwnProperty('exportDOM')) {\n console.warn(`${name} should implement \"importDOM\" if using a custom \"exportDOM\" method to ensure HTML serialization (important for copy & paste) works as expected`);\n }\n if (proto instanceof DecoratorNode) {\n // eslint-disable-next-line no-prototype-builtins\n if (!proto.hasOwnProperty('decorate')) {\n console.warn(`${proto.constructor.name} must implement \"decorate\" method`);\n }\n }\n if (\n // eslint-disable-next-line no-prototype-builtins\n !klass.hasOwnProperty('importJSON')) {\n console.warn(`${name} should implement \"importJSON\" method to ensure JSON and default HTML serialization works as expected`);\n }\n if (\n // eslint-disable-next-line no-prototype-builtins\n !proto.hasOwnProperty('exportJSON')) {\n console.warn(`${name} should implement \"exportJSON\" method to ensure JSON and default HTML serialization works as expected`);\n }\n }\n }\n const type = klass.getType();\n const transform = klass.transform();\n const transforms = new Set();\n if (transform !== null) {\n transforms.add(transform);\n }\n registeredNodes.set(type, {\n exportDOM: html && html.export ? html.export.get(klass) : undefined,\n klass,\n replace,\n replaceWithKlass,\n transforms\n });\n }\n }\n const editor = new LexicalEditor(editorState, parentEditor, registeredNodes, {\n disableEvents,\n namespace,\n theme\n }, onError ? onError : console.error, initializeConversionCache(registeredNodes, html ? html.import : undefined), isEditable);\n if (initialEditorState !== undefined) {\n editor._pendingEditorState = initialEditorState;\n editor._dirtyType = FULL_RECONCILE;\n }\n return editor;\n}\nclass LexicalEditor {\n /** The version with build identifiers for this editor (since 0.17.1) */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n constructor(editorState, parentEditor, nodes, config, onError, htmlConversions, editable) {\n this._parentEditor = parentEditor;\n // The root element associated with this editor\n this._rootElement = null;\n // The current editor state\n this._editorState = editorState;\n // Handling of drafts and updates\n this._pendingEditorState = null;\n // Used to help co-ordinate selection and events\n this._compositionKey = null;\n this._deferred = [];\n // Used during reconciliation\n this._keyToDOMMap = new Map();\n this._updates = [];\n this._updating = false;\n // Listeners\n this._listeners = {\n decorator: new Set(),\n editable: new Set(),\n mutation: new Map(),\n root: new Set(),\n textcontent: new Set(),\n update: new Set()\n };\n // Commands\n this._commands = new Map();\n // Editor configuration for theme/context.\n this._config = config;\n // Mapping of types to their nodes\n this._nodes = nodes;\n // React node decorators for portals\n this._decorators = {};\n this._pendingDecorators = null;\n // Used to optimize reconciliation\n this._dirtyType = NO_DIRTY_NODES;\n this._cloneNotNeeded = new Set();\n this._dirtyLeaves = new Set();\n this._dirtyElements = new Map();\n this._normalizedNodes = new Set();\n this._updateTags = new Set();\n // Handling of DOM mutations\n this._observer = null;\n // Used for identifying owning editors\n this._key = createUID();\n this._onError = onError;\n this._htmlConversions = htmlConversions;\n this._editable = editable;\n this._headless = parentEditor !== null && parentEditor._headless;\n this._window = null;\n this._blockCursorElement = null;\n }\n\n /**\n *\n * @returns true if the editor is currently in \"composition\" mode due to receiving input\n * through an IME, or 3P extension, for example. Returns false otherwise.\n */\n isComposing() {\n return this._compositionKey != null;\n }\n /**\n * Registers a listener for Editor update event. Will trigger the provided callback\n * each time the editor goes through an update (via {@link LexicalEditor.update}) until the\n * teardown function is called.\n *\n * @returns a teardown function that can be used to cleanup the listener.\n */\n registerUpdateListener(listener) {\n const listenerSetOrMap = this._listeners.update;\n listenerSetOrMap.add(listener);\n return () => {\n listenerSetOrMap.delete(listener);\n };\n }\n /**\n * Registers a listener for for when the editor changes between editable and non-editable states.\n * Will trigger the provided callback each time the editor transitions between these states until the\n * teardown function is called.\n *\n * @returns a teardown function that can be used to cleanup the listener.\n */\n registerEditableListener(listener) {\n const listenerSetOrMap = this._listeners.editable;\n listenerSetOrMap.add(listener);\n return () => {\n listenerSetOrMap.delete(listener);\n };\n }\n /**\n * Registers a listener for when the editor's decorator object changes. The decorator object contains\n * all DecoratorNode keys -> their decorated value. This is primarily used with external UI frameworks.\n *\n * Will trigger the provided callback each time the editor transitions between these states until the\n * teardown function is called.\n *\n * @returns a teardown function that can be used to cleanup the listener.\n */\n registerDecoratorListener(listener) {\n const listenerSetOrMap = this._listeners.decorator;\n listenerSetOrMap.add(listener);\n return () => {\n listenerSetOrMap.delete(listener);\n };\n }\n /**\n * Registers a listener for when Lexical commits an update to the DOM and the text content of\n * the editor changes from the previous state of the editor. If the text content is the\n * same between updates, no notifications to the listeners will happen.\n *\n * Will trigger the provided callback each time the editor transitions between these states until the\n * teardown function is called.\n *\n * @returns a teardown function that can be used to cleanup the listener.\n */\n registerTextContentListener(listener) {\n const listenerSetOrMap = this._listeners.textcontent;\n listenerSetOrMap.add(listener);\n return () => {\n listenerSetOrMap.delete(listener);\n };\n }\n /**\n * Registers a listener for when the editor's root DOM element (the content editable\n * Lexical attaches to) changes. This is primarily used to attach event listeners to the root\n * element. The root listener function is executed directly upon registration and then on\n * any subsequent update.\n *\n * Will trigger the provided callback each time the editor transitions between these states until the\n * teardown function is called.\n *\n * @returns a teardown function that can be used to cleanup the listener.\n */\n registerRootListener(listener) {\n const listenerSetOrMap = this._listeners.root;\n listener(this._rootElement, null);\n listenerSetOrMap.add(listener);\n return () => {\n listener(null, this._rootElement);\n listenerSetOrMap.delete(listener);\n };\n }\n /**\n * Registers a listener that will trigger anytime the provided command\n * is dispatched, subject to priority. Listeners that run at a higher priority can \"intercept\"\n * commands and prevent them from propagating to other handlers by returning true.\n *\n * Listeners registered at the same priority level will run deterministically in the order of registration.\n *\n * @param command - the command that will trigger the callback.\n * @param listener - the function that will execute when the command is dispatched.\n * @param priority - the relative priority of the listener. 0 | 1 | 2 | 3 | 4\n * @returns a teardown function that can be used to cleanup the listener.\n */\n registerCommand(command, listener, priority) {\n if (priority === undefined) {\n {\n throw Error(`Listener for type \"command\" requires a \"priority\".`);\n }\n }\n const commandsMap = this._commands;\n if (!commandsMap.has(command)) {\n commandsMap.set(command, [new Set(), new Set(), new Set(), new Set(), new Set()]);\n }\n const listenersInPriorityOrder = commandsMap.get(command);\n if (listenersInPriorityOrder === undefined) {\n {\n throw Error(`registerCommand: Command ${String(command)} not found in command map`);\n }\n }\n const listeners = listenersInPriorityOrder[priority];\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n if (listenersInPriorityOrder.every(listenersSet => listenersSet.size === 0)) {\n commandsMap.delete(command);\n }\n };\n }\n\n /**\n * Registers a listener that will run when a Lexical node of the provided class is\n * mutated. The listener will receive a list of nodes along with the type of mutation\n * that was performed on each: created, destroyed, or updated.\n *\n * One common use case for this is to attach DOM event listeners to the underlying DOM nodes as Lexical nodes are created.\n * {@link LexicalEditor.getElementByKey} can be used for this.\n *\n * If any existing nodes are in the DOM, and skipInitialization is not true, the listener\n * will be called immediately with an updateTag of 'registerMutationListener' where all\n * nodes have the 'created' NodeMutation. This can be controlled with the skipInitialization option\n * (default is currently true for backwards compatibility in 0.16.x but will change to false in 0.17.0).\n *\n * @param klass - The class of the node that you want to listen to mutations on.\n * @param listener - The logic you want to run when the node is mutated.\n * @param options - see {@link MutationListenerOptions}\n * @returns a teardown function that can be used to cleanup the listener.\n */\n registerMutationListener(klass, listener, options) {\n const klassToMutate = this.resolveRegisteredNodeAfterReplacements(this.getRegisteredNode(klass)).klass;\n const mutations = this._listeners.mutation;\n mutations.set(listener, klassToMutate);\n const skipInitialization = options && options.skipInitialization;\n if (!(skipInitialization === undefined ? DEFAULT_SKIP_INITIALIZATION : skipInitialization)) {\n this.initializeMutationListener(listener, klassToMutate);\n }\n return () => {\n mutations.delete(listener);\n };\n }\n\n /** @internal */\n getRegisteredNode(klass) {\n const registeredNode = this._nodes.get(klass.getType());\n if (registeredNode === undefined) {\n {\n throw Error(`Node ${klass.name} has not been registered. Ensure node has been passed to createEditor.`);\n }\n }\n return registeredNode;\n }\n\n /** @internal */\n resolveRegisteredNodeAfterReplacements(registeredNode) {\n while (registeredNode.replaceWithKlass) {\n registeredNode = this.getRegisteredNode(registeredNode.replaceWithKlass);\n }\n return registeredNode;\n }\n\n /** @internal */\n initializeMutationListener(listener, klass) {\n const prevEditorState = this._editorState;\n const nodeMap = getCachedTypeToNodeMap(prevEditorState).get(klass.getType());\n if (!nodeMap) {\n return;\n }\n const nodeMutationMap = new Map();\n for (const k of nodeMap.keys()) {\n nodeMutationMap.set(k, 'created');\n }\n if (nodeMutationMap.size > 0) {\n listener(nodeMutationMap, {\n dirtyLeaves: new Set(),\n prevEditorState,\n updateTags: new Set(['registerMutationListener'])\n });\n }\n }\n\n /** @internal */\n registerNodeTransformToKlass(klass, listener) {\n const registeredNode = this.getRegisteredNode(klass);\n registeredNode.transforms.add(listener);\n return registeredNode;\n }\n\n /**\n * Registers a listener that will run when a Lexical node of the provided class is\n * marked dirty during an update. The listener will continue to run as long as the node\n * is marked dirty. There are no guarantees around the order of transform execution!\n *\n * Watch out for infinite loops. See [Node Transforms](https://lexical.dev/docs/concepts/transforms)\n * @param klass - The class of the node that you want to run transforms on.\n * @param listener - The logic you want to run when the node is updated.\n * @returns a teardown function that can be used to cleanup the listener.\n */\n registerNodeTransform(klass, listener) {\n const registeredNode = this.registerNodeTransformToKlass(klass, listener);\n const registeredNodes = [registeredNode];\n const replaceWithKlass = registeredNode.replaceWithKlass;\n if (replaceWithKlass != null) {\n const registeredReplaceWithNode = this.registerNodeTransformToKlass(replaceWithKlass, listener);\n registeredNodes.push(registeredReplaceWithNode);\n }\n markAllNodesAsDirty(this, klass.getType());\n return () => {\n registeredNodes.forEach(node => node.transforms.delete(listener));\n };\n }\n\n /**\n * Used to assert that a certain node is registered, usually by plugins to ensure nodes that they\n * depend on have been registered.\n * @returns True if the editor has registered the provided node type, false otherwise.\n */\n hasNode(node) {\n return this._nodes.has(node.getType());\n }\n\n /**\n * Used to assert that certain nodes are registered, usually by plugins to ensure nodes that they\n * depend on have been registered.\n * @returns True if the editor has registered all of the provided node types, false otherwise.\n */\n hasNodes(nodes) {\n return nodes.every(this.hasNode.bind(this));\n }\n\n /**\n * Dispatches a command of the specified type with the specified payload.\n * This triggers all command listeners (set by {@link LexicalEditor.registerCommand})\n * for this type, passing them the provided payload.\n * @param type - the type of command listeners to trigger.\n * @param payload - the data to pass as an argument to the command listeners.\n */\n dispatchCommand(type, payload) {\n return dispatchCommand(this, type, payload);\n }\n\n /**\n * Gets a map of all decorators in the editor.\n * @returns A mapping of call decorator keys to their decorated content\n */\n getDecorators() {\n return this._decorators;\n }\n\n /**\n *\n * @returns the current root element of the editor. If you want to register\n * an event listener, do it via {@link LexicalEditor.registerRootListener}, since\n * this reference may not be stable.\n */\n getRootElement() {\n return this._rootElement;\n }\n\n /**\n * Gets the key of the editor\n * @returns The editor key\n */\n getKey() {\n return this._key;\n }\n\n /**\n * Imperatively set the root contenteditable element that Lexical listens\n * for events on.\n */\n setRootElement(nextRootElement) {\n const prevRootElement = this._rootElement;\n if (nextRootElement !== prevRootElement) {\n const classNames = getCachedClassNameArray(this._config.theme, 'root');\n const pendingEditorState = this._pendingEditorState || this._editorState;\n this._rootElement = nextRootElement;\n resetEditor(this, prevRootElement, nextRootElement, pendingEditorState);\n if (prevRootElement !== null) {\n // TODO: remove this flag once we no longer use UEv2 internally\n if (!this._config.disableEvents) {\n removeRootElementEvents(prevRootElement);\n }\n if (classNames != null) {\n prevRootElement.classList.remove(...classNames);\n }\n }\n if (nextRootElement !== null) {\n const windowObj = getDefaultView(nextRootElement);\n const style = nextRootElement.style;\n style.userSelect = 'text';\n style.whiteSpace = 'pre-wrap';\n style.wordBreak = 'break-word';\n nextRootElement.setAttribute('data-lexical-editor', 'true');\n this._window = windowObj;\n this._dirtyType = FULL_RECONCILE;\n initMutationObserver(this);\n this._updateTags.add('history-merge');\n $commitPendingUpdates(this);\n\n // TODO: remove this flag once we no longer use UEv2 internally\n if (!this._config.disableEvents) {\n addRootElementEvents(nextRootElement, this);\n }\n if (classNames != null) {\n nextRootElement.classList.add(...classNames);\n }\n } else {\n // If content editable is unmounted we'll reset editor state back to original\n // (or pending) editor state since there will be no reconciliation\n this._editorState = pendingEditorState;\n this._pendingEditorState = null;\n this._window = null;\n }\n triggerListeners('root', this, false, nextRootElement, prevRootElement);\n }\n }\n\n /**\n * Gets the underlying HTMLElement associated with the LexicalNode for the given key.\n * @returns the HTMLElement rendered by the LexicalNode associated with the key.\n * @param key - the key of the LexicalNode.\n */\n getElementByKey(key) {\n return this._keyToDOMMap.get(key) || null;\n }\n\n /**\n * Gets the active editor state.\n * @returns The editor state\n */\n getEditorState() {\n return this._editorState;\n }\n\n /**\n * Imperatively set the EditorState. Triggers reconciliation like an update.\n * @param editorState - the state to set the editor\n * @param options - options for the update.\n */\n setEditorState(editorState, options) {\n if (editorState.isEmpty()) {\n {\n throw Error(`setEditorState: the editor state is empty. Ensure the editor state's root node never becomes empty.`);\n }\n }\n $flushRootMutations(this);\n const pendingEditorState = this._pendingEditorState;\n const tags = this._updateTags;\n const tag = options !== undefined ? options.tag : null;\n if (pendingEditorState !== null && !pendingEditorState.isEmpty()) {\n if (tag != null) {\n tags.add(tag);\n }\n $commitPendingUpdates(this);\n }\n this._pendingEditorState = editorState;\n this._dirtyType = FULL_RECONCILE;\n this._dirtyElements.set('root', false);\n this._compositionKey = null;\n if (tag != null) {\n tags.add(tag);\n }\n $commitPendingUpdates(this);\n }\n\n /**\n * Parses a SerializedEditorState (usually produced by {@link EditorState.toJSON}) and returns\n * and EditorState object that can be, for example, passed to {@link LexicalEditor.setEditorState}. Typically,\n * deserialization from JSON stored in a database uses this method.\n * @param maybeStringifiedEditorState\n * @param updateFn\n * @returns\n */\n parseEditorState(maybeStringifiedEditorState, updateFn) {\n const serializedEditorState = typeof maybeStringifiedEditorState === 'string' ? JSON.parse(maybeStringifiedEditorState) : maybeStringifiedEditorState;\n return parseEditorState(serializedEditorState, this, updateFn);\n }\n\n /**\n * Executes a read of the editor's state, with the\n * editor context available (useful for exporting and read-only DOM\n * operations). Much like update, but prevents any mutation of the\n * editor's state. Any pending updates will be flushed immediately before\n * the read.\n * @param callbackFn - A function that has access to read-only editor state.\n */\n read(callbackFn) {\n $commitPendingUpdates(this);\n return this.getEditorState().read(callbackFn, {\n editor: this\n });\n }\n\n /**\n * Executes an update to the editor state. The updateFn callback is the ONLY place\n * where Lexical editor state can be safely mutated.\n * @param updateFn - A function that has access to writable editor state.\n * @param options - A bag of options to control the behavior of the update.\n * @param options.onUpdate - A function to run once the update is complete.\n * Useful for synchronizing updates in some cases.\n * @param options.skipTransforms - Setting this to true will suppress all node\n * transforms for this update cycle.\n * @param options.tag - A tag to identify this update, in an update listener, for instance.\n * Some tags are reserved by the core and control update behavior in different ways.\n * @param options.discrete - If true, prevents this update from being batched, forcing it to\n * run synchronously.\n */\n update(updateFn, options) {\n updateEditor(this, updateFn, options);\n }\n\n /**\n * Focuses the editor\n * @param callbackFn - A function to run after the editor is focused.\n * @param options - A bag of options\n * @param options.defaultSelection - Where to move selection when the editor is\n * focused. Can be rootStart, rootEnd, or undefined. Defaults to rootEnd.\n */\n focus(callbackFn, options = {}) {\n const rootElement = this._rootElement;\n if (rootElement !== null) {\n // This ensures that iOS does not trigger caps lock upon focus\n rootElement.setAttribute('autocapitalize', 'off');\n updateEditor(this, () => {\n const selection = $getSelection();\n const root = $getRoot();\n if (selection !== null) {\n // Marking the selection dirty will force the selection back to it\n selection.dirty = true;\n } else if (root.getChildrenSize() !== 0) {\n if (options.defaultSelection === 'rootStart') {\n root.selectStart();\n } else {\n root.selectEnd();\n }\n }\n }, {\n onUpdate: () => {\n rootElement.removeAttribute('autocapitalize');\n if (callbackFn) {\n callbackFn();\n }\n },\n tag: 'focus'\n });\n // In the case where onUpdate doesn't fire (due to the focus update not\n // occuring).\n if (this._pendingEditorState === null) {\n rootElement.removeAttribute('autocapitalize');\n }\n }\n }\n\n /**\n * Removes focus from the editor.\n */\n blur() {\n const rootElement = this._rootElement;\n if (rootElement !== null) {\n rootElement.blur();\n }\n const domSelection = getDOMSelection(this._window);\n if (domSelection !== null) {\n domSelection.removeAllRanges();\n }\n }\n /**\n * Returns true if the editor is editable, false otherwise.\n * @returns True if the editor is editable, false otherwise.\n */\n isEditable() {\n return this._editable;\n }\n /**\n * Sets the editable property of the editor. When false, the\n * editor will not listen for user events on the underling contenteditable.\n * @param editable - the value to set the editable mode to.\n */\n setEditable(editable) {\n if (this._editable !== editable) {\n this._editable = editable;\n triggerListeners('editable', this, true, editable);\n }\n }\n /**\n * Returns a JSON-serializable javascript object NOT a JSON string.\n * You still must call JSON.stringify (or something else) to turn the\n * state into a string you can transfer over the wire and store in a database.\n *\n * See {@link LexicalNode.exportJSON}\n *\n * @returns A JSON-serializable javascript object\n */\n toJSON() {\n return {\n editorState: this._editorState.toJSON()\n };\n }\n}\nLexicalEditor.version = \"0.17.1+dev.esm\";\n\nexport { $addUpdateTag, $applyNodeReplacement, $cloneWithProperties, $copyNode, $createLineBreakNode, $createNodeSelection, $createParagraphNode, $createPoint, $createRangeSelection, $createRangeSelectionFromDom, $createTabNode, $createTextNode, $getAdjacentNode, $getCharacterOffsets, $getEditor, $getNearestNodeFromDOMNode, $getNearestRootOrShadowRoot, $getNodeByKey, $getNodeByKeyOrThrow, $getPreviousSelection, $getRoot, $getSelection, $getTextContent, $hasAncestor, $hasUpdateTag, $insertNodes, $isBlockElementNode, $isDecoratorNode, $isElementNode, $isInlineElementOrDecoratorNode, $isLeafNode, $isLineBreakNode, $isNodeSelection, $isParagraphNode, $isRangeSelection, $isRootNode, $isRootOrShadowRoot, $isTabNode, $isTextNode, $isTokenOrSegmented, $nodesOfType, $normalizeSelection as $normalizeSelection__EXPERIMENTAL, $parseSerializedNode, $selectAll, $setCompositionKey, $setSelection, $splitNode, ArtificialNode__DO_NOT_USE, BLUR_COMMAND, CAN_REDO_COMMAND, CAN_UNDO_COMMAND, CLEAR_EDITOR_COMMAND, CLEAR_HISTORY_COMMAND, CLICK_COMMAND, COMMAND_PRIORITY_CRITICAL, COMMAND_PRIORITY_EDITOR, COMMAND_PRIORITY_HIGH, COMMAND_PRIORITY_LOW, COMMAND_PRIORITY_NORMAL, CONTROLLED_TEXT_INSERTION_COMMAND, COPY_COMMAND, CUT_COMMAND, DELETE_CHARACTER_COMMAND, DELETE_LINE_COMMAND, DELETE_WORD_COMMAND, DRAGEND_COMMAND, DRAGOVER_COMMAND, DRAGSTART_COMMAND, DROP_COMMAND, DecoratorNode, ElementNode, FOCUS_COMMAND, FORMAT_ELEMENT_COMMAND, FORMAT_TEXT_COMMAND, INDENT_CONTENT_COMMAND, INSERT_LINE_BREAK_COMMAND, INSERT_PARAGRAPH_COMMAND, INSERT_TAB_COMMAND, IS_ALL_FORMATTING, IS_BOLD, IS_CODE, IS_HIGHLIGHT, IS_ITALIC, IS_STRIKETHROUGH, IS_SUBSCRIPT, IS_SUPERSCRIPT, IS_UNDERLINE, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_LEFT_COMMAND, KEY_ARROW_RIGHT_COMMAND, KEY_ARROW_UP_COMMAND, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND, KEY_DOWN_COMMAND, KEY_ENTER_COMMAND, KEY_ESCAPE_COMMAND, KEY_MODIFIER_COMMAND, KEY_SPACE_COMMAND, KEY_TAB_COMMAND, LineBreakNode, MOVE_TO_END, MOVE_TO_START, OUTDENT_CONTENT_COMMAND, PASTE_COMMAND, ParagraphNode, REDO_COMMAND, REMOVE_TEXT_COMMAND, RootNode, SELECTION_CHANGE_COMMAND, SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, SELECT_ALL_COMMAND, TEXT_TYPE_TO_FORMAT, TabNode, TextNode, UNDO_COMMAND, createCommand, createEditor, getEditorPropertyFromDOMNode, getNearestEditorFromDOMNode, isBlockDomNode, isCurrentlyReadOnlyMode, isHTMLAnchorElement, isHTMLElement, isInlineDomNode, isLexicalEditor, isSelectionCapturedInDecoratorInput, isSelectionWithinEditor, resetRandomKey };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction t(t){return{}}const e={},n={},r={},i={},s={},o={},l={},c={},a={},u={},f={},d={},h={},g={},_={},p={},y={},m={},x={},v={},S={},T={},C={},k={},b={},w={},N={},E={},P={},F={},D={},L={},O={},I={},A={},M={},W={},z={},B={},R={},K={},$={},J={},U={},V={},j=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,H=j&&\"documentMode\"in document?document.documentMode:null,q=j&&/Mac|iPod|iPhone|iPad/.test(navigator.platform),Q=j&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent),X=!(!j||!(\"InputEvent\"in window)||H)&&\"getTargetRanges\"in new window.InputEvent(\"input\"),Y=j&&/Version\\/[\\d.]+.*Safari/.test(navigator.userAgent),Z=j&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,G=j&&/Android/.test(navigator.userAgent),tt=j&&/^(?=.*Chrome).*/i.test(navigator.userAgent),et=j&&G&&tt,nt=j&&/AppleWebKit\\/[\\d.]+/.test(navigator.userAgent)&&!tt,rt=1,it=3,st=0,ot=1,lt=2,ct=0,at=1,ut=2,ft=1,dt=2,ht=4,gt=8,_t=16,pt=32,yt=64,mt=128,xt=112|(3|ht|gt)|mt,vt=1,St=2,Tt=3,Ct=4,kt=5,bt=6,wt=Y||Z||nt?\" \":\"​\",Nt=\"\\n\\n\",Et=Q?\" \":wt,Pt=\"֑-߿יִ-﷽ﹰ-ﻼ\",Ft=\"A-Za-zÀ-ÖØ-öø-ʸ̀-֐ࠀ-῿‎Ⰰ-﬜︀-﹯﻽-￿\",Dt=new RegExp(\"^[^\"+Ft+\"]*[\"+Pt+\"]\"),Lt=new RegExp(\"^[^\"+Pt+\"]*[\"+Ft+\"]\"),Ot={bold:1,code:16,highlight:mt,italic:2,strikethrough:ht,subscript:32,superscript:64,underline:gt},It={directionless:1,unmergeable:2},At={center:St,end:bt,justify:Ct,left:vt,right:Tt,start:kt},Mt={[St]:\"center\",[bt]:\"end\",[Ct]:\"justify\",[vt]:\"left\",[Tt]:\"right\",[kt]:\"start\"},Wt={normal:0,segmented:2,token:1},zt={[ct]:\"normal\",[ut]:\"segmented\",[at]:\"token\"};function Bt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}var Rt=Bt((function(t){const e=new URLSearchParams;e.append(\"code\",t);for(let t=1;t<arguments.length;t++)e.append(\"v\",arguments[t]);throw Error(`Minified Lexical error #${t}; visit https://lexical.dev/docs/error?${e} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));function Kt(...t){const e=[];for(const n of t)if(n&&\"string\"==typeof n)for(const[t]of n.matchAll(/\\S+/g))e.push(t);return e}const $t=100;let Jt=!1,Ut=0;function Vt(t){Ut=t.timeStamp}function jt(t,e,n){return e.__lexicalLineBreak===t||void 0!==t[`__lexicalKey_${n._key}`]}function Ht(t,e,n){const r=yn(n._window);let i=null,s=null;null!==r&&r.anchorNode===t&&(i=r.anchorOffset,s=r.focusOffset);const o=t.nodeValue;null!==o&&Me(e,o,i,s,!1)}function qt(t,e,n){if(yi(t)){const e=t.anchor.getNode();if(e.is(n)&&t.format!==e.getFormat())return!1}return e.nodeType===it&&n.isAttached()}function Qt(t,e,n){Jt=!0;const r=performance.now()-Ut>$t;try{hs(t,(()=>{const i=Oi()||function(t){return t.getEditorState().read((()=>{const t=Oi();return null!==t?t.clone():null}))}(t),s=new Map,o=t.getRootElement(),l=t._editorState,c=t._blockCursorElement;let a=!1,u=\"\";for(let n=0;n<e.length;n++){const f=e[n],d=f.type,h=f.target;let g=Ce(h,l);if(!(null===g&&h!==o||ms(g)))if(\"characterData\"===d)r&&oi(g)&&qt(i,h,g)&&Ht(h,g,t);else if(\"childList\"===d){a=!0;const e=f.addedNodes;for(let n=0;n<e.length;n++){const r=e[n],i=Te(r),s=r.parentNode;if(null!=s&&r!==c&&null===i&&(\"BR\"!==r.nodeName||!jt(r,s,t))){if(Q){const t=r.innerText||r.nodeValue;t&&(u+=t)}s.removeChild(r)}}const n=f.removedNodes,r=n.length;if(r>0){let e=0;for(let i=0;i<r;i++){const r=n[i];(\"BR\"===r.nodeName&&jt(r,h,t)||c===r)&&(h.appendChild(r),e++)}r!==e&&(h===o&&(g=Ne(l)),s.set(h,g))}}}if(s.size>0)for(const[e,n]of s)if(_s(n)){const r=n.getChildrenKeys();let i=e.firstChild;for(let n=0;n<r.length;n++){const s=r[n],o=t.getElementByKey(s);null!==o&&(null==i?(e.appendChild(o),i=o):i!==o&&e.replaceChild(o,i),i=i.nextSibling)}}else oi(n)&&n.markDirty();const f=n.takeRecords();if(f.length>0){for(let e=0;e<f.length;e++){const n=f[e],r=n.addedNodes,i=n.target;for(let e=0;e<r.length;e++){const n=r[e],s=n.parentNode;null==s||\"BR\"!==n.nodeName||jt(n,i,t)||s.removeChild(n)}}n.takeRecords()}null!==i&&(a&&(i.dirty=!0,Ee(i)),Q&&Ye(t)&&i.insertRawText(u))}))}finally{Jt=!1}}function Xt(t){const e=t._observer;if(null!==e){Qt(t,e.takeRecords(),e)}}function Yt(t){!function(t){0===Ut&&on(t).addEventListener(\"textInput\",Vt,!0)}(t),t._observer=new MutationObserver(((e,n)=>{Qt(t,e,n)}))}function Zt(t,e){const n=t.__mode,r=t.__format,i=t.__style,s=e.__mode,o=e.__format,l=e.__style;return!(null!==n&&n!==s||null!==r&&r!==o||null!==i&&i!==l)}function Gt(t,e){const n=t.mergeWithSibling(e),r=ts()._normalizedNodes;return r.add(t.__key),r.add(e.__key),n}function te(t){let e,n,r=t;if(\"\"!==r.__text||!r.isSimpleText()||r.isUnmergeable()){for(;null!==(e=r.getPreviousSibling())&&oi(e)&&e.isSimpleText()&&!e.isUnmergeable();){if(\"\"!==e.__text){if(Zt(e,r)){r=Gt(e,r);break}break}e.remove()}for(;null!==(n=r.getNextSibling())&&oi(n)&&n.isSimpleText()&&!n.isUnmergeable();){if(\"\"!==n.__text){if(Zt(r,n)){r=Gt(r,n);break}break}n.remove()}}else r.remove()}function ee(t){return ne(t.anchor),ne(t.focus),t}function ne(t){for(;\"element\"===t.type;){const e=t.getNode(),n=t.offset;let r,i;if(n===e.getChildrenSize()?(r=e.getChildAtIndex(n-1),i=!0):(r=e.getChildAtIndex(n),i=!1),oi(r)){t.set(r.__key,i?r.getTextContentSize():0,\"text\");break}if(!_s(r))break;t.set(r.__key,i?r.getChildrenSize():0,\"element\")}}let re=1;function ie(){re=1}const se=\"function\"==typeof queueMicrotask?queueMicrotask:t=>{Promise.resolve().then(t)};function oe(t){const e=document.activeElement;if(null===e)return!1;const n=e.nodeName;return ms(Ce(t))&&(\"INPUT\"===n||\"TEXTAREA\"===n||\"true\"===e.contentEditable&&null==ue(e))}function le(t,e,n){const r=t.getRootElement();try{return null!==r&&r.contains(e)&&r.contains(n)&&null!==e&&!oe(e)&&ae(e)===t}catch(t){return!1}}function ce(t){return t instanceof Ms}function ae(t){let e=t;for(;null!=e;){const t=ue(e);if(ce(t))return t;e=en(e)}return null}function ue(t){return t?t.__lexicalEditor:null}function fe(t){return t.isToken()||t.isSegmented()}function de(t){return t.nodeType===it}function he(t){let e=t;for(;null!=e;){if(de(e))return e;e=e.firstChild}return null}function ge(t,e,n){const r=Ot[e];if(null!==n&&(t&r)==(n&r))return t;let i=t^r;return\"subscript\"===e?i&=~Ot.superscript:\"superscript\"===e&&(i&=~Ot.subscript),i}function _e(t){return oi(t)||$r(t)||ms(t)}function pe(t,e){if(null!=e)return void(t.__key=e);Yi(),Zi();const n=ts(),r=Gi(),i=\"\"+re++;r._nodeMap.set(i,t),_s(t)?n._dirtyElements.set(i,!0):n._dirtyLeaves.add(i),n._cloneNotNeeded.add(i),n._dirtyType=ot,t.__key=i}function ye(t){const e=t.getParent();if(null!==e){const n=t.getWritable(),r=e.getWritable(),i=t.getPreviousSibling(),s=t.getNextSibling();if(null===i)if(null!==s){const t=s.getWritable();r.__first=s.__key,t.__prev=null}else r.__first=null;else{const t=i.getWritable();if(null!==s){const e=s.getWritable();e.__prev=t.__key,t.__next=e.__key}else t.__next=null;n.__prev=null}if(null===s)if(null!==i){const t=i.getWritable();r.__last=i.__key,t.__next=null}else r.__last=null;else{const t=s.getWritable();if(null!==i){const e=i.getWritable();e.__next=t.__key,t.__prev=e.__key}else t.__prev=null;n.__next=null}r.__size--,n.__parent=null}}function me(t){Zi();const e=t.getLatest(),n=e.__parent,r=Gi(),i=ts(),s=r._nodeMap,o=i._dirtyElements;null!==n&&function(t,e,n){let r=t;for(;null!==r;){if(n.has(r))return;const t=e.get(r);if(void 0===t)break;n.set(r,!1),r=t.__parent}}(n,s,o);const l=e.__key;i._dirtyType=ot,_s(t)?o.set(l,!0):i._dirtyLeaves.add(l)}function xe(t){Yi();const e=ts(),n=e._compositionKey;if(t!==n){if(e._compositionKey=t,null!==n){const t=Se(n);null!==t&&t.getWritable()}if(null!==t){const e=Se(t);null!==e&&e.getWritable()}}}function ve(){if(Xi())return null;return ts()._compositionKey}function Se(t,e){const n=(e||Gi())._nodeMap.get(t);return void 0===n?null:n}function Te(t,e){const n=t[`__lexicalKey_${ts()._key}`];return void 0!==n?Se(n,e):null}function Ce(t,e){let n=t;for(;null!=n;){const t=Te(n,e);if(null!==t)return t;n=en(n)}return null}function ke(t){const e=t._decorators,n=Object.assign({},e);return t._pendingDecorators=n,n}function be(t){return t.read((()=>we().getTextContent()))}function we(){return Ne(Gi())}function Ne(t){return t._nodeMap.get(\"root\")}function Ee(t){Yi();const e=Gi();null!==t&&(t.dirty=!0,t.setCachedNodes(null)),e._selection=t}function Pe(t){const e=ts(),n=function(t,e){let n=t;for(;null!=n;){const t=n[`__lexicalKey_${e._key}`];if(void 0!==t)return t;n=en(n)}return null}(t,e);if(null===n){return t===e.getRootElement()?Se(\"root\"):null}return Se(n)}function Fe(t,e){return e?t.getTextContentSize():0}function De(t){return/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g.test(t)}function Le(t){const e=[];let n=t;for(;null!==n;)e.push(n),n=n._parentEditor;return e}function Oe(){return Math.random().toString(36).replace(/[^a-z]+/g,\"\").substr(0,5)}function Ie(t){return t.nodeType===it?t.nodeValue:null}function Ae(t,e,n){const r=yn(e._window);if(null===r)return;const i=r.anchorNode;let{anchorOffset:s,focusOffset:o}=r;if(null!==i){let e=Ie(i);const r=Ce(i);if(null!==e&&oi(r)){if(e===wt&&n){const t=n.length;e=n,s=t,o=t}null!==e&&Me(r,e,s,o,t)}}}function Me(t,e,n,r,i){let s=t;if(s.isAttached()&&(i||!s.isDirty())){const o=s.isComposing();let l=e;(o||i)&&e[e.length-1]===wt&&(l=e.slice(0,-1));const c=s.getTextContent();if(i||l!==c){if(\"\"===l){if(xe(null),Y||Z||nt)s.remove();else{const t=ts();setTimeout((()=>{t.update((()=>{s.isAttached()&&s.remove()}))}),20)}return}const e=s.getParent(),i=Ii(),c=s.getTextContentSize(),a=ve(),u=s.getKey();if(s.isToken()||null!==a&&u===a&&!o||yi(i)&&(null!==e&&!e.canInsertTextBefore()&&0===i.anchor.offset||i.anchor.key===t.__key&&0===i.anchor.offset&&!s.canInsertTextBefore()&&!o||i.focus.key===t.__key&&i.focus.offset===c&&!s.canInsertTextAfter()&&!o))return void s.markDirty();const f=Oi();if(!yi(f)||null===n||null===r)return void s.setTextContent(l);if(f.setTextNodeRange(s,n,s,r),s.isSegmented()){const t=si(s.getTextContent());s.replace(t),s=t}s.setTextContent(l)}}}function We(t,e){if(e.isSegmented())return!0;if(!t.isCollapsed())return!1;const n=t.anchor.offset,r=e.getParentOrThrow(),i=e.isToken();return 0===n?!e.canInsertTextBefore()||!r.canInsertTextBefore()&&!e.isComposing()||i||function(t){const e=t.getPreviousSibling();return(oi(e)||_s(e)&&e.isInline())&&!e.canInsertTextAfter()}(e):n===e.getTextContentSize()&&(!e.canInsertTextAfter()||!r.canInsertTextAfter()&&!e.isComposing()||i)}function ze(t){return\"ArrowLeft\"===t}function Be(t){return\"ArrowRight\"===t}function Re(t,e){return q?t:e}function Ke(t){return\"Enter\"===t}function $e(t){return\"Backspace\"===t}function Je(t){return\"Delete\"===t}function Ue(t,e,n){return\"a\"===t.toLowerCase()&&Re(e,n)}function Ve(){const t=we();Ee(ee(t.select(0,t.getChildrenSize())))}function je(t,e){void 0===t.__lexicalClassNameCache&&(t.__lexicalClassNameCache={});const n=t.__lexicalClassNameCache,r=n[e];if(void 0!==r)return r;const i=t[e];if(\"string\"==typeof i){const t=Kt(i);return n[e]=t,t}return i}function He(t,e,n,r,i){if(0===n.size)return;const s=r.__type,o=r.__key,l=e.get(s);void 0===l&&Rt(33,s);const c=l.klass;let a=t.get(c);void 0===a&&(a=new Map,t.set(c,a));const u=a.get(o),f=\"destroyed\"===u&&\"created\"===i;(void 0===u||f)&&a.set(o,f?\"updated\":i)}function qe(t){const e=t.getType(),n=Gi();if(n._readOnly){const t=En(n).get(e);return t?Array.from(t.values()):[]}const r=n._nodeMap,i=[];for(const[,n]of r)n instanceof t&&n.__type===e&&n.isAttached()&&i.push(n);return i}function Qe(t,e,n){const r=t.getParent();let i=n,s=t;return null!==r&&(e&&0===n?(i=s.getIndexWithinParent(),s=r):e||n!==s.getChildrenSize()||(i=s.getIndexWithinParent()+1,s=r)),s.getChildAtIndex(e?i-1:i)}function Xe(t,e){const n=t.offset;if(\"element\"===t.type){return Qe(t.getNode(),e,n)}{const r=t.getNode();if(e&&0===n||!e&&n===r.getTextContentSize()){const t=e?r.getPreviousSibling():r.getNextSibling();return null===t?Qe(r.getParentOrThrow(),e,r.getIndexWithinParent()+(e?0:1)):t}}return null}function Ye(t){const e=on(t).event,n=e&&e.inputType;return\"insertFromPaste\"===n||\"insertFromPasteAsQuotation\"===n}function Ze(t,e,n){return us(t,e,n)}function Ge(t){return!vs(t)&&!t.isLastChild()&&!t.isInline()}function tn(t,e){const n=t._keyToDOMMap.get(e);return void 0===n&&Rt(75,e),n}function en(t){const e=t.assignedSlot||t.parentElement;return null!==e&&11===e.nodeType?e.host:e}function nn(t){return ts()._updateTags.has(t)}function rn(t){Yi();ts()._updateTags.add(t)}function sn(t,e){let n=t.getParent();for(;null!==n;){if(n.is(e))return!0;n=n.getParent()}return!1}function on(t){const e=t._window;return null===e&&Rt(78),e}function ln(t){return _s(t)&&t.isInline()||ms(t)&&t.isInline()}function cn(t){let e=t.getParentOrThrow();for(;null!==e;){if(an(e))return e;e=e.getParentOrThrow()}return e}function an(t){return vs(t)||_s(t)&&t.isShadowRoot()}function un(t){const e=t.constructor.clone(t);return pe(e,null),e}function fn(t){const e=ts(),n=t.constructor.getType(),r=e._nodes.get(n);void 0===r&&Rt(97);const i=r.replace;if(null!==i){const e=i(t);return e instanceof t.constructor||Rt(98),e}return t}function dn(t,e){!vs(t.getParent())||_s(e)||ms(e)||Rt(99)}function hn(t){const e=Se(t);return null===e&&Rt(63,t),e}function gn(t){return(ms(t)||_s(t)&&!t.canBeEmpty())&&!t.isInline()}function _n(t,e,n){n.style.removeProperty(\"caret-color\"),e._blockCursorElement=null;const r=t.parentElement;null!==r&&r.removeChild(t)}function pn(t,e,n){let r=t._blockCursorElement;if(yi(n)&&n.isCollapsed()&&\"element\"===n.anchor.type&&e.contains(document.activeElement)){const i=n.anchor,s=i.getNode(),o=i.offset;let l=!1,c=null;if(o===s.getChildrenSize()){gn(s.getChildAtIndex(o-1))&&(l=!0)}else{const e=s.getChildAtIndex(o);if(gn(e)){const n=e.getPreviousSibling();(null===n||gn(n))&&(l=!0,c=t.getElementByKey(e.__key))}}if(l){const n=t.getElementByKey(s.__key);return null===r&&(t._blockCursorElement=r=function(t){const e=t.theme,n=document.createElement(\"div\");n.contentEditable=\"false\",n.setAttribute(\"data-lexical-cursor\",\"true\");let r=e.blockCursor;if(void 0!==r){if(\"string\"==typeof r){const t=Kt(r);r=e.blockCursor=t}void 0!==r&&n.classList.add(...r)}return n}(t._config)),e.style.caretColor=\"transparent\",void(null===c?n.appendChild(r):n.insertBefore(r,c))}}null!==r&&_n(r,t,e)}function yn(t){return j?(t||window).getSelection():null}function mn(t,e){let n=t.getChildAtIndex(e);null==n&&(n=t),an(t)&&Rt(102);const r=t=>{const e=t.getParentOrThrow(),i=an(e),s=t!==n||i?un(t):t;if(i)return _s(t)&&_s(s)||Rt(133),t.insertAfter(s),[t,s,s];{const[n,i,o]=r(e),l=t.getNextSiblings();return o.append(s,...l),[n,i,s]}},[i,s]=r(n);return[i,s]}function xn(t){return vn(t)&&\"A\"===t.tagName}function vn(t){return 1===t.nodeType}function Sn(t){const e=new RegExp(/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var|#text)$/,\"i\");return null!==t.nodeName.match(e)}function Tn(t){const e=new RegExp(/^(address|article|aside|blockquote|canvas|dd|div|dl|dt|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hr|li|main|nav|noscript|ol|p|pre|section|table|td|tfoot|ul|video)$/,\"i\");return null!==t.nodeName.match(e)}function Cn(t){if(vs(t)||ms(t)&&!t.isInline())return!0;if(!_s(t)||an(t))return!1;const e=t.getFirstChild(),n=null===e||$r(e)||oi(e)||e.isInline();return!t.isInline()&&!1!==t.canBeEmpty()&&n}function kn(t,e){let n=t;for(;null!==n&&null!==n.getParent()&&!e(n);)n=n.getParentOrThrow();return e(n)?n:null}function bn(){return ts()}const wn=new WeakMap,Nn=new Map;function En(t){if(!t._readOnly&&t.isEmpty())return Nn;t._readOnly||Rt(192);let e=wn.get(t);if(!e){e=new Map,wn.set(t,e);for(const[n,r]of t._nodeMap){const t=r.__type;let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(n,r)}}return e}function Pn(t){const e=t.constructor.clone(t);return e.afterCloneFrom(t),e}function Fn(t,e,n,r,i,s){let o=t.getFirstChild();for(;null!==o;){const t=o.__key;o.__parent===e&&(_s(o)&&Fn(o,t,n,r,i,s),n.has(t)||s.delete(t),i.push(t)),o=o.getNextSibling()}}let Dn,Ln,On,In,An,Mn,Wn,zn,Bn,Rn,Kn=\"\",$n=\"\",Jn=null,Un=\"\",Vn=\"\",jn=!1,Hn=!1,qn=null;function Qn(t,e){const n=Wn.get(t);if(null!==e){const n=dr(t);n.parentNode===e&&e.removeChild(n)}if(zn.has(t)||Ln._keyToDOMMap.delete(t),_s(n)){const t=lr(n,Wn);Xn(t,0,t.length-1,null)}void 0!==n&&He(Rn,On,In,n,\"destroyed\")}function Xn(t,e,n,r){let i=e;for(;i<=n;++i){const e=t[i];void 0!==e&&Qn(e,r)}}function Yn(t,e){t.setProperty(\"text-align\",e)}const Zn=\"40px\";function Gn(t,e){const n=Dn.theme.indent;if(\"string\"==typeof n){const r=t.classList.contains(n);e>0&&!r?t.classList.add(n):e<1&&r&&t.classList.remove(n)}const r=getComputedStyle(t).getPropertyValue(\"--lexical-indent-base-value\")||Zn;t.style.setProperty(\"padding-inline-start\",0===e?\"\":`calc(${e} * ${r})`)}function tr(t,e){const n=t.style;0===e?Yn(n,\"\"):e===vt?Yn(n,\"left\"):e===St?Yn(n,\"center\"):e===Tt?Yn(n,\"right\"):e===Ct?Yn(n,\"justify\"):e===kt?Yn(n,\"start\"):e===bt&&Yn(n,\"end\")}function er(t,e,n){const r=zn.get(t);void 0===r&&Rt(60);const i=r.createDOM(Dn,Ln);if(function(t,e,n){const r=n._keyToDOMMap;e[\"__lexicalKey_\"+n._key]=t,r.set(t,e)}(t,i,Ln),oi(r)?i.setAttribute(\"data-lexical-text\",\"true\"):ms(r)&&i.setAttribute(\"data-lexical-decorator\",\"true\"),_s(r)){const t=r.__indent,e=r.__size;if(0!==t&&Gn(i,t),0!==e){const t=e-1;!function(t,e,n,r){const i=$n;$n=\"\",nr(t,n,0,e,r,null),sr(n,r),$n=i}(lr(r,zn),t,r,i)}const n=r.__format;0!==n&&tr(i,n),r.isInline()||ir(null,r,i),Ge(r)&&(Kn+=Nt,Vn+=Nt)}else{const e=r.getTextContent();if(ms(r)){const e=r.decorate(Ln,Dn);null!==e&&ar(t,e),i.contentEditable=\"false\"}else oi(r)&&(r.isDirectionless()||($n+=e));Kn+=e,Vn+=e}if(null!==e)if(null!=n)e.insertBefore(i,n);else{const t=e.__lexicalLineBreak;null!=t?e.insertBefore(i,t):e.appendChild(i)}return He(Rn,On,In,r,\"created\"),i}function nr(t,e,n,r,i,s){const o=Kn;Kn=\"\";let l=n;for(;l<=r;++l){er(t[l],i,s);const e=zn.get(t[l]);null!==e&&oi(e)&&(null===Jn&&(Jn=e.getFormat()),\"\"===Un&&(Un=e.getStyle()))}Ge(e)&&(Kn+=Nt),i.__lexicalTextContent=Kn,Kn=o+Kn}function rr(t,e){const n=e.get(t);return $r(n)||ms(n)&&n.isInline()}function ir(t,e,n){const r=null!==t&&(0===t.__size||rr(t.__last,Wn)),i=0===e.__size||rr(e.__last,zn);if(r){if(!i){const t=n.__lexicalLineBreak;if(null!=t)try{n.removeChild(t)}catch(e){if(\"object\"==typeof e&&null!=e){const r=`${e.toString()} Parent: ${n.tagName}, child: ${t.tagName}.`;throw new Error(r)}throw e}n.__lexicalLineBreak=null}}else if(i){const t=document.createElement(\"br\");n.__lexicalLineBreak=t,n.appendChild(t)}}function sr(t,e){const n=e.__lexicalDirTextContent,r=e.__lexicalDir;if(n!==$n||r!==qn){const n=\"\"===$n,s=n?qn:(i=$n,Dt.test(i)?\"rtl\":Lt.test(i)?\"ltr\":null);if(s!==r){const i=e.classList,o=Dn.theme;let l=null!==r?o[r]:void 0,c=null!==s?o[s]:void 0;if(void 0!==l){if(\"string\"==typeof l){const t=Kt(l);l=o[r]=t}i.remove(...l)}if(null===s||n&&\"ltr\"===s)e.removeAttribute(\"dir\");else{if(void 0!==c){if(\"string\"==typeof c){const t=Kt(c);c=o[s]=t}void 0!==c&&i.add(...c)}e.dir=s}if(!Hn){t.getWritable().__dir=s}}qn=s,e.__lexicalDirTextContent=$n,e.__lexicalDir=s}var i}function or(t,e,n){const r=$n;var i;$n=\"\",Jn=null,Un=\"\",function(t,e,n){const r=Kn,i=t.__size,s=e.__size;if(Kn=\"\",1===i&&1===s){const r=t.__first,i=e.__first;if(r===i)cr(r,n);else{const t=dr(r),e=er(i,null,null);try{n.replaceChild(e,t)}catch(s){if(\"object\"==typeof s&&null!=s){const o=`${s.toString()} Parent: ${n.tagName}, new child: {tag: ${e.tagName} key: ${i}}, old child: {tag: ${t.tagName}, key: ${r}}.`;throw new Error(o)}throw s}Qn(r,null)}const s=zn.get(i);oi(s)&&(null===Jn&&(Jn=s.getFormat()),\"\"===Un&&(Un=s.getStyle()))}else{const r=lr(t,Wn),o=lr(e,zn);if(0===i)0!==s&&nr(o,e,0,s-1,n,null);else if(0===s){if(0!==i){const t=null==n.__lexicalLineBreak;Xn(r,0,i-1,t?null:n),t&&(n.textContent=\"\")}}else!function(t,e,n,r,i,s){const o=r-1,l=i-1;let c,a,u=(h=s,h.firstChild),f=0,d=0;var h;for(;f<=o&&d<=l;){const t=e[f],r=n[d];if(t===r)u=ur(cr(r,s)),f++,d++;else{void 0===c&&(c=new Set(e)),void 0===a&&(a=new Set(n));const i=a.has(t),o=c.has(r);if(i)if(o){const t=tn(Ln,r);t===u?u=ur(cr(r,s)):(null!=u?s.insertBefore(t,u):s.appendChild(t),cr(r,s)),f++,d++}else er(r,s,u),d++;else u=ur(dr(t)),Qn(t,s),f++}const i=zn.get(r);null!==i&&oi(i)&&(null===Jn&&(Jn=i.getFormat()),\"\"===Un&&(Un=i.getStyle()))}const g=f>o,_=d>l;if(g&&!_){const e=n[l+1];nr(n,t,d,l,s,void 0===e?null:Ln.getElementByKey(e))}else _&&!g&&Xn(e,f,o,s)}(e,r,o,i,s,n)}Ge(e)&&(Kn+=Nt);n.__lexicalTextContent=Kn,Kn=r+Kn}(t,e,n),sr(e,n),Es(i=e)&&null!=Jn&&Jn!==i.__textFormat&&!Hn&&(i.setTextFormat(Jn),i.setTextStyle(Un)),function(t){Es(t)&&\"\"!==Un&&Un!==t.__textStyle&&!Hn&&t.setTextStyle(Un)}(e),$n=r}function lr(t,e){const n=[];let r=t.__first;for(;null!==r;){const t=e.get(r);void 0===t&&Rt(101),n.push(r),r=t.__next}return n}function cr(t,e){const n=Wn.get(t);let r=zn.get(t);void 0!==n&&void 0!==r||Rt(61);const i=jn||Mn.has(t)||An.has(t),s=tn(Ln,t);if(n===r&&!i){if(_s(n)){const t=s.__lexicalTextContent;void 0!==t&&(Kn+=t,Vn+=t);const e=s.__lexicalDirTextContent;void 0!==e&&($n+=e)}else{const t=n.getTextContent();oi(n)&&!n.isDirectionless()&&($n+=t),Vn+=t,Kn+=t}return s}if(n!==r&&i&&He(Rn,On,In,r,\"updated\"),r.updateDOM(n,s,Dn)){const n=er(t,null,null);return null===e&&Rt(62),e.replaceChild(n,s),Qn(t,null),n}if(_s(n)&&_s(r)){const t=r.__indent;t!==n.__indent&&Gn(s,t);const e=r.__format;e!==n.__format&&tr(s,e),i&&(or(n,r,s),vs(r)||r.isInline()||ir(n,r,s)),Ge(r)&&(Kn+=Nt,Vn+=Nt)}else{const e=r.getTextContent();if(ms(r)){const e=r.decorate(Ln,Dn);null!==e&&ar(t,e)}else oi(r)&&!r.isDirectionless()&&($n+=e);Kn+=e,Vn+=e}if(!Hn&&vs(r)&&r.__cachedText!==Vn){const t=r.getWritable();t.__cachedText=Vn,r=t}return s}function ar(t,e){let n=Ln._pendingDecorators;const r=Ln._decorators;if(null===n){if(r[t]===e)return;n=ke(Ln)}n[t]=e}function ur(t){let e=t.nextSibling;return null!==e&&e===Ln._blockCursorElement&&(e=e.nextSibling),e}function fr(t,e,n,r,i,s){Kn=\"\",Vn=\"\",$n=\"\",jn=r===lt,qn=null,Ln=n,Dn=n._config,On=n._nodes,In=Ln._listeners.mutation,An=i,Mn=s,Wn=t._nodeMap,zn=e._nodeMap,Hn=e._readOnly,Bn=new Map(n._keyToDOMMap);const o=new Map;return Rn=o,cr(\"root\",null),Ln=void 0,On=void 0,An=void 0,Mn=void 0,Wn=void 0,zn=void 0,Dn=void 0,Bn=void 0,Rn=void 0,o}function dr(t){const e=Bn.get(t);return void 0===e&&Rt(75,t),e}const hr=Object.freeze({}),gr=30,_r=[[\"keydown\",function(t,e){if(pr=t.timeStamp,yr=t.key,e.isComposing())return;const{key:n,shiftKey:r,ctrlKey:o,metaKey:l,altKey:c}=t;if(Ze(e,_,t))return;if(null==n)return;if(function(t,e,n,r){return Be(t)&&!e&&!r&&!n}(n,o,c,l))Ze(e,p,t);else if(function(t,e,n,r,i){return Be(t)&&!r&&!n&&(e||i)}(n,o,r,c,l))Ze(e,y,t);else if(function(t,e,n,r){return ze(t)&&!e&&!r&&!n}(n,o,c,l))Ze(e,m,t);else if(function(t,e,n,r,i){return ze(t)&&!r&&!n&&(e||i)}(n,o,r,c,l))Ze(e,x,t);else if(function(t,e,n){return function(t){return\"ArrowUp\"===t}(t)&&!e&&!n}(n,o,l))Ze(e,v,t);else if(function(t,e,n){return function(t){return\"ArrowDown\"===t}(t)&&!e&&!n}(n,o,l))Ze(e,S,t);else if(function(t,e){return Ke(t)&&e}(n,r))Cr=!0,Ze(e,T,t);else if(function(t){return\" \"===t}(n))Ze(e,C,t);else if(function(t,e){return q&&e&&\"o\"===t.toLowerCase()}(n,o))t.preventDefault(),Cr=!0,Ze(e,s,!0);else if(function(t,e){return Ke(t)&&!e}(n,r))Cr=!1,Ze(e,T,t);else if(function(t,e,n,r){return q?!e&&!n&&($e(t)||\"h\"===t.toLowerCase()&&r):!(r||e||n)&&$e(t)}(n,c,l,o))$e(n)?Ze(e,k,t):(t.preventDefault(),Ze(e,i,!0));else if(function(t){return\"Escape\"===t}(n))Ze(e,b,t);else if(function(t,e,n,r,i){return q?!(n||r||i)&&(Je(t)||\"d\"===t.toLowerCase()&&e):!(e||r||i)&&Je(t)}(n,o,r,c,l))Je(n)?Ze(e,w,t):(t.preventDefault(),Ze(e,i,!1));else if(function(t,e,n){return $e(t)&&(q?e:n)}(n,c,o))t.preventDefault(),Ze(e,u,!0);else if(function(t,e,n){return Je(t)&&(q?e:n)}(n,c,o))t.preventDefault(),Ze(e,u,!1);else if(function(t,e){return q&&e&&$e(t)}(n,l))t.preventDefault(),Ze(e,f,!0);else if(function(t,e){return q&&e&&Je(t)}(n,l))t.preventDefault(),Ze(e,f,!1);else if(function(t,e,n,r){return\"b\"===t.toLowerCase()&&!e&&Re(n,r)}(n,c,l,o))t.preventDefault(),Ze(e,d,\"bold\");else if(function(t,e,n,r){return\"u\"===t.toLowerCase()&&!e&&Re(n,r)}(n,c,l,o))t.preventDefault(),Ze(e,d,\"underline\");else if(function(t,e,n,r){return\"i\"===t.toLowerCase()&&!e&&Re(n,r)}(n,c,l,o))t.preventDefault(),Ze(e,d,\"italic\");else if(function(t,e,n,r){return\"Tab\"===t&&!e&&!n&&!r}(n,c,o,l))Ze(e,N,t);else if(function(t,e,n,r){return\"z\"===t.toLowerCase()&&!e&&Re(n,r)}(n,r,l,o))t.preventDefault(),Ze(e,h,void 0);else if(function(t,e,n,r){return q?\"z\"===t.toLowerCase()&&n&&e:\"y\"===t.toLowerCase()&&r||\"z\"===t.toLowerCase()&&r&&e}(n,r,l,o))t.preventDefault(),Ze(e,g,void 0);else{xi(e._editorState._selection)?!function(t,e,n,r){return!e&&\"c\"===t.toLowerCase()&&(q?n:r)}(n,r,l,o)?!function(t,e,n,r){return!e&&\"x\"===t.toLowerCase()&&(q?n:r)}(n,r,l,o)?Ue(n,l,o)&&(t.preventDefault(),Ze(e,z,t)):(t.preventDefault(),Ze(e,W,t)):(t.preventDefault(),Ze(e,M,t)):!Q&&Ue(n,l,o)&&(t.preventDefault(),Ze(e,z,t))}(function(t,e,n,r){return t||e||n||r})(o,r,c,l)&&Ze(e,V,t)}],[\"pointerdown\",function(t,e){const n=t.target,r=t.pointerType;n instanceof Node&&\"touch\"!==r&&hs(e,(()=>{ms(Ce(n))||(Tr=!0)}))}],[\"compositionstart\",function(t,e){hs(e,(()=>{const n=Oi();if(yi(n)&&!e.isComposing()){const r=n.anchor,i=n.anchor.getNode();xe(r.key),(t.timeStamp<pr+gr||\"element\"===r.type||!n.isCollapsed()||i.getFormat()!==n.format||oi(i)&&i.getStyle()!==n.style)&&Ze(e,l,Et)}}))}],[\"compositionend\",function(t,e){Q?kr=!0:hs(e,(()=>{Fr(e,t.data)}))}],[\"input\",function(t,e){t.stopPropagation(),hs(e,(()=>{const n=Oi(),r=t.data,i=Pr(t);if(null!=r&&yi(n)&&wr(n,i,r,t.timeStamp,!1)){kr&&(Fr(e,r),kr=!1);const i=n.anchor.getNode(),s=yn(e._window);if(null===s)return;const o=n.isBackward(),c=o?n.anchor.offset:n.focus.offset,a=o?n.focus.offset:n.anchor.offset;X&&!n.isCollapsed()&&oi(i)&&null!==s.anchorNode&&i.getTextContent().slice(0,c)+r+i.getTextContent().slice(c+a)===Ie(s.anchorNode)||Ze(e,l,r);const u=r.length;Q&&u>1&&\"insertCompositionText\"===t.inputType&&!e.isComposing()&&(n.anchor.offset-=u),Y||Z||nt||!e.isComposing()||(pr=0,xe(null))}else{Ae(!1,e,null!==r?r:void 0),kr&&(Fr(e,r||void 0),kr=!1)}Yi(),Xt(ts())})),xr=null}],[\"click\",function(t,e){hs(e,(()=>{const n=Oi(),i=yn(e._window),s=Ii();if(i)if(yi(n)){const e=n.anchor,r=e.getNode();if(\"element\"===e.type&&0===e.offset&&n.isCollapsed()&&!vs(r)&&1===we().getChildrenSize()&&r.getTopLevelElementOrThrow().isEmpty()&&null!==s&&n.is(s))i.removeAllRanges(),n.dirty=!0;else if(3===t.detail&&!n.isCollapsed()){r!==n.focus.getNode()&&(_s(r)?r.select(0):r.getParentOrThrow().select(0))}}else if(\"touch\"===t.pointerType){const n=i.anchorNode;if(null!==n){const r=n.nodeType;if(r===rt||r===it){Ee(Li(s,i,e,t))}}}Ze(e,r,t)}))}],[\"cut\",hr],[\"copy\",hr],[\"dragstart\",hr],[\"dragover\",hr],[\"dragend\",hr],[\"paste\",hr],[\"focus\",hr],[\"blur\",hr],[\"drop\",hr]];X&&_r.push([\"beforeinput\",(t,e)=>function(t,e){const n=t.inputType,r=Pr(t);if(\"deleteCompositionText\"===n||Q&&Ye(e))return;if(\"insertCompositionText\"===n)return;hs(e,(()=>{const _=Oi();if(\"deleteContentBackward\"===n){if(null===_){const t=Ii();if(!yi(t))return;Ee(t.clone())}if(yi(_)){const n=_.anchor.key===_.focus.key;if(p=t.timeStamp,\"MediaLast\"===yr&&p<pr+gr&&e.isComposing()&&n){if(xe(null),pr=0,setTimeout((()=>{hs(e,(()=>{xe(null)}))}),gr),yi(_)){const t=_.anchor.getNode();t.markDirty(),_.format=t.getFormat(),oi(t)||Rt(142),_.style=t.getStyle()}}else{xe(null),t.preventDefault();const r=_.anchor.getNode().getTextContent(),s=0===_.anchor.offset&&_.focus.offset===r.length;et&&n&&!s||Ze(e,i,!0)}return}}var p;if(!yi(_))return;const y=t.data;null!==xr&&Ae(!1,e,xr),_.dirty&&null===xr||!_.isCollapsed()||vs(_.anchor.getNode())||null===r||_.applyDOMRange(r),xr=null;const m=_.anchor,x=_.focus,v=m.getNode(),S=x.getNode();if(\"insertText\"!==n&&\"insertTranspose\"!==n)switch(t.preventDefault(),n){case\"insertFromYank\":case\"insertFromDrop\":case\"insertReplacementText\":Ze(e,l,t);break;case\"insertFromComposition\":xe(null),Ze(e,l,t);break;case\"insertLineBreak\":xe(null),Ze(e,s,!1);break;case\"insertParagraph\":xe(null),Cr&&!Z?(Cr=!1,Ze(e,s,!1)):Ze(e,o,void 0);break;case\"insertFromPaste\":case\"insertFromPasteAsQuotation\":Ze(e,c,t);break;case\"deleteByComposition\":(function(t,e){return t!==e||_s(t)||_s(e)||!t.isToken()||!e.isToken()})(v,S)&&Ze(e,a,t);break;case\"deleteByDrag\":case\"deleteByCut\":Ze(e,a,t);break;case\"deleteContent\":Ze(e,i,!1);break;case\"deleteWordBackward\":Ze(e,u,!0);break;case\"deleteWordForward\":Ze(e,u,!1);break;case\"deleteHardLineBackward\":case\"deleteSoftLineBackward\":Ze(e,f,!0);break;case\"deleteContentForward\":case\"deleteHardLineForward\":case\"deleteSoftLineForward\":Ze(e,f,!1);break;case\"formatStrikeThrough\":Ze(e,d,\"strikethrough\");break;case\"formatBold\":Ze(e,d,\"bold\");break;case\"formatItalic\":Ze(e,d,\"italic\");break;case\"formatUnderline\":Ze(e,d,\"underline\");break;case\"historyUndo\":Ze(e,h,void 0);break;case\"historyRedo\":Ze(e,g,void 0)}else{if(\"\\n\"===y)t.preventDefault(),Ze(e,s,!1);else if(y===Nt)t.preventDefault(),Ze(e,o,void 0);else if(null==y&&t.dataTransfer){const e=t.dataTransfer.getData(\"text/plain\");t.preventDefault(),_.insertRawText(e)}else null!=y&&wr(_,r,y,t.timeStamp,!0)?(t.preventDefault(),Ze(e,l,y)):xr=y;mr=t.timeStamp}}))}(t,e)]);let pr=0,yr=null,mr=0,xr=null;const vr=new WeakMap;let Sr=!1,Tr=!1,Cr=!1,kr=!1,br=[0,\"\",0,\"root\",0];function wr(t,e,n,r,i){const s=t.anchor,o=t.focus,l=s.getNode(),c=ts(),a=yn(c._window),u=null!==a?a.anchorNode:null,f=s.key,d=c.getElementByKey(f),h=n.length;return f!==o.key||!oi(l)||(!i&&(!X||mr<r+50)||l.isDirty()&&h<2||De(n))&&s.offset!==o.offset&&!l.isComposing()||fe(l)||l.isDirty()&&h>1||(i||!X)&&null!==d&&!l.isComposing()&&u!==he(d)||null!==a&&null!==e&&(!e.collapsed||e.startContainer!==a.anchorNode||e.startOffset!==a.anchorOffset)||l.getFormat()!==t.format||l.getStyle()!==t.style||We(t,l)}function Nr(t,e){return null!==t&&null!==t.nodeValue&&t.nodeType===it&&0!==e&&e!==t.nodeValue.length}function Er(t,n,r){const{anchorNode:i,anchorOffset:s,focusNode:o,focusOffset:l}=t;Sr&&(Sr=!1,Nr(i,s)&&Nr(o,l))||hs(n,(()=>{if(!r)return void Ee(null);if(!le(n,i,o))return;const c=Oi();if(yi(c)){const e=c.anchor,r=e.getNode();if(c.isCollapsed()){\"Range\"===t.type&&t.anchorNode===t.focusNode&&(c.dirty=!0);const i=on(n).event,s=i?i.timeStamp:performance.now(),[o,l,a,u,f]=br,d=we(),h=!1===n.isComposing()&&\"\"===d.getTextContent();if(s<f+200&&e.offset===a&&e.key===u)c.format=o,c.style=l;else if(\"text\"===e.type)oi(r)||Rt(141),c.format=r.getFormat(),c.style=r.getStyle();else if(\"element\"===e.type&&!h){const t=e.getNode();c.style=\"\",t instanceof bs&&0===t.getChildrenSize()?(c.format=t.getTextFormat(),c.style=t.getTextStyle()):c.format=0}}else{const t=e.key,n=c.focus.key,r=c.getNodes(),i=r.length,o=c.isBackward(),a=o?l:s,u=o?s:l,f=o?n:t,d=o?t:n;let h=xt,g=!1;for(let t=0;t<i;t++){const e=r[t],n=e.getTextContentSize();if(oi(e)&&0!==n&&!(0===t&&e.__key===f&&a===n||t===i-1&&e.__key===d&&0===u)&&(g=!0,h&=e.getFormat(),0===h))break}c.format=g?h:0}}Ze(n,e,void 0)}))}function Pr(t){if(!t.getTargetRanges)return null;const e=t.getTargetRanges();return 0===e.length?null:e[0]}function Fr(t,e){const n=t._compositionKey;if(xe(null),null!==n&&null!=e){if(\"\"===e){const e=Se(n),r=he(t.getElementByKey(n));return void(null!==r&&null!==r.nodeValue&&oi(e)&&Me(e,r.nodeValue,null,null,!0))}if(\"\\n\"===e[e.length-1]){const e=Oi();if(yi(e)){const n=e.focus;return e.anchor.set(n.key,n.offset,n.type),void Ze(t,T,null)}}}Ae(!0,t,e)}function Dr(t){let e=t.__lexicalEventHandles;return void 0===e&&(e=[],t.__lexicalEventHandles=e),e}const Lr=new Map;function Or(t){const e=t.target,n=yn(null==e?null:9===e.nodeType?e.defaultView:e.ownerDocument.defaultView);if(null===n)return;const r=ae(n.anchorNode);if(null===r)return;Tr&&(Tr=!1,hs(r,(()=>{const e=Ii(),i=n.anchorNode;if(null===i)return;const s=i.nodeType;if(s!==rt&&s!==it)return;Ee(Li(e,n,r,t))})));const i=Le(r),s=i[i.length-1],o=s._key,l=Lr.get(o),c=l||s;c!==r&&Er(n,c,!1),Er(n,r,!0),r!==s?Lr.set(o,r):l&&Lr.delete(o)}function Ir(t){t._lexicalHandled=!0}function Ar(t){return!0===t._lexicalHandled}function Mr(t){const e=t.ownerDocument,n=vr.get(e);void 0===n&&Rt(162);const r=n-1;r>=0||Rt(164),vr.set(e,r),0===r&&e.removeEventListener(\"selectionchange\",Or);const i=ue(t);ce(i)?(!function(t){if(null!==t._parentEditor){const e=Le(t),n=e[e.length-1]._key;Lr.get(n)===t&&Lr.delete(n)}else Lr.delete(t._key)}(i),t.__lexicalEditor=null):i&&Rt(198);const s=Dr(t);for(let t=0;t<s.length;t++)s[t]();t.__lexicalEventHandles=[]}function Wr(t,e,n){Yi();const r=t.__key,i=t.getParent();if(null===i)return;const s=function(t){const e=Oi();if(!yi(e)||!_s(t))return e;const{anchor:n,focus:r}=e,i=n.getNode(),s=r.getNode();return sn(i,t)&&n.set(t.__key,0,\"element\"),sn(s,t)&&r.set(t.__key,0,\"element\"),e}(t);let o=!1;if(yi(s)&&e){const e=s.anchor,n=s.focus;e.key===r&&(Wi(e,t,i,t.getPreviousSibling(),t.getNextSibling()),o=!0),n.key===r&&(Wi(n,t,i,t.getPreviousSibling(),t.getNextSibling()),o=!0)}else xi(s)&&e&&t.isSelected()&&t.selectPrevious();if(yi(s)&&e&&!o){const e=t.getIndexWithinParent();ye(t),Ai(s,i,e,-1)}else ye(t);n||an(i)||i.canBeEmpty()||!i.isEmpty()||Wr(i,e),e&&vs(i)&&i.isEmpty()&&i.selectEnd()}class zr{static getType(){Rt(64,this.name)}static clone(t){Rt(65,this.name)}afterCloneFrom(t){this.__parent=t.__parent,this.__next=t.__next,this.__prev=t.__prev}constructor(t){this.__type=this.constructor.getType(),this.__parent=null,this.__prev=null,this.__next=null,pe(this,t)}getType(){return this.__type}isInline(){Rt(137,this.constructor.name)}isAttached(){let t=this.__key;for(;null!==t;){if(\"root\"===t)return!0;const e=Se(t);if(null===e)break;t=e.__parent}return!1}isSelected(t){const e=t||Oi();if(null==e)return!1;const n=e.getNodes().some((t=>t.__key===this.__key));if(oi(this))return n;if(yi(e)&&\"element\"===e.anchor.type&&\"element\"===e.focus.type){if(e.isCollapsed())return!1;const t=this.getParent();if(ms(this)&&this.isInline()&&t){const n=e.isBackward()?e.focus:e.anchor,r=n.getNode();if(n.offset===r.getChildrenSize()&&r.is(t)&&r.getLastChildOrThrow().is(this))return!1}}return n}getKey(){return this.__key}getIndexWithinParent(){const t=this.getParent();if(null===t)return-1;let e=t.getFirstChild(),n=0;for(;null!==e;){if(this.is(e))return n;n++,e=e.getNextSibling()}return-1}getParent(){const t=this.getLatest().__parent;return null===t?null:Se(t)}getParentOrThrow(){const t=this.getParent();return null===t&&Rt(66,this.__key),t}getTopLevelElement(){let t=this;for(;null!==t;){const e=t.getParent();if(an(e))return _s(t)||t===this&&ms(t)||Rt(194),t;t=e}return null}getTopLevelElementOrThrow(){const t=this.getTopLevelElement();return null===t&&Rt(67,this.__key),t}getParents(){const t=[];let e=this.getParent();for(;null!==e;)t.push(e),e=e.getParent();return t}getParentKeys(){const t=[];let e=this.getParent();for(;null!==e;)t.push(e.__key),e=e.getParent();return t}getPreviousSibling(){const t=this.getLatest().__prev;return null===t?null:Se(t)}getPreviousSiblings(){const t=[],e=this.getParent();if(null===e)return t;let n=e.getFirstChild();for(;null!==n&&!n.is(this);)t.push(n),n=n.getNextSibling();return t}getNextSibling(){const t=this.getLatest().__next;return null===t?null:Se(t)}getNextSiblings(){const t=[];let e=this.getNextSibling();for(;null!==e;)t.push(e),e=e.getNextSibling();return t}getCommonAncestor(t){const e=this.getParents(),n=t.getParents();_s(this)&&e.unshift(this),_s(t)&&n.unshift(t);const r=e.length,i=n.length;if(0===r||0===i||e[r-1]!==n[i-1])return null;const s=new Set(n);for(let t=0;t<r;t++){const n=e[t];if(s.has(n))return n}return null}is(t){return null!=t&&this.__key===t.__key}isBefore(t){if(this===t)return!1;if(t.isParentOf(this))return!0;if(this.isParentOf(t))return!1;const e=this.getCommonAncestor(t);let n=0,r=0,i=this;for(;;){const t=i.getParentOrThrow();if(t===e){n=i.getIndexWithinParent();break}i=t}for(i=t;;){const t=i.getParentOrThrow();if(t===e){r=i.getIndexWithinParent();break}i=t}return n<r}isParentOf(t){const e=this.__key;if(e===t.__key)return!1;let n=t;for(;null!==n;){if(n.__key===e)return!0;n=n.getParent()}return!1}getNodesBetween(t){const e=this.isBefore(t),n=[],r=new Set;let i=this;for(;null!==i;){const s=i.__key;if(r.has(s)||(r.add(s),n.push(i)),i===t)break;const o=_s(i)?e?i.getFirstChild():i.getLastChild():null;if(null!==o){i=o;continue}const l=e?i.getNextSibling():i.getPreviousSibling();if(null!==l){i=l;continue}const c=i.getParentOrThrow();if(r.has(c.__key)||n.push(c),c===t)break;let a=null,u=c;do{if(null===u&&Rt(68),a=e?u.getNextSibling():u.getPreviousSibling(),u=u.getParent(),null===u)break;null!==a||r.has(u.__key)||n.push(u)}while(null===a);i=a}return e||n.reverse(),n}isDirty(){const t=ts()._dirtyLeaves;return null!==t&&t.has(this.__key)}getLatest(){const t=Se(this.__key);return null===t&&Rt(113),t}getWritable(){Yi();const t=Gi(),e=ts(),n=t._nodeMap,r=this.__key,i=this.getLatest(),s=e._cloneNotNeeded,o=Oi();if(null!==o&&o.setCachedNodes(null),s.has(r))return me(i),i;const l=Pn(i);return s.add(r),me(l),n.set(r,l),l}getTextContent(){return\"\"}getTextContentSize(){return this.getTextContent().length}createDOM(t,e){Rt(70)}updateDOM(t,e,n){Rt(71)}exportDOM(t){return{element:this.createDOM(t._config,t)}}exportJSON(){Rt(72)}static importJSON(t){Rt(18,this.name)}static transform(){return null}remove(t){Wr(this,!0,t)}replace(t,e){Yi();let n=Oi();null!==n&&(n=n.clone()),dn(this,t);const r=this.getLatest(),i=this.__key,s=t.__key,o=t.getWritable(),l=this.getParentOrThrow().getWritable(),c=l.__size;ye(o);const a=r.getPreviousSibling(),u=r.getNextSibling(),f=r.__prev,d=r.__next,h=r.__parent;if(Wr(r,!1,!0),null===a)l.__first=s;else{a.getWritable().__next=s}if(o.__prev=f,null===u)l.__last=s;else{u.getWritable().__prev=s}if(o.__next=d,o.__parent=h,l.__size=c,e&&(_s(this)&&_s(o)||Rt(139),this.getChildren().forEach((t=>{o.append(t)}))),yi(n)){Ee(n);const t=n.anchor,e=n.focus;t.key===i&&gi(t,o),e.key===i&&gi(e,o)}return ve()===i&&xe(s),o}insertAfter(t,e=!0){Yi(),dn(this,t);const n=this.getWritable(),r=t.getWritable(),i=r.getParent(),s=Oi();let o=!1,l=!1;if(null!==i){const e=t.getIndexWithinParent();if(ye(r),yi(s)){const t=i.__key,n=s.anchor,r=s.focus;o=\"element\"===n.type&&n.key===t&&n.offset===e+1,l=\"element\"===r.type&&r.key===t&&r.offset===e+1}}const c=this.getNextSibling(),a=this.getParentOrThrow().getWritable(),u=r.__key,f=n.__next;if(null===c)a.__last=u;else{c.getWritable().__prev=u}if(a.__size++,n.__next=u,r.__next=f,r.__prev=n.__key,r.__parent=n.__parent,e&&yi(s)){const t=this.getIndexWithinParent();Ai(s,a,t+1);const e=a.__key;o&&s.anchor.set(e,t+2,\"element\"),l&&s.focus.set(e,t+2,\"element\")}return t}insertBefore(t,e=!0){Yi(),dn(this,t);const n=this.getWritable(),r=t.getWritable(),i=r.__key;ye(r);const s=this.getPreviousSibling(),o=this.getParentOrThrow().getWritable(),l=n.__prev,c=this.getIndexWithinParent();if(null===s)o.__first=i;else{s.getWritable().__next=i}o.__size++,n.__prev=i,r.__prev=l,r.__next=n.__key,r.__parent=n.__parent;const a=Oi();if(e&&yi(a)){Ai(a,this.getParentOrThrow(),c)}return t}isParentRequired(){return!1}createParentElementNode(){return Ns()}selectStart(){return this.selectPrevious()}selectEnd(){return this.selectNext(0,0)}selectPrevious(t,e){Yi();const n=this.getPreviousSibling(),r=this.getParentOrThrow();if(null===n)return r.select(0,0);if(_s(n))return n.select();if(!oi(n)){const t=n.getIndexWithinParent()+1;return r.select(t,t)}return n.select(t,e)}selectNext(t,e){Yi();const n=this.getNextSibling(),r=this.getParentOrThrow();if(null===n)return r.select();if(_s(n))return n.select(0,0);if(!oi(n)){const t=n.getIndexWithinParent();return r.select(t,t)}return n.select(t,e)}markDirty(){this.getWritable()}}class Br extends zr{static getType(){return\"linebreak\"}static clone(t){return new Br(t.__key)}constructor(t){super(t)}getTextContent(){return\"\\n\"}createDOM(){return document.createElement(\"br\")}updateDOM(){return!1}static importDOM(){return{br:t=>function(t){const e=t.parentElement;if(null!==e&&Tn(e)){const n=e.firstChild;if(n===t||n.nextSibling===t&&Jr(n)){const n=e.lastChild;if(n===t||n.previousSibling===t&&Jr(n))return!0}}return!1}(t)||function(t){const e=t.parentElement;if(null!==e&&Tn(e)){const n=e.firstChild;if(n===t||n.nextSibling===t&&Jr(n))return!1;const r=e.lastChild;if(r===t||r.previousSibling===t&&Jr(r))return!0}return!1}(t)?null:{conversion:Rr,priority:0}}}static importJSON(t){return Kr()}exportJSON(){return{type:\"linebreak\",version:1}}}function Rr(t){return{node:Kr()}}function Kr(){return fn(new Br)}function $r(t){return t instanceof Br}function Jr(t){return t.nodeType===it&&/^( |\\t|\\r?\\n)+$/.test(t.textContent||\"\")}function Ur(t,e){return 16&e?\"code\":e&mt?\"mark\":32&e?\"sub\":64&e?\"sup\":null}function Vr(t,e){return 1&e?\"strong\":2&e?\"em\":\"span\"}function jr(t,e,n,r,i){const s=r.classList;let o=je(i,\"base\");void 0!==o&&s.add(...o),o=je(i,\"underlineStrikethrough\");let l=!1;const c=e&gt&&e&ht;void 0!==o&&(n&gt&&n&ht?(l=!0,c||s.add(...o)):c&&s.remove(...o));for(const t in Ot){const r=Ot[t];if(o=je(i,t),void 0!==o)if(n&r){if(l&&(\"underline\"===t||\"strikethrough\"===t)){e&r&&s.remove(...o);continue}e&r&&(!c||\"underline\"!==t)&&\"strikethrough\"!==t||s.add(...o)}else e&r&&s.remove(...o)}}function Hr(t,e,n){const r=e.firstChild,i=n.isComposing(),s=t+(i?wt:\"\");if(null==r)e.textContent=s;else{const t=r.nodeValue;if(t!==s)if(i||Q){const[e,n,i]=function(t,e){const n=t.length,r=e.length;let i=0,s=0;for(;i<n&&i<r&&t[i]===e[i];)i++;for(;s+i<n&&s+i<r&&t[n-s-1]===e[r-s-1];)s++;return[i,n-i-s,e.slice(i,r-s)]}(t,s);0!==n&&r.deleteData(e,n),r.insertData(e,i)}else r.nodeValue=s}}function qr(t,e,n,r,i,s){Hr(i,t,e);const o=s.theme.text;void 0!==o&&jr(0,0,r,t,o)}function Qr(t,e){const n=document.createElement(e);return n.appendChild(t),n}class Xr extends zr{static getType(){return\"text\"}static clone(t){return new Xr(t.__text,t.__key)}afterCloneFrom(t){super.afterCloneFrom(t),this.__format=t.__format,this.__style=t.__style,this.__mode=t.__mode,this.__detail=t.__detail}constructor(t,e){super(e),this.__text=t,this.__format=0,this.__style=\"\",this.__mode=0,this.__detail=0}getFormat(){return this.getLatest().__format}getDetail(){return this.getLatest().__detail}getMode(){const t=this.getLatest();return zt[t.__mode]}getStyle(){return this.getLatest().__style}isToken(){return 1===this.getLatest().__mode}isComposing(){return this.__key===ve()}isSegmented(){return 2===this.getLatest().__mode}isDirectionless(){return!!(1&this.getLatest().__detail)}isUnmergeable(){return!!(2&this.getLatest().__detail)}hasFormat(t){const e=Ot[t];return!!(this.getFormat()&e)}isSimpleText(){return\"text\"===this.__type&&0===this.__mode}getTextContent(){return this.getLatest().__text}getFormatFlags(t,e){return ge(this.getLatest().__format,t,e)}canHaveFormat(){return!0}createDOM(t,e){const n=this.__format,r=Ur(0,n),i=Vr(0,n),s=null===r?i:r,o=document.createElement(s);let l=o;this.hasFormat(\"code\")&&o.setAttribute(\"spellcheck\",\"false\"),null!==r&&(l=document.createElement(i),o.appendChild(l));qr(l,this,0,n,this.__text,t);const c=this.__style;return\"\"!==c&&(o.style.cssText=c),o}updateDOM(t,e,n){const r=this.__text,i=t.__format,s=this.__format,o=Ur(0,i),l=Ur(0,s),c=Vr(0,i),a=Vr(0,s);if((null===o?c:o)!==(null===l?a:l))return!0;if(o===l&&c!==a){const t=e.firstChild;null==t&&Rt(48);const i=document.createElement(a);return qr(i,this,0,s,r,n),e.replaceChild(i,t),!1}let u=e;null!==l&&null!==o&&(u=e.firstChild,null==u&&Rt(49)),Hr(r,u,this);const f=n.theme.text;void 0!==f&&i!==s&&jr(0,i,s,u,f);const d=t.__style,h=this.__style;return d!==h&&(e.style.cssText=h),!1}static importDOM(){return{\"#text\":()=>({conversion:ei,priority:0}),b:()=>({conversion:Zr,priority:0}),code:()=>({conversion:ii,priority:0}),em:()=>({conversion:ii,priority:0}),i:()=>({conversion:ii,priority:0}),s:()=>({conversion:ii,priority:0}),span:()=>({conversion:Yr,priority:0}),strong:()=>({conversion:ii,priority:0}),sub:()=>({conversion:ii,priority:0}),sup:()=>({conversion:ii,priority:0}),u:()=>({conversion:ii,priority:0})}}static importJSON(t){const e=si(t.text);return e.setFormat(t.format),e.setDetail(t.detail),e.setMode(t.mode),e.setStyle(t.style),e}exportDOM(t){let{element:e}=super.exportDOM(t);return null!==e&&vn(e)||Rt(132),e.style.whiteSpace=\"pre-wrap\",this.hasFormat(\"bold\")&&(e=Qr(e,\"b\")),this.hasFormat(\"italic\")&&(e=Qr(e,\"i\")),this.hasFormat(\"strikethrough\")&&(e=Qr(e,\"s\")),this.hasFormat(\"underline\")&&(e=Qr(e,\"u\")),{element:e}}exportJSON(){return{detail:this.getDetail(),format:this.getFormat(),mode:this.getMode(),style:this.getStyle(),text:this.getTextContent(),type:\"text\",version:1}}selectionTransform(t,e){}setFormat(t){const e=this.getWritable();return e.__format=\"string\"==typeof t?Ot[t]:t,e}setDetail(t){const e=this.getWritable();return e.__detail=\"string\"==typeof t?It[t]:t,e}setStyle(t){const e=this.getWritable();return e.__style=t,e}toggleFormat(t){const e=ge(this.getFormat(),t,null);return this.setFormat(e)}toggleDirectionless(){const t=this.getWritable();return t.__detail^=1,t}toggleUnmergeable(){const t=this.getWritable();return t.__detail^=2,t}setMode(t){const e=Wt[t];if(this.__mode===e)return this;const n=this.getWritable();return n.__mode=e,n}setTextContent(t){if(this.__text===t)return this;const e=this.getWritable();return e.__text=t,e}select(t,e){Yi();let n=t,r=e;const i=Oi(),s=this.getTextContent(),o=this.__key;if(\"string\"==typeof s){const t=s.length;void 0===n&&(n=t),void 0===r&&(r=t)}else n=0,r=0;if(!yi(i))return Ei(o,n,o,r,\"text\",\"text\");{const t=ve();t!==i.anchor.key&&t!==i.focus.key||xe(o),i.setTextNodeRange(this,n,this,r)}return i}selectStart(){return this.select(0,0)}selectEnd(){const t=this.getTextContentSize();return this.select(t,t)}spliceText(t,e,n,r){const i=this.getWritable(),s=i.__text,o=n.length;let l=t;l<0&&(l=o+l,l<0&&(l=0));const c=Oi();if(r&&yi(c)){const e=t+o;c.setTextNodeRange(i,e,i,e)}const a=s.slice(0,l)+n+s.slice(l+e);return i.__text=a,i}canInsertTextBefore(){return!0}canInsertTextAfter(){return!0}splitText(...t){Yi();const e=this.getLatest(),n=e.getTextContent(),r=e.__key,i=ve(),s=new Set(t),o=[],l=n.length;let c=\"\";for(let t=0;t<l;t++)\"\"!==c&&s.has(t)&&(o.push(c),c=\"\"),c+=n[t];\"\"!==c&&o.push(c);const a=o.length;if(0===a)return[];if(o[0]===n)return[e];const u=o[0],f=e.getParent();let d;const h=e.getFormat(),g=e.getStyle(),_=e.__detail;let p=!1;e.isSegmented()?(d=si(u),d.__format=h,d.__style=g,d.__detail=_,p=!0):(d=e.getWritable(),d.__text=u);const y=Oi(),m=[d];let x=u.length;for(let t=1;t<a;t++){const e=o[t],n=e.length,s=si(e).getWritable();s.__format=h,s.__style=g,s.__detail=_;const l=s.__key,c=x+n;if(yi(y)){const t=y.anchor,e=y.focus;t.key===r&&\"text\"===t.type&&t.offset>x&&t.offset<=c&&(t.key=l,t.offset-=x,y.dirty=!0),e.key===r&&\"text\"===e.type&&e.offset>x&&e.offset<=c&&(e.key=l,e.offset-=x,y.dirty=!0)}i===r&&xe(l),x=c,m.push(s)}if(null!==f){!function(t){const e=t.getPreviousSibling(),n=t.getNextSibling();null!==e&&me(e),null!==n&&me(n)}(this);const t=f.getWritable(),e=this.getIndexWithinParent();p?(t.splice(e,0,m),this.remove()):t.splice(e,1,m),yi(y)&&Ai(y,f,e,a-1)}return m}mergeWithSibling(t){const e=t===this.getPreviousSibling();e||t===this.getNextSibling()||Rt(50);const n=this.__key,r=t.__key,i=this.__text,s=i.length;ve()===r&&xe(n);const o=Oi();if(yi(o)){const i=o.anchor,l=o.focus;null!==i&&i.key===r&&(zi(i,e,n,t,s),o.dirty=!0),null!==l&&l.key===r&&(zi(l,e,n,t,s),o.dirty=!0)}const l=t.__text,c=e?l+i:i+l;this.setTextContent(c);const a=this.getWritable();return t.remove(),a}isTextEntity(){return!1}}function Yr(t){return{forChild:li(t.style),node:null}}function Zr(t){const e=t,n=\"normal\"===e.style.fontWeight;return{forChild:li(e.style,n?void 0:\"bold\"),node:null}}const Gr=new WeakMap;function ti(t){return\"PRE\"===t.nodeName||t.nodeType===rt&&void 0!==t.style&&void 0!==t.style.whiteSpace&&t.style.whiteSpace.startsWith(\"pre\")}function ei(t){const e=t;null===t.parentElement&&Rt(129);let n=e.textContent||\"\";if(null!==function(t){let e,n=t.parentNode;const r=[t];for(;null!==n&&void 0===(e=Gr.get(n))&&!ti(n);)r.push(n),n=n.parentNode;const i=void 0===e?n:e;for(let t=0;t<r.length;t++)Gr.set(r[t],i);return i}(e)){const t=n.split(/(\\r?\\n|\\t)/),e=[],r=t.length;for(let n=0;n<r;n++){const r=t[n];\"\\n\"===r||\"\\r\\n\"===r?e.push(Kr()):\"\\t\"===r?e.push(ai()):\"\"!==r&&e.push(si(r))}return{node:e}}if(n=n.replace(/\\r/g,\"\").replace(/[ \\t\\n]+/g,\" \"),\"\"===n)return{node:null};if(\" \"===n[0]){let t=e,r=!0;for(;null!==t&&null!==(t=ni(t,!1));){const e=t.textContent||\"\";if(e.length>0){/[ \\t\\n]$/.test(e)&&(n=n.slice(1)),r=!1;break}}r&&(n=n.slice(1))}if(\" \"===n[n.length-1]){let t=e,r=!0;for(;null!==t&&null!==(t=ni(t,!0));){if((t.textContent||\"\").replace(/^( |\\t|\\r?\\n)+/,\"\").length>0){r=!1;break}}r&&(n=n.slice(0,n.length-1))}return\"\"===n?{node:null}:{node:si(n)}}function ni(t,e){let n=t;for(;;){let t;for(;null===(t=e?n.nextSibling:n.previousSibling);){const t=n.parentElement;if(null===t)return null;n=t}if(n=t,n.nodeType===rt){const t=n.style.display;if(\"\"===t&&!Sn(n)||\"\"!==t&&!t.startsWith(\"inline\"))return null}let r=n;for(;null!==(r=e?n.firstChild:n.lastChild);)n=r;if(n.nodeType===it)return n;if(\"BR\"===n.nodeName)return null}}const ri={code:\"code\",em:\"italic\",i:\"italic\",s:\"strikethrough\",strong:\"bold\",sub:\"subscript\",sup:\"superscript\",u:\"underline\"};function ii(t){const e=ri[t.nodeName.toLowerCase()];return void 0===e?{node:null}:{forChild:li(t.style,e),node:null}}function si(t=\"\"){return fn(new Xr(t))}function oi(t){return t instanceof Xr}function li(t,e){const n=t.fontWeight,r=t.textDecoration.split(\" \"),i=\"700\"===n||\"bold\"===n,s=r.includes(\"line-through\"),o=\"italic\"===t.fontStyle,l=r.includes(\"underline\"),c=t.verticalAlign;return t=>oi(t)?(i&&!t.hasFormat(\"bold\")&&t.toggleFormat(\"bold\"),s&&!t.hasFormat(\"strikethrough\")&&t.toggleFormat(\"strikethrough\"),o&&!t.hasFormat(\"italic\")&&t.toggleFormat(\"italic\"),l&&!t.hasFormat(\"underline\")&&t.toggleFormat(\"underline\"),\"sub\"!==c||t.hasFormat(\"subscript\")||t.toggleFormat(\"subscript\"),\"super\"!==c||t.hasFormat(\"superscript\")||t.toggleFormat(\"superscript\"),e&&!t.hasFormat(e)&&t.toggleFormat(e),t):t}class ci extends Xr{static getType(){return\"tab\"}static clone(t){return new ci(t.__key)}afterCloneFrom(t){super.afterCloneFrom(t),this.__text=t.__text}constructor(t){super(\"\\t\",t),this.__detail=2}static importDOM(){return null}static importJSON(t){const e=ai();return e.setFormat(t.format),e.setStyle(t.style),e}exportJSON(){return{...super.exportJSON(),type:\"tab\",version:1}}setTextContent(t){Rt(126)}setDetail(t){Rt(127)}setMode(t){Rt(128)}canInsertTextBefore(){return!1}canInsertTextAfter(){return!1}}function ai(){return fn(new ci)}function ui(t){return t instanceof ci}class fi{constructor(t,e,n){this._selection=null,this.key=t,this.offset=e,this.type=n}is(t){return this.key===t.key&&this.offset===t.offset&&this.type===t.type}isBefore(t){let e=this.getNode(),n=t.getNode();const r=this.offset,i=t.offset;if(_s(e)){const t=e.getDescendantByIndex(r);e=null!=t?t:e}if(_s(n)){const t=n.getDescendantByIndex(i);n=null!=t?t:n}return e===n?r<i:e.isBefore(n)}getNode(){const t=Se(this.key);return null===t&&Rt(20),t}set(t,e,n){const r=this._selection,i=this.key;this.key=t,this.offset=e,this.type=n,Xi()||(ve()===i&&xe(t),null!==r&&(r.setCachedNodes(null),r.dirty=!0))}}function di(t,e,n){return new fi(t,e,n)}function hi(t,e){let n=e.__key,r=t.offset,i=\"element\";if(oi(e)){i=\"text\";const t=e.getTextContentSize();r>t&&(r=t)}else if(!_s(e)){const t=e.getNextSibling();if(oi(t))n=t.__key,r=0,i=\"text\";else{const t=e.getParent();t&&(n=t.__key,r=e.getIndexWithinParent()+1)}}t.set(n,r,i)}function gi(t,e){if(_s(e)){const n=e.getLastDescendant();_s(n)||oi(n)?hi(t,n):hi(t,e)}else hi(t,e)}function _i(t,e,n,r){t.key=e,t.offset=n,t.type=r}class pi{constructor(t){this._cachedNodes=null,this._nodes=t,this.dirty=!1}getCachedNodes(){return this._cachedNodes}setCachedNodes(t){this._cachedNodes=t}is(t){if(!xi(t))return!1;const e=this._nodes,n=t._nodes;return e.size===n.size&&Array.from(e).every((t=>n.has(t)))}isCollapsed(){return!1}isBackward(){return!1}getStartEndPoints(){return null}add(t){this.dirty=!0,this._nodes.add(t),this._cachedNodes=null}delete(t){this.dirty=!0,this._nodes.delete(t),this._cachedNodes=null}clear(){this.dirty=!0,this._nodes.clear(),this._cachedNodes=null}has(t){return this._nodes.has(t)}clone(){return new pi(new Set(this._nodes))}extract(){return this.getNodes()}insertRawText(t){}insertText(){}insertNodes(t){const e=this.getNodes(),n=e.length,r=e[n-1];let i;if(oi(r))i=r.select();else{const t=r.getIndexWithinParent()+1;i=r.getParentOrThrow().select(t,t)}i.insertNodes(t);for(let t=0;t<n;t++)e[t].remove()}getNodes(){const t=this._cachedNodes;if(null!==t)return t;const e=this._nodes,n=[];for(const t of e){const e=Se(t);null!==e&&n.push(e)}return Xi()||(this._cachedNodes=n),n}getTextContent(){const t=this.getNodes();let e=\"\";for(let n=0;n<t.length;n++)e+=t[n].getTextContent();return e}}function yi(t){return t instanceof mi}class mi{constructor(t,e,n,r){this.anchor=t,this.focus=e,t._selection=this,e._selection=this,this._cachedNodes=null,this.format=n,this.style=r,this.dirty=!1}getCachedNodes(){return this._cachedNodes}setCachedNodes(t){this._cachedNodes=t}is(t){return!!yi(t)&&(this.anchor.is(t.anchor)&&this.focus.is(t.focus)&&this.format===t.format&&this.style===t.style)}isCollapsed(){return this.anchor.is(this.focus)}getNodes(){const t=this._cachedNodes;if(null!==t)return t;const e=this.anchor,n=this.focus,r=e.isBefore(n),i=r?e:n,s=r?n:e;let o=i.getNode(),l=s.getNode();const c=i.offset,a=s.offset;if(_s(o)){const t=o.getDescendantByIndex(c);o=null!=t?t:o}if(_s(l)){let t=l.getDescendantByIndex(a);null!==t&&t!==o&&l.getChildAtIndex(a)===t&&(t=t.getPreviousSibling()),l=null!=t?t:l}let u;return u=o.is(l)?_s(o)&&o.getChildrenSize()>0?[]:[o]:o.getNodesBetween(l),Xi()||(this._cachedNodes=u),u}setTextNodeRange(t,e,n,r){_i(this.anchor,t.__key,e,\"text\"),_i(this.focus,n.__key,r,\"text\"),this._cachedNodes=null,this.dirty=!0}getTextContent(){const t=this.getNodes();if(0===t.length)return\"\";const e=t[0],n=t[t.length-1],r=this.anchor,i=this.focus,s=r.isBefore(i),[o,l]=Si(this);let c=\"\",a=!0;for(let u=0;u<t.length;u++){const f=t[u];if(_s(f)&&!f.isInline())a||(c+=\"\\n\"),a=!f.isEmpty();else if(a=!1,oi(f)){let t=f.getTextContent();f===e?f===n?\"element\"===r.type&&\"element\"===i.type&&i.offset!==r.offset||(t=o<l?t.slice(o,l):t.slice(l,o)):t=s?t.slice(o):t.slice(l):f===n&&(t=s?t.slice(0,l):t.slice(0,o)),c+=t}else!ms(f)&&!$r(f)||f===n&&this.isCollapsed()||(c+=f.getTextContent())}return c}applyDOMRange(t){const e=ts(),n=e.getEditorState()._selection,r=wi(t.startContainer,t.startOffset,t.endContainer,t.endOffset,e,n);if(null===r)return;const[i,s]=r;_i(this.anchor,i.key,i.offset,i.type),_i(this.focus,s.key,s.offset,s.type),this._cachedNodes=null}clone(){const t=this.anchor,e=this.focus;return new mi(di(t.key,t.offset,t.type),di(e.key,e.offset,e.type),this.format,this.style)}toggleFormat(t){this.format=ge(this.format,t,null),this.dirty=!0}setStyle(t){this.style=t,this.dirty=!0}hasFormat(t){const e=Ot[t];return!!(this.format&e)}insertRawText(t){const e=t.split(/(\\r?\\n|\\t)/),n=[],r=e.length;for(let t=0;t<r;t++){const r=e[t];\"\\n\"===r||\"\\r\\n\"===r?n.push(Kr()):\"\\t\"===r?n.push(ai()):n.push(si(r))}this.insertNodes(n)}insertText(t){const e=this.anchor,n=this.focus,r=this.format,i=this.style;let s=e,o=n;!this.isCollapsed()&&n.isBefore(e)&&(s=n,o=e),\"element\"===s.type&&function(t,e,n,r){const i=t.getNode(),s=i.getChildAtIndex(t.offset),o=si(),l=vs(i)?Ns().append(o):o;o.setFormat(n),o.setStyle(r),null===s?i.append(l):s.insertBefore(l),t.is(e)&&e.set(o.__key,0,\"text\"),t.set(o.__key,0,\"text\")}(s,o,r,i);const l=s.offset;let c=o.offset;const a=this.getNodes(),u=a.length;let f=a[0];oi(f)||Rt(26);const d=f.getTextContent().length,h=f.getParentOrThrow();let g=a[u-1];if(1===u&&\"element\"===o.type&&(c=d,o.set(s.key,c,\"text\")),this.isCollapsed()&&l===d&&(f.isSegmented()||f.isToken()||!f.canInsertTextAfter()||!h.canInsertTextAfter()&&null===f.getNextSibling())){let e=f.getNextSibling();if(oi(e)&&e.canInsertTextBefore()&&!fe(e)||(e=si(),e.setFormat(r),e.setStyle(i),h.canInsertTextAfter()?f.insertAfter(e):h.insertAfter(e)),e.select(0,0),f=e,\"\"!==t)return void this.insertText(t)}else if(this.isCollapsed()&&0===l&&(f.isSegmented()||f.isToken()||!f.canInsertTextBefore()||!h.canInsertTextBefore()&&null===f.getPreviousSibling())){let e=f.getPreviousSibling();if(oi(e)&&!fe(e)||(e=si(),e.setFormat(r),h.canInsertTextBefore()?f.insertBefore(e):h.insertBefore(e)),e.select(),f=e,\"\"!==t)return void this.insertText(t)}else if(f.isSegmented()&&l!==d){const t=si(f.getTextContent());t.setFormat(r),f.replace(t),f=t}else if(!this.isCollapsed()&&\"\"!==t){const e=g.getParent();if(!h.canInsertTextBefore()||!h.canInsertTextAfter()||_s(e)&&(!e.canInsertTextBefore()||!e.canInsertTextAfter()))return this.insertText(\"\"),bi(this.anchor,this.focus,null),void this.insertText(t)}if(1===u){if(f.isToken()){const e=si(t);return e.select(),void f.replace(e)}const e=f.getFormat(),n=f.getStyle();if(l!==c||e===r&&n===i){if(ui(f)){const e=si(t);return e.setFormat(r),e.setStyle(i),e.select(),void f.replace(e)}}else{if(\"\"!==f.getTextContent()){const e=si(t);if(e.setFormat(r),e.setStyle(i),e.select(),0===l)f.insertBefore(e,!1);else{const[t]=f.splitText(l);t.insertAfter(e,!1)}return void(e.isComposing()&&\"text\"===this.anchor.type&&(this.anchor.offset-=t.length))}f.setFormat(r),f.setStyle(i)}const s=c-l;f=f.spliceText(l,s,t,!0),\"\"===f.getTextContent()?f.remove():\"text\"===this.anchor.type&&(f.isComposing()?this.anchor.offset-=t.length:(this.format=e,this.style=n))}else{const e=new Set([...f.getParentKeys(),...g.getParentKeys()]),n=_s(f)?f:f.getParentOrThrow();let r=_s(g)?g:g.getParentOrThrow(),i=g;if(!n.is(r)&&r.isInline())do{i=r,r=r.getParentOrThrow()}while(r.isInline());if(\"text\"===o.type&&(0!==c||\"\"===g.getTextContent())||\"element\"===o.type&&g.getIndexWithinParent()<c)if(oi(g)&&!g.isToken()&&c!==g.getTextContentSize()){if(g.isSegmented()){const t=si(g.getTextContent());g.replace(t),g=t}vs(o.getNode())||\"text\"!==o.type||(g=g.spliceText(0,c,\"\")),e.add(g.__key)}else{const t=g.getParentOrThrow();t.canBeEmpty()||1!==t.getChildrenSize()?g.remove():t.remove()}else e.add(g.__key);const s=r.getChildren(),h=new Set(a),_=n.is(r),p=n.isInline()&&null===f.getNextSibling()?n:f;for(let t=s.length-1;t>=0;t--){const e=s[t];if(e.is(f)||_s(e)&&e.isParentOf(f))break;e.isAttached()&&(!h.has(e)||e.is(i)?_||p.insertAfter(e,!1):e.remove())}if(!_){let t=r,n=null;for(;null!==t;){const r=t.getChildren(),i=r.length;(0===i||r[i-1].is(n))&&(e.delete(t.__key),n=t),t=t.getParent()}}if(f.isToken())if(l===d)f.select();else{const e=si(t);e.select(),f.replace(e)}else f=f.spliceText(l,d-l,t,!0),\"\"===f.getTextContent()?f.remove():f.isComposing()&&\"text\"===this.anchor.type&&(this.anchor.offset-=t.length);for(let t=1;t<u;t++){const n=a[t],r=n.__key;e.has(r)||n.remove()}}}removeText(){this.insertText(\"\")}formatText(t){if(this.isCollapsed())return this.toggleFormat(t),void xe(null);const e=this.getNodes(),n=[];for(const t of e)oi(t)&&n.push(t);const r=n.length;if(0===r)return this.toggleFormat(t),void xe(null);const i=this.anchor,s=this.focus,o=this.isBackward(),l=o?s:i,c=o?i:s;let a=0,u=n[0],f=\"element\"===l.type?0:l.offset;if(\"text\"===l.type&&f===u.getTextContentSize()&&(a=1,u=n[1],f=0),null==u)return;const d=u.getFormatFlags(t,null),h=r-1;let g=n[h];const _=\"text\"===c.type?c.offset:g.getTextContentSize();if(u.is(g)){if(f===_)return;if(fe(u)||0===f&&_===u.getTextContentSize())u.setFormat(d);else{const t=u.splitText(f,_),e=0===f?t[0]:t[1];e.setFormat(d),\"text\"===l.type&&l.set(e.__key,0,\"text\"),\"text\"===c.type&&c.set(e.__key,_-f,\"text\")}return void(this.format=d)}0===f||fe(u)||([,u]=u.splitText(f),f=0),u.setFormat(d);const p=g.getFormatFlags(t,d);_>0&&(_===g.getTextContentSize()||fe(g)||([g]=g.splitText(_)),g.setFormat(p));for(let e=a+1;e<h;e++){const r=n[e],i=r.getFormatFlags(t,p);r.setFormat(i)}\"text\"===l.type&&l.set(u.__key,f,\"text\"),\"text\"===c.type&&c.set(g.__key,_,\"text\"),this.format=d|p}insertNodes(t){if(0===t.length)return;if(\"root\"===this.anchor.key){this.insertParagraph();const e=Oi();return yi(e)||Rt(134),e.insertNodes(t)}const e=kn((this.isBackward()?this.focus:this.anchor).getNode(),Cn),n=t[t.length-1];if(\"__language\"in e&&_s(e)){if(\"__language\"in t[0])this.insertText(t[0].getTextContent());else{const r=$i(this);e.splice(r,0,t),n.selectEnd()}return}if(!t.some((t=>(_s(t)||ms(t))&&!t.isInline()))){_s(e)||Rt(135);const r=$i(this);return e.splice(r,0,t),void n.selectEnd()}const r=function(t){const e=Ns();let n=null;for(let r=0;r<t.length;r++){const i=t[r],s=$r(i);if(s||ms(i)&&i.isInline()||_s(i)&&i.isInline()||oi(i)||i.isParentRequired()){if(null===n&&(n=i.createParentElementNode(),e.append(n),s))continue;null!==n&&n.append(i)}else e.append(i),n=null}return e}(t),i=r.getLastDescendant(),s=r.getChildren(),o=!_s(e)||!e.isEmpty()?this.insertParagraph():null,l=s[s.length-1];let c=s[0];var a;_s(a=c)&&Cn(a)&&!a.isEmpty()&&_s(e)&&(!e.isEmpty()||e.canMergeWhenEmpty())&&(_s(e)||Rt(135),e.append(...c.getChildren()),c=s[1]),c&&function(t,e,n){const r=e.getParentOrThrow().getLastChild();let i=e;const s=[e];for(;i!==r;)i.getNextSibling()||Rt(140),i=i.getNextSibling(),s.push(i);let o=t;for(const t of s)o=o.insertAfter(t)}(e,c);const u=kn(i,Cn);o&&_s(u)&&(o.canMergeWhenEmpty()||Cn(l))&&(u.append(...o.getChildren()),o.remove()),_s(e)&&e.isEmpty()&&e.remove(),i.selectEnd();const f=_s(e)?e.getLastChild():null;$r(f)&&u!==e&&f.remove()}insertParagraph(){if(\"root\"===this.anchor.key){const t=Ns();return we().splice(this.anchor.offset,0,[t]),t.select(),t}const t=$i(this),e=kn(this.anchor.getNode(),Cn);_s(e)||Rt(136);const n=e.getChildAtIndex(t),r=n?[n,...n.getNextSiblings()]:[],i=e.insertNewAfter(this,!1);return i?(i.append(...r),i.selectStart(),i):null}insertLineBreak(t){const e=Kr();if(this.insertNodes([e]),t){const t=e.getParentOrThrow(),n=e.getIndexWithinParent();t.select(n,n)}}extract(){const t=this.getNodes(),e=t.length,n=e-1,r=this.anchor,i=this.focus;let s=t[0],o=t[n];const[l,c]=Si(this);if(0===e)return[];if(1===e){if(oi(s)&&!this.isCollapsed()){const t=l>c?c:l,e=l>c?l:c,n=s.splitText(t,e),r=0===t?n[0]:n[1];return null!=r?[r]:[]}return[s]}const a=r.isBefore(i);if(oi(s)){const e=a?l:c;e===s.getTextContentSize()?t.shift():0!==e&&([,s]=s.splitText(e),t[0]=s)}if(oi(o)){const e=o.getTextContent().length,r=a?c:l;0===r?t.pop():r!==e&&([o]=o.splitText(r),t[n]=o)}return t}modify(t,e,n){const r=this.focus,i=this.anchor,s=\"move\"===t,o=Xe(r,e);if(ms(o)&&!o.isIsolated()){if(s&&o.isKeyboardSelectable()){const t=Fi();return t.add(o.__key),void Ee(t)}const t=e?o.getPreviousSibling():o.getNextSibling();if(oi(t)){const n=t.__key,o=e?t.getTextContent().length:0;return r.set(n,o,\"text\"),void(s&&i.set(n,o,\"text\"))}{const n=o.getParentOrThrow();let l,c;return _s(t)?(c=t.__key,l=e?t.getChildrenSize():0):(l=o.getIndexWithinParent(),c=n.__key,e||l++),r.set(c,l,\"element\"),void(s&&i.set(c,l,\"element\"))}}const l=ts(),c=yn(l._window);if(!c)return;const a=l._blockCursorElement,u=l._rootElement;if(null===u||null===a||!_s(o)||o.isInline()||o.canBeEmpty()||_n(a,l,u),function(t,e,n,r){t.modify(e,n,r)}(c,t,e?\"backward\":\"forward\",n),c.rangeCount>0){const t=c.getRangeAt(0),n=this.anchor.getNode(),r=vs(n)?n:cn(n);if(this.applyDOMRange(t),this.dirty=!0,!s){const n=this.getNodes(),i=[];let s=!1;for(let t=0;t<n.length;t++){const e=n[t];sn(e,r)?i.push(e):s=!0}if(s&&i.length>0)if(e){const t=i[0];_s(t)?t.selectStart():t.getParentOrThrow().selectStart()}else{const t=i[i.length-1];_s(t)?t.selectEnd():t.getParentOrThrow().selectEnd()}c.anchorNode===t.startContainer&&c.anchorOffset===t.startOffset||function(t){const e=t.focus,n=t.anchor,r=n.key,i=n.offset,s=n.type;_i(n,e.key,e.offset,e.type),_i(e,r,i,s),t._cachedNodes=null}(this)}}}forwardDeletion(t,e,n){if(!n&&(\"element\"===t.type&&_s(e)&&t.offset===e.getChildrenSize()||\"text\"===t.type&&t.offset===e.getTextContentSize())){const t=e.getParent(),n=e.getNextSibling()||(null===t?null:t.getNextSibling());if(_s(n)&&n.isShadowRoot())return!0}return!1}deleteCharacter(t){const n=this.isCollapsed();if(this.isCollapsed()){const n=this.anchor;let r=n.getNode();if(this.forwardDeletion(n,r,t))return;const i=this.focus,s=Xe(i,t);if(ms(s)&&!s.isIsolated()){if(s.isKeyboardSelectable()&&_s(r)&&0===r.getChildrenSize()){r.remove();const t=Fi();t.add(s.__key),Ee(t)}else{s.remove();ts().dispatchCommand(e,void 0)}return}if(!t&&_s(s)&&_s(r)&&r.isEmpty())return r.remove(),void s.selectStart();if(this.modify(\"extend\",t,\"character\"),this.isCollapsed()){if(t&&0===n.offset){if((\"element\"===n.type?n.getNode():n.getNode().getParentOrThrow()).collapseAtStart(this))return}}else{const e=\"text\"===i.type?i.getNode():null;if(r=\"text\"===n.type?n.getNode():null,null!==e&&e.isSegmented()){const n=i.offset,s=e.getTextContentSize();if(e.is(r)||t&&n!==s||!t&&0!==n)return void Ti(e,t,n)}else if(null!==r&&r.isSegmented()){const i=n.offset,s=r.getTextContentSize();if(r.is(e)||t&&0!==i||!t&&i!==s)return void Ti(r,t,i)}!function(t,e){const n=t.anchor,r=t.focus,i=n.getNode(),s=r.getNode();if(i===s&&\"text\"===n.type&&\"text\"===r.type){const t=n.offset,s=r.offset,o=t<s,l=o?t:s,c=o?s:t,a=c-1;if(l!==a){De(i.getTextContent().slice(l,c))||(e?r.offset=a:n.offset=a)}}}(this,t)}}if(this.removeText(),t&&!n&&this.isCollapsed()&&\"element\"===this.anchor.type&&0===this.anchor.offset){const t=this.anchor.getNode();t.isEmpty()&&vs(t.getParent())&&0===t.getIndexWithinParent()&&t.collapseAtStart(this)}}deleteLine(t){if(this.isCollapsed()){const e=\"element\"===this.anchor.type;e&&this.insertText(\" \"),this.modify(\"extend\",t,\"lineboundary\");if(0===(t?this.focus:this.anchor).offset&&this.modify(\"extend\",t,\"character\"),e){const e=t?this.anchor:this.focus;e.set(e.key,e.offset+1,e.type)}}this.removeText()}deleteWord(t){if(this.isCollapsed()){const e=this.anchor,n=e.getNode();if(this.forwardDeletion(e,n,t))return;this.modify(\"extend\",t,\"word\")}this.removeText()}isBackward(){return this.focus.isBefore(this.anchor)}getStartEndPoints(){return[this.anchor,this.focus]}}function xi(t){return t instanceof pi}function vi(t){const e=t.offset;if(\"text\"===t.type)return e;const n=t.getNode();return e===n.getChildrenSize()?n.getTextContent().length:0}function Si(t){const e=t.getStartEndPoints();if(null===e)return[0,0];const[n,r]=e;return\"element\"===n.type&&\"element\"===r.type&&n.key===r.key&&n.offset===r.offset?[0,0]:[vi(n),vi(r)]}function Ti(t,e,n){const r=t,i=r.getTextContent().split(/(?=\\s)/g),s=i.length;let o=0,l=0;for(let t=0;t<s;t++){const r=t===s-1;if(l=o,o+=i[t].length,e&&o===n||o>n||r){i.splice(t,1),r&&(l=void 0);break}}const c=i.join(\"\").trim();\"\"===c?r.remove():(r.setTextContent(c),r.select(l,l))}function Ci(t,e,n,r){let i,s=e;if(t.nodeType===rt){let o=!1;const l=t.childNodes,c=l.length,a=r._blockCursorElement;s===c&&(o=!0,s=c-1);let u=l[s],f=!1;if(u===a)u=l[s+1],f=!0;else if(null!==a){const n=a.parentNode;if(t===n){e>Array.prototype.indexOf.call(n.children,a)&&s--}}if(i=Pe(u),oi(i))s=Fe(i,o);else{let r=Pe(t);if(null===r)return null;if(_s(r)){s=Math.min(r.getChildrenSize(),s);let t=r.getChildAtIndex(s);if(_s(t)&&function(t,e,n){const r=t.getParent();return null===n||null===r||!r.canBeEmpty()||r!==n.getNode()}(t,0,n)){const e=o?t.getLastDescendant():t.getFirstDescendant();null===e?r=t:(t=e,r=_s(t)?t:t.getParentOrThrow()),s=0}oi(t)?(i=t,r=null,s=Fe(t,o)):t!==r&&o&&!f&&s++}else{const n=r.getIndexWithinParent();s=0===e&&ms(r)&&Pe(t)===r?n:n+1,r=r.getParentOrThrow()}if(_s(r))return di(r.__key,s,\"element\")}}else i=Pe(t);return oi(i)?di(i.__key,s,\"text\"):null}function ki(t,e,n){const r=t.offset,i=t.getNode();if(0===r){const r=i.getPreviousSibling(),s=i.getParent();if(e){if((n||!e)&&null===r&&_s(s)&&s.isInline()){const e=s.getPreviousSibling();oi(e)&&(t.key=e.__key,t.offset=e.getTextContent().length)}}else _s(r)&&!n&&r.isInline()?(t.key=r.__key,t.offset=r.getChildrenSize(),t.type=\"element\"):oi(r)&&(t.key=r.__key,t.offset=r.getTextContent().length)}else if(r===i.getTextContent().length){const r=i.getNextSibling(),s=i.getParent();if(e&&_s(r)&&r.isInline())t.key=r.__key,t.offset=0,t.type=\"element\";else if((n||e)&&null===r&&_s(s)&&s.isInline()&&!s.canInsertTextAfter()){const e=s.getNextSibling();oi(e)&&(t.key=e.__key,t.offset=0)}}}function bi(t,e,n){if(\"text\"===t.type&&\"text\"===e.type){const r=t.isBefore(e),i=t.is(e);ki(t,r,i),ki(e,!r,i),i&&(e.key=t.key,e.offset=t.offset,e.type=t.type);const s=ts();if(s.isComposing()&&s._compositionKey!==t.key&&yi(n)){const r=n.anchor,i=n.focus;_i(t,r.key,r.offset,r.type),_i(e,i.key,i.offset,i.type)}}}function wi(t,e,n,r,i,s){if(null===t||null===n||!le(i,t,n))return null;const o=Ci(t,e,yi(s)?s.anchor:null,i);if(null===o)return null;const l=Ci(n,r,yi(s)?s.focus:null,i);if(null===l)return null;if(\"element\"===o.type&&\"element\"===l.type){const e=Pe(t),r=Pe(n);if(ms(e)&&ms(r))return null}return bi(o,l,s),[o,l]}function Ni(t){return _s(t)&&!t.isInline()}function Ei(t,e,n,r,i,s){const o=Gi(),l=new mi(di(t,e,i),di(n,r,s),0,\"\");return l.dirty=!0,o._selection=l,l}function Pi(){const t=di(\"root\",0,\"element\"),e=di(\"root\",0,\"element\");return new mi(t,e,0,\"\")}function Fi(){return new pi(new Set)}function Di(t,e){return Li(null,t,e,null)}function Li(t,e,n,r){const i=n._window;if(null===i)return null;const s=r||i.event,o=s?s.type:void 0,l=\"selectionchange\"===o,c=!Jt&&(l||\"beforeinput\"===o||\"compositionstart\"===o||\"compositionend\"===o||\"click\"===o&&s&&3===s.detail||\"drop\"===o||void 0===o);let a,u,f,d;if(yi(t)&&!c)return t.clone();if(null===e)return null;if(a=e.anchorNode,u=e.focusNode,f=e.anchorOffset,d=e.focusOffset,l&&yi(t)&&!le(n,a,u))return t.clone();const h=wi(a,f,u,d,n,t);if(null===h)return null;const[g,_]=h;return new mi(g,_,yi(t)?t.format:0,yi(t)?t.style:\"\")}function Oi(){return Gi()._selection}function Ii(){return ts()._editorState._selection}function Ai(t,e,n,r=1){const i=t.anchor,s=t.focus,o=i.getNode(),l=s.getNode();if(!e.is(o)&&!e.is(l))return;const c=e.__key;if(t.isCollapsed()){const e=i.offset;if(n<=e&&r>0||n<e&&r<0){const n=Math.max(0,e+r);i.set(c,n,\"element\"),s.set(c,n,\"element\"),Mi(t)}}else{const o=t.isBackward(),l=o?s:i,a=l.getNode(),u=o?i:s,f=u.getNode();if(e.is(a)){const t=l.offset;(n<=t&&r>0||n<t&&r<0)&&l.set(c,Math.max(0,t+r),\"element\")}if(e.is(f)){const t=u.offset;(n<=t&&r>0||n<t&&r<0)&&u.set(c,Math.max(0,t+r),\"element\")}}Mi(t)}function Mi(t){const e=t.anchor,n=e.offset,r=t.focus,i=r.offset,s=e.getNode(),o=r.getNode();if(t.isCollapsed()){if(!_s(s))return;const t=s.getChildrenSize(),i=n>=t,o=i?s.getChildAtIndex(t-1):s.getChildAtIndex(n);if(oi(o)){let t=0;i&&(t=o.getTextContentSize()),e.set(o.__key,t,\"text\"),r.set(o.__key,t,\"text\")}}else{if(_s(s)){const t=s.getChildrenSize(),r=n>=t,i=r?s.getChildAtIndex(t-1):s.getChildAtIndex(n);if(oi(i)){let t=0;r&&(t=i.getTextContentSize()),e.set(i.__key,t,\"text\")}}if(_s(o)){const t=o.getChildrenSize(),e=i>=t,n=e?o.getChildAtIndex(t-1):o.getChildAtIndex(i);if(oi(n)){let t=0;e&&(t=n.getTextContentSize()),r.set(n.__key,t,\"text\")}}}}function Wi(t,e,n,r,i){let s=null,o=0,l=null;null!==r?(s=r.__key,oi(r)?(o=r.getTextContentSize(),l=\"text\"):_s(r)&&(o=r.getChildrenSize(),l=\"element\")):null!==i&&(s=i.__key,oi(i)?l=\"text\":_s(i)&&(l=\"element\")),null!==s&&null!==l?t.set(s,o,l):(o=e.getIndexWithinParent(),-1===o&&(o=n.getChildrenSize()),t.set(n.__key,o,\"element\"))}function zi(t,e,n,r,i){\"text\"===t.type?(t.key=n,e||(t.offset+=i)):t.offset>r.getIndexWithinParent()&&(t.offset-=1)}function Bi(t,e,n,r,i,s,o){const l=r.anchorNode,c=r.focusNode,a=r.anchorOffset,u=r.focusOffset,f=document.activeElement;if(i.has(\"collaboration\")&&f!==s||null!==f&&oe(f))return;if(!yi(e))return void(null!==t&&le(n,l,c)&&r.removeAllRanges());const d=e.anchor,h=e.focus,g=d.key,_=h.key,p=tn(n,g),y=tn(n,_),m=d.offset,x=h.offset,v=e.format,S=e.style,T=e.isCollapsed();let C=p,k=y,b=!1;if(\"text\"===d.type){C=he(p);const t=d.getNode();b=t.getFormat()!==v||t.getStyle()!==S}else yi(t)&&\"text\"===t.anchor.type&&(b=!0);var w,N,E,P,F;if((\"text\"===h.type&&(k=he(y)),null!==C&&null!==k)&&(T&&(null===t||b||yi(t)&&(t.format!==v||t.style!==S))&&(w=v,N=S,E=m,P=g,F=performance.now(),br=[w,N,E,P,F]),a!==m||u!==x||l!==C||c!==k||\"Range\"===r.type&&T||(null!==f&&s.contains(f)||s.focus({preventScroll:!0}),\"element\"===d.type))){try{r.setBaseAndExtent(C,m,k,x)}catch(t){}if(!i.has(\"skip-scroll-into-view\")&&e.isCollapsed()&&null!==s&&s===document.activeElement){const t=e instanceof mi&&\"element\"===e.anchor.type?C.childNodes[m]||null:r.rangeCount>0?r.getRangeAt(0):null;if(null!==t){let e;if(t instanceof Text){const n=document.createRange();n.selectNode(t),e=n.getBoundingClientRect()}else e=t.getBoundingClientRect();!function(t,e,n){const r=n.ownerDocument,i=r.defaultView;if(null===i)return;let{top:s,bottom:o}=e,l=0,c=0,a=n;for(;null!==a;){const e=a===r.body;if(e)l=0,c=on(t).innerHeight;else{const t=a.getBoundingClientRect();l=t.top,c=t.bottom}let n=0;if(s<l?n=-(l-s):o>c&&(n=o-c),0!==n)if(e)i.scrollBy(0,n);else{const t=a.scrollTop;a.scrollTop+=n;const e=a.scrollTop-t;s-=e,o-=e}if(e)break;a=en(a)}}(n,e,s)}}Sr=!0}}function Ri(t){let e=Oi()||Ii();null===e&&(e=we().selectEnd()),e.insertNodes(t)}function Ki(){const t=Oi();return null===t?\"\":t.getTextContent()}function $i(t){let e=t;t.isCollapsed()||e.removeText();const n=Oi();yi(n)&&(e=n),yi(e)||Rt(161);const r=e.anchor;let i=r.getNode(),s=r.offset;for(;!Cn(i);)[i,s]=Ji(i,s);return s}function Ji(t,e){const n=t.getParent();if(!n){const t=Ns();return we().append(t),t.select(),[we(),0]}if(oi(t)){const r=t.splitText(e);if(0===r.length)return[n,t.getIndexWithinParent()];const i=0===e?0:1;return[n,r[0].getIndexWithinParent()+i]}if(!_s(t)||0===e)return[n,t.getIndexWithinParent()];const r=t.getChildAtIndex(e);if(r){const n=new mi(di(t.__key,e,\"element\"),di(t.__key,e,\"element\"),0,\"\"),i=t.insertNewAfter(n);i&&i.append(r,...r.getNextSiblings())}return[n,t.getIndexWithinParent()+1]}let Ui=null,Vi=null,ji=!1,Hi=!1,qi=0;const Qi={characterData:!0,childList:!0,subtree:!0};function Xi(){return ji||null!==Ui&&Ui._readOnly}function Yi(){ji&&Rt(13)}function Zi(){qi>99&&Rt(14)}function Gi(){return null===Ui&&Rt(195,es()),Ui}function ts(){return null===Vi&&Rt(196,es()),Vi}function es(){let t=0;const e=new Set,n=Ms.version;if(\"undefined\"!=typeof window)for(const r of document.querySelectorAll(\"[contenteditable]\")){const i=ue(r);if(ce(i))t++;else if(i){let t=String(i.constructor.version||\"<0.17.1\");t===n&&(t+=\" (separately built, likely a bundler configuration issue)\"),e.add(t)}}let r=` Detected on the page: ${t} compatible editor(s) with version ${n}`;return e.size&&(r+=` and incompatible editors with versions ${Array.from(e).join(\", \")}`),r}function ns(){return Vi}function rs(t,e,n){const r=e.__type,i=function(t,e){const n=t._nodes.get(e);return void 0===n&&Rt(30,e),n}(t,r);let s=n.get(r);void 0===s&&(s=Array.from(i.transforms),n.set(r,s));const o=s.length;for(let t=0;t<o&&(s[t](e),e.isAttached());t++);}function is(t,e){return void 0!==t&&t.__key!==e&&t.isAttached()}function ss(t){return os(t,ts()._nodes)}function os(t,e){const n=t.type,r=e.get(n);void 0===r&&Rt(17,n);const i=r.klass;t.type!==i.getType()&&Rt(18,i.name);const s=i.importJSON(t),o=t.children;if(_s(s)&&Array.isArray(o))for(let t=0;t<o.length;t++){const n=os(o[t],e);s.append(n)}return s}function ls(t,e,n){const r=Ui,i=ji,s=Vi;Ui=e,ji=!0,Vi=t;try{return n()}finally{Ui=r,ji=i,Vi=s}}function cs(t,n){const r=t._pendingEditorState,i=t._rootElement,s=t._headless||null===i;if(null===r)return;const o=t._editorState,l=o._selection,c=r._selection,a=t._dirtyType!==st,u=Ui,f=ji,d=Vi,h=t._updating,g=t._observer;let _=null;if(t._pendingEditorState=null,t._editorState=r,!s&&a&&null!==g){Vi=t,Ui=r,ji=!1,t._updating=!0;try{const e=t._dirtyType,n=t._dirtyElements,i=t._dirtyLeaves;g.disconnect(),_=fr(o,r,t,e,n,i)}catch(e){if(e instanceof Error&&t._onError(e),Hi)throw e;return Is(t,null,i,r),Yt(t),t._dirtyType=lt,Hi=!0,cs(t,o),void(Hi=!1)}finally{g.observe(i,Qi),t._updating=h,Ui=u,ji=f,Vi=d}}r._readOnly||(r._readOnly=!0);const p=t._dirtyLeaves,y=t._dirtyElements,m=t._normalizedNodes,x=t._updateTags,v=t._deferred;a&&(t._dirtyType=st,t._cloneNotNeeded.clear(),t._dirtyLeaves=new Set,t._dirtyElements=new Map,t._normalizedNodes=new Set,t._updateTags=new Set),function(t,e){const n=t._decorators;let r=t._pendingDecorators||n;const i=e._nodeMap;let s;for(s in r)i.has(s)||(r===n&&(r=ke(t)),delete r[s])}(t,r);const S=s?null:yn(t._window);if(t._editable&&null!==S&&(a||null===c||c.dirty)){Vi=t,Ui=r;try{if(null!==g&&g.disconnect(),a||null===c||c.dirty){const e=t._blockCursorElement;null!==e&&_n(e,t,i),Bi(l,c,t,S,x,i)}pn(t,i,c),null!==g&&g.observe(i,Qi)}finally{Vi=d,Ui=u}}null!==_&&function(t,e,n,r,i){const s=Array.from(t._listeners.mutation),o=s.length;for(let t=0;t<o;t++){const[o,l]=s[t],c=e.get(l);void 0!==c&&o(c,{dirtyLeaves:r,prevEditorState:i,updateTags:n})}}(t,_,x,p,o),yi(c)||null===c||null!==l&&l.is(c)||t.dispatchCommand(e,void 0);const T=t._pendingDecorators;null!==T&&(t._decorators=T,t._pendingDecorators=null,as(\"decorator\",t,!0,T)),function(t,e,n){const r=be(e),i=be(n);r!==i&&as(\"textcontent\",t,!0,i)}(t,n||o,r),as(\"update\",t,!0,{dirtyElements:y,dirtyLeaves:p,editorState:r,normalizedNodes:m,prevEditorState:n||o,tags:x}),function(t,e){if(t._deferred=[],0!==e.length){const n=t._updating;t._updating=!0;try{for(let t=0;t<e.length;t++)e[t]()}finally{t._updating=n}}}(t,v),function(t){const e=t._updates;if(0!==e.length){const n=e.shift();if(n){const[e,r]=n;ds(t,e,r)}}}(t)}function as(t,e,n,...r){const i=e._updating;e._updating=n;try{const n=Array.from(e._listeners[t]);for(let t=0;t<n.length;t++)n[t].apply(null,r)}finally{e._updating=i}}function us(t,e,n){if(!1===t._updating||Vi!==t){let r=!1;return t.update((()=>{r=us(t,e,n)})),r}const r=Le(t);for(let i=4;i>=0;i--)for(let s=0;s<r.length;s++){const o=r[s]._commands.get(e);if(void 0!==o){const e=o[i];if(void 0!==e){const r=Array.from(e),i=r.length;for(let e=0;e<i;e++)if(!0===r[e](n,t))return!0}}}return!1}function fs(t,e){const n=t._updates;let r=e||!1;for(;0!==n.length;){const e=n.shift();if(e){const[n,i]=e;let s,o;if(void 0!==i){if(s=i.onUpdate,o=i.tag,i.skipTransforms&&(r=!0),i.discrete){const e=t._pendingEditorState;null===e&&Rt(191),e._flushSync=!0}s&&t._deferred.push(s),o&&t._updateTags.add(o)}n()}}return r}function ds(t,e,n){const r=t._updateTags;let i,s,o=!1,l=!1;void 0!==n&&(i=n.onUpdate,s=n.tag,null!=s&&r.add(s),o=n.skipTransforms||!1,l=n.discrete||!1),i&&t._deferred.push(i);const c=t._editorState;let a=t._pendingEditorState,u=!1;(null===a||a._readOnly)&&(a=t._pendingEditorState=new Cs(new Map((a||c)._nodeMap)),u=!0),a._flushSync=l;const f=Ui,d=ji,h=Vi,g=t._updating;Ui=a,ji=!1,t._updating=!0,Vi=t;try{u&&(t._headless?null!==c._selection&&(a._selection=c._selection.clone()):a._selection=function(t){const e=t.getEditorState()._selection,n=yn(t._window);return yi(e)||null==e?Li(e,n,t,null):e.clone()}(t));const n=t._compositionKey;e(),o=fs(t,o),function(t,e){const n=e.getEditorState()._selection,r=t._selection;if(yi(r)){const t=r.anchor,e=r.focus;let i;if(\"text\"===t.type&&(i=t.getNode(),i.selectionTransform(n,r)),\"text\"===e.type){const t=e.getNode();i!==t&&t.selectionTransform(n,r)}}}(a,t),t._dirtyType!==st&&(o?function(t,e){const n=e._dirtyLeaves,r=t._nodeMap;for(const t of n){const e=r.get(t);oi(e)&&e.isAttached()&&e.isSimpleText()&&!e.isUnmergeable()&&te(e)}}(a,t):function(t,e){const n=e._dirtyLeaves,r=e._dirtyElements,i=t._nodeMap,s=ve(),o=new Map;let l=n,c=l.size,a=r,u=a.size;for(;c>0||u>0;){if(c>0){e._dirtyLeaves=new Set;for(const t of l){const r=i.get(t);oi(r)&&r.isAttached()&&r.isSimpleText()&&!r.isUnmergeable()&&te(r),void 0!==r&&is(r,s)&&rs(e,r,o),n.add(t)}if(l=e._dirtyLeaves,c=l.size,c>0){qi++;continue}}e._dirtyLeaves=new Set,e._dirtyElements=new Map;for(const t of a){const n=t[0],l=t[1];if(\"root\"!==n&&!l)continue;const c=i.get(n);void 0!==c&&is(c,s)&&rs(e,c,o),r.set(n,l)}l=e._dirtyLeaves,c=l.size,a=e._dirtyElements,u=a.size,qi++}e._dirtyLeaves=n,e._dirtyElements=r}(a,t),fs(t),function(t,e,n,r){const i=t._nodeMap,s=e._nodeMap,o=[];for(const[t]of r){const e=s.get(t);void 0!==e&&(e.isAttached()||(_s(e)&&Fn(e,t,i,s,o,r),i.has(t)||r.delete(t),o.push(t)))}for(const t of o)s.delete(t);for(const t of n){const e=s.get(t);void 0===e||e.isAttached()||(i.has(t)||n.delete(t),s.delete(t))}}(c,a,t._dirtyLeaves,t._dirtyElements));n!==t._compositionKey&&(a._flushSync=!0);const r=a._selection;if(yi(r)){const t=a._nodeMap,e=r.anchor.key,n=r.focus.key;void 0!==t.get(e)&&void 0!==t.get(n)||Rt(19)}else xi(r)&&0===r._nodes.size&&(a._selection=null)}catch(e){return e instanceof Error&&t._onError(e),t._pendingEditorState=c,t._dirtyType=lt,t._cloneNotNeeded.clear(),t._dirtyLeaves=new Set,t._dirtyElements.clear(),void cs(t)}finally{Ui=f,ji=d,Vi=h,t._updating=g,qi=0}const _=t._dirtyType!==st||function(t,e){const n=e.getEditorState()._selection,r=t._selection;if(null!==r){if(r.dirty||!r.is(n))return!0}else if(null!==n)return!0;return!1}(a,t);_?a._flushSync?(a._flushSync=!1,cs(t)):u&&se((()=>{cs(t)})):(a._flushSync=!1,u&&(r.clear(),t._deferred=[],t._pendingEditorState=null))}function hs(t,e,n){t._updating?t._updates.push([e,n]):ds(t,e,n)}class gs extends zr{constructor(t){super(t),this.__first=null,this.__last=null,this.__size=0,this.__format=0,this.__style=\"\",this.__indent=0,this.__dir=null}afterCloneFrom(t){super.afterCloneFrom(t),this.__first=t.__first,this.__last=t.__last,this.__size=t.__size,this.__indent=t.__indent,this.__format=t.__format,this.__style=t.__style,this.__dir=t.__dir}getFormat(){return this.getLatest().__format}getFormatType(){const t=this.getFormat();return Mt[t]||\"\"}getStyle(){return this.getLatest().__style}getIndent(){return this.getLatest().__indent}getChildren(){const t=[];let e=this.getFirstChild();for(;null!==e;)t.push(e),e=e.getNextSibling();return t}getChildrenKeys(){const t=[];let e=this.getFirstChild();for(;null!==e;)t.push(e.__key),e=e.getNextSibling();return t}getChildrenSize(){return this.getLatest().__size}isEmpty(){return 0===this.getChildrenSize()}isDirty(){const t=ts()._dirtyElements;return null!==t&&t.has(this.__key)}isLastChild(){const t=this.getLatest(),e=this.getParentOrThrow().getLastChild();return null!==e&&e.is(t)}getAllTextNodes(){const t=[];let e=this.getFirstChild();for(;null!==e;){if(oi(e)&&t.push(e),_s(e)){const n=e.getAllTextNodes();t.push(...n)}e=e.getNextSibling()}return t}getFirstDescendant(){let t=this.getFirstChild();for(;_s(t);){const e=t.getFirstChild();if(null===e)break;t=e}return t}getLastDescendant(){let t=this.getLastChild();for(;_s(t);){const e=t.getLastChild();if(null===e)break;t=e}return t}getDescendantByIndex(t){const e=this.getChildren(),n=e.length;if(t>=n){const t=e[n-1];return _s(t)&&t.getLastDescendant()||t||null}const r=e[t];return _s(r)&&r.getFirstDescendant()||r||null}getFirstChild(){const t=this.getLatest().__first;return null===t?null:Se(t)}getFirstChildOrThrow(){const t=this.getFirstChild();return null===t&&Rt(45,this.__key),t}getLastChild(){const t=this.getLatest().__last;return null===t?null:Se(t)}getLastChildOrThrow(){const t=this.getLastChild();return null===t&&Rt(96,this.__key),t}getChildAtIndex(t){const e=this.getChildrenSize();let n,r;if(t<e/2){for(n=this.getFirstChild(),r=0;null!==n&&r<=t;){if(r===t)return n;n=n.getNextSibling(),r++}return null}for(n=this.getLastChild(),r=e-1;null!==n&&r>=t;){if(r===t)return n;n=n.getPreviousSibling(),r--}return null}getTextContent(){let t=\"\";const e=this.getChildren(),n=e.length;for(let r=0;r<n;r++){const i=e[r];t+=i.getTextContent(),_s(i)&&r!==n-1&&!i.isInline()&&(t+=Nt)}return t}getTextContentSize(){let t=0;const e=this.getChildren(),n=e.length;for(let r=0;r<n;r++){const i=e[r];t+=i.getTextContentSize(),_s(i)&&r!==n-1&&!i.isInline()&&(t+=Nt.length)}return t}getDirection(){return this.getLatest().__dir}hasFormat(t){if(\"\"!==t){const e=At[t];return!!(this.getFormat()&e)}return!1}select(t,e){Yi();const n=Oi();let r=t,i=e;const s=this.getChildrenSize();if(!this.canBeEmpty())if(0===t&&0===e){const t=this.getFirstChild();if(oi(t)||_s(t))return t.select(0,0)}else if(!(void 0!==t&&t!==s||void 0!==e&&e!==s)){const t=this.getLastChild();if(oi(t)||_s(t))return t.select()}void 0===r&&(r=s),void 0===i&&(i=s);const o=this.__key;return yi(n)?(n.anchor.set(o,r,\"element\"),n.focus.set(o,i,\"element\"),n.dirty=!0,n):Ei(o,r,o,i,\"element\",\"element\")}selectStart(){const t=this.getFirstDescendant();return t?t.selectStart():this.select()}selectEnd(){const t=this.getLastDescendant();return t?t.selectEnd():this.select()}clear(){const t=this.getWritable();return this.getChildren().forEach((t=>t.remove())),t}append(...t){return this.splice(this.getChildrenSize(),0,t)}setDirection(t){const e=this.getWritable();return e.__dir=t,e}setFormat(t){return this.getWritable().__format=\"\"!==t?At[t]:0,this}setStyle(t){return this.getWritable().__style=t||\"\",this}setIndent(t){return this.getWritable().__indent=t,this}splice(t,e,n){const r=n.length,i=this.getChildrenSize(),s=this.getWritable(),o=s.__key,l=[],c=[],a=this.getChildAtIndex(t+e);let u=null,f=i-e+r;if(0!==t)if(t===i)u=this.getLastChild();else{const e=this.getChildAtIndex(t);null!==e&&(u=e.getPreviousSibling())}if(e>0){let t=null===u?this.getFirstChild():u.getNextSibling();for(let n=0;n<e;n++){null===t&&Rt(100);const e=t.getNextSibling(),n=t.__key;ye(t.getWritable()),c.push(n),t=e}}let d=u;for(let t=0;t<r;t++){const e=n[t];null!==d&&e.is(d)&&(u=d=d.getPreviousSibling());const r=e.getWritable();r.__parent===o&&f--,ye(r);const i=e.__key;if(null===d)s.__first=i,r.__prev=null;else{const t=d.getWritable();t.__next=i,r.__prev=t.__key}e.__key===o&&Rt(76),r.__parent=o,l.push(i),d=e}if(t+e===i){if(null!==d){d.getWritable().__next=null,s.__last=d.__key}}else if(null!==a){const t=a.getWritable();if(null!==d){const e=d.getWritable();t.__prev=d.__key,e.__next=a.__key}else t.__prev=null}if(s.__size=f,c.length){const t=Oi();if(yi(t)){const e=new Set(c),n=new Set(l),{anchor:r,focus:i}=t;ps(r,e,n)&&Wi(r,r.getNode(),this,u,a),ps(i,e,n)&&Wi(i,i.getNode(),this,u,a),0!==f||this.canBeEmpty()||an(this)||this.remove()}}return s}exportJSON(){return{children:[],direction:this.getDirection(),format:this.getFormatType(),indent:this.getIndent(),type:\"element\",version:1}}insertNewAfter(t,e){return null}canIndent(){return!0}collapseAtStart(t){return!1}excludeFromCopy(t){return!1}canReplaceWith(t){return!0}canInsertAfter(t){return!0}canBeEmpty(){return!0}canInsertTextBefore(){return!0}canInsertTextAfter(){return!0}isInline(){return!1}isShadowRoot(){return!1}canMergeWith(t){return!1}extractWithChild(t,e,n){return!1}canMergeWhenEmpty(){return!1}}function _s(t){return t instanceof gs}function ps(t,e,n){let r=t.getNode();for(;r;){const t=r.__key;if(e.has(t)&&!n.has(t))return!0;r=r.getParent()}return!1}class ys extends zr{constructor(t){super(t)}decorate(t,e){Rt(47)}isIsolated(){return!1}isInline(){return!0}isKeyboardSelectable(){return!0}}function ms(t){return t instanceof ys}class xs extends gs{static getType(){return\"root\"}static clone(){return new xs}constructor(){super(\"root\"),this.__cachedText=null}getTopLevelElementOrThrow(){Rt(51)}getTextContent(){const t=this.__cachedText;return!Xi()&&ts()._dirtyType!==st||null===t?super.getTextContent():t}remove(){Rt(52)}replace(t){Rt(53)}insertBefore(t){Rt(54)}insertAfter(t){Rt(55)}updateDOM(t,e){return!1}append(...t){for(let e=0;e<t.length;e++){const n=t[e];_s(n)||ms(n)||Rt(56)}return super.append(...t)}static importJSON(t){const e=we();return e.setFormat(t.format),e.setIndent(t.indent),e.setDirection(t.direction),e}exportJSON(){return{children:[],direction:this.getDirection(),format:this.getFormatType(),indent:this.getIndent(),type:\"root\",version:1}}collapseAtStart(){return!0}}function vs(t){return t instanceof xs}function Ss(){return new Cs(new Map([[\"root\",new xs]]))}function Ts(t){const e=t.exportJSON(),n=t.constructor;if(e.type!==n.getType()&&Rt(130,n.name),_s(t)){const r=e.children;Array.isArray(r)||Rt(59,n.name);const i=t.getChildren();for(let t=0;t<i.length;t++){const e=Ts(i[t]);r.push(e)}}return e}class Cs{constructor(t,e){this._nodeMap=t,this._selection=e||null,this._flushSync=!1,this._readOnly=!1}isEmpty(){return 1===this._nodeMap.size&&null===this._selection}read(t,e){return ls(e&&e.editor||null,this,t)}clone(t){const e=new Cs(this._nodeMap,void 0===t?this._selection:t);return e._readOnly=!0,e}toJSON(){return ls(null,this,(()=>({root:Ts(we())})))}}class ks extends gs{static getType(){return\"artificial\"}createDOM(t){return document.createElement(\"div\")}}class bs extends gs{constructor(t){super(t),this.__textFormat=0,this.__textStyle=\"\"}static getType(){return\"paragraph\"}getTextFormat(){return this.getLatest().__textFormat}setTextFormat(t){const e=this.getWritable();return e.__textFormat=t,e}hasTextFormat(t){const e=Ot[t];return!!(this.getTextFormat()&e)}getTextStyle(){return this.getLatest().__textStyle}setTextStyle(t){const e=this.getWritable();return e.__textStyle=t,e}static clone(t){return new bs(t.__key)}afterCloneFrom(t){super.afterCloneFrom(t),this.__textFormat=t.__textFormat,this.__textStyle=t.__textStyle}createDOM(t){const e=document.createElement(\"p\"),n=je(t.theme,\"paragraph\");if(void 0!==n){e.classList.add(...n)}return e}updateDOM(t,e,n){return!1}static importDOM(){return{p:t=>({conversion:ws,priority:0})}}exportDOM(t){const{element:e}=super.exportDOM(t);if(e&&vn(e)){this.isEmpty()&&e.append(document.createElement(\"br\"));const t=this.getFormatType();e.style.textAlign=t;const n=this.getDirection();n&&(e.dir=n);const r=this.getIndent();r>0&&(e.style.textIndent=20*r+\"px\")}return{element:e}}static importJSON(t){const e=Ns();return e.setFormat(t.format),e.setIndent(t.indent),e.setDirection(t.direction),e.setTextFormat(t.textFormat),e}exportJSON(){return{...super.exportJSON(),textFormat:this.getTextFormat(),textStyle:this.getTextStyle(),type:\"paragraph\",version:1}}insertNewAfter(t,e){const n=Ns();n.setTextFormat(t.format),n.setTextStyle(t.style);const r=this.getDirection();return n.setDirection(r),n.setFormat(this.getFormatType()),n.setStyle(this.getTextStyle()),this.insertAfter(n,e),n}collapseAtStart(){const t=this.getChildren();if(0===t.length||oi(t[0])&&\"\"===t[0].getTextContent().trim()){if(null!==this.getNextSibling())return this.selectNext(),this.remove(),!0;if(null!==this.getPreviousSibling())return this.selectPrevious(),this.remove(),!0}return!1}}function ws(t){const e=Ns();if(t.style){e.setFormat(t.style.textAlign);const n=parseInt(t.style.textIndent,10)/20;n>0&&e.setIndent(n)}return{node:e}}function Ns(){return fn(new bs)}function Es(t){return t instanceof bs}const Ps=0,Fs=1,Ds=2,Ls=3,Os=4;function Is(t,e,n,r){const i=t._keyToDOMMap;i.clear(),t._editorState=Ss(),t._pendingEditorState=r,t._compositionKey=null,t._dirtyType=st,t._cloneNotNeeded.clear(),t._dirtyLeaves=new Set,t._dirtyElements.clear(),t._normalizedNodes=new Set,t._updateTags=new Set,t._updates=[],t._blockCursorElement=null;const s=t._observer;null!==s&&(s.disconnect(),t._observer=null),null!==e&&(e.textContent=\"\"),null!==n&&(n.textContent=\"\",i.set(\"root\",n))}function As(t){const e=t||{},n=ns(),r=e.theme||{},i=void 0===t?n:e.parentEditor||null,s=e.disableEvents||!1,o=Ss(),l=e.namespace||(null!==i?i._config.namespace:Oe()),c=e.editorState,a=[xs,Xr,Br,ci,bs,ks,...e.nodes||[]],{onError:u,html:f}=e,d=void 0===e.editable||e.editable;let h;if(void 0===t&&null!==n)h=n._nodes;else{h=new Map;for(let t=0;t<a.length;t++){let e=a[t],n=null,r=null;if(\"function\"!=typeof e){const t=e;e=t.replace,n=t.with,r=t.withKlass||null}const i=e.getType(),s=e.transform(),o=new Set;null!==s&&o.add(s),h.set(i,{exportDOM:f&&f.export?f.export.get(e):void 0,klass:e,replace:n,replaceWithKlass:r,transforms:o})}}const g=new Ms(o,i,h,{disableEvents:s,namespace:l,theme:r},u||console.error,function(t,e){const n=new Map,r=new Set,i=t=>{Object.keys(t).forEach((e=>{let r=n.get(e);void 0===r&&(r=[],n.set(e,r)),r.push(t[e])}))};return t.forEach((t=>{const e=t.klass.importDOM;if(null==e||r.has(e))return;r.add(e);const n=e.call(t.klass);null!==n&&i(n)})),e&&i(e),n}(h,f?f.import:void 0),d);return void 0!==c&&(g._pendingEditorState=c,g._dirtyType=lt),g}class Ms{constructor(t,e,n,r,i,s,o){this._parentEditor=e,this._rootElement=null,this._editorState=t,this._pendingEditorState=null,this._compositionKey=null,this._deferred=[],this._keyToDOMMap=new Map,this._updates=[],this._updating=!1,this._listeners={decorator:new Set,editable:new Set,mutation:new Map,root:new Set,textcontent:new Set,update:new Set},this._commands=new Map,this._config=r,this._nodes=n,this._decorators={},this._pendingDecorators=null,this._dirtyType=st,this._cloneNotNeeded=new Set,this._dirtyLeaves=new Set,this._dirtyElements=new Map,this._normalizedNodes=new Set,this._updateTags=new Set,this._observer=null,this._key=Oe(),this._onError=i,this._htmlConversions=s,this._editable=o,this._headless=null!==e&&e._headless,this._window=null,this._blockCursorElement=null}isComposing(){return null!=this._compositionKey}registerUpdateListener(t){const e=this._listeners.update;return e.add(t),()=>{e.delete(t)}}registerEditableListener(t){const e=this._listeners.editable;return e.add(t),()=>{e.delete(t)}}registerDecoratorListener(t){const e=this._listeners.decorator;return e.add(t),()=>{e.delete(t)}}registerTextContentListener(t){const e=this._listeners.textcontent;return e.add(t),()=>{e.delete(t)}}registerRootListener(t){const e=this._listeners.root;return t(this._rootElement,null),e.add(t),()=>{t(null,this._rootElement),e.delete(t)}}registerCommand(t,e,n){void 0===n&&Rt(35);const r=this._commands;r.has(t)||r.set(t,[new Set,new Set,new Set,new Set,new Set]);const i=r.get(t);void 0===i&&Rt(36,String(t));const s=i[n];return s.add(e),()=>{s.delete(e),i.every((t=>0===t.size))&&r.delete(t)}}registerMutationListener(t,e,n){const r=this.resolveRegisteredNodeAfterReplacements(this.getRegisteredNode(t)).klass,i=this._listeners.mutation;i.set(e,r);const s=n&&n.skipInitialization;return void 0===s||s||this.initializeMutationListener(e,r),()=>{i.delete(e)}}getRegisteredNode(t){const e=this._nodes.get(t.getType());return void 0===e&&Rt(37,t.name),e}resolveRegisteredNodeAfterReplacements(t){for(;t.replaceWithKlass;)t=this.getRegisteredNode(t.replaceWithKlass);return t}initializeMutationListener(t,e){const n=this._editorState,r=En(n).get(e.getType());if(!r)return;const i=new Map;for(const t of r.keys())i.set(t,\"created\");i.size>0&&t(i,{dirtyLeaves:new Set,prevEditorState:n,updateTags:new Set([\"registerMutationListener\"])})}registerNodeTransformToKlass(t,e){const n=this.getRegisteredNode(t);return n.transforms.add(e),n}registerNodeTransform(t,e){const n=this.registerNodeTransformToKlass(t,e),r=[n],i=n.replaceWithKlass;if(null!=i){const t=this.registerNodeTransformToKlass(i,e);r.push(t)}var s,o;return s=this,o=t.getType(),hs(s,(()=>{const t=Gi();if(t.isEmpty())return;if(\"root\"===o)return void we().markDirty();const e=t._nodeMap;for(const[,t]of e)t.markDirty()}),null===s._pendingEditorState?{tag:\"history-merge\"}:void 0),()=>{r.forEach((t=>t.transforms.delete(e)))}}hasNode(t){return this._nodes.has(t.getType())}hasNodes(t){return t.every(this.hasNode.bind(this))}dispatchCommand(t,e){return Ze(this,t,e)}getDecorators(){return this._decorators}getRootElement(){return this._rootElement}getKey(){return this._key}setRootElement(t){const e=this._rootElement;if(t!==e){const n=je(this._config.theme,\"root\"),r=this._pendingEditorState||this._editorState;if(this._rootElement=t,Is(this,e,t,r),null!==e&&(this._config.disableEvents||Mr(e),null!=n&&e.classList.remove(...n)),null!==t){const e=function(t){const e=t.ownerDocument;return e&&e.defaultView||null}(t),r=t.style;r.userSelect=\"text\",r.whiteSpace=\"pre-wrap\",r.wordBreak=\"break-word\",t.setAttribute(\"data-lexical-editor\",\"true\"),this._window=e,this._dirtyType=lt,Yt(this),this._updateTags.add(\"history-merge\"),cs(this),this._config.disableEvents||function(t,e){const n=t.ownerDocument,r=vr.get(n);(void 0===r||r<1)&&n.addEventListener(\"selectionchange\",Or),vr.set(n,(r||0)+1),t.__lexicalEditor=e;const i=Dr(t);for(let n=0;n<_r.length;n++){const[r,s]=_r[n],o=\"function\"==typeof s?t=>{Ar(t)||(Ir(t),(e.isEditable()||\"click\"===r)&&s(t,e))}:t=>{if(Ar(t))return;Ir(t);const n=e.isEditable();switch(r){case\"cut\":return n&&Ze(e,W,t);case\"copy\":return Ze(e,M,t);case\"paste\":return n&&Ze(e,c,t);case\"dragstart\":return n&&Ze(e,O,t);case\"dragover\":return n&&Ze(e,I,t);case\"dragend\":return n&&Ze(e,A,t);case\"focus\":return n&&Ze(e,J,t);case\"blur\":return n&&Ze(e,U,t);case\"drop\":return n&&Ze(e,D,t)}};t.addEventListener(r,o),i.push((()=>{t.removeEventListener(r,o)}))}}(t,this),null!=n&&t.classList.add(...n)}else this._editorState=r,this._pendingEditorState=null,this._window=null;as(\"root\",this,!1,t,e)}}getElementByKey(t){return this._keyToDOMMap.get(t)||null}getEditorState(){return this._editorState}setEditorState(t,e){t.isEmpty()&&Rt(38),Xt(this);const n=this._pendingEditorState,r=this._updateTags,i=void 0!==e?e.tag:null;null===n||n.isEmpty()||(null!=i&&r.add(i),cs(this)),this._pendingEditorState=t,this._dirtyType=lt,this._dirtyElements.set(\"root\",!1),this._compositionKey=null,null!=i&&r.add(i),cs(this)}parseEditorState(t,e){return function(t,e,n){const r=Ss(),i=Ui,s=ji,o=Vi,l=e._dirtyElements,c=e._dirtyLeaves,a=e._cloneNotNeeded,u=e._dirtyType;e._dirtyElements=new Map,e._dirtyLeaves=new Set,e._cloneNotNeeded=new Set,e._dirtyType=0,Ui=r,ji=!1,Vi=e;try{const i=e._nodes;os(t.root,i),n&&n(),r._readOnly=!0}catch(t){t instanceof Error&&e._onError(t)}finally{e._dirtyElements=l,e._dirtyLeaves=c,e._cloneNotNeeded=a,e._dirtyType=u,Ui=i,ji=s,Vi=o}return r}(\"string\"==typeof t?JSON.parse(t):t,this,e)}read(t){return cs(this),this.getEditorState().read(t,{editor:this})}update(t,e){hs(this,t,e)}focus(t,e={}){const n=this._rootElement;null!==n&&(n.setAttribute(\"autocapitalize\",\"off\"),hs(this,(()=>{const t=Oi(),n=we();null!==t?t.dirty=!0:0!==n.getChildrenSize()&&(\"rootStart\"===e.defaultSelection?n.selectStart():n.selectEnd())}),{onUpdate:()=>{n.removeAttribute(\"autocapitalize\"),t&&t()},tag:\"focus\"}),null===this._pendingEditorState&&n.removeAttribute(\"autocapitalize\"))}blur(){const t=this._rootElement;null!==t&&t.blur();const e=yn(this._window);null!==e&&e.removeAllRanges()}isEditable(){return this._editable}setEditable(t){this._editable!==t&&(this._editable=t,as(\"editable\",this,!0,t))}toJSON(){return{editorState:this._editorState.toJSON()}}}Ms.version=\"0.17.1+prod.esm\";export{rn as $addUpdateTag,fn as $applyNodeReplacement,Pn as $cloneWithProperties,un as $copyNode,Kr as $createLineBreakNode,Fi as $createNodeSelection,Ns as $createParagraphNode,di as $createPoint,Pi as $createRangeSelection,Di as $createRangeSelectionFromDom,ai as $createTabNode,si as $createTextNode,Xe as $getAdjacentNode,Si as $getCharacterOffsets,bn as $getEditor,Ce as $getNearestNodeFromDOMNode,cn as $getNearestRootOrShadowRoot,Se as $getNodeByKey,hn as $getNodeByKeyOrThrow,Ii as $getPreviousSelection,we as $getRoot,Oi as $getSelection,Ki as $getTextContent,sn as $hasAncestor,nn as $hasUpdateTag,Ri as $insertNodes,Ni as $isBlockElementNode,ms as $isDecoratorNode,_s as $isElementNode,ln as $isInlineElementOrDecoratorNode,_e as $isLeafNode,$r as $isLineBreakNode,xi as $isNodeSelection,Es as $isParagraphNode,yi as $isRangeSelection,vs as $isRootNode,an as $isRootOrShadowRoot,ui as $isTabNode,oi as $isTextNode,fe as $isTokenOrSegmented,qe as $nodesOfType,ee as $normalizeSelection__EXPERIMENTAL,ss as $parseSerializedNode,Ve as $selectAll,xe as $setCompositionKey,Ee as $setSelection,mn as $splitNode,ks as ArtificialNode__DO_NOT_USE,U as BLUR_COMMAND,K as CAN_REDO_COMMAND,$ as CAN_UNDO_COMMAND,B as CLEAR_EDITOR_COMMAND,R as CLEAR_HISTORY_COMMAND,r as CLICK_COMMAND,Os as COMMAND_PRIORITY_CRITICAL,Ps as COMMAND_PRIORITY_EDITOR,Ls as COMMAND_PRIORITY_HIGH,Fs as COMMAND_PRIORITY_LOW,Ds as COMMAND_PRIORITY_NORMAL,l as CONTROLLED_TEXT_INSERTION_COMMAND,M as COPY_COMMAND,W as CUT_COMMAND,i as DELETE_CHARACTER_COMMAND,f as DELETE_LINE_COMMAND,u as DELETE_WORD_COMMAND,A as DRAGEND_COMMAND,I as DRAGOVER_COMMAND,O as DRAGSTART_COMMAND,D as DROP_COMMAND,ys as DecoratorNode,gs as ElementNode,J as FOCUS_COMMAND,L as FORMAT_ELEMENT_COMMAND,d as FORMAT_TEXT_COMMAND,P as INDENT_CONTENT_COMMAND,s as INSERT_LINE_BREAK_COMMAND,o as INSERT_PARAGRAPH_COMMAND,E as INSERT_TAB_COMMAND,xt as IS_ALL_FORMATTING,ft as IS_BOLD,_t as IS_CODE,mt as IS_HIGHLIGHT,dt as IS_ITALIC,ht as IS_STRIKETHROUGH,pt as IS_SUBSCRIPT,yt as IS_SUPERSCRIPT,gt as IS_UNDERLINE,S as KEY_ARROW_DOWN_COMMAND,m as KEY_ARROW_LEFT_COMMAND,p as KEY_ARROW_RIGHT_COMMAND,v as KEY_ARROW_UP_COMMAND,k as KEY_BACKSPACE_COMMAND,w as KEY_DELETE_COMMAND,_ as KEY_DOWN_COMMAND,T as KEY_ENTER_COMMAND,b as KEY_ESCAPE_COMMAND,V as KEY_MODIFIER_COMMAND,C as KEY_SPACE_COMMAND,N as KEY_TAB_COMMAND,Br as LineBreakNode,y as MOVE_TO_END,x as MOVE_TO_START,F as OUTDENT_CONTENT_COMMAND,c as PASTE_COMMAND,bs as ParagraphNode,g as REDO_COMMAND,a as REMOVE_TEXT_COMMAND,xs as RootNode,e as SELECTION_CHANGE_COMMAND,n as SELECTION_INSERT_CLIPBOARD_NODES_COMMAND,z as SELECT_ALL_COMMAND,Ot as TEXT_TYPE_TO_FORMAT,ci as TabNode,Xr as TextNode,h as UNDO_COMMAND,t as createCommand,As as createEditor,ue as getEditorPropertyFromDOMNode,ae as getNearestEditorFromDOMNode,Tn as isBlockDomNode,Xi as isCurrentlyReadOnlyMode,xn as isHTMLAnchorElement,vn as isHTMLElement,Sn as isInlineDomNode,ce as isLexicalEditor,oe as isSelectionCapturedInDecoratorInput,le as isSelectionWithinEditor,ie as resetRandomKey};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './Lexical.dev.mjs';\nimport * as modProd from './Lexical.prod.mjs';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const $addUpdateTag = mod.$addUpdateTag;\nexport const $applyNodeReplacement = mod.$applyNodeReplacement;\nexport const $cloneWithProperties = mod.$cloneWithProperties;\nexport const $copyNode = mod.$copyNode;\nexport const $createLineBreakNode = mod.$createLineBreakNode;\nexport const $createNodeSelection = mod.$createNodeSelection;\nexport const $createParagraphNode = mod.$createParagraphNode;\nexport const $createPoint = mod.$createPoint;\nexport const $createRangeSelection = mod.$createRangeSelection;\nexport const $createRangeSelectionFromDom = mod.$createRangeSelectionFromDom;\nexport const $createTabNode = mod.$createTabNode;\nexport const $createTextNode = mod.$createTextNode;\nexport const $getAdjacentNode = mod.$getAdjacentNode;\nexport const $getCharacterOffsets = mod.$getCharacterOffsets;\nexport const $getEditor = mod.$getEditor;\nexport const $getNearestNodeFromDOMNode = mod.$getNearestNodeFromDOMNode;\nexport const $getNearestRootOrShadowRoot = mod.$getNearestRootOrShadowRoot;\nexport const $getNodeByKey = mod.$getNodeByKey;\nexport const $getNodeByKeyOrThrow = mod.$getNodeByKeyOrThrow;\nexport const $getPreviousSelection = mod.$getPreviousSelection;\nexport const $getRoot = mod.$getRoot;\nexport const $getSelection = mod.$getSelection;\nexport const $getTextContent = mod.$getTextContent;\nexport const $hasAncestor = mod.$hasAncestor;\nexport const $hasUpdateTag = mod.$hasUpdateTag;\nexport const $insertNodes = mod.$insertNodes;\nexport const $isBlockElementNode = mod.$isBlockElementNode;\nexport const $isDecoratorNode = mod.$isDecoratorNode;\nexport const $isElementNode = mod.$isElementNode;\nexport const $isInlineElementOrDecoratorNode = mod.$isInlineElementOrDecoratorNode;\nexport const $isLeafNode = mod.$isLeafNode;\nexport const $isLineBreakNode = mod.$isLineBreakNode;\nexport const $isNodeSelection = mod.$isNodeSelection;\nexport const $isParagraphNode = mod.$isParagraphNode;\nexport const $isRangeSelection = mod.$isRangeSelection;\nexport const $isRootNode = mod.$isRootNode;\nexport const $isRootOrShadowRoot = mod.$isRootOrShadowRoot;\nexport const $isTabNode = mod.$isTabNode;\nexport const $isTextNode = mod.$isTextNode;\nexport const $isTokenOrSegmented = mod.$isTokenOrSegmented;\nexport const $nodesOfType = mod.$nodesOfType;\nexport const $normalizeSelection__EXPERIMENTAL = mod.$normalizeSelection__EXPERIMENTAL;\nexport const $parseSerializedNode = mod.$parseSerializedNode;\nexport const $selectAll = mod.$selectAll;\nexport const $setCompositionKey = mod.$setCompositionKey;\nexport const $setSelection = mod.$setSelection;\nexport const $splitNode = mod.$splitNode;\nexport const ArtificialNode__DO_NOT_USE = mod.ArtificialNode__DO_NOT_USE;\nexport const BLUR_COMMAND = mod.BLUR_COMMAND;\nexport const CAN_REDO_COMMAND = mod.CAN_REDO_COMMAND;\nexport const CAN_UNDO_COMMAND = mod.CAN_UNDO_COMMAND;\nexport const CLEAR_EDITOR_COMMAND = mod.CLEAR_EDITOR_COMMAND;\nexport const CLEAR_HISTORY_COMMAND = mod.CLEAR_HISTORY_COMMAND;\nexport const CLICK_COMMAND = mod.CLICK_COMMAND;\nexport const COMMAND_PRIORITY_CRITICAL = mod.COMMAND_PRIORITY_CRITICAL;\nexport const COMMAND_PRIORITY_EDITOR = mod.COMMAND_PRIORITY_EDITOR;\nexport const COMMAND_PRIORITY_HIGH = mod.COMMAND_PRIORITY_HIGH;\nexport const COMMAND_PRIORITY_LOW = mod.COMMAND_PRIORITY_LOW;\nexport const COMMAND_PRIORITY_NORMAL = mod.COMMAND_PRIORITY_NORMAL;\nexport const CONTROLLED_TEXT_INSERTION_COMMAND = mod.CONTROLLED_TEXT_INSERTION_COMMAND;\nexport const COPY_COMMAND = mod.COPY_COMMAND;\nexport const CUT_COMMAND = mod.CUT_COMMAND;\nexport const DELETE_CHARACTER_COMMAND = mod.DELETE_CHARACTER_COMMAND;\nexport const DELETE_LINE_COMMAND = mod.DELETE_LINE_COMMAND;\nexport const DELETE_WORD_COMMAND = mod.DELETE_WORD_COMMAND;\nexport const DRAGEND_COMMAND = mod.DRAGEND_COMMAND;\nexport const DRAGOVER_COMMAND = mod.DRAGOVER_COMMAND;\nexport const DRAGSTART_COMMAND = mod.DRAGSTART_COMMAND;\nexport const DROP_COMMAND = mod.DROP_COMMAND;\nexport const DecoratorNode = mod.DecoratorNode;\nexport const ElementNode = mod.ElementNode;\nexport const FOCUS_COMMAND = mod.FOCUS_COMMAND;\nexport const FORMAT_ELEMENT_COMMAND = mod.FORMAT_ELEMENT_COMMAND;\nexport const FORMAT_TEXT_COMMAND = mod.FORMAT_TEXT_COMMAND;\nexport const INDENT_CONTENT_COMMAND = mod.INDENT_CONTENT_COMMAND;\nexport const INSERT_LINE_BREAK_COMMAND = mod.INSERT_LINE_BREAK_COMMAND;\nexport const INSERT_PARAGRAPH_COMMAND = mod.INSERT_PARAGRAPH_COMMAND;\nexport const INSERT_TAB_COMMAND = mod.INSERT_TAB_COMMAND;\nexport const IS_ALL_FORMATTING = mod.IS_ALL_FORMATTING;\nexport const IS_BOLD = mod.IS_BOLD;\nexport const IS_CODE = mod.IS_CODE;\nexport const IS_HIGHLIGHT = mod.IS_HIGHLIGHT;\nexport const IS_ITALIC = mod.IS_ITALIC;\nexport const IS_STRIKETHROUGH = mod.IS_STRIKETHROUGH;\nexport const IS_SUBSCRIPT = mod.IS_SUBSCRIPT;\nexport const IS_SUPERSCRIPT = mod.IS_SUPERSCRIPT;\nexport const IS_UNDERLINE = mod.IS_UNDERLINE;\nexport const KEY_ARROW_DOWN_COMMAND = mod.KEY_ARROW_DOWN_COMMAND;\nexport const KEY_ARROW_LEFT_COMMAND = mod.KEY_ARROW_LEFT_COMMAND;\nexport const KEY_ARROW_RIGHT_COMMAND = mod.KEY_ARROW_RIGHT_COMMAND;\nexport const KEY_ARROW_UP_COMMAND = mod.KEY_ARROW_UP_COMMAND;\nexport const KEY_BACKSPACE_COMMAND = mod.KEY_BACKSPACE_COMMAND;\nexport const KEY_DELETE_COMMAND = mod.KEY_DELETE_COMMAND;\nexport const KEY_DOWN_COMMAND = mod.KEY_DOWN_COMMAND;\nexport const KEY_ENTER_COMMAND = mod.KEY_ENTER_COMMAND;\nexport const KEY_ESCAPE_COMMAND = mod.KEY_ESCAPE_COMMAND;\nexport const KEY_MODIFIER_COMMAND = mod.KEY_MODIFIER_COMMAND;\nexport const KEY_SPACE_COMMAND = mod.KEY_SPACE_COMMAND;\nexport const KEY_TAB_COMMAND = mod.KEY_TAB_COMMAND;\nexport const LineBreakNode = mod.LineBreakNode;\nexport const MOVE_TO_END = mod.MOVE_TO_END;\nexport const MOVE_TO_START = mod.MOVE_TO_START;\nexport const OUTDENT_CONTENT_COMMAND = mod.OUTDENT_CONTENT_COMMAND;\nexport const PASTE_COMMAND = mod.PASTE_COMMAND;\nexport const ParagraphNode = mod.ParagraphNode;\nexport const REDO_COMMAND = mod.REDO_COMMAND;\nexport const REMOVE_TEXT_COMMAND = mod.REMOVE_TEXT_COMMAND;\nexport const RootNode = mod.RootNode;\nexport const SELECTION_CHANGE_COMMAND = mod.SELECTION_CHANGE_COMMAND;\nexport const SELECTION_INSERT_CLIPBOARD_NODES_COMMAND = mod.SELECTION_INSERT_CLIPBOARD_NODES_COMMAND;\nexport const SELECT_ALL_COMMAND = mod.SELECT_ALL_COMMAND;\nexport const TEXT_TYPE_TO_FORMAT = mod.TEXT_TYPE_TO_FORMAT;\nexport const TabNode = mod.TabNode;\nexport const TextNode = mod.TextNode;\nexport const UNDO_COMMAND = mod.UNDO_COMMAND;\nexport const createCommand = mod.createCommand;\nexport const createEditor = mod.createEditor;\nexport const getEditorPropertyFromDOMNode = mod.getEditorPropertyFromDOMNode;\nexport const getNearestEditorFromDOMNode = mod.getNearestEditorFromDOMNode;\nexport const isBlockDomNode = mod.isBlockDomNode;\nexport const isCurrentlyReadOnlyMode = mod.isCurrentlyReadOnlyMode;\nexport const isHTMLAnchorElement = mod.isHTMLAnchorElement;\nexport const isHTMLElement = mod.isHTMLElement;\nexport const isInlineDomNode = mod.isInlineDomNode;\nexport const isLexicalEditor = mod.isLexicalEditor;\nexport const isSelectionCapturedInDecoratorInput = mod.isSelectionCapturedInDecoratorInput;\nexport const isSelectionWithinEditor = mod.isSelectionWithinEditor;\nexport const resetRandomKey = mod.resetRandomKey;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{createContext as e,useContext as n}from\"react\";function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var t=r((function(e){const n=new URLSearchParams;n.append(\"code\",e);for(let e=1;e<arguments.length;e++)n.append(\"v\",arguments[e]);throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${n} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));const l=e(null);function o(e,n){let r=null;return null!=e&&(r=e[1]),{getTheme:function(){return null!=n?n:null!=r?r.getTheme():null}}}function u(){const e=n(l);return null==e&&t(8),e}export{l as LexicalComposerContext,o as createLexicalComposerContext,u as useLexicalComposerContext};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{createLexicalComposerContext as e,LexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createEditor as o,$getRoot as n,$createParagraphNode as i,$getSelection as r}from\"lexical\";import{useLayoutEffect as a,useEffect as c,useMemo as l}from\"react\";import{jsx as d}from\"react/jsx-runtime\";const s=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,m=s?a:c,u={tag:\"history-merge\"};function p({initialConfig:a,children:c}){const p=l((()=>{const{theme:t,namespace:c,nodes:l,onError:d,editorState:m,html:p}=a,f=e(null,t),E=o({editable:a.editable,html:p,namespace:c,nodes:l,onError:e=>d(e,E),theme:t});return function(e,t){if(null===t)return;if(void 0===t)e.update((()=>{const t=n();if(t.isEmpty()){const o=i();t.append(o);const n=s?document.activeElement:null;(null!==r()||null!==n&&n===e.getRootElement())&&o.select()}}),u);else if(null!==t)switch(typeof t){case\"string\":{const o=e.parseEditorState(t);e.setEditorState(o,u);break}case\"object\":e.setEditorState(t,u);break;case\"function\":e.update((()=>{n().isEmpty()&&t(e)}),u)}}(E,m),[E,f]}),[]);return m((()=>{const e=a.editable,[t]=p;t.setEditable(void 0===e||e)}),[]),d(t.Provider,{value:p,children:c})}export{p as LexicalComposer};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as t,useEffect as n,useMemo as r,useRef as i,useState as o}from\"react\";const u=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:n;function c(e){return{initialValueFn:()=>e.isEditable(),subscribe:t=>e.registerEditableListener(t)}}function a(){return function(t){const[n]=e(),c=r((()=>t(n)),[n,t]),a=i(c.initialValueFn()),[l,d]=o(a.current);return u((()=>{const{initialValueFn:e,subscribe:t}=c,n=e();return a.current!==n&&(a.current=n,d(n)),t((e=>{a.current=e,d(e)}))}),[c,t]),l}(c)}export{a as default,a as useLexicalEditable};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { $getRoot, $isDecoratorNode, $isElementNode, $isParagraphNode, $isTextNode, TextNode, $createTextNode } from 'lexical';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Returns the root's text content.\n * @returns The root's text content.\n */\nfunction $rootTextContent() {\n const root = $getRoot();\n return root.getTextContent();\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Determines if the root has any text content and can trim any whitespace if it does.\n * @param isEditorComposing - Is the editor in composition mode due to an active Input Method Editor?\n * @param trim - Should the root text have its whitespaced trimmed? Defaults to true.\n * @returns true if text content is empty, false if there is text or isEditorComposing is true.\n */\nfunction $isRootTextContentEmpty(isEditorComposing, trim = true) {\n if (isEditorComposing) {\n return false;\n }\n let text = $rootTextContent();\n if (trim) {\n text = text.trim();\n }\n return text === '';\n}\n\n/**\n * Returns a function that executes {@link $isRootTextContentEmpty}\n * @param isEditorComposing - Is the editor in composition mode due to an active Input Method Editor?\n * @param trim - Should the root text have its whitespaced trimmed? Defaults to true.\n * @returns A function that executes $isRootTextContentEmpty based on arguments.\n */\nfunction $isRootTextContentEmptyCurry(isEditorComposing, trim) {\n return () => $isRootTextContentEmpty(isEditorComposing, trim);\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Determines if the input should show the placeholder. If anything is in\n * in the root the placeholder should not be shown.\n * @param isComposing - Is the editor in composition mode due to an active Input Method Editor?\n * @returns true if the input should show the placeholder, false otherwise.\n */\nfunction $canShowPlaceholder(isComposing) {\n if (!$isRootTextContentEmpty(isComposing, false)) {\n return false;\n }\n const root = $getRoot();\n const children = root.getChildren();\n const childrenLength = children.length;\n if (childrenLength > 1) {\n return false;\n }\n for (let i = 0; i < childrenLength; i++) {\n const topBlock = children[i];\n if ($isDecoratorNode(topBlock)) {\n return false;\n }\n if ($isElementNode(topBlock)) {\n if (!$isParagraphNode(topBlock)) {\n return false;\n }\n if (topBlock.__indent !== 0) {\n return false;\n }\n const topBlockChildren = topBlock.getChildren();\n const topBlockChildrenLength = topBlockChildren.length;\n for (let s = 0; s < topBlockChildrenLength; s++) {\n const child = topBlockChildren[i];\n if (!$isTextNode(child)) {\n return false;\n }\n }\n }\n }\n return true;\n}\n\n/**\n * Returns a function that executes {@link $canShowPlaceholder}\n * @param isEditorComposing - Is the editor in composition mode due to an active Input Method Editor?\n * @returns A function that executes $canShowPlaceholder with arguments.\n */\nfunction $canShowPlaceholderCurry(isEditorComposing) {\n return () => $canShowPlaceholder(isEditorComposing);\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Finds a TextNode with a size larger than targetCharacters and returns\n * the node along with the remaining length of the text.\n * @param root - The RootNode.\n * @param targetCharacters - The number of characters whose TextNode must be larger than.\n * @returns The TextNode and the intersections offset, or null if no TextNode is found.\n */\nfunction $findTextIntersectionFromCharacters(root, targetCharacters) {\n let node = root.getFirstChild();\n let currentCharacters = 0;\n mainLoop: while (node !== null) {\n if ($isElementNode(node)) {\n const child = node.getFirstChild();\n if (child !== null) {\n node = child;\n continue;\n }\n } else if ($isTextNode(node)) {\n const characters = node.getTextContentSize();\n if (currentCharacters + characters > targetCharacters) {\n return {\n node,\n offset: targetCharacters - currentCharacters\n };\n }\n currentCharacters += characters;\n }\n const sibling = node.getNextSibling();\n if (sibling !== null) {\n node = sibling;\n continue;\n }\n let parent = node.getParent();\n while (parent !== null) {\n const parentSibling = parent.getNextSibling();\n if (parentSibling !== null) {\n node = parentSibling;\n continue mainLoop;\n }\n parent = parent.getParent();\n }\n break;\n }\n return null;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Returns a tuple that can be rested (...) into mergeRegister to clean up\n * node transforms listeners that transforms text into another node, eg. a HashtagNode.\n * @example\n * ```ts\n * useEffect(() => {\n return mergeRegister(\n ...registerLexicalTextEntity(editor, getMatch, targetNode, createNode),\n );\n }, [createNode, editor, getMatch, targetNode]);\n * ```\n * Where targetNode is the type of node containing the text you want to transform (like a text input),\n * then getMatch uses a regex to find a matching text and creates the proper node to include the matching text.\n * @param editor - The lexical editor.\n * @param getMatch - Finds a matching string that satisfies a regex expression.\n * @param targetNode - The node type that contains text to match with. eg. HashtagNode\n * @param createNode - A function that creates a new node to contain the matched text. eg createHashtagNode\n * @returns An array containing the plain text and reverse node transform listeners.\n */\nfunction registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {\n const isTargetNode = node => {\n return node instanceof targetNode;\n };\n const $replaceWithSimpleText = node => {\n const textNode = $createTextNode(node.getTextContent());\n textNode.setFormat(node.getFormat());\n node.replace(textNode);\n };\n const getMode = node => {\n return node.getLatest().__mode;\n };\n const $textNodeTransform = node => {\n if (!node.isSimpleText()) {\n return;\n }\n let prevSibling = node.getPreviousSibling();\n let text = node.getTextContent();\n let currentNode = node;\n let match;\n if ($isTextNode(prevSibling)) {\n const previousText = prevSibling.getTextContent();\n const combinedText = previousText + text;\n const prevMatch = getMatch(combinedText);\n if (isTargetNode(prevSibling)) {\n if (prevMatch === null || getMode(prevSibling) !== 0) {\n $replaceWithSimpleText(prevSibling);\n return;\n } else {\n const diff = prevMatch.end - previousText.length;\n if (diff > 0) {\n const concatText = text.slice(0, diff);\n const newTextContent = previousText + concatText;\n prevSibling.select();\n prevSibling.setTextContent(newTextContent);\n if (diff === text.length) {\n node.remove();\n } else {\n const remainingText = text.slice(diff);\n node.setTextContent(remainingText);\n }\n return;\n }\n }\n } else if (prevMatch === null || prevMatch.start < previousText.length) {\n return;\n }\n }\n let prevMatchLengthToSkip = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n match = getMatch(text);\n let nextText = match === null ? '' : text.slice(match.end);\n text = nextText;\n if (nextText === '') {\n const nextSibling = currentNode.getNextSibling();\n if ($isTextNode(nextSibling)) {\n nextText = currentNode.getTextContent() + nextSibling.getTextContent();\n const nextMatch = getMatch(nextText);\n if (nextMatch === null) {\n if (isTargetNode(nextSibling)) {\n $replaceWithSimpleText(nextSibling);\n } else {\n nextSibling.markDirty();\n }\n return;\n } else if (nextMatch.start !== 0) {\n return;\n }\n }\n }\n if (match === null) {\n return;\n }\n if (match.start === 0 && $isTextNode(prevSibling) && prevSibling.isTextEntity()) {\n prevMatchLengthToSkip += match.end;\n continue;\n }\n let nodeToReplace;\n if (match.start === 0) {\n [nodeToReplace, currentNode] = currentNode.splitText(match.end);\n } else {\n [, nodeToReplace, currentNode] = currentNode.splitText(match.start + prevMatchLengthToSkip, match.end + prevMatchLengthToSkip);\n }\n if (!(nodeToReplace !== undefined)) {\n throw Error(`${'nodeToReplace'} should not be undefined. You may want to check splitOffsets passed to the splitText.`);\n }\n const replacementNode = createNode(nodeToReplace);\n replacementNode.setFormat(nodeToReplace.getFormat());\n nodeToReplace.replace(replacementNode);\n if (currentNode == null) {\n return;\n }\n prevMatchLengthToSkip = 0;\n prevSibling = replacementNode;\n }\n };\n const $reverseNodeTransform = node => {\n const text = node.getTextContent();\n const match = getMatch(text);\n if (match === null || match.start !== 0) {\n $replaceWithSimpleText(node);\n return;\n }\n if (text.length > match.end) {\n // This will split out the rest of the text as simple text\n node.splitText(match.end);\n return;\n }\n const prevSibling = node.getPreviousSibling();\n if ($isTextNode(prevSibling) && prevSibling.isTextEntity()) {\n $replaceWithSimpleText(prevSibling);\n $replaceWithSimpleText(node);\n }\n const nextSibling = node.getNextSibling();\n if ($isTextNode(nextSibling) && nextSibling.isTextEntity()) {\n $replaceWithSimpleText(nextSibling);\n\n // This may have already been converted in the previous block\n if (isTargetNode(node)) {\n $replaceWithSimpleText(node);\n }\n }\n };\n const removePlainTextTransform = editor.registerNodeTransform(TextNode, $textNodeTransform);\n const removeReverseNodeTransform = editor.registerNodeTransform(targetNode, $reverseNodeTransform);\n return [removePlainTextTransform, removeReverseNodeTransform];\n}\n\nexport { $canShowPlaceholder, $canShowPlaceholderCurry, $findTextIntersectionFromCharacters, $isRootTextContentEmpty, $isRootTextContentEmptyCurry, $rootTextContent, registerLexicalTextEntity };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$getRoot as t,$isDecoratorNode as e,$isElementNode as n,$isParagraphNode as r,$isTextNode as i,TextNode as o,$createTextNode as l}from\"lexical\";function s(){return t().getTextContent()}function u(t,e=!0){if(t)return!1;let n=s();return e&&(n=n.trim()),\"\"===n}function f(t,e){return()=>u(t,e)}function c(o){if(!u(o,!1))return!1;const l=t().getChildren(),s=l.length;if(s>1)return!1;for(let t=0;t<s;t++){const o=l[t];if(e(o))return!1;if(n(o)){if(!r(o))return!1;if(0!==o.__indent)return!1;const e=o.getChildren(),n=e.length;for(let r=0;r<n;r++){const n=e[t];if(!i(n))return!1}}}return!0}function g(t){return()=>c(t)}function a(t,e){let r=t.getFirstChild(),o=0;t:for(;null!==r;){if(n(r)){const t=r.getFirstChild();if(null!==t){r=t;continue}}else if(i(r)){const t=r.getTextContentSize();if(o+t>e)return{node:r,offset:e-o};o+=t}const t=r.getNextSibling();if(null!==t){r=t;continue}let l=r.getParent();for(;null!==l;){const t=l.getNextSibling();if(null!==t){r=t;continue t}l=l.getParent()}break}return null}function d(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}var x=d((function(t){const e=new URLSearchParams;e.append(\"code\",t);for(let t=1;t<arguments.length;t++)e.append(\"v\",arguments[t]);throw Error(`Minified Lexical error #${t}; visit https://lexical.dev/docs/error?${e} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));function T(t,e,n,r){const s=t=>t instanceof n,u=t=>{const e=l(t.getTextContent());e.setFormat(t.getFormat()),t.replace(e)};return[t.registerNodeTransform(o,(t=>{if(!t.isSimpleText())return;let n,o=t.getPreviousSibling(),l=t.getTextContent(),f=t;if(i(o)){const n=o.getTextContent(),r=e(n+l);if(s(o)){if(null===r||0!==(t=>t.getLatest().__mode)(o))return void u(o);{const e=r.end-n.length;if(e>0){const r=n+l.slice(0,e);if(o.select(),o.setTextContent(r),e===l.length)t.remove();else{const n=l.slice(e);t.setTextContent(n)}return}}}else if(null===r||r.start<n.length)return}let c=0;for(;;){n=e(l);let t,g=null===n?\"\":l.slice(n.end);if(l=g,\"\"===g){const t=f.getNextSibling();if(i(t)){g=f.getTextContent()+t.getTextContent();const n=e(g);if(null===n)return void(s(t)?u(t):t.markDirty());if(0!==n.start)return}}if(null===n)return;if(0===n.start&&i(o)&&o.isTextEntity()){c+=n.end;continue}0===n.start?[t,f]=f.splitText(n.end):[,t,f]=f.splitText(n.start+c,n.end+c),void 0===t&&x(165,\"nodeToReplace\");const a=r(t);if(a.setFormat(t.getFormat()),t.replace(a),null==f)return;c=0,o=a}})),t.registerNodeTransform(n,(t=>{const n=t.getTextContent(),r=e(n);if(null===r||0!==r.start)return void u(t);if(n.length>r.end)return void t.splitText(r.end);const o=t.getPreviousSibling();i(o)&&o.isTextEntity()&&(u(o),u(t));const l=t.getNextSibling();i(l)&&l.isTextEntity()&&(u(l),s(t)&&u(t))}))]}export{c as $canShowPlaceholder,g as $canShowPlaceholderCurry,a as $findTextIntersectionFromCharacters,u as $isRootTextContentEmpty,f as $isRootTextContentEmptyCurry,s as $rootTextContent,T as registerLexicalTextEntity};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalText.dev.mjs';\nimport * as modProd from './LexicalText.prod.mjs';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const $canShowPlaceholder = mod.$canShowPlaceholder;\nexport const $canShowPlaceholderCurry = mod.$canShowPlaceholderCurry;\nexport const $findTextIntersectionFromCharacters = mod.$findTextIntersectionFromCharacters;\nexport const $isRootTextContentEmpty = mod.$isRootTextContentEmpty;\nexport const $isRootTextContentEmptyCurry = mod.$isRootTextContentEmptyCurry;\nexport const $rootTextContent = mod.$rootTextContent;\nexport const registerLexicalTextEntity = mod.registerLexicalTextEntity;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { $isTextNode, $getCharacterOffsets, $isElementNode, $isRootNode, $getNodeByKey, $getPreviousSelection, $createTextNode, $isRangeSelection, $isTokenOrSegmented, $getRoot, $isRootOrShadowRoot, $hasAncestor, $isLeafNode, $setSelection, $getAdjacentNode, $isDecoratorNode, $isLineBreakNode } from 'lexical';\nexport { $cloneWithProperties } from 'lexical';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nconst CSS_TO_STYLES = new Map();\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction getDOMTextNode(element) {\n let node = element;\n while (node != null) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node;\n }\n node = node.firstChild;\n }\n return null;\n}\nfunction getDOMIndexWithinParent(node) {\n const parent = node.parentNode;\n if (parent == null) {\n throw new Error('Should never happen');\n }\n return [parent, Array.from(parent.childNodes).indexOf(node)];\n}\n\n/**\n * Creates a selection range for the DOM.\n * @param editor - The lexical editor.\n * @param anchorNode - The anchor node of a selection.\n * @param _anchorOffset - The amount of space offset from the anchor to the focus.\n * @param focusNode - The current focus.\n * @param _focusOffset - The amount of space offset from the focus to the anchor.\n * @returns The range of selection for the DOM that was created.\n */\nfunction createDOMRange(editor, anchorNode, _anchorOffset, focusNode, _focusOffset) {\n const anchorKey = anchorNode.getKey();\n const focusKey = focusNode.getKey();\n const range = document.createRange();\n let anchorDOM = editor.getElementByKey(anchorKey);\n let focusDOM = editor.getElementByKey(focusKey);\n let anchorOffset = _anchorOffset;\n let focusOffset = _focusOffset;\n if ($isTextNode(anchorNode)) {\n anchorDOM = getDOMTextNode(anchorDOM);\n }\n if ($isTextNode(focusNode)) {\n focusDOM = getDOMTextNode(focusDOM);\n }\n if (anchorNode === undefined || focusNode === undefined || anchorDOM === null || focusDOM === null) {\n return null;\n }\n if (anchorDOM.nodeName === 'BR') {\n [anchorDOM, anchorOffset] = getDOMIndexWithinParent(anchorDOM);\n }\n if (focusDOM.nodeName === 'BR') {\n [focusDOM, focusOffset] = getDOMIndexWithinParent(focusDOM);\n }\n const firstChild = anchorDOM.firstChild;\n if (anchorDOM === focusDOM && firstChild != null && firstChild.nodeName === 'BR' && anchorOffset === 0 && focusOffset === 0) {\n focusOffset = 1;\n }\n try {\n range.setStart(anchorDOM, anchorOffset);\n range.setEnd(focusDOM, focusOffset);\n } catch (e) {\n return null;\n }\n if (range.collapsed && (anchorOffset !== focusOffset || anchorKey !== focusKey)) {\n // Range is backwards, we need to reverse it\n range.setStart(focusDOM, focusOffset);\n range.setEnd(anchorDOM, anchorOffset);\n }\n return range;\n}\n\n/**\n * Creates DOMRects, generally used to help the editor find a specific location on the screen.\n * @param editor - The lexical editor\n * @param range - A fragment of a document that can contain nodes and parts of text nodes.\n * @returns The selectionRects as an array.\n */\nfunction createRectsFromDOMRange(editor, range) {\n const rootElement = editor.getRootElement();\n if (rootElement === null) {\n return [];\n }\n const rootRect = rootElement.getBoundingClientRect();\n const computedStyle = getComputedStyle(rootElement);\n const rootPadding = parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);\n const selectionRects = Array.from(range.getClientRects());\n let selectionRectsLength = selectionRects.length;\n //sort rects from top left to bottom right.\n selectionRects.sort((a, b) => {\n const top = a.top - b.top;\n // Some rects match position closely, but not perfectly,\n // so we give a 3px tolerance.\n if (Math.abs(top) <= 3) {\n return a.left - b.left;\n }\n return top;\n });\n let prevRect;\n for (let i = 0; i < selectionRectsLength; i++) {\n const selectionRect = selectionRects[i];\n // Exclude rects that overlap preceding Rects in the sorted list.\n const isOverlappingRect = prevRect && prevRect.top <= selectionRect.top && prevRect.top + prevRect.height > selectionRect.top && prevRect.left + prevRect.width > selectionRect.left;\n // Exclude selections that span the entire element\n const selectionSpansElement = selectionRect.width + rootPadding === rootRect.width;\n if (isOverlappingRect || selectionSpansElement) {\n selectionRects.splice(i--, 1);\n selectionRectsLength--;\n continue;\n }\n prevRect = selectionRect;\n }\n return selectionRects;\n}\n\n/**\n * Creates an object containing all the styles and their values provided in the CSS string.\n * @param css - The CSS string of styles and their values.\n * @returns The styleObject containing all the styles and their values.\n */\nfunction getStyleObjectFromRawCSS(css) {\n const styleObject = {};\n const styles = css.split(';');\n for (const style of styles) {\n if (style !== '') {\n const [key, value] = style.split(/:([^]+)/); // split on first colon\n if (key && value) {\n styleObject[key.trim()] = value.trim();\n }\n }\n }\n return styleObject;\n}\n\n/**\n * Given a CSS string, returns an object from the style cache.\n * @param css - The CSS property as a string.\n * @returns The value of the given CSS property.\n */\nfunction getStyleObjectFromCSS(css) {\n let value = CSS_TO_STYLES.get(css);\n if (value === undefined) {\n value = getStyleObjectFromRawCSS(css);\n CSS_TO_STYLES.set(css, value);\n }\n {\n // Freeze the value in DEV to prevent accidental mutations\n Object.freeze(value);\n }\n return value;\n}\n\n/**\n * Gets the CSS styles from the style object.\n * @param styles - The style object containing the styles to get.\n * @returns A string containing the CSS styles and their values.\n */\nfunction getCSSFromStyleObject(styles) {\n let css = '';\n for (const style in styles) {\n if (style) {\n css += `${style}: ${styles[style]};`;\n }\n }\n return css;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Generally used to append text content to HTML and JSON. Grabs the text content and \"slices\"\n * it to be generated into the new TextNode.\n * @param selection - The selection containing the node whose TextNode is to be edited.\n * @param textNode - The TextNode to be edited.\n * @returns The updated TextNode.\n */\nfunction $sliceSelectedTextNodeContent(selection, textNode) {\n const anchorAndFocus = selection.getStartEndPoints();\n if (textNode.isSelected(selection) && !textNode.isSegmented() && !textNode.isToken() && anchorAndFocus !== null) {\n const [anchor, focus] = anchorAndFocus;\n const isBackward = selection.isBackward();\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n const isAnchor = textNode.is(anchorNode);\n const isFocus = textNode.is(focusNode);\n if (isAnchor || isFocus) {\n const [anchorOffset, focusOffset] = $getCharacterOffsets(selection);\n const isSame = anchorNode.is(focusNode);\n const isFirst = textNode.is(isBackward ? focusNode : anchorNode);\n const isLast = textNode.is(isBackward ? anchorNode : focusNode);\n let startOffset = 0;\n let endOffset = undefined;\n if (isSame) {\n startOffset = anchorOffset > focusOffset ? focusOffset : anchorOffset;\n endOffset = anchorOffset > focusOffset ? anchorOffset : focusOffset;\n } else if (isFirst) {\n const offset = isBackward ? focusOffset : anchorOffset;\n startOffset = offset;\n endOffset = undefined;\n } else if (isLast) {\n const offset = isBackward ? anchorOffset : focusOffset;\n startOffset = 0;\n endOffset = offset;\n }\n textNode.__text = textNode.__text.slice(startOffset, endOffset);\n return textNode;\n }\n }\n return textNode;\n}\n\n/**\n * Determines if the current selection is at the end of the node.\n * @param point - The point of the selection to test.\n * @returns true if the provided point offset is in the last possible position, false otherwise.\n */\nfunction $isAtNodeEnd(point) {\n if (point.type === 'text') {\n return point.offset === point.getNode().getTextContentSize();\n }\n const node = point.getNode();\n if (!$isElementNode(node)) {\n throw Error(`isAtNodeEnd: node must be a TextNode or ElementNode`);\n }\n return point.offset === node.getChildrenSize();\n}\n\n/**\n * Trims text from a node in order to shorten it, eg. to enforce a text's max length. If it deletes text\n * that is an ancestor of the anchor then it will leave 2 indents, otherwise, if no text content exists, it deletes\n * the TextNode. It will move the focus to either the end of any left over text or beginning of a new TextNode.\n * @param editor - The lexical editor.\n * @param anchor - The anchor of the current selection, where the selection should be pointing.\n * @param delCount - The amount of characters to delete. Useful as a dynamic variable eg. textContentSize - maxLength;\n */\nfunction $trimTextContentFromAnchor(editor, anchor, delCount) {\n // Work from the current selection anchor point\n let currentNode = anchor.getNode();\n let remaining = delCount;\n if ($isElementNode(currentNode)) {\n const descendantNode = currentNode.getDescendantByIndex(anchor.offset);\n if (descendantNode !== null) {\n currentNode = descendantNode;\n }\n }\n while (remaining > 0 && currentNode !== null) {\n if ($isElementNode(currentNode)) {\n const lastDescendant = currentNode.getLastDescendant();\n if (lastDescendant !== null) {\n currentNode = lastDescendant;\n }\n }\n let nextNode = currentNode.getPreviousSibling();\n let additionalElementWhitespace = 0;\n if (nextNode === null) {\n let parent = currentNode.getParentOrThrow();\n let parentSibling = parent.getPreviousSibling();\n while (parentSibling === null) {\n parent = parent.getParent();\n if (parent === null) {\n nextNode = null;\n break;\n }\n parentSibling = parent.getPreviousSibling();\n }\n if (parent !== null) {\n additionalElementWhitespace = parent.isInline() ? 0 : 2;\n nextNode = parentSibling;\n }\n }\n let text = currentNode.getTextContent();\n // If the text is empty, we need to consider adding in two line breaks to match\n // the content if we were to get it from its parent.\n if (text === '' && $isElementNode(currentNode) && !currentNode.isInline()) {\n // TODO: should this be handled in core?\n text = '\\n\\n';\n }\n const currentNodeSize = text.length;\n if (!$isTextNode(currentNode) || remaining >= currentNodeSize) {\n const parent = currentNode.getParent();\n currentNode.remove();\n if (parent != null && parent.getChildrenSize() === 0 && !$isRootNode(parent)) {\n parent.remove();\n }\n remaining -= currentNodeSize + additionalElementWhitespace;\n currentNode = nextNode;\n } else {\n const key = currentNode.getKey();\n // See if we can just revert it to what was in the last editor state\n const prevTextContent = editor.getEditorState().read(() => {\n const prevNode = $getNodeByKey(key);\n if ($isTextNode(prevNode) && prevNode.isSimpleText()) {\n return prevNode.getTextContent();\n }\n return null;\n });\n const offset = currentNodeSize - remaining;\n const slicedText = text.slice(0, offset);\n if (prevTextContent !== null && prevTextContent !== text) {\n const prevSelection = $getPreviousSelection();\n let target = currentNode;\n if (!currentNode.isSimpleText()) {\n const textNode = $createTextNode(prevTextContent);\n currentNode.replace(textNode);\n target = textNode;\n } else {\n currentNode.setTextContent(prevTextContent);\n }\n if ($isRangeSelection(prevSelection) && prevSelection.isCollapsed()) {\n const prevOffset = prevSelection.anchor.offset;\n target.select(prevOffset, prevOffset);\n }\n } else if (currentNode.isSimpleText()) {\n // Split text\n const isSelected = anchor.key === key;\n let anchorOffset = anchor.offset;\n // Move offset to end if it's less than the remaining number, otherwise\n // we'll have a negative splitStart.\n if (anchorOffset < remaining) {\n anchorOffset = currentNodeSize;\n }\n const splitStart = isSelected ? anchorOffset - remaining : 0;\n const splitEnd = isSelected ? anchorOffset : offset;\n if (isSelected && splitStart === 0) {\n const [excessNode] = currentNode.splitText(splitStart, splitEnd);\n excessNode.remove();\n } else {\n const [, excessNode] = currentNode.splitText(splitStart, splitEnd);\n excessNode.remove();\n }\n } else {\n const textNode = $createTextNode(slicedText);\n currentNode.replace(textNode);\n }\n remaining = 0;\n }\n }\n}\n\n/**\n * Gets the TextNode's style object and adds the styles to the CSS.\n * @param node - The TextNode to add styles to.\n */\nfunction $addNodeStyle(node) {\n const CSSText = node.getStyle();\n const styles = getStyleObjectFromRawCSS(CSSText);\n CSS_TO_STYLES.set(CSSText, styles);\n}\nfunction $patchStyle(target, patch) {\n const prevStyles = getStyleObjectFromCSS('getStyle' in target ? target.getStyle() : target.style);\n const newStyles = Object.entries(patch).reduce((styles, [key, value]) => {\n if (typeof value === 'function') {\n styles[key] = value(prevStyles[key], target);\n } else if (value === null) {\n delete styles[key];\n } else {\n styles[key] = value;\n }\n return styles;\n }, {\n ...prevStyles\n } || {});\n const newCSSText = getCSSFromStyleObject(newStyles);\n target.setStyle(newCSSText);\n CSS_TO_STYLES.set(newCSSText, newStyles);\n}\n\n/**\n * Applies the provided styles to the TextNodes in the provided Selection.\n * Will update partially selected TextNodes by splitting the TextNode and applying\n * the styles to the appropriate one.\n * @param selection - The selected node(s) to update.\n * @param patch - The patch to apply, which can include multiple styles. \\\\{CSSProperty: value\\\\} . Can also accept a function that returns the new property value.\n */\nfunction $patchStyleText(selection, patch) {\n const selectedNodes = selection.getNodes();\n const selectedNodesLength = selectedNodes.length;\n const anchorAndFocus = selection.getStartEndPoints();\n if (anchorAndFocus === null) {\n return;\n }\n const [anchor, focus] = anchorAndFocus;\n const lastIndex = selectedNodesLength - 1;\n let firstNode = selectedNodes[0];\n let lastNode = selectedNodes[lastIndex];\n if (selection.isCollapsed() && $isRangeSelection(selection)) {\n $patchStyle(selection, patch);\n return;\n }\n const firstNodeText = firstNode.getTextContent();\n const firstNodeTextLength = firstNodeText.length;\n const focusOffset = focus.offset;\n let anchorOffset = anchor.offset;\n const isBefore = anchor.isBefore(focus);\n let startOffset = isBefore ? anchorOffset : focusOffset;\n let endOffset = isBefore ? focusOffset : anchorOffset;\n const startType = isBefore ? anchor.type : focus.type;\n const endType = isBefore ? focus.type : anchor.type;\n const endKey = isBefore ? focus.key : anchor.key;\n\n // This is the case where the user only selected the very end of the\n // first node so we don't want to include it in the formatting change.\n if ($isTextNode(firstNode) && startOffset === firstNodeTextLength) {\n const nextSibling = firstNode.getNextSibling();\n if ($isTextNode(nextSibling)) {\n // we basically make the second node the firstNode, changing offsets accordingly\n anchorOffset = 0;\n startOffset = 0;\n firstNode = nextSibling;\n }\n }\n\n // This is the case where we only selected a single node\n if (selectedNodes.length === 1) {\n if ($isTextNode(firstNode) && firstNode.canHaveFormat()) {\n startOffset = startType === 'element' ? 0 : anchorOffset > focusOffset ? focusOffset : anchorOffset;\n endOffset = endType === 'element' ? firstNodeTextLength : anchorOffset > focusOffset ? anchorOffset : focusOffset;\n\n // No actual text is selected, so do nothing.\n if (startOffset === endOffset) {\n return;\n }\n\n // The entire node is selected or a token/segment, so just format it\n if ($isTokenOrSegmented(firstNode) || startOffset === 0 && endOffset === firstNodeTextLength) {\n $patchStyle(firstNode, patch);\n firstNode.select(startOffset, endOffset);\n } else {\n // The node is partially selected, so split it into two nodes\n // and style the selected one.\n const splitNodes = firstNode.splitText(startOffset, endOffset);\n const replacement = startOffset === 0 ? splitNodes[0] : splitNodes[1];\n $patchStyle(replacement, patch);\n replacement.select(0, endOffset - startOffset);\n }\n } // multiple nodes selected.\n } else {\n if ($isTextNode(firstNode) && startOffset < firstNode.getTextContentSize() && firstNode.canHaveFormat()) {\n if (startOffset !== 0 && !$isTokenOrSegmented(firstNode)) {\n // the entire first node isn't selected and it isn't a token or segmented, so split it\n firstNode = firstNode.splitText(startOffset)[1];\n startOffset = 0;\n if (isBefore) {\n anchor.set(firstNode.getKey(), startOffset, 'text');\n } else {\n focus.set(firstNode.getKey(), startOffset, 'text');\n }\n }\n $patchStyle(firstNode, patch);\n }\n if ($isTextNode(lastNode) && lastNode.canHaveFormat()) {\n const lastNodeText = lastNode.getTextContent();\n const lastNodeTextLength = lastNodeText.length;\n\n // The last node might not actually be the end node\n //\n // If not, assume the last node is fully-selected unless the end offset is\n // zero.\n if (lastNode.__key !== endKey && endOffset !== 0) {\n endOffset = lastNodeTextLength;\n }\n\n // if the entire last node isn't selected and it isn't a token or segmented, split it\n if (endOffset !== lastNodeTextLength && !$isTokenOrSegmented(lastNode)) {\n [lastNode] = lastNode.splitText(endOffset);\n }\n if (endOffset !== 0 || endType === 'element') {\n $patchStyle(lastNode, patch);\n }\n }\n\n // style all the text nodes in between\n for (let i = 1; i < lastIndex; i++) {\n const selectedNode = selectedNodes[i];\n const selectedNodeKey = selectedNode.getKey();\n if ($isTextNode(selectedNode) && selectedNode.canHaveFormat() && selectedNodeKey !== firstNode.getKey() && selectedNodeKey !== lastNode.getKey() && !selectedNode.isToken()) {\n $patchStyle(selectedNode, patch);\n }\n }\n }\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n/**\n * Converts all nodes in the selection that are of one block type to another.\n * @param selection - The selected blocks to be converted.\n * @param createElement - The function that creates the node. eg. $createParagraphNode.\n */\nfunction $setBlocksType(selection, createElement) {\n if (selection === null) {\n return;\n }\n const anchorAndFocus = selection.getStartEndPoints();\n const anchor = anchorAndFocus ? anchorAndFocus[0] : null;\n if (anchor !== null && anchor.key === 'root') {\n const element = createElement();\n const root = $getRoot();\n const firstChild = root.getFirstChild();\n if (firstChild) {\n firstChild.replace(element, true);\n } else {\n root.append(element);\n }\n return;\n }\n const nodes = selection.getNodes();\n const firstSelectedBlock = anchor !== null ? $getAncestor(anchor.getNode(), INTERNAL_$isBlock) : false;\n if (firstSelectedBlock && nodes.indexOf(firstSelectedBlock) === -1) {\n nodes.push(firstSelectedBlock);\n }\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!INTERNAL_$isBlock(node)) {\n continue;\n }\n if (!$isElementNode(node)) {\n throw Error(`Expected block node to be an ElementNode`);\n }\n const targetElement = createElement();\n targetElement.setFormat(node.getFormatType());\n targetElement.setIndent(node.getIndent());\n node.replace(targetElement, true);\n }\n}\nfunction isPointAttached(point) {\n return point.getNode().isAttached();\n}\nfunction $removeParentEmptyElements(startingNode) {\n let node = startingNode;\n while (node !== null && !$isRootOrShadowRoot(node)) {\n const latest = node.getLatest();\n const parentNode = node.getParent();\n if (latest.getChildrenSize() === 0) {\n node.remove(true);\n }\n node = parentNode;\n }\n}\n\n/**\n * @deprecated\n * Wraps all nodes in the selection into another node of the type returned by createElement.\n * @param selection - The selection of nodes to be wrapped.\n * @param createElement - A function that creates the wrapping ElementNode. eg. $createParagraphNode.\n * @param wrappingElement - An element to append the wrapped selection and its children to.\n */\nfunction $wrapNodes(selection, createElement, wrappingElement = null) {\n const anchorAndFocus = selection.getStartEndPoints();\n const anchor = anchorAndFocus ? anchorAndFocus[0] : null;\n const nodes = selection.getNodes();\n const nodesLength = nodes.length;\n if (anchor !== null && (nodesLength === 0 || nodesLength === 1 && anchor.type === 'element' && anchor.getNode().getChildrenSize() === 0)) {\n const target = anchor.type === 'text' ? anchor.getNode().getParentOrThrow() : anchor.getNode();\n const children = target.getChildren();\n let element = createElement();\n element.setFormat(target.getFormatType());\n element.setIndent(target.getIndent());\n children.forEach(child => element.append(child));\n if (wrappingElement) {\n element = wrappingElement.append(element);\n }\n target.replace(element);\n return;\n }\n let topLevelNode = null;\n let descendants = [];\n for (let i = 0; i < nodesLength; i++) {\n const node = nodes[i];\n // Determine whether wrapping has to be broken down into multiple chunks. This can happen if the\n // user selected multiple Root-like nodes that have to be treated separately as if they are\n // their own branch. I.e. you don't want to wrap a whole table, but rather the contents of each\n // of each of the cell nodes.\n if ($isRootOrShadowRoot(node)) {\n $wrapNodesImpl(selection, descendants, descendants.length, createElement, wrappingElement);\n descendants = [];\n topLevelNode = node;\n } else if (topLevelNode === null || topLevelNode !== null && $hasAncestor(node, topLevelNode)) {\n descendants.push(node);\n } else {\n $wrapNodesImpl(selection, descendants, descendants.length, createElement, wrappingElement);\n descendants = [node];\n }\n }\n $wrapNodesImpl(selection, descendants, descendants.length, createElement, wrappingElement);\n}\n\n/**\n * Wraps each node into a new ElementNode.\n * @param selection - The selection of nodes to wrap.\n * @param nodes - An array of nodes, generally the descendants of the selection.\n * @param nodesLength - The length of nodes.\n * @param createElement - A function that creates the wrapping ElementNode. eg. $createParagraphNode.\n * @param wrappingElement - An element to wrap all the nodes into.\n * @returns\n */\nfunction $wrapNodesImpl(selection, nodes, nodesLength, createElement, wrappingElement = null) {\n if (nodes.length === 0) {\n return;\n }\n const firstNode = nodes[0];\n const elementMapping = new Map();\n const elements = [];\n // The below logic is to find the right target for us to\n // either insertAfter/insertBefore/append the corresponding\n // elements to. This is made more complicated due to nested\n // structures.\n let target = $isElementNode(firstNode) ? firstNode : firstNode.getParentOrThrow();\n if (target.isInline()) {\n target = target.getParentOrThrow();\n }\n let targetIsPrevSibling = false;\n while (target !== null) {\n const prevSibling = target.getPreviousSibling();\n if (prevSibling !== null) {\n target = prevSibling;\n targetIsPrevSibling = true;\n break;\n }\n target = target.getParentOrThrow();\n if ($isRootOrShadowRoot(target)) {\n break;\n }\n }\n const emptyElements = new Set();\n\n // Find any top level empty elements\n for (let i = 0; i < nodesLength; i++) {\n const node = nodes[i];\n if ($isElementNode(node) && node.getChildrenSize() === 0) {\n emptyElements.add(node.getKey());\n }\n }\n const movedNodes = new Set();\n\n // Move out all leaf nodes into our elements array.\n // If we find a top level empty element, also move make\n // an element for that.\n for (let i = 0; i < nodesLength; i++) {\n const node = nodes[i];\n let parent = node.getParent();\n if (parent !== null && parent.isInline()) {\n parent = parent.getParent();\n }\n if (parent !== null && $isLeafNode(node) && !movedNodes.has(node.getKey())) {\n const parentKey = parent.getKey();\n if (elementMapping.get(parentKey) === undefined) {\n const targetElement = createElement();\n targetElement.setFormat(parent.getFormatType());\n targetElement.setIndent(parent.getIndent());\n elements.push(targetElement);\n elementMapping.set(parentKey, targetElement);\n // Move node and its siblings to the new\n // element.\n parent.getChildren().forEach(child => {\n targetElement.append(child);\n movedNodes.add(child.getKey());\n if ($isElementNode(child)) {\n // Skip nested leaf nodes if the parent has already been moved\n child.getChildrenKeys().forEach(key => movedNodes.add(key));\n }\n });\n $removeParentEmptyElements(parent);\n }\n } else if (emptyElements.has(node.getKey())) {\n if (!$isElementNode(node)) {\n throw Error(`Expected node in emptyElements to be an ElementNode`);\n }\n const targetElement = createElement();\n targetElement.setFormat(node.getFormatType());\n targetElement.setIndent(node.getIndent());\n elements.push(targetElement);\n node.remove(true);\n }\n }\n if (wrappingElement !== null) {\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n wrappingElement.append(element);\n }\n }\n let lastElement = null;\n\n // If our target is Root-like, let's see if we can re-adjust\n // so that the target is the first child instead.\n if ($isRootOrShadowRoot(target)) {\n if (targetIsPrevSibling) {\n if (wrappingElement !== null) {\n target.insertAfter(wrappingElement);\n } else {\n for (let i = elements.length - 1; i >= 0; i--) {\n const element = elements[i];\n target.insertAfter(element);\n }\n }\n } else {\n const firstChild = target.getFirstChild();\n if ($isElementNode(firstChild)) {\n target = firstChild;\n }\n if (firstChild === null) {\n if (wrappingElement) {\n target.append(wrappingElement);\n } else {\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n target.append(element);\n lastElement = element;\n }\n }\n } else {\n if (wrappingElement !== null) {\n firstChild.insertBefore(wrappingElement);\n } else {\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n firstChild.insertBefore(element);\n lastElement = element;\n }\n }\n }\n }\n } else {\n if (wrappingElement) {\n target.insertAfter(wrappingElement);\n } else {\n for (let i = elements.length - 1; i >= 0; i--) {\n const element = elements[i];\n target.insertAfter(element);\n lastElement = element;\n }\n }\n }\n const prevSelection = $getPreviousSelection();\n if ($isRangeSelection(prevSelection) && isPointAttached(prevSelection.anchor) && isPointAttached(prevSelection.focus)) {\n $setSelection(prevSelection.clone());\n } else if (lastElement !== null) {\n lastElement.selectEnd();\n } else {\n selection.dirty = true;\n }\n}\n\n/**\n * Determines if the default character selection should be overridden. Used with DecoratorNodes\n * @param selection - The selection whose default character selection may need to be overridden.\n * @param isBackward - Is the selection backwards (the focus comes before the anchor)?\n * @returns true if it should be overridden, false if not.\n */\nfunction $shouldOverrideDefaultCharacterSelection(selection, isBackward) {\n const possibleNode = $getAdjacentNode(selection.focus, isBackward);\n return $isDecoratorNode(possibleNode) && !possibleNode.isIsolated() || $isElementNode(possibleNode) && !possibleNode.isInline() && !possibleNode.canBeEmpty();\n}\n\n/**\n * Moves the selection according to the arguments.\n * @param selection - The selected text or nodes.\n * @param isHoldingShift - Is the shift key being held down during the operation.\n * @param isBackward - Is the selection selected backwards (the focus comes before the anchor)?\n * @param granularity - The distance to adjust the current selection.\n */\nfunction $moveCaretSelection(selection, isHoldingShift, isBackward, granularity) {\n selection.modify(isHoldingShift ? 'extend' : 'move', isBackward, granularity);\n}\n\n/**\n * Tests a parent element for right to left direction.\n * @param selection - The selection whose parent is to be tested.\n * @returns true if the selections' parent element has a direction of 'rtl' (right to left), false otherwise.\n */\nfunction $isParentElementRTL(selection) {\n const anchorNode = selection.anchor.getNode();\n const parent = $isRootNode(anchorNode) ? anchorNode : anchorNode.getParentOrThrow();\n return parent.getDirection() === 'rtl';\n}\n\n/**\n * Moves selection by character according to arguments.\n * @param selection - The selection of the characters to move.\n * @param isHoldingShift - Is the shift key being held down during the operation.\n * @param isBackward - Is the selection backward (the focus comes before the anchor)?\n */\nfunction $moveCharacter(selection, isHoldingShift, isBackward) {\n const isRTL = $isParentElementRTL(selection);\n $moveCaretSelection(selection, isHoldingShift, isBackward ? !isRTL : isRTL, 'character');\n}\n\n/**\n * Expands the current Selection to cover all of the content in the editor.\n * @param selection - The current selection.\n */\nfunction $selectAll(selection) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = anchor.getNode();\n const topParent = anchorNode.getTopLevelElementOrThrow();\n const root = topParent.getParentOrThrow();\n let firstNode = root.getFirstDescendant();\n let lastNode = root.getLastDescendant();\n let firstType = 'element';\n let lastType = 'element';\n let lastOffset = 0;\n if ($isTextNode(firstNode)) {\n firstType = 'text';\n } else if (!$isElementNode(firstNode) && firstNode !== null) {\n firstNode = firstNode.getParentOrThrow();\n }\n if ($isTextNode(lastNode)) {\n lastType = 'text';\n lastOffset = lastNode.getTextContentSize();\n } else if (!$isElementNode(lastNode) && lastNode !== null) {\n lastNode = lastNode.getParentOrThrow();\n }\n if (firstNode && lastNode) {\n anchor.set(firstNode.getKey(), 0, firstType);\n focus.set(lastNode.getKey(), lastOffset, lastType);\n }\n}\n\n/**\n * Returns the current value of a CSS property for Nodes, if set. If not set, it returns the defaultValue.\n * @param node - The node whose style value to get.\n * @param styleProperty - The CSS style property.\n * @param defaultValue - The default value for the property.\n * @returns The value of the property for node.\n */\nfunction $getNodeStyleValueForProperty(node, styleProperty, defaultValue) {\n const css = node.getStyle();\n const styleObject = getStyleObjectFromCSS(css);\n if (styleObject !== null) {\n return styleObject[styleProperty] || defaultValue;\n }\n return defaultValue;\n}\n\n/**\n * Returns the current value of a CSS property for TextNodes in the Selection, if set. If not set, it returns the defaultValue.\n * If all TextNodes do not have the same value, it returns an empty string.\n * @param selection - The selection of TextNodes whose value to find.\n * @param styleProperty - The CSS style property.\n * @param defaultValue - The default value for the property, defaults to an empty string.\n * @returns The value of the property for the selected TextNodes.\n */\nfunction $getSelectionStyleValueForProperty(selection, styleProperty, defaultValue = '') {\n let styleValue = null;\n const nodes = selection.getNodes();\n const anchor = selection.anchor;\n const focus = selection.focus;\n const isBackward = selection.isBackward();\n const endOffset = isBackward ? focus.offset : anchor.offset;\n const endNode = isBackward ? focus.getNode() : anchor.getNode();\n if ($isRangeSelection(selection) && selection.isCollapsed() && selection.style !== '') {\n const css = selection.style;\n const styleObject = getStyleObjectFromCSS(css);\n if (styleObject !== null && styleProperty in styleObject) {\n return styleObject[styleProperty];\n }\n }\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n // if no actual characters in the end node are selected, we don't\n // include it in the selection for purposes of determining style\n // value\n if (i !== 0 && endOffset === 0 && node.is(endNode)) {\n continue;\n }\n if ($isTextNode(node)) {\n const nodeStyleValue = $getNodeStyleValueForProperty(node, styleProperty, defaultValue);\n if (styleValue === null) {\n styleValue = nodeStyleValue;\n } else if (styleValue !== nodeStyleValue) {\n // multiple text nodes are in the selection and they don't all\n // have the same style.\n styleValue = '';\n break;\n }\n }\n }\n return styleValue === null ? defaultValue : styleValue;\n}\n\n/**\n * This function is for internal use of the library.\n * Please do not use it as it may change in the future.\n */\nfunction INTERNAL_$isBlock(node) {\n if ($isDecoratorNode(node)) {\n return false;\n }\n if (!$isElementNode(node) || $isRootOrShadowRoot(node)) {\n return false;\n }\n const firstChild = node.getFirstChild();\n const isLeafElement = firstChild === null || $isLineBreakNode(firstChild) || $isTextNode(firstChild) || firstChild.isInline();\n return !node.isInline() && node.canBeEmpty() !== false && isLeafElement;\n}\nfunction $getAncestor(node, predicate) {\n let parent = node;\n while (parent !== null && parent.getParent() !== null && !predicate(parent)) {\n parent = parent.getParentOrThrow();\n }\n return predicate(parent) ? parent : null;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/** @deprecated renamed to {@link $trimTextContentFromAnchor} by @lexical/eslint-plugin rules-of-lexical */\nconst trimTextContentFromAnchor = $trimTextContentFromAnchor;\n\nexport { $addNodeStyle, $getSelectionStyleValueForProperty, $isAtNodeEnd, $isParentElementRTL, $moveCaretSelection, $moveCharacter, $patchStyleText, $selectAll, $setBlocksType, $shouldOverrideDefaultCharacterSelection, $sliceSelectedTextNodeContent, $trimTextContentFromAnchor, $wrapNodes, createDOMRange, createRectsFromDOMRange, getStyleObjectFromCSS, trimTextContentFromAnchor };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$isTextNode as e,$getCharacterOffsets as t,$isElementNode as n,$isRootNode as l,$getNodeByKey as o,$getPreviousSelection as r,$createTextNode as s,$isRangeSelection as i,$isTokenOrSegmented as c,$getRoot as f,$isRootOrShadowRoot as u,$hasAncestor as g,$isLeafNode as a,$setSelection as d,$getAdjacentNode as p,$isDecoratorNode as h,$isLineBreakNode as y}from\"lexical\";export{$cloneWithProperties}from\"lexical\";function m(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var T=m((function(e){const t=new URLSearchParams;t.append(\"code\",e);for(let e=1;e<arguments.length;e++)t.append(\"v\",arguments[e]);throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${t} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));const x=new Map;function S(e){let t=e;for(;null!=t;){if(t.nodeType===Node.TEXT_NODE)return t;t=t.firstChild}return null}function v(e){const t=e.parentNode;if(null==t)throw new Error(\"Should never happen\");return[t,Array.from(t.childNodes).indexOf(e)]}function C(t,n,l,o,r){const s=n.getKey(),i=o.getKey(),c=document.createRange();let f=t.getElementByKey(s),u=t.getElementByKey(i),g=l,a=r;if(e(n)&&(f=S(f)),e(o)&&(u=S(u)),void 0===n||void 0===o||null===f||null===u)return null;\"BR\"===f.nodeName&&([f,g]=v(f)),\"BR\"===u.nodeName&&([u,a]=v(u));const d=f.firstChild;f===u&&null!=d&&\"BR\"===d.nodeName&&0===g&&0===a&&(a=1);try{c.setStart(f,g),c.setEnd(u,a)}catch(e){return null}return!c.collapsed||g===a&&s===i||(c.setStart(u,a),c.setEnd(f,g)),c}function P(e,t){const n=e.getRootElement();if(null===n)return[];const l=n.getBoundingClientRect(),o=getComputedStyle(n),r=parseFloat(o.paddingLeft)+parseFloat(o.paddingRight),s=Array.from(t.getClientRects());let i,c=s.length;s.sort(((e,t)=>{const n=e.top-t.top;return Math.abs(n)<=3?e.left-t.left:n}));for(let e=0;e<c;e++){const t=s[e],n=i&&i.top<=t.top&&i.top+i.height>t.top&&i.left+i.width>t.left,o=t.width+r===l.width;n||o?(s.splice(e--,1),c--):i=t}return s}function w(e){const t={},n=e.split(\";\");for(const e of n)if(\"\"!==e){const[n,l]=e.split(/:([^]+)/);n&&l&&(t[n.trim()]=l.trim())}return t}function N(e){let t=x.get(e);return void 0===t&&(t=w(e),x.set(e,t)),t}function E(e,n){const l=e.getStartEndPoints();if(n.isSelected(e)&&!n.isSegmented()&&!n.isToken()&&null!==l){const[o,r]=l,s=e.isBackward(),i=o.getNode(),c=r.getNode(),f=n.is(i),u=n.is(c);if(f||u){const[l,o]=t(e),r=i.is(c),f=n.is(s?c:i),u=n.is(s?i:c);let g,a=0;if(r)a=l>o?o:l,g=l>o?l:o;else if(f){a=s?o:l,g=void 0}else if(u){a=0,g=s?l:o}return n.__text=n.__text.slice(a,g),n}}return n}function F(e){if(\"text\"===e.type)return e.offset===e.getNode().getTextContentSize();const t=e.getNode();return n(t)||T(177),e.offset===t.getChildrenSize()}function K(t,c,f){let u=c.getNode(),g=f;if(n(u)){const e=u.getDescendantByIndex(c.offset);null!==e&&(u=e)}for(;g>0&&null!==u;){if(n(u)){const e=u.getLastDescendant();null!==e&&(u=e)}let f=u.getPreviousSibling(),a=0;if(null===f){let e=u.getParentOrThrow(),t=e.getPreviousSibling();for(;null===t;){if(e=e.getParent(),null===e){f=null;break}t=e.getPreviousSibling()}null!==e&&(a=e.isInline()?0:2,f=t)}let d=u.getTextContent();\"\"===d&&n(u)&&!u.isInline()&&(d=\"\\n\\n\");const p=d.length;if(!e(u)||g>=p){const e=u.getParent();u.remove(),null==e||0!==e.getChildrenSize()||l(e)||e.remove(),g-=p+a,u=f}else{const n=u.getKey(),l=t.getEditorState().read((()=>{const t=o(n);return e(t)&&t.isSimpleText()?t.getTextContent():null})),f=p-g,a=d.slice(0,f);if(null!==l&&l!==d){const e=r();let t=u;if(u.isSimpleText())u.setTextContent(l);else{const e=s(l);u.replace(e),t=e}if(i(e)&&e.isCollapsed()){const n=e.anchor.offset;t.select(n,n)}}else if(u.isSimpleText()){const e=c.key===n;let t=c.offset;t<g&&(t=p);const l=e?t-g:0,o=e?t:f;if(e&&0===l){const[e]=u.splitText(l,o);e.remove()}else{const[,e]=u.splitText(l,o);e.remove()}}else{const e=s(a);u.replace(e)}g=0}}}function I(e){const t=e.getStyle(),n=w(t);x.set(t,n)}function O(e,t){const n=N(\"getStyle\"in e?e.getStyle():e.style),l=Object.entries(t).reduce(((t,[l,o])=>(\"function\"==typeof o?t[l]=o(n[l],e):null===o?delete t[l]:t[l]=o,t)),{...n}||{}),o=function(e){let t=\"\";for(const n in e)n&&(t+=`${n}: ${e[n]};`);return t}(l);e.setStyle(o),x.set(o,l)}function B(t,n){const l=t.getNodes(),o=l.length,r=t.getStartEndPoints();if(null===r)return;const[s,f]=r,u=o-1;let g=l[0],a=l[u];if(t.isCollapsed()&&i(t))return void O(t,n);const d=g.getTextContent().length,p=f.offset;let h=s.offset;const y=s.isBefore(f);let m=y?h:p,T=y?p:h;const x=y?s.type:f.type,S=y?f.type:s.type,v=y?f.key:s.key;if(e(g)&&m===d){const t=g.getNextSibling();e(t)&&(h=0,m=0,g=t)}if(1===l.length){if(e(g)&&g.canHaveFormat()){if(m=\"element\"===x?0:h>p?p:h,T=\"element\"===S?d:h>p?h:p,m===T)return;if(c(g)||0===m&&T===d)O(g,n),g.select(m,T);else{const e=g.splitText(m,T),t=0===m?e[0]:e[1];O(t,n),t.select(0,T-m)}}}else{if(e(g)&&m<g.getTextContentSize()&&g.canHaveFormat()&&(0===m||c(g)||(g=g.splitText(m)[1],m=0,y?s.set(g.getKey(),m,\"text\"):f.set(g.getKey(),m,\"text\")),O(g,n)),e(a)&&a.canHaveFormat()){const e=a.getTextContent().length;a.__key!==v&&0!==T&&(T=e),T===e||c(a)||([a]=a.splitText(T)),0===T&&\"element\"!==S||O(a,n)}for(let t=1;t<u;t++){const o=l[t],r=o.getKey();e(o)&&o.canHaveFormat()&&r!==g.getKey()&&r!==a.getKey()&&!o.isToken()&&O(o,n)}}}function k(e,t){if(null===e)return;const l=e.getStartEndPoints(),o=l?l[0]:null;if(null!==o&&\"root\"===o.key){const e=t(),n=f(),l=n.getFirstChild();return void(l?l.replace(e,!0):n.append(e))}const r=e.getNodes(),s=null!==o&&function(e,t){let n=e;for(;null!==n&&null!==n.getParent()&&!t(n);)n=n.getParentOrThrow();return t(n)?n:null}(o.getNode(),U);s&&-1===r.indexOf(s)&&r.push(s);for(let e=0;e<r.length;e++){const l=r[e];if(!U(l))continue;n(l)||T(178);const o=t();o.setFormat(l.getFormatType()),o.setIndent(l.getIndent()),l.replace(o,!0)}}function b(e){return e.getNode().isAttached()}function R(e){let t=e;for(;null!==t&&!u(t);){const e=t.getLatest(),n=t.getParent();0===e.getChildrenSize()&&t.remove(!0),t=n}}function _(e,t,n=null){const l=e.getStartEndPoints(),o=l?l[0]:null,r=e.getNodes(),s=r.length;if(null!==o&&(0===s||1===s&&\"element\"===o.type&&0===o.getNode().getChildrenSize())){const e=\"text\"===o.type?o.getNode().getParentOrThrow():o.getNode(),l=e.getChildren();let r=t();return r.setFormat(e.getFormatType()),r.setIndent(e.getIndent()),l.forEach((e=>r.append(e))),n&&(r=n.append(r)),void e.replace(r)}let i=null,c=[];for(let l=0;l<s;l++){const o=r[l];u(o)?(z(e,c,c.length,t,n),c=[],i=o):null===i||null!==i&&g(o,i)?c.push(o):(z(e,c,c.length,t,n),c=[o])}z(e,c,c.length,t,n)}function z(e,t,l,o,s=null){if(0===t.length)return;const c=t[0],f=new Map,g=[];let p=n(c)?c:c.getParentOrThrow();p.isInline()&&(p=p.getParentOrThrow());let h=!1;for(;null!==p;){const e=p.getPreviousSibling();if(null!==e){p=e,h=!0;break}if(p=p.getParentOrThrow(),u(p))break}const y=new Set;for(let e=0;e<l;e++){const l=t[e];n(l)&&0===l.getChildrenSize()&&y.add(l.getKey())}const m=new Set;for(let e=0;e<l;e++){const l=t[e];let r=l.getParent();if(null!==r&&r.isInline()&&(r=r.getParent()),null!==r&&a(l)&&!m.has(l.getKey())){const e=r.getKey();if(void 0===f.get(e)){const t=o();t.setFormat(r.getFormatType()),t.setIndent(r.getIndent()),g.push(t),f.set(e,t),r.getChildren().forEach((e=>{t.append(e),m.add(e.getKey()),n(e)&&e.getChildrenKeys().forEach((e=>m.add(e)))})),R(r)}}else if(y.has(l.getKey())){n(l)||T(179);const e=o();e.setFormat(l.getFormatType()),e.setIndent(l.getIndent()),g.push(e),l.remove(!0)}}if(null!==s)for(let e=0;e<g.length;e++){const t=g[e];s.append(t)}let x=null;if(u(p))if(h)if(null!==s)p.insertAfter(s);else for(let e=g.length-1;e>=0;e--){const t=g[e];p.insertAfter(t)}else{const e=p.getFirstChild();if(n(e)&&(p=e),null===e)if(s)p.append(s);else for(let e=0;e<g.length;e++){const t=g[e];p.append(t),x=t}else if(null!==s)e.insertBefore(s);else for(let t=0;t<g.length;t++){const n=g[t];e.insertBefore(n),x=n}}else if(s)p.insertAfter(s);else for(let e=g.length-1;e>=0;e--){const t=g[e];p.insertAfter(t),x=t}const S=r();i(S)&&b(S.anchor)&&b(S.focus)?d(S.clone()):null!==x?x.selectEnd():e.dirty=!0}function A(e,t){const l=p(e.focus,t);return h(l)&&!l.isIsolated()||n(l)&&!l.isInline()&&!l.canBeEmpty()}function L(e,t,n,l){e.modify(t?\"extend\":\"move\",n,l)}function D(e){const t=e.anchor.getNode();return\"rtl\"===(l(t)?t:t.getParentOrThrow()).getDirection()}function M(e,t,n){const l=D(e);L(e,t,n?!l:l,\"character\")}function $(t){const l=t.anchor,o=t.focus,r=l.getNode().getTopLevelElementOrThrow().getParentOrThrow();let s=r.getFirstDescendant(),i=r.getLastDescendant(),c=\"element\",f=\"element\",u=0;e(s)?c=\"text\":n(s)||null===s||(s=s.getParentOrThrow()),e(i)?(f=\"text\",u=i.getTextContentSize()):n(i)||null===i||(i=i.getParentOrThrow()),s&&i&&(l.set(s.getKey(),0,c),o.set(i.getKey(),u,f))}function H(e,t,n){const l=N(e.getStyle());return null!==l&&l[t]||n}function j(t,n,l=\"\"){let o=null;const r=t.getNodes(),s=t.anchor,c=t.focus,f=t.isBackward(),u=f?c.offset:s.offset,g=f?c.getNode():s.getNode();if(i(t)&&t.isCollapsed()&&\"\"!==t.style){const e=N(t.style);if(null!==e&&n in e)return e[n]}for(let t=0;t<r.length;t++){const s=r[t];if((0===t||0!==u||!s.is(g))&&e(s)){const e=H(s,n,l);if(null===o)o=e;else if(o!==e){o=\"\";break}}}return null===o?l:o}function U(t){if(h(t))return!1;if(!n(t)||u(t))return!1;const l=t.getFirstChild(),o=null===l||y(l)||e(l)||l.isInline();return!t.isInline()&&!1!==t.canBeEmpty()&&o}const W=K;export{I as $addNodeStyle,j as $getSelectionStyleValueForProperty,F as $isAtNodeEnd,D as $isParentElementRTL,L as $moveCaretSelection,M as $moveCharacter,B as $patchStyleText,$ as $selectAll,k as $setBlocksType,A as $shouldOverrideDefaultCharacterSelection,E as $sliceSelectedTextNodeContent,K as $trimTextContentFromAnchor,_ as $wrapNodes,C as createDOMRange,P as createRectsFromDOMRange,N as getStyleObjectFromCSS,W as trimTextContentFromAnchor};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalSelection.dev.mjs';\nimport * as modProd from './LexicalSelection.prod.mjs';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const $addNodeStyle = mod.$addNodeStyle;\nexport const $cloneWithProperties = mod.$cloneWithProperties;\nexport const $getSelectionStyleValueForProperty = mod.$getSelectionStyleValueForProperty;\nexport const $isAtNodeEnd = mod.$isAtNodeEnd;\nexport const $isParentElementRTL = mod.$isParentElementRTL;\nexport const $moveCaretSelection = mod.$moveCaretSelection;\nexport const $moveCharacter = mod.$moveCharacter;\nexport const $patchStyleText = mod.$patchStyleText;\nexport const $selectAll = mod.$selectAll;\nexport const $setBlocksType = mod.$setBlocksType;\nexport const $shouldOverrideDefaultCharacterSelection = mod.$shouldOverrideDefaultCharacterSelection;\nexport const $sliceSelectedTextNodeContent = mod.$sliceSelectedTextNodeContent;\nexport const $trimTextContentFromAnchor = mod.$trimTextContentFromAnchor;\nexport const $wrapNodes = mod.$wrapNodes;\nexport const createDOMRange = mod.createDOMRange;\nexport const createRectsFromDOMRange = mod.createRectsFromDOMRange;\nexport const getStyleObjectFromCSS = mod.getStyleObjectFromCSS;\nexport const trimTextContentFromAnchor = mod.trimTextContentFromAnchor;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { $getSelection, $isRangeSelection, TextNode, $getRoot, $isElementNode, $cloneWithProperties, $setSelection, $getPreviousSelection, $isRootOrShadowRoot, $isTextNode, $splitNode, $createParagraphNode } from 'lexical';\nexport { $splitNode, isBlockDomNode, isHTMLAnchorElement, isHTMLElement, isInlineDomNode } from 'lexical';\nimport { createRectsFromDOMRange } from '@lexical/selection';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst CAN_USE_DOM$1 = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst documentMode = CAN_USE_DOM$1 && 'documentMode' in document ? document.documentMode : null;\nconst IS_APPLE$1 = CAN_USE_DOM$1 && /Mac|iPod|iPhone|iPad/.test(navigator.platform);\nconst IS_FIREFOX$1 = CAN_USE_DOM$1 && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);\nconst CAN_USE_BEFORE_INPUT$1 = CAN_USE_DOM$1 && 'InputEvent' in window && !documentMode ? 'getTargetRanges' in new window.InputEvent('input') : false;\nconst IS_SAFARI$1 = CAN_USE_DOM$1 && /Version\\/[\\d.]+.*Safari/.test(navigator.userAgent);\nconst IS_IOS$1 = CAN_USE_DOM$1 && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nconst IS_ANDROID$1 = CAN_USE_DOM$1 && /Android/.test(navigator.userAgent);\n\n// Keep these in case we need to use them in the future.\n// export const IS_WINDOWS: boolean = CAN_USE_DOM && /Win/.test(navigator.platform);\nconst IS_CHROME$1 = CAN_USE_DOM$1 && /^(?=.*Chrome).*/i.test(navigator.userAgent);\n// export const canUseTextInputEvent: boolean = CAN_USE_DOM && 'TextEvent' in window && !documentMode;\n\nconst IS_ANDROID_CHROME$1 = CAN_USE_DOM$1 && IS_ANDROID$1 && IS_CHROME$1;\nconst IS_APPLE_WEBKIT$1 = CAN_USE_DOM$1 && /AppleWebKit\\/[\\d.]+/.test(navigator.userAgent) && !IS_CHROME$1;\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction normalizeClassNames(...classNames) {\n const rval = [];\n for (const className of classNames) {\n if (className && typeof className === 'string') {\n for (const [s] of className.matchAll(/\\S+/g)) {\n rval.push(s);\n }\n }\n }\n return rval;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Returns a function that will execute all functions passed when called. It is generally used\n * to register multiple lexical listeners and then tear them down with a single function call, such\n * as React's useEffect hook.\n * @example\n * ```ts\n * useEffect(() => {\n * return mergeRegister(\n * editor.registerCommand(...registerCommand1 logic),\n * editor.registerCommand(...registerCommand2 logic),\n * editor.registerCommand(...registerCommand3 logic)\n * )\n * }, [editor])\n * ```\n * In this case, useEffect is returning the function returned by mergeRegister as a cleanup\n * function to be executed after either the useEffect runs again (due to one of its dependencies\n * updating) or the component it resides in unmounts.\n * Note the functions don't neccesarily need to be in an array as all arguments\n * are considered to be the func argument and spread from there.\n * The order of cleanup is the reverse of the argument order. Generally it is\n * expected that the first \"acquire\" will be \"released\" last (LIFO order),\n * because a later step may have some dependency on an earlier one.\n * @param func - An array of cleanup functions meant to be executed by the returned function.\n * @returns the function which executes all the passed cleanup functions.\n */\nfunction mergeRegister(...func) {\n return () => {\n for (let i = func.length - 1; i >= 0; i--) {\n func[i]();\n }\n // Clean up the references and make future calls a no-op\n func.length = 0;\n };\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction px(value) {\n return `${value}px`;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst mutationObserverConfig = {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true\n};\nfunction positionNodeOnRange(editor, range, onReposition) {\n let rootDOMNode = null;\n let parentDOMNode = null;\n let observer = null;\n let lastNodes = [];\n const wrapperNode = document.createElement('div');\n function position() {\n if (!(rootDOMNode !== null)) {\n throw Error(`Unexpected null rootDOMNode`);\n }\n if (!(parentDOMNode !== null)) {\n throw Error(`Unexpected null parentDOMNode`);\n }\n const {\n left: rootLeft,\n top: rootTop\n } = rootDOMNode.getBoundingClientRect();\n const parentDOMNode_ = parentDOMNode;\n const rects = createRectsFromDOMRange(editor, range);\n if (!wrapperNode.isConnected) {\n parentDOMNode_.append(wrapperNode);\n }\n let hasRepositioned = false;\n for (let i = 0; i < rects.length; i++) {\n const rect = rects[i];\n // Try to reuse the previously created Node when possible, no need to\n // remove/create on the most common case reposition case\n const rectNode = lastNodes[i] || document.createElement('div');\n const rectNodeStyle = rectNode.style;\n if (rectNodeStyle.position !== 'absolute') {\n rectNodeStyle.position = 'absolute';\n hasRepositioned = true;\n }\n const left = px(rect.left - rootLeft);\n if (rectNodeStyle.left !== left) {\n rectNodeStyle.left = left;\n hasRepositioned = true;\n }\n const top = px(rect.top - rootTop);\n if (rectNodeStyle.top !== top) {\n rectNode.style.top = top;\n hasRepositioned = true;\n }\n const width = px(rect.width);\n if (rectNodeStyle.width !== width) {\n rectNode.style.width = width;\n hasRepositioned = true;\n }\n const height = px(rect.height);\n if (rectNodeStyle.height !== height) {\n rectNode.style.height = height;\n hasRepositioned = true;\n }\n if (rectNode.parentNode !== wrapperNode) {\n wrapperNode.append(rectNode);\n hasRepositioned = true;\n }\n lastNodes[i] = rectNode;\n }\n while (lastNodes.length > rects.length) {\n lastNodes.pop();\n }\n if (hasRepositioned) {\n onReposition(lastNodes);\n }\n }\n function stop() {\n parentDOMNode = null;\n rootDOMNode = null;\n if (observer !== null) {\n observer.disconnect();\n }\n observer = null;\n wrapperNode.remove();\n for (const node of lastNodes) {\n node.remove();\n }\n lastNodes = [];\n }\n function restart() {\n const currentRootDOMNode = editor.getRootElement();\n if (currentRootDOMNode === null) {\n return stop();\n }\n const currentParentDOMNode = currentRootDOMNode.parentElement;\n if (!(currentParentDOMNode instanceof HTMLElement)) {\n return stop();\n }\n stop();\n rootDOMNode = currentRootDOMNode;\n parentDOMNode = currentParentDOMNode;\n observer = new MutationObserver(mutations => {\n const nextRootDOMNode = editor.getRootElement();\n const nextParentDOMNode = nextRootDOMNode && nextRootDOMNode.parentElement;\n if (nextRootDOMNode !== rootDOMNode || nextParentDOMNode !== parentDOMNode) {\n return restart();\n }\n for (const mutation of mutations) {\n if (!wrapperNode.contains(mutation.target)) {\n // TODO throttle\n return position();\n }\n }\n });\n observer.observe(currentParentDOMNode, mutationObserverConfig);\n position();\n }\n const removeRootListener = editor.registerRootListener(restart);\n return () => {\n removeRootListener();\n stop();\n };\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction markSelection(editor, onReposition) {\n let previousAnchorNode = null;\n let previousAnchorOffset = null;\n let previousFocusNode = null;\n let previousFocusOffset = null;\n let removeRangeListener = () => {};\n function compute(editorState) {\n editorState.read(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n // TODO\n previousAnchorNode = null;\n previousAnchorOffset = null;\n previousFocusNode = null;\n previousFocusOffset = null;\n removeRangeListener();\n removeRangeListener = () => {};\n return;\n }\n const {\n anchor,\n focus\n } = selection;\n const currentAnchorNode = anchor.getNode();\n const currentAnchorNodeKey = currentAnchorNode.getKey();\n const currentAnchorOffset = anchor.offset;\n const currentFocusNode = focus.getNode();\n const currentFocusNodeKey = currentFocusNode.getKey();\n const currentFocusOffset = focus.offset;\n const currentAnchorNodeDOM = editor.getElementByKey(currentAnchorNodeKey);\n const currentFocusNodeDOM = editor.getElementByKey(currentFocusNodeKey);\n const differentAnchorDOM = previousAnchorNode === null || currentAnchorNodeDOM === null || currentAnchorOffset !== previousAnchorOffset || currentAnchorNodeKey !== previousAnchorNode.getKey() || currentAnchorNode !== previousAnchorNode && (!(previousAnchorNode instanceof TextNode) || currentAnchorNode.updateDOM(previousAnchorNode, currentAnchorNodeDOM, editor._config));\n const differentFocusDOM = previousFocusNode === null || currentFocusNodeDOM === null || currentFocusOffset !== previousFocusOffset || currentFocusNodeKey !== previousFocusNode.getKey() || currentFocusNode !== previousFocusNode && (!(previousFocusNode instanceof TextNode) || currentFocusNode.updateDOM(previousFocusNode, currentFocusNodeDOM, editor._config));\n if (differentAnchorDOM || differentFocusDOM) {\n const anchorHTMLElement = editor.getElementByKey(anchor.getNode().getKey());\n const focusHTMLElement = editor.getElementByKey(focus.getNode().getKey());\n // TODO handle selection beyond the common TextNode\n if (anchorHTMLElement !== null && focusHTMLElement !== null && anchorHTMLElement.tagName === 'SPAN' && focusHTMLElement.tagName === 'SPAN') {\n const range = document.createRange();\n let firstHTMLElement;\n let firstOffset;\n let lastHTMLElement;\n let lastOffset;\n if (focus.isBefore(anchor)) {\n firstHTMLElement = focusHTMLElement;\n firstOffset = focus.offset;\n lastHTMLElement = anchorHTMLElement;\n lastOffset = anchor.offset;\n } else {\n firstHTMLElement = anchorHTMLElement;\n firstOffset = anchor.offset;\n lastHTMLElement = focusHTMLElement;\n lastOffset = focus.offset;\n }\n const firstTextNode = firstHTMLElement.firstChild;\n if (!(firstTextNode !== null)) {\n throw Error(`Expected text node to be first child of span`);\n }\n const lastTextNode = lastHTMLElement.firstChild;\n if (!(lastTextNode !== null)) {\n throw Error(`Expected text node to be first child of span`);\n }\n range.setStart(firstTextNode, firstOffset);\n range.setEnd(lastTextNode, lastOffset);\n removeRangeListener();\n removeRangeListener = positionNodeOnRange(editor, range, domNodes => {\n for (const domNode of domNodes) {\n const domNodeStyle = domNode.style;\n if (domNodeStyle.background !== 'Highlight') {\n domNodeStyle.background = 'Highlight';\n }\n if (domNodeStyle.color !== 'HighlightText') {\n domNodeStyle.color = 'HighlightText';\n }\n if (domNodeStyle.zIndex !== '-1') {\n domNodeStyle.zIndex = '-1';\n }\n if (domNodeStyle.pointerEvents !== 'none') {\n domNodeStyle.pointerEvents = 'none';\n }\n if (domNodeStyle.marginTop !== px(-1.5)) {\n domNodeStyle.marginTop = px(-1.5);\n }\n if (domNodeStyle.paddingTop !== px(4)) {\n domNodeStyle.paddingTop = px(4);\n }\n if (domNodeStyle.paddingBottom !== px(0)) {\n domNodeStyle.paddingBottom = px(0);\n }\n }\n if (onReposition !== undefined) {\n onReposition(domNodes);\n }\n });\n }\n }\n previousAnchorNode = currentAnchorNode;\n previousAnchorOffset = currentAnchorOffset;\n previousFocusNode = currentFocusNode;\n previousFocusOffset = currentFocusOffset;\n });\n }\n compute(editor.getEditorState());\n return mergeRegister(editor.registerUpdateListener(({\n editorState\n }) => compute(editorState)), removeRangeListener, () => {\n removeRangeListener();\n });\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// Hotfix to export these with inlined types #5918\nconst CAN_USE_BEFORE_INPUT = CAN_USE_BEFORE_INPUT$1;\nconst CAN_USE_DOM = CAN_USE_DOM$1;\nconst IS_ANDROID = IS_ANDROID$1;\nconst IS_ANDROID_CHROME = IS_ANDROID_CHROME$1;\nconst IS_APPLE = IS_APPLE$1;\nconst IS_APPLE_WEBKIT = IS_APPLE_WEBKIT$1;\nconst IS_CHROME = IS_CHROME$1;\nconst IS_FIREFOX = IS_FIREFOX$1;\nconst IS_IOS = IS_IOS$1;\nconst IS_SAFARI = IS_SAFARI$1;\n/**\n * Takes an HTML element and adds the classNames passed within an array,\n * ignoring any non-string types. A space can be used to add multiple classes\n * eg. addClassNamesToElement(element, ['element-inner active', true, null])\n * will add both 'element-inner' and 'active' as classes to that element.\n * @param element - The element in which the classes are added\n * @param classNames - An array defining the class names to add to the element\n */\nfunction addClassNamesToElement(element, ...classNames) {\n const classesToAdd = normalizeClassNames(...classNames);\n if (classesToAdd.length > 0) {\n element.classList.add(...classesToAdd);\n }\n}\n\n/**\n * Takes an HTML element and removes the classNames passed within an array,\n * ignoring any non-string types. A space can be used to remove multiple classes\n * eg. removeClassNamesFromElement(element, ['active small', true, null])\n * will remove both the 'active' and 'small' classes from that element.\n * @param element - The element in which the classes are removed\n * @param classNames - An array defining the class names to remove from the element\n */\nfunction removeClassNamesFromElement(element, ...classNames) {\n const classesToRemove = normalizeClassNames(...classNames);\n if (classesToRemove.length > 0) {\n element.classList.remove(...classesToRemove);\n }\n}\n\n/**\n * Returns true if the file type matches the types passed within the acceptableMimeTypes array, false otherwise.\n * The types passed must be strings and are CASE-SENSITIVE.\n * eg. if file is of type 'text' and acceptableMimeTypes = ['TEXT', 'IMAGE'] the function will return false.\n * @param file - The file you want to type check.\n * @param acceptableMimeTypes - An array of strings of types which the file is checked against.\n * @returns true if the file is an acceptable mime type, false otherwise.\n */\nfunction isMimeType(file, acceptableMimeTypes) {\n for (const acceptableType of acceptableMimeTypes) {\n if (file.type.startsWith(acceptableType)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Lexical File Reader with:\n * 1. MIME type support\n * 2. batched results (HistoryPlugin compatibility)\n * 3. Order aware (respects the order when multiple Files are passed)\n *\n * const filesResult = await mediaFileReader(files, ['image/']);\n * filesResult.forEach(file => editor.dispatchCommand('INSERT_IMAGE', \\\\{\n * src: file.result,\n * \\\\}));\n */\nfunction mediaFileReader(files, acceptableMimeTypes) {\n const filesIterator = files[Symbol.iterator]();\n return new Promise((resolve, reject) => {\n const processed = [];\n const handleNextFile = () => {\n const {\n done,\n value: file\n } = filesIterator.next();\n if (done) {\n return resolve(processed);\n }\n const fileReader = new FileReader();\n fileReader.addEventListener('error', reject);\n fileReader.addEventListener('load', () => {\n const result = fileReader.result;\n if (typeof result === 'string') {\n processed.push({\n file,\n result\n });\n }\n handleNextFile();\n });\n if (isMimeType(file, acceptableMimeTypes)) {\n fileReader.readAsDataURL(file);\n } else {\n handleNextFile();\n }\n };\n handleNextFile();\n });\n}\n\n/**\n * \"Depth-First Search\" starts at the root/top node of a tree and goes as far as it can down a branch end\n * before backtracking and finding a new path. Consider solving a maze by hugging either wall, moving down a\n * branch until you hit a dead-end (leaf) and backtracking to find the nearest branching path and repeat.\n * It will then return all the nodes found in the search in an array of objects.\n * @param startingNode - The node to start the search, if ommitted, it will start at the root node.\n * @param endingNode - The node to end the search, if ommitted, it will find all descendants of the startingNode.\n * @returns An array of objects of all the nodes found by the search, including their depth into the tree.\n * \\\\{depth: number, node: LexicalNode\\\\} It will always return at least 1 node (the ending node) so long as it exists\n */\nfunction $dfs(startingNode, endingNode) {\n const nodes = [];\n const start = (startingNode || $getRoot()).getLatest();\n const end = endingNode || ($isElementNode(start) ? start.getLastDescendant() || start : start);\n let node = start;\n let depth = $getDepth(node);\n while (node !== null && !node.is(end)) {\n nodes.push({\n depth,\n node\n });\n if ($isElementNode(node) && node.getChildrenSize() > 0) {\n node = node.getFirstChild();\n depth++;\n } else {\n // Find immediate sibling or nearest parent sibling\n let sibling = null;\n while (sibling === null && node !== null) {\n sibling = node.getNextSibling();\n if (sibling === null) {\n node = node.getParent();\n depth--;\n } else {\n node = sibling;\n }\n }\n }\n }\n if (node !== null && node.is(end)) {\n nodes.push({\n depth,\n node\n });\n }\n return nodes;\n}\nfunction $getDepth(node) {\n let innerNode = node;\n let depth = 0;\n while ((innerNode = innerNode.getParent()) !== null) {\n depth++;\n }\n return depth;\n}\n\n/**\n * Performs a right-to-left preorder tree traversal.\n * From the starting node it goes to the rightmost child, than backtracks to paret and finds new rightmost path.\n * It will return the next node in traversal sequence after the startingNode.\n * The traversal is similar to $dfs functions above, but the nodes are visited right-to-left, not left-to-right.\n * @param startingNode - The node to start the search.\n * @returns The next node in pre-order right to left traversal sequence or `null`, if the node does not exist\n */\nfunction $getNextRightPreorderNode(startingNode) {\n let node = startingNode;\n if ($isElementNode(node) && node.getChildrenSize() > 0) {\n node = node.getLastChild();\n } else {\n let sibling = null;\n while (sibling === null && node !== null) {\n sibling = node.getPreviousSibling();\n if (sibling === null) {\n node = node.getParent();\n } else {\n node = sibling;\n }\n }\n }\n return node;\n}\n\n/**\n * Takes a node and traverses up its ancestors (toward the root node)\n * in order to find a specific type of node.\n * @param node - the node to begin searching.\n * @param klass - an instance of the type of node to look for.\n * @returns the node of type klass that was passed, or null if none exist.\n */\nfunction $getNearestNodeOfType(node, klass) {\n let parent = node;\n while (parent != null) {\n if (parent instanceof klass) {\n return parent;\n }\n parent = parent.getParent();\n }\n return null;\n}\n\n/**\n * Returns the element node of the nearest ancestor, otherwise throws an error.\n * @param startNode - The starting node of the search\n * @returns The ancestor node found\n */\nfunction $getNearestBlockElementAncestorOrThrow(startNode) {\n const blockNode = $findMatchingParent(startNode, node => $isElementNode(node) && !node.isInline());\n if (!$isElementNode(blockNode)) {\n {\n throw Error(`Expected node ${startNode.__key} to have closest block element node.`);\n }\n }\n return blockNode;\n}\n/**\n * Starts with a node and moves up the tree (toward the root node) to find a matching node based on\n * the search parameters of the findFn. (Consider JavaScripts' .find() function where a testing function must be\n * passed as an argument. eg. if( (node) => node.__type === 'div') ) return true; otherwise return false\n * @param startingNode - The node where the search starts.\n * @param findFn - A testing function that returns true if the current node satisfies the testing parameters.\n * @returns A parent node that matches the findFn parameters, or null if one wasn't found.\n */\nconst $findMatchingParent = (startingNode, findFn) => {\n let curr = startingNode;\n while (curr !== $getRoot() && curr != null) {\n if (findFn(curr)) {\n return curr;\n }\n curr = curr.getParent();\n }\n return null;\n};\n\n/**\n * Attempts to resolve nested element nodes of the same type into a single node of that type.\n * It is generally used for marks/commenting\n * @param editor - The lexical editor\n * @param targetNode - The target for the nested element to be extracted from.\n * @param cloneNode - See {@link $createMarkNode}\n * @param handleOverlap - Handles any overlap between the node to extract and the targetNode\n * @returns The lexical editor\n */\nfunction registerNestedElementResolver(editor, targetNode, cloneNode, handleOverlap) {\n const $isTargetNode = node => {\n return node instanceof targetNode;\n };\n const $findMatch = node => {\n // First validate we don't have any children that are of the target,\n // as we need to handle them first.\n const children = node.getChildren();\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if ($isTargetNode(child)) {\n return null;\n }\n }\n let parentNode = node;\n let childNode = node;\n while (parentNode !== null) {\n childNode = parentNode;\n parentNode = parentNode.getParent();\n if ($isTargetNode(parentNode)) {\n return {\n child: childNode,\n parent: parentNode\n };\n }\n }\n return null;\n };\n const $elementNodeTransform = node => {\n const match = $findMatch(node);\n if (match !== null) {\n const {\n child,\n parent\n } = match;\n\n // Simple path, we can move child out and siblings into a new parent.\n\n if (child.is(node)) {\n handleOverlap(parent, node);\n const nextSiblings = child.getNextSiblings();\n const nextSiblingsLength = nextSiblings.length;\n parent.insertAfter(child);\n if (nextSiblingsLength !== 0) {\n const newParent = cloneNode(parent);\n child.insertAfter(newParent);\n for (let i = 0; i < nextSiblingsLength; i++) {\n newParent.append(nextSiblings[i]);\n }\n }\n if (!parent.canBeEmpty() && parent.getChildrenSize() === 0) {\n parent.remove();\n }\n }\n }\n };\n return editor.registerNodeTransform(targetNode, $elementNodeTransform);\n}\n\n/**\n * Clones the editor and marks it as dirty to be reconciled. If there was a selection,\n * it would be set back to its previous state, or null otherwise.\n * @param editor - The lexical editor\n * @param editorState - The editor's state\n */\nfunction $restoreEditorState(editor, editorState) {\n const FULL_RECONCILE = 2;\n const nodeMap = new Map();\n const activeEditorState = editor._pendingEditorState;\n for (const [key, node] of editorState._nodeMap) {\n nodeMap.set(key, $cloneWithProperties(node));\n }\n if (activeEditorState) {\n activeEditorState._nodeMap = nodeMap;\n }\n editor._dirtyType = FULL_RECONCILE;\n const selection = editorState._selection;\n $setSelection(selection === null ? null : selection.clone());\n}\n\n/**\n * If the selected insertion area is the root/shadow root node (see {@link lexical!$isRootOrShadowRoot}),\n * the node will be appended there, otherwise, it will be inserted before the insertion area.\n * If there is no selection where the node is to be inserted, it will be appended after any current nodes\n * within the tree, as a child of the root node. A paragraph node will then be added after the inserted node and selected.\n * @param node - The node to be inserted\n * @returns The node after its insertion\n */\nfunction $insertNodeToNearestRoot(node) {\n const selection = $getSelection() || $getPreviousSelection();\n if ($isRangeSelection(selection)) {\n const {\n focus\n } = selection;\n const focusNode = focus.getNode();\n const focusOffset = focus.offset;\n if ($isRootOrShadowRoot(focusNode)) {\n const focusChild = focusNode.getChildAtIndex(focusOffset);\n if (focusChild == null) {\n focusNode.append(node);\n } else {\n focusChild.insertBefore(node);\n }\n node.selectNext();\n } else {\n let splitNode;\n let splitOffset;\n if ($isTextNode(focusNode)) {\n splitNode = focusNode.getParentOrThrow();\n splitOffset = focusNode.getIndexWithinParent();\n if (focusOffset > 0) {\n splitOffset += 1;\n focusNode.splitText(focusOffset);\n }\n } else {\n splitNode = focusNode;\n splitOffset = focusOffset;\n }\n const [, rightTree] = $splitNode(splitNode, splitOffset);\n rightTree.insertBefore(node);\n rightTree.selectStart();\n }\n } else {\n if (selection != null) {\n const nodes = selection.getNodes();\n nodes[nodes.length - 1].getTopLevelElementOrThrow().insertAfter(node);\n } else {\n const root = $getRoot();\n root.append(node);\n }\n const paragraphNode = $createParagraphNode();\n node.insertAfter(paragraphNode);\n paragraphNode.select();\n }\n return node.getLatest();\n}\n\n/**\n * Wraps the node into another node created from a createElementNode function, eg. $createParagraphNode\n * @param node - Node to be wrapped.\n * @param createElementNode - Creates a new lexical element to wrap the to-be-wrapped node and returns it.\n * @returns A new lexical element with the previous node appended within (as a child, including its children).\n */\nfunction $wrapNodeInElement(node, createElementNode) {\n const elementNode = createElementNode();\n node.replace(elementNode);\n elementNode.append(node);\n return elementNode;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n/**\n * @param object = The instance of the type\n * @param objectClass = The class of the type\n * @returns Whether the object is has the same Klass of the objectClass, ignoring the difference across window (e.g. different iframs)\n */\nfunction objectKlassEquals(object, objectClass) {\n return object !== null ? Object.getPrototypeOf(object).constructor.name === objectClass.name : false;\n}\n\n/**\n * Filter the nodes\n * @param nodes Array of nodes that needs to be filtered\n * @param filterFn A filter function that returns node if the current node satisfies the condition otherwise null\n * @returns Array of filtered nodes\n */\n\nfunction $filter(nodes, filterFn) {\n const result = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = filterFn(nodes[i]);\n if (node !== null) {\n result.push(node);\n }\n }\n return result;\n}\n/**\n * Appends the node before the first child of the parent node\n * @param parent A parent node\n * @param node Node that needs to be appended\n */\nfunction $insertFirst(parent, node) {\n const firstChild = parent.getFirstChild();\n if (firstChild !== null) {\n firstChild.insertBefore(node);\n } else {\n parent.append(node);\n }\n}\n\n/**\n * Calculates the zoom level of an element as a result of using\n * css zoom property.\n * @param element\n */\nfunction calculateZoomLevel(element) {\n if (IS_FIREFOX) {\n return 1;\n }\n let zoom = 1;\n while (element) {\n zoom *= Number(window.getComputedStyle(element).getPropertyValue('zoom'));\n element = element.parentElement;\n }\n return zoom;\n}\n\n/**\n * Checks if the editor is a nested editor created by LexicalNestedComposer\n */\nfunction $isEditorIsNestedEditor(editor) {\n return editor._parentEditor !== null;\n}\n\nexport { $dfs, $filter, $findMatchingParent, $getNearestBlockElementAncestorOrThrow, $getNearestNodeOfType, $getNextRightPreorderNode, $insertFirst, $insertNodeToNearestRoot, $isEditorIsNestedEditor, $restoreEditorState, $wrapNodeInElement, CAN_USE_BEFORE_INPUT, CAN_USE_DOM, IS_ANDROID, IS_ANDROID_CHROME, IS_APPLE, IS_APPLE_WEBKIT, IS_CHROME, IS_FIREFOX, IS_IOS, IS_SAFARI, addClassNamesToElement, calculateZoomLevel, isMimeType, markSelection, mediaFileReader, mergeRegister, objectKlassEquals, positionNodeOnRange, registerNestedElementResolver, removeClassNamesFromElement };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$getSelection as e,$isRangeSelection as t,TextNode as n,$getRoot as o,$isElementNode as r,$cloneWithProperties as l,$setSelection as i,$getPreviousSelection as s,$isRootOrShadowRoot as u,$isTextNode as c,$splitNode as f,$createParagraphNode as a}from\"lexical\";export{$splitNode,isBlockDomNode,isHTMLAnchorElement,isHTMLElement,isInlineDomNode}from\"lexical\";import{createRectsFromDOMRange as d}from\"@lexical/selection\";function g(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var p=g((function(e){const t=new URLSearchParams;t.append(\"code\",e);for(let e=1;e<arguments.length;e++)t.append(\"v\",arguments[e]);throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${t} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));const h=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,m=h&&\"documentMode\"in document?document.documentMode:null,v=h&&/Mac|iPod|iPhone|iPad/.test(navigator.platform),y=h&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent),w=!(!h||!(\"InputEvent\"in window)||m)&&\"getTargetRanges\"in new window.InputEvent(\"input\"),E=h&&/Version\\/[\\d.]+.*Safari/.test(navigator.userAgent),P=h&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,S=h&&/Android/.test(navigator.userAgent),x=h&&/^(?=.*Chrome).*/i.test(navigator.userAgent),N=h&&S&&x,A=h&&/AppleWebKit\\/[\\d.]+/.test(navigator.userAgent)&&!x;function L(...e){const t=[];for(const n of e)if(n&&\"string\"==typeof n)for(const[e]of n.matchAll(/\\S+/g))t.push(e);return t}function b(...e){return()=>{for(let t=e.length-1;t>=0;t--)e[t]();e.length=0}}function T(e){return`${e}px`}const M={attributes:!0,characterData:!0,childList:!0,subtree:!0};function C(e,t,n){let o=null,r=null,l=null,i=[];const s=document.createElement(\"div\");function u(){null===o&&p(182),null===r&&p(183);const{left:l,top:u}=o.getBoundingClientRect(),c=r,f=d(e,t);s.isConnected||c.append(s);let a=!1;for(let e=0;e<f.length;e++){const t=f[e],n=i[e]||document.createElement(\"div\"),o=n.style;\"absolute\"!==o.position&&(o.position=\"absolute\",a=!0);const r=T(t.left-l);o.left!==r&&(o.left=r,a=!0);const c=T(t.top-u);o.top!==c&&(n.style.top=c,a=!0);const d=T(t.width);o.width!==d&&(n.style.width=d,a=!0);const g=T(t.height);o.height!==g&&(n.style.height=g,a=!0),n.parentNode!==s&&(s.append(n),a=!0),i[e]=n}for(;i.length>f.length;)i.pop();a&&n(i)}function c(){r=null,o=null,null!==l&&l.disconnect(),l=null,s.remove();for(const e of i)e.remove();i=[]}const f=e.registerRootListener((function t(){const n=e.getRootElement();if(null===n)return c();const i=n.parentElement;if(!(i instanceof HTMLElement))return c();c(),o=n,r=i,l=new MutationObserver((n=>{const l=e.getRootElement(),i=l&&l.parentElement;if(l!==o||i!==r)return t();for(const e of n)if(!s.contains(e.target))return u()})),l.observe(i,M),u()}));return()=>{f(),c()}}function B(o,r){let l=null,i=null,s=null,u=null,c=()=>{};function f(f){f.read((()=>{const f=e();if(!t(f))return l=null,i=null,s=null,u=null,c(),void(c=()=>{});const{anchor:a,focus:d}=f,g=a.getNode(),h=g.getKey(),m=a.offset,v=d.getNode(),y=v.getKey(),w=d.offset,E=o.getElementByKey(h),P=o.getElementByKey(y),S=null===l||null===E||m!==i||h!==l.getKey()||g!==l&&(!(l instanceof n)||g.updateDOM(l,E,o._config)),x=null===s||null===P||w!==u||y!==s.getKey()||v!==s&&(!(s instanceof n)||v.updateDOM(s,P,o._config));if(S||x){const e=o.getElementByKey(a.getNode().getKey()),t=o.getElementByKey(d.getNode().getKey());if(null!==e&&null!==t&&\"SPAN\"===e.tagName&&\"SPAN\"===t.tagName){const n=document.createRange();let l,i,s,u;d.isBefore(a)?(l=t,i=d.offset,s=e,u=a.offset):(l=e,i=a.offset,s=t,u=d.offset);const f=l.firstChild;null===f&&p(181);const g=s.firstChild;null===g&&p(181),n.setStart(f,i),n.setEnd(g,u),c(),c=C(o,n,(e=>{for(const t of e){const e=t.style;\"Highlight\"!==e.background&&(e.background=\"Highlight\"),\"HighlightText\"!==e.color&&(e.color=\"HighlightText\"),\"-1\"!==e.zIndex&&(e.zIndex=\"-1\"),\"none\"!==e.pointerEvents&&(e.pointerEvents=\"none\"),e.marginTop!==T(-1.5)&&(e.marginTop=T(-1.5)),e.paddingTop!==T(4)&&(e.paddingTop=T(4)),e.paddingBottom!==T(0)&&(e.paddingBottom=T(0))}void 0!==r&&r(e)}))}}l=g,i=m,s=v,u=w}))}return f(o.getEditorState()),b(o.registerUpdateListener((({editorState:e})=>f(e))),c,(()=>{c()}))}const _=w,K=h,O=S,R=N,I=v,D=A,H=x,z=y,k=P,F=E;function $(e,...t){const n=L(...t);n.length>0&&e.classList.add(...n)}function U(e,...t){const n=L(...t);n.length>0&&e.classList.remove(...n)}function W(e,t){for(const n of t)if(e.type.startsWith(n))return!0;return!1}function j(e,t){const n=e[Symbol.iterator]();return new Promise(((e,o)=>{const r=[],l=()=>{const{done:i,value:s}=n.next();if(i)return e(r);const u=new FileReader;u.addEventListener(\"error\",o),u.addEventListener(\"load\",(()=>{const e=u.result;\"string\"==typeof e&&r.push({file:s,result:e}),l()})),W(s,t)?u.readAsDataURL(s):l()};l()}))}function V(e,t){const n=[],l=(e||o()).getLatest(),i=t||r(l)&&l.getLastDescendant()||l;let s=l,u=function(e){let t=e,n=0;for(;null!==(t=t.getParent());)n++;return n}(s);for(;null!==s&&!s.is(i);)if(n.push({depth:u,node:s}),r(s)&&s.getChildrenSize()>0)s=s.getFirstChild(),u++;else{let e=null;for(;null===e&&null!==s;)e=s.getNextSibling(),null===e?(s=s.getParent(),u--):s=e}return null!==s&&s.is(i)&&n.push({depth:u,node:s}),n}function q(e){let t=e;if(r(t)&&t.getChildrenSize()>0)t=t.getLastChild();else{let e=null;for(;null===e&&null!==t;)e=t.getPreviousSibling(),t=null===e?t.getParent():e}return t}function G(e,t){let n=e;for(;null!=n;){if(n instanceof t)return n;n=n.getParent()}return null}function J(e){const t=Q(e,(e=>r(e)&&!e.isInline()));return r(t)||p(4,e.__key),t}const Q=(e,t)=>{let n=e;for(;n!==o()&&null!=n;){if(t(n))return n;n=n.getParent()}return null};function X(e,t,n,o){const r=e=>e instanceof t;return e.registerNodeTransform(t,(e=>{const t=(e=>{const t=e.getChildren();for(let e=0;e<t.length;e++){const n=t[e];if(r(n))return null}let n=e,o=e;for(;null!==n;)if(o=n,n=n.getParent(),r(n))return{child:o,parent:n};return null})(e);if(null!==t){const{child:r,parent:l}=t;if(r.is(e)){o(l,e);const t=r.getNextSiblings(),i=t.length;if(l.insertAfter(r),0!==i){const e=n(l);r.insertAfter(e);for(let n=0;n<i;n++)e.append(t[n])}l.canBeEmpty()||0!==l.getChildrenSize()||l.remove()}}}))}function Y(e,t){const n=new Map,o=e._pendingEditorState;for(const[e,o]of t._nodeMap)n.set(e,l(o));o&&(o._nodeMap=n),e._dirtyType=2;const r=t._selection;i(null===r?null:r.clone())}function Z(n){const r=e()||s();if(t(r)){const{focus:e}=r,t=e.getNode(),o=e.offset;if(u(t)){const e=t.getChildAtIndex(o);null==e?t.append(n):e.insertBefore(n),n.selectNext()}else{let e,r;c(t)?(e=t.getParentOrThrow(),r=t.getIndexWithinParent(),o>0&&(r+=1,t.splitText(o))):(e=t,r=o);const[,l]=f(e,r);l.insertBefore(n),l.selectStart()}}else{if(null!=r){const e=r.getNodes();e[e.length-1].getTopLevelElementOrThrow().insertAfter(n)}else{o().append(n)}const e=a();n.insertAfter(e),e.select()}return n.getLatest()}function ee(e,t){const n=t();return e.replace(n),n.append(e),n}function te(e,t){return null!==e&&Object.getPrototypeOf(e).constructor.name===t.name}function ne(e,t){const n=[];for(let o=0;o<e.length;o++){const r=t(e[o]);null!==r&&n.push(r)}return n}function oe(e,t){const n=e.getFirstChild();null!==n?n.insertBefore(t):e.append(t)}function re(e){if(z)return 1;let t=1;for(;e;)t*=Number(window.getComputedStyle(e).getPropertyValue(\"zoom\")),e=e.parentElement;return t}function le(e){return null!==e._parentEditor}export{V as $dfs,ne as $filter,Q as $findMatchingParent,J as $getNearestBlockElementAncestorOrThrow,G as $getNearestNodeOfType,q as $getNextRightPreorderNode,oe as $insertFirst,Z as $insertNodeToNearestRoot,le as $isEditorIsNestedEditor,Y as $restoreEditorState,ee as $wrapNodeInElement,_ as CAN_USE_BEFORE_INPUT,K as CAN_USE_DOM,O as IS_ANDROID,R as IS_ANDROID_CHROME,I as IS_APPLE,D as IS_APPLE_WEBKIT,H as IS_CHROME,z as IS_FIREFOX,k as IS_IOS,F as IS_SAFARI,$ as addClassNamesToElement,re as calculateZoomLevel,W as isMimeType,B as markSelection,j as mediaFileReader,b as mergeRegister,te as objectKlassEquals,C as positionNodeOnRange,X as registerNestedElementResolver,U as removeClassNamesFromElement};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalUtils.dev.mjs';\nimport * as modProd from './LexicalUtils.prod.mjs';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const $dfs = mod.$dfs;\nexport const $filter = mod.$filter;\nexport const $findMatchingParent = mod.$findMatchingParent;\nexport const $getNearestBlockElementAncestorOrThrow = mod.$getNearestBlockElementAncestorOrThrow;\nexport const $getNearestNodeOfType = mod.$getNearestNodeOfType;\nexport const $getNextRightPreorderNode = mod.$getNextRightPreorderNode;\nexport const $insertFirst = mod.$insertFirst;\nexport const $insertNodeToNearestRoot = mod.$insertNodeToNearestRoot;\nexport const $isEditorIsNestedEditor = mod.$isEditorIsNestedEditor;\nexport const $restoreEditorState = mod.$restoreEditorState;\nexport const $splitNode = mod.$splitNode;\nexport const $wrapNodeInElement = mod.$wrapNodeInElement;\nexport const CAN_USE_BEFORE_INPUT = mod.CAN_USE_BEFORE_INPUT;\nexport const CAN_USE_DOM = mod.CAN_USE_DOM;\nexport const IS_ANDROID = mod.IS_ANDROID;\nexport const IS_ANDROID_CHROME = mod.IS_ANDROID_CHROME;\nexport const IS_APPLE = mod.IS_APPLE;\nexport const IS_APPLE_WEBKIT = mod.IS_APPLE_WEBKIT;\nexport const IS_CHROME = mod.IS_CHROME;\nexport const IS_FIREFOX = mod.IS_FIREFOX;\nexport const IS_IOS = mod.IS_IOS;\nexport const IS_SAFARI = mod.IS_SAFARI;\nexport const addClassNamesToElement = mod.addClassNamesToElement;\nexport const calculateZoomLevel = mod.calculateZoomLevel;\nexport const isBlockDomNode = mod.isBlockDomNode;\nexport const isHTMLAnchorElement = mod.isHTMLAnchorElement;\nexport const isHTMLElement = mod.isHTMLElement;\nexport const isInlineDomNode = mod.isInlineDomNode;\nexport const isMimeType = mod.isMimeType;\nexport const markSelection = mod.markSelection;\nexport const mediaFileReader = mod.mediaFileReader;\nexport const mergeRegister = mod.mergeRegister;\nexport const objectKlassEquals = mod.objectKlassEquals;\nexport const positionNodeOnRange = mod.positionNodeOnRange;\nexport const registerNestedElementResolver = mod.registerNestedElementResolver;\nexport const removeClassNamesFromElement = mod.removeClassNamesFromElement;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { $getSelection, $isRangeSelection, $isTextNode } from 'lexical';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction registerDragonSupport(editor) {\n const origin = window.location.origin;\n const handler = event => {\n if (event.origin !== origin) {\n return;\n }\n const rootElement = editor.getRootElement();\n if (document.activeElement !== rootElement) {\n return;\n }\n const data = event.data;\n if (typeof data === 'string') {\n let parsedData;\n try {\n parsedData = JSON.parse(data);\n } catch (e) {\n return;\n }\n if (parsedData && parsedData.protocol === 'nuanria_messaging' && parsedData.type === 'request') {\n const payload = parsedData.payload;\n if (payload && payload.functionId === 'makeChanges') {\n const args = payload.args;\n if (args) {\n const [elementStart, elementLength, text, selStart, selLength, formatCommand] = args;\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor;\n let anchorNode = anchor.getNode();\n let setSelStart = 0;\n let setSelEnd = 0;\n if ($isTextNode(anchorNode)) {\n // set initial selection\n if (elementStart >= 0 && elementLength >= 0) {\n setSelStart = elementStart;\n setSelEnd = elementStart + elementLength;\n // If the offset is more than the end, make it the end\n selection.setTextNodeRange(anchorNode, setSelStart, anchorNode, setSelEnd);\n }\n }\n if (setSelStart !== setSelEnd || text !== '') {\n selection.insertRawText(text);\n anchorNode = anchor.getNode();\n }\n if ($isTextNode(anchorNode)) {\n // set final selection\n setSelStart = selStart;\n setSelEnd = selStart + selLength;\n const anchorNodeTextLength = anchorNode.getTextContentSize();\n // If the offset is more than the end, make it the end\n setSelStart = setSelStart > anchorNodeTextLength ? anchorNodeTextLength : setSelStart;\n setSelEnd = setSelEnd > anchorNodeTextLength ? anchorNodeTextLength : setSelEnd;\n selection.setTextNodeRange(anchorNode, setSelStart, anchorNode, setSelEnd);\n }\n\n // block the chrome extension from handling this event\n event.stopImmediatePropagation();\n }\n });\n }\n }\n }\n }\n };\n window.addEventListener('message', handler, true);\n return () => {\n window.removeEventListener('message', handler, true);\n };\n}\n\nexport { registerDragonSupport };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$getSelection as e,$isRangeSelection as t,$isTextNode as n}from\"lexical\";function o(o){const i=window.location.origin,a=a=>{if(a.origin!==i)return;const r=o.getRootElement();if(document.activeElement!==r)return;const s=a.data;if(\"string\"==typeof s){let i;try{i=JSON.parse(s)}catch(e){return}if(i&&\"nuanria_messaging\"===i.protocol&&\"request\"===i.type){const r=i.payload;if(r&&\"makeChanges\"===r.functionId){const i=r.args;if(i){const[r,s,c,g,d,f]=i;o.update((()=>{const o=e();if(t(o)){const e=o.anchor;let t=e.getNode(),i=0,f=0;if(n(t)&&r>=0&&s>=0&&(i=r,f=r+s,o.setTextNodeRange(t,i,t,f)),i===f&&\"\"===c||(o.insertRawText(c),t=e.getNode()),n(t)){i=g,f=g+d;const e=t.getTextContentSize();i=i>e?e:i,f=f>e?e:f,o.setTextNodeRange(t,i,t,f)}a.stopImmediatePropagation()}}))}}}}};return window.addEventListener(\"message\",a,!0),()=>{window.removeEventListener(\"message\",a,!0)}}export{o as registerDragonSupport};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalDragon.dev.mjs';\nimport * as modProd from './LexicalDragon.prod.mjs';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const registerDragonSupport = mod.registerDragonSupport;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { $sliceSelectedTextNodeContent } from '@lexical/selection';\nimport { isHTMLElement, isBlockDomNode } from '@lexical/utils';\nimport { $getRoot, $isElementNode, $cloneWithProperties, $isTextNode, $isRootOrShadowRoot, $isBlockElementNode, $createLineBreakNode, ArtificialNode__DO_NOT_USE, isInlineDomNode, $createParagraphNode } from 'lexical';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n/**\n * How you parse your html string to get a document is left up to you. In the browser you can use the native\n * DOMParser API to generate a document (see clipboard.ts), but to use in a headless environment you can use JSDom\n * or an equivalent library and pass in the document here.\n */\nfunction $generateNodesFromDOM(editor, dom) {\n const elements = dom.body ? dom.body.childNodes : [];\n let lexicalNodes = [];\n const allArtificialNodes = [];\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (!IGNORE_TAGS.has(element.nodeName)) {\n const lexicalNode = $createNodesFromDOM(element, editor, allArtificialNodes, false);\n if (lexicalNode !== null) {\n lexicalNodes = lexicalNodes.concat(lexicalNode);\n }\n }\n }\n $unwrapArtificalNodes(allArtificialNodes);\n return lexicalNodes;\n}\nfunction $generateHtmlFromNodes(editor, selection) {\n if (typeof document === 'undefined' || typeof window === 'undefined' && typeof global.window === 'undefined') {\n throw new Error('To use $generateHtmlFromNodes in headless mode please initialize a headless browser implementation such as JSDom before calling this function.');\n }\n const container = document.createElement('div');\n const root = $getRoot();\n const topLevelChildren = root.getChildren();\n for (let i = 0; i < topLevelChildren.length; i++) {\n const topLevelNode = topLevelChildren[i];\n $appendNodesToHTML(editor, topLevelNode, container, selection);\n }\n return container.innerHTML;\n}\nfunction $appendNodesToHTML(editor, currentNode, parentElement, selection = null) {\n let shouldInclude = selection !== null ? currentNode.isSelected(selection) : true;\n const shouldExclude = $isElementNode(currentNode) && currentNode.excludeFromCopy('html');\n let target = currentNode;\n if (selection !== null) {\n let clone = $cloneWithProperties(currentNode);\n clone = $isTextNode(clone) && selection !== null ? $sliceSelectedTextNodeContent(selection, clone) : clone;\n target = clone;\n }\n const children = $isElementNode(target) ? target.getChildren() : [];\n const registeredNode = editor._nodes.get(target.getType());\n let exportOutput;\n\n // Use HTMLConfig overrides, if available.\n if (registeredNode && registeredNode.exportDOM !== undefined) {\n exportOutput = registeredNode.exportDOM(editor, target);\n } else {\n exportOutput = target.exportDOM(editor);\n }\n const {\n element,\n after\n } = exportOutput;\n if (!element) {\n return false;\n }\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < children.length; i++) {\n const childNode = children[i];\n const shouldIncludeChild = $appendNodesToHTML(editor, childNode, fragment, selection);\n if (!shouldInclude && $isElementNode(currentNode) && shouldIncludeChild && currentNode.extractWithChild(childNode, selection, 'html')) {\n shouldInclude = true;\n }\n }\n if (shouldInclude && !shouldExclude) {\n if (isHTMLElement(element)) {\n element.append(fragment);\n }\n parentElement.append(element);\n if (after) {\n const newElement = after.call(target, element);\n if (newElement) {\n element.replaceWith(newElement);\n }\n }\n } else {\n parentElement.append(fragment);\n }\n return shouldInclude;\n}\nfunction getConversionFunction(domNode, editor) {\n const {\n nodeName\n } = domNode;\n const cachedConversions = editor._htmlConversions.get(nodeName.toLowerCase());\n let currentConversion = null;\n if (cachedConversions !== undefined) {\n for (const cachedConversion of cachedConversions) {\n const domConversion = cachedConversion(domNode);\n if (domConversion !== null && (currentConversion === null || (currentConversion.priority || 0) < (domConversion.priority || 0))) {\n currentConversion = domConversion;\n }\n }\n }\n return currentConversion !== null ? currentConversion.conversion : null;\n}\nconst IGNORE_TAGS = new Set(['STYLE', 'SCRIPT']);\nfunction $createNodesFromDOM(node, editor, allArtificialNodes, hasBlockAncestorLexicalNode, forChildMap = new Map(), parentLexicalNode) {\n let lexicalNodes = [];\n if (IGNORE_TAGS.has(node.nodeName)) {\n return lexicalNodes;\n }\n let currentLexicalNode = null;\n const transformFunction = getConversionFunction(node, editor);\n const transformOutput = transformFunction ? transformFunction(node) : null;\n let postTransform = null;\n if (transformOutput !== null) {\n postTransform = transformOutput.after;\n const transformNodes = transformOutput.node;\n currentLexicalNode = Array.isArray(transformNodes) ? transformNodes[transformNodes.length - 1] : transformNodes;\n if (currentLexicalNode !== null) {\n for (const [, forChildFunction] of forChildMap) {\n currentLexicalNode = forChildFunction(currentLexicalNode, parentLexicalNode);\n if (!currentLexicalNode) {\n break;\n }\n }\n if (currentLexicalNode) {\n lexicalNodes.push(...(Array.isArray(transformNodes) ? transformNodes : [currentLexicalNode]));\n }\n }\n if (transformOutput.forChild != null) {\n forChildMap.set(node.nodeName, transformOutput.forChild);\n }\n }\n\n // If the DOM node doesn't have a transformer, we don't know what\n // to do with it but we still need to process any childNodes.\n const children = node.childNodes;\n let childLexicalNodes = [];\n const hasBlockAncestorLexicalNodeForChildren = currentLexicalNode != null && $isRootOrShadowRoot(currentLexicalNode) ? false : currentLexicalNode != null && $isBlockElementNode(currentLexicalNode) || hasBlockAncestorLexicalNode;\n for (let i = 0; i < children.length; i++) {\n childLexicalNodes.push(...$createNodesFromDOM(children[i], editor, allArtificialNodes, hasBlockAncestorLexicalNodeForChildren, new Map(forChildMap), currentLexicalNode));\n }\n if (postTransform != null) {\n childLexicalNodes = postTransform(childLexicalNodes);\n }\n if (isBlockDomNode(node)) {\n if (!hasBlockAncestorLexicalNodeForChildren) {\n childLexicalNodes = wrapContinuousInlines(node, childLexicalNodes, $createParagraphNode);\n } else {\n childLexicalNodes = wrapContinuousInlines(node, childLexicalNodes, () => {\n const artificialNode = new ArtificialNode__DO_NOT_USE();\n allArtificialNodes.push(artificialNode);\n return artificialNode;\n });\n }\n }\n if (currentLexicalNode == null) {\n if (childLexicalNodes.length > 0) {\n // If it hasn't been converted to a LexicalNode, we hoist its children\n // up to the same level as it.\n lexicalNodes = lexicalNodes.concat(childLexicalNodes);\n } else {\n if (isBlockDomNode(node) && isDomNodeBetweenTwoInlineNodes(node)) {\n // Empty block dom node that hasnt been converted, we replace it with a linebreak if its between inline nodes\n lexicalNodes = lexicalNodes.concat($createLineBreakNode());\n }\n }\n } else {\n if ($isElementNode(currentLexicalNode)) {\n // If the current node is a ElementNode after conversion,\n // we can append all the children to it.\n currentLexicalNode.append(...childLexicalNodes);\n }\n }\n return lexicalNodes;\n}\nfunction wrapContinuousInlines(domNode, nodes, createWrapperFn) {\n const textAlign = domNode.style.textAlign;\n const out = [];\n let continuousInlines = [];\n // wrap contiguous inline child nodes in para\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ($isBlockElementNode(node)) {\n if (textAlign && !node.getFormat()) {\n node.setFormat(textAlign);\n }\n out.push(node);\n } else {\n continuousInlines.push(node);\n if (i === nodes.length - 1 || i < nodes.length - 1 && $isBlockElementNode(nodes[i + 1])) {\n const wrapper = createWrapperFn();\n wrapper.setFormat(textAlign);\n wrapper.append(...continuousInlines);\n out.push(wrapper);\n continuousInlines = [];\n }\n }\n }\n return out;\n}\nfunction $unwrapArtificalNodes(allArtificialNodes) {\n for (const node of allArtificialNodes) {\n if (node.getNextSibling() instanceof ArtificialNode__DO_NOT_USE) {\n node.insertAfter($createLineBreakNode());\n }\n }\n // Replace artificial node with it's children\n for (const node of allArtificialNodes) {\n const children = node.getChildren();\n for (const child of children) {\n node.insertBefore(child);\n }\n node.remove();\n }\n}\nfunction isDomNodeBetweenTwoInlineNodes(node) {\n if (node.nextSibling == null || node.previousSibling == null) {\n return false;\n }\n return isInlineDomNode(node.nextSibling) && isInlineDomNode(node.previousSibling);\n}\n\nexport { $generateHtmlFromNodes, $generateNodesFromDOM };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$sliceSelectedTextNodeContent as e}from\"@lexical/selection\";import{isHTMLElement as n,isBlockDomNode as t}from\"@lexical/utils\";import{$getRoot as o,$isElementNode as l,$cloneWithProperties as r,$isTextNode as i,$isRootOrShadowRoot as s,$isBlockElementNode as c,$createLineBreakNode as u,ArtificialNode__DO_NOT_USE as f,isInlineDomNode as a,$createParagraphNode as d}from\"lexical\";function p(e,n){const t=n.body?n.body.childNodes:[];let o=[];const l=[];for(let n=0;n<t.length;n++){const r=t[n];if(!g.has(r.nodeName)){const n=x(r,e,l,!1);null!==n&&(o=o.concat(n))}}return function(e){for(const n of e)n.getNextSibling()instanceof f&&n.insertAfter(u());for(const n of e){const e=n.getChildren();for(const t of e)n.insertBefore(t);n.remove()}}(l),o}function h(e,n){if(\"undefined\"==typeof document||\"undefined\"==typeof window&&void 0===global.window)throw new Error(\"To use $generateHtmlFromNodes in headless mode please initialize a headless browser implementation such as JSDom before calling this function.\");const t=document.createElement(\"div\"),l=o().getChildren();for(let o=0;o<l.length;o++){m(e,l[o],t,n)}return t.innerHTML}function m(t,o,s,c=null){let u=null===c||o.isSelected(c);const f=l(o)&&o.excludeFromCopy(\"html\");let a=o;if(null!==c){let n=r(o);n=i(n)&&null!==c?e(c,n):n,a=n}const d=l(a)?a.getChildren():[],p=t._nodes.get(a.getType());let h;h=p&&void 0!==p.exportDOM?p.exportDOM(t,a):a.exportDOM(t);const{element:g,after:x}=h;if(!g)return!1;const y=document.createDocumentFragment();for(let e=0;e<d.length;e++){const n=d[e],r=m(t,n,y,c);!u&&l(o)&&r&&o.extractWithChild(n,c,\"html\")&&(u=!0)}if(u&&!f){if(n(g)&&g.append(y),s.append(g),x){const e=x.call(a,g);e&&g.replaceWith(e)}}else s.append(y);return u}const g=new Set([\"STYLE\",\"SCRIPT\"]);function x(e,n,o,r,i=new Map,p){let h=[];if(g.has(e.nodeName))return h;let m=null;const w=function(e,n){const{nodeName:t}=e,o=n._htmlConversions.get(t.toLowerCase());let l=null;if(void 0!==o)for(const n of o){const t=n(e);null!==t&&(null===l||(l.priority||0)<(t.priority||0))&&(l=t)}return null!==l?l.conversion:null}(e,n),b=w?w(e):null;let C=null;if(null!==b){C=b.after;const n=b.node;if(m=Array.isArray(n)?n[n.length-1]:n,null!==m){for(const[,e]of i)if(m=e(m,p),!m)break;m&&h.push(...Array.isArray(n)?n:[m])}null!=b.forChild&&i.set(e.nodeName,b.forChild)}const S=e.childNodes;let v=[];const N=(null==m||!s(m))&&(null!=m&&c(m)||r);for(let e=0;e<S.length;e++)v.push(...x(S[e],n,o,N,new Map(i),m));return null!=C&&(v=C(v)),t(e)&&(v=y(e,v,N?()=>{const e=new f;return o.push(e),e}:d)),null==m?v.length>0?h=h.concat(v):t(e)&&function(e){if(null==e.nextSibling||null==e.previousSibling)return!1;return a(e.nextSibling)&&a(e.previousSibling)}(e)&&(h=h.concat(u())):l(m)&&m.append(...v),h}function y(e,n,t){const o=e.style.textAlign,l=[];let r=[];for(let e=0;e<n.length;e++){const i=n[e];if(c(i))o&&!i.getFormat()&&i.setFormat(o),l.push(i);else if(r.push(i),e===n.length-1||e<n.length-1&&c(n[e+1])){const e=t();e.setFormat(o),e.append(...r),l.push(e),r=[]}}return l}export{h as $generateHtmlFromNodes,p as $generateNodesFromDOM};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalHtml.dev.mjs';\nimport * as modProd from './LexicalHtml.prod.mjs';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const $generateHtmlFromNodes = mod.$generateHtmlFromNodes;\nexport const $generateNodesFromDOM = mod.$generateNodesFromDOM;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { $generateHtmlFromNodes, $generateNodesFromDOM } from '@lexical/html';\nimport { $addNodeStyle, $sliceSelectedTextNodeContent } from '@lexical/selection';\nimport { objectKlassEquals } from '@lexical/utils';\nimport { $isRangeSelection, $getSelection, $createTabNode, SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, $getRoot, $parseSerializedNode, $isTextNode, COPY_COMMAND, COMMAND_PRIORITY_CRITICAL, isSelectionWithinEditor, $getEditor, $isElementNode, $cloneWithProperties } from 'lexical';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst CAN_USE_DOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getDOMSelection = targetWindow => CAN_USE_DOM ? (targetWindow || window).getSelection() : null;\n/**\n * Returns the *currently selected* Lexical content as an HTML string, relying on the\n * logic defined in the exportDOM methods on the LexicalNode classes. Note that\n * this will not return the HTML content of the entire editor (unless all the content is included\n * in the current selection).\n *\n * @param editor - LexicalEditor instance to get HTML content from\n * @param selection - The selection to use (default is $getSelection())\n * @returns a string of HTML content\n */\nfunction $getHtmlContent(editor, selection = $getSelection()) {\n if (selection == null) {\n {\n throw Error(`Expected valid LexicalSelection`);\n }\n }\n\n // If we haven't selected anything\n if ($isRangeSelection(selection) && selection.isCollapsed() || selection.getNodes().length === 0) {\n return '';\n }\n return $generateHtmlFromNodes(editor, selection);\n}\n\n/**\n * Returns the *currently selected* Lexical content as a JSON string, relying on the\n * logic defined in the exportJSON methods on the LexicalNode classes. Note that\n * this will not return the JSON content of the entire editor (unless all the content is included\n * in the current selection).\n *\n * @param editor - LexicalEditor instance to get the JSON content from\n * @param selection - The selection to use (default is $getSelection())\n * @returns\n */\nfunction $getLexicalContent(editor, selection = $getSelection()) {\n if (selection == null) {\n {\n throw Error(`Expected valid LexicalSelection`);\n }\n }\n\n // If we haven't selected anything\n if ($isRangeSelection(selection) && selection.isCollapsed() || selection.getNodes().length === 0) {\n return null;\n }\n return JSON.stringify($generateJSONFromSelectedNodes(editor, selection));\n}\n\n/**\n * Attempts to insert content of the mime-types text/plain or text/uri-list from\n * the provided DataTransfer object into the editor at the provided selection.\n * text/uri-list is only used if text/plain is not also provided.\n *\n * @param dataTransfer an object conforming to the [DataTransfer interface] (https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface)\n * @param selection the selection to use as the insertion point for the content in the DataTransfer object\n */\nfunction $insertDataTransferForPlainText(dataTransfer, selection) {\n const text = dataTransfer.getData('text/plain') || dataTransfer.getData('text/uri-list');\n if (text != null) {\n selection.insertRawText(text);\n }\n}\n\n/**\n * Attempts to insert content of the mime-types application/x-lexical-editor, text/html,\n * text/plain, or text/uri-list (in descending order of priority) from the provided DataTransfer\n * object into the editor at the provided selection.\n *\n * @param dataTransfer an object conforming to the [DataTransfer interface] (https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface)\n * @param selection the selection to use as the insertion point for the content in the DataTransfer object\n * @param editor the LexicalEditor the content is being inserted into.\n */\nfunction $insertDataTransferForRichText(dataTransfer, selection, editor) {\n const lexicalString = dataTransfer.getData('application/x-lexical-editor');\n if (lexicalString) {\n try {\n const payload = JSON.parse(lexicalString);\n if (payload.namespace === editor._config.namespace && Array.isArray(payload.nodes)) {\n const nodes = $generateNodesFromSerializedNodes(payload.nodes);\n return $insertGeneratedNodes(editor, nodes, selection);\n }\n } catch (_unused) {\n // Fail silently.\n }\n }\n const htmlString = dataTransfer.getData('text/html');\n if (htmlString) {\n try {\n const parser = new DOMParser();\n const dom = parser.parseFromString(htmlString, 'text/html');\n const nodes = $generateNodesFromDOM(editor, dom);\n return $insertGeneratedNodes(editor, nodes, selection);\n } catch (_unused2) {\n // Fail silently.\n }\n }\n\n // Multi-line plain text in rich text mode pasted as separate paragraphs\n // instead of single paragraph with linebreaks.\n // Webkit-specific: Supports read 'text/uri-list' in clipboard.\n const text = dataTransfer.getData('text/plain') || dataTransfer.getData('text/uri-list');\n if (text != null) {\n if ($isRangeSelection(selection)) {\n const parts = text.split(/(\\r?\\n|\\t)/);\n if (parts[parts.length - 1] === '') {\n parts.pop();\n }\n for (let i = 0; i < parts.length; i++) {\n const currentSelection = $getSelection();\n if ($isRangeSelection(currentSelection)) {\n const part = parts[i];\n if (part === '\\n' || part === '\\r\\n') {\n currentSelection.insertParagraph();\n } else if (part === '\\t') {\n currentSelection.insertNodes([$createTabNode()]);\n } else {\n currentSelection.insertText(part);\n }\n }\n }\n } else {\n selection.insertRawText(text);\n }\n }\n}\n\n/**\n * Inserts Lexical nodes into the editor using different strategies depending on\n * some simple selection-based heuristics. If you're looking for a generic way to\n * to insert nodes into the editor at a specific selection point, you probably want\n * {@link lexical.$insertNodes}\n *\n * @param editor LexicalEditor instance to insert the nodes into.\n * @param nodes The nodes to insert.\n * @param selection The selection to insert the nodes into.\n */\nfunction $insertGeneratedNodes(editor, nodes, selection) {\n if (!editor.dispatchCommand(SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, {\n nodes,\n selection\n })) {\n selection.insertNodes(nodes);\n }\n return;\n}\nfunction exportNodeToJSON(node) {\n const serializedNode = node.exportJSON();\n const nodeClass = node.constructor;\n if (serializedNode.type !== nodeClass.getType()) {\n {\n throw Error(`LexicalNode: Node ${nodeClass.name} does not implement .exportJSON().`);\n }\n }\n if ($isElementNode(node)) {\n const serializedChildren = serializedNode.children;\n if (!Array.isArray(serializedChildren)) {\n {\n throw Error(`LexicalNode: Node ${nodeClass.name} is an element but .exportJSON() does not have a children array.`);\n }\n }\n }\n return serializedNode;\n}\nfunction $appendNodesToJSON(editor, selection, currentNode, targetArray = []) {\n let shouldInclude = selection !== null ? currentNode.isSelected(selection) : true;\n const shouldExclude = $isElementNode(currentNode) && currentNode.excludeFromCopy('html');\n let target = currentNode;\n if (selection !== null) {\n let clone = $cloneWithProperties(currentNode);\n clone = $isTextNode(clone) && selection !== null ? $sliceSelectedTextNodeContent(selection, clone) : clone;\n target = clone;\n }\n const children = $isElementNode(target) ? target.getChildren() : [];\n const serializedNode = exportNodeToJSON(target);\n\n // TODO: TextNode calls getTextContent() (NOT node.__text) within its exportJSON method\n // which uses getLatest() to get the text from the original node with the same key.\n // This is a deeper issue with the word \"clone\" here, it's still a reference to the\n // same node as far as the LexicalEditor is concerned since it shares a key.\n // We need a way to create a clone of a Node in memory with its own key, but\n // until then this hack will work for the selected text extract use case.\n if ($isTextNode(target)) {\n const text = target.__text;\n // If an uncollapsed selection ends or starts at the end of a line of specialized,\n // TextNodes, such as code tokens, we will get a 'blank' TextNode here, i.e., one\n // with text of length 0. We don't want this, it makes a confusing mess. Reset!\n if (text.length > 0) {\n serializedNode.text = text;\n } else {\n shouldInclude = false;\n }\n }\n for (let i = 0; i < children.length; i++) {\n const childNode = children[i];\n const shouldIncludeChild = $appendNodesToJSON(editor, selection, childNode, serializedNode.children);\n if (!shouldInclude && $isElementNode(currentNode) && shouldIncludeChild && currentNode.extractWithChild(childNode, selection, 'clone')) {\n shouldInclude = true;\n }\n }\n if (shouldInclude && !shouldExclude) {\n targetArray.push(serializedNode);\n } else if (Array.isArray(serializedNode.children)) {\n for (let i = 0; i < serializedNode.children.length; i++) {\n const serializedChildNode = serializedNode.children[i];\n targetArray.push(serializedChildNode);\n }\n }\n return shouldInclude;\n}\n\n// TODO why $ function with Editor instance?\n/**\n * Gets the Lexical JSON of the nodes inside the provided Selection.\n *\n * @param editor LexicalEditor to get the JSON content from.\n * @param selection Selection to get the JSON content from.\n * @returns an object with the editor namespace and a list of serializable nodes as JavaScript objects.\n */\nfunction $generateJSONFromSelectedNodes(editor, selection) {\n const nodes = [];\n const root = $getRoot();\n const topLevelChildren = root.getChildren();\n for (let i = 0; i < topLevelChildren.length; i++) {\n const topLevelNode = topLevelChildren[i];\n $appendNodesToJSON(editor, selection, topLevelNode, nodes);\n }\n return {\n namespace: editor._config.namespace,\n nodes\n };\n}\n\n/**\n * This method takes an array of objects conforming to the BaseSeralizedNode interface and returns\n * an Array containing instances of the corresponding LexicalNode classes registered on the editor.\n * Normally, you'd get an Array of BaseSerialized nodes from {@link $generateJSONFromSelectedNodes}\n *\n * @param serializedNodes an Array of objects conforming to the BaseSerializedNode interface.\n * @returns an Array of Lexical Node objects.\n */\nfunction $generateNodesFromSerializedNodes(serializedNodes) {\n const nodes = [];\n for (let i = 0; i < serializedNodes.length; i++) {\n const serializedNode = serializedNodes[i];\n const node = $parseSerializedNode(serializedNode);\n if ($isTextNode(node)) {\n $addNodeStyle(node);\n }\n nodes.push(node);\n }\n return nodes;\n}\nconst EVENT_LATENCY = 50;\nlet clipboardEventTimeout = null;\n\n// TODO custom selection\n// TODO potentially have a node customizable version for plain text\n/**\n * Copies the content of the current selection to the clipboard in\n * text/plain, text/html, and application/x-lexical-editor (Lexical JSON)\n * formats.\n *\n * @param editor the LexicalEditor instance to copy content from\n * @param event the native browser ClipboardEvent to add the content to.\n * @returns\n */\nasync function copyToClipboard(editor, event, data) {\n if (clipboardEventTimeout !== null) {\n // Prevent weird race conditions that can happen when this function is run multiple times\n // synchronously. In the future, we can do better, we can cancel/override the previously running job.\n return false;\n }\n if (event !== null) {\n return new Promise((resolve, reject) => {\n editor.update(() => {\n resolve($copyToClipboardEvent(editor, event, data));\n });\n });\n }\n const rootElement = editor.getRootElement();\n const windowDocument = editor._window == null ? window.document : editor._window.document;\n const domSelection = getDOMSelection(editor._window);\n if (rootElement === null || domSelection === null) {\n return false;\n }\n const element = windowDocument.createElement('span');\n element.style.cssText = 'position: fixed; top: -1000px;';\n element.append(windowDocument.createTextNode('#'));\n rootElement.append(element);\n const range = new Range();\n range.setStart(element, 0);\n range.setEnd(element, 1);\n domSelection.removeAllRanges();\n domSelection.addRange(range);\n return new Promise((resolve, reject) => {\n const removeListener = editor.registerCommand(COPY_COMMAND, secondEvent => {\n if (objectKlassEquals(secondEvent, ClipboardEvent)) {\n removeListener();\n if (clipboardEventTimeout !== null) {\n window.clearTimeout(clipboardEventTimeout);\n clipboardEventTimeout = null;\n }\n resolve($copyToClipboardEvent(editor, secondEvent, data));\n }\n // Block the entire copy flow while we wait for the next ClipboardEvent\n return true;\n }, COMMAND_PRIORITY_CRITICAL);\n // If the above hack execCommand hack works, this timeout code should never fire. Otherwise,\n // the listener will be quickly freed so that the user can reuse it again\n clipboardEventTimeout = window.setTimeout(() => {\n removeListener();\n clipboardEventTimeout = null;\n resolve(false);\n }, EVENT_LATENCY);\n windowDocument.execCommand('copy');\n element.remove();\n });\n}\n\n// TODO shouldn't pass editor (pass namespace directly)\nfunction $copyToClipboardEvent(editor, event, data) {\n if (data === undefined) {\n const domSelection = getDOMSelection(editor._window);\n if (!domSelection) {\n return false;\n }\n const anchorDOM = domSelection.anchorNode;\n const focusDOM = domSelection.focusNode;\n if (anchorDOM !== null && focusDOM !== null && !isSelectionWithinEditor(editor, anchorDOM, focusDOM)) {\n return false;\n }\n const selection = $getSelection();\n if (selection === null) {\n return false;\n }\n data = $getClipboardDataFromSelection(selection);\n }\n event.preventDefault();\n const clipboardData = event.clipboardData;\n if (clipboardData === null) {\n return false;\n }\n setLexicalClipboardDataTransfer(clipboardData, data);\n return true;\n}\nconst clipboardDataFunctions = [['text/html', $getHtmlContent], ['application/x-lexical-editor', $getLexicalContent]];\n\n/**\n * Serialize the content of the current selection to strings in\n * text/plain, text/html, and application/x-lexical-editor (Lexical JSON)\n * formats (as available).\n *\n * @param selection the selection to serialize (defaults to $getSelection())\n * @returns LexicalClipboardData\n */\nfunction $getClipboardDataFromSelection(selection = $getSelection()) {\n const clipboardData = {\n 'text/plain': selection ? selection.getTextContent() : ''\n };\n if (selection) {\n const editor = $getEditor();\n for (const [mimeType, $editorFn] of clipboardDataFunctions) {\n const v = $editorFn(editor, selection);\n if (v !== null) {\n clipboardData[mimeType] = v;\n }\n }\n }\n return clipboardData;\n}\n\n/**\n * Call setData on the given clipboardData for each MIME type present\n * in the given data (from {@link $getClipboardDataFromSelection})\n *\n * @param clipboardData the event.clipboardData to populate from data\n * @param data The lexical data\n */\nfunction setLexicalClipboardDataTransfer(clipboardData, data) {\n for (const k in data) {\n const v = data[k];\n if (v !== undefined) {\n clipboardData.setData(k, v);\n }\n }\n}\n\nexport { $generateJSONFromSelectedNodes, $generateNodesFromSerializedNodes, $getClipboardDataFromSelection, $getHtmlContent, $getLexicalContent, $insertDataTransferForPlainText, $insertDataTransferForRichText, $insertGeneratedNodes, copyToClipboard, setLexicalClipboardDataTransfer };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$generateHtmlFromNodes as t,$generateNodesFromDOM as e}from\"@lexical/html\";import{$addNodeStyle as n,$sliceSelectedTextNodeContent as o}from\"@lexical/selection\";import{objectKlassEquals as r}from\"@lexical/utils\";import{$isRangeSelection as l,$getSelection as i,$createTabNode as c,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as s,$getRoot as a,$parseSerializedNode as u,$isTextNode as d,COPY_COMMAND as f,COMMAND_PRIORITY_CRITICAL as p,isSelectionWithinEditor as m,$getEditor as h,$isElementNode as g,$cloneWithProperties as x}from\"lexical\";function w(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}var y=w((function(t){const e=new URLSearchParams;e.append(\"code\",t);for(let t=1;t<arguments.length;t++)e.append(\"v\",arguments[t]);throw Error(`Minified Lexical error #${t}; visit https://lexical.dev/docs/error?${e} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));const v=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,C=t=>v?(t||window).getSelection():null;function D(e,n=i()){return null==n&&y(166),l(n)&&n.isCollapsed()||0===n.getNodes().length?\"\":t(e,n)}function N(t,e=i()){return null==e&&y(166),l(e)&&e.isCollapsed()||0===e.getNodes().length?null:JSON.stringify(R(t,e))}function _(t,e){const n=t.getData(\"text/plain\")||t.getData(\"text/uri-list\");null!=n&&e.insertRawText(n)}function T(t,n,o){const r=t.getData(\"application/x-lexical-editor\");if(r)try{const t=JSON.parse(r);if(t.namespace===o._config.namespace&&Array.isArray(t.nodes)){return S(o,E(t.nodes),n)}}catch(t){}const s=t.getData(\"text/html\");if(s)try{const t=(new DOMParser).parseFromString(s,\"text/html\");return S(o,e(o,t),n)}catch(t){}const a=t.getData(\"text/plain\")||t.getData(\"text/uri-list\");if(null!=a)if(l(n)){const t=a.split(/(\\r?\\n|\\t)/);\"\"===t[t.length-1]&&t.pop();for(let e=0;e<t.length;e++){const n=i();if(l(n)){const o=t[e];\"\\n\"===o||\"\\r\\n\"===o?n.insertParagraph():\"\\t\"===o?n.insertNodes([c()]):n.insertText(o)}}}else n.insertRawText(a)}function S(t,e,n){t.dispatchCommand(s,{nodes:e,selection:n})||n.insertNodes(e)}function A(t,e,n,r=[]){let l=null===e||n.isSelected(e);const i=g(n)&&n.excludeFromCopy(\"html\");let c=n;if(null!==e){let t=x(n);t=d(t)&&null!==e?o(e,t):t,c=t}const s=g(c)?c.getChildren():[],a=function(t){const e=t.exportJSON(),n=t.constructor;if(e.type!==n.getType()&&y(58,n.name),g(t)){const t=e.children;Array.isArray(t)||y(59,n.name)}return e}(c);if(d(c)){const t=c.__text;t.length>0?a.text=t:l=!1}for(let o=0;o<s.length;o++){const r=s[o],i=A(t,e,r,a.children);!l&&g(n)&&i&&n.extractWithChild(r,e,\"clone\")&&(l=!0)}if(l&&!i)r.push(a);else if(Array.isArray(a.children))for(let t=0;t<a.children.length;t++){const e=a.children[t];r.push(e)}return l}function R(t,e){const n=[],o=a().getChildren();for(let r=0;r<o.length;r++){A(t,e,o[r],n)}return{namespace:t._config.namespace,nodes:n}}function E(t){const e=[];for(let o=0;o<t.length;o++){const r=t[o],l=u(r);d(l)&&n(l),e.push(l)}return e}let O=null;async function P(t,e,n){if(null!==O)return!1;if(null!==e)return new Promise(((o,r)=>{t.update((()=>{o(b(t,e,n))}))}));const o=t.getRootElement(),l=null==t._window?window.document:t._window.document,i=C(t._window);if(null===o||null===i)return!1;const c=l.createElement(\"span\");c.style.cssText=\"position: fixed; top: -1000px;\",c.append(l.createTextNode(\"#\")),o.append(c);const s=new Range;return s.setStart(c,0),s.setEnd(c,1),i.removeAllRanges(),i.addRange(s),new Promise(((e,o)=>{const i=t.registerCommand(f,(o=>(r(o,ClipboardEvent)&&(i(),null!==O&&(window.clearTimeout(O),O=null),e(b(t,o,n))),!0)),p);O=window.setTimeout((()=>{i(),O=null,e(!1)}),50),l.execCommand(\"copy\"),c.remove()}))}function b(t,e,n){if(void 0===n){const e=C(t._window);if(!e)return!1;const o=e.anchorNode,r=e.focusNode;if(null!==o&&null!==r&&!m(t,o,r))return!1;const l=i();if(null===l)return!1;n=M(l)}e.preventDefault();const o=e.clipboardData;return null!==o&&(F(o,n),!0)}const J=[[\"text/html\",D],[\"application/x-lexical-editor\",N]];function M(t=i()){const e={\"text/plain\":t?t.getTextContent():\"\"};if(t){const n=h();for(const[o,r]of J){const l=r(n,t);null!==l&&(e[o]=l)}}return e}function F(t,e){for(const n in e){const o=e[n];void 0!==o&&t.setData(n,o)}}export{R as $generateJSONFromSelectedNodes,E as $generateNodesFromSerializedNodes,M as $getClipboardDataFromSelection,D as $getHtmlContent,N as $getLexicalContent,_ as $insertDataTransferForPlainText,T as $insertDataTransferForRichText,S as $insertGeneratedNodes,P as copyToClipboard,F as setLexicalClipboardDataTransfer};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalClipboard.dev.mjs';\nimport * as modProd from './LexicalClipboard.prod.mjs';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const $generateJSONFromSelectedNodes = mod.$generateJSONFromSelectedNodes;\nexport const $generateNodesFromSerializedNodes = mod.$generateNodesFromSerializedNodes;\nexport const $getClipboardDataFromSelection = mod.$getClipboardDataFromSelection;\nexport const $getHtmlContent = mod.$getHtmlContent;\nexport const $getLexicalContent = mod.$getLexicalContent;\nexport const $insertDataTransferForPlainText = mod.$insertDataTransferForPlainText;\nexport const $insertDataTransferForRichText = mod.$insertDataTransferForRichText;\nexport const $insertGeneratedNodes = mod.$insertGeneratedNodes;\nexport const copyToClipboard = mod.copyToClipboard;\nexport const setLexicalClipboardDataTransfer = mod.setLexicalClipboardDataTransfer;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { $insertDataTransferForPlainText, $getHtmlContent } from '@lexical/clipboard';\nimport { $shouldOverrideDefaultCharacterSelection, $moveCharacter } from '@lexical/selection';\nimport { mergeRegister, objectKlassEquals } from '@lexical/utils';\nimport { DELETE_CHARACTER_COMMAND, $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, DELETE_WORD_COMMAND, DELETE_LINE_COMMAND, CONTROLLED_TEXT_INSERTION_COMMAND, REMOVE_TEXT_COMMAND, INSERT_LINE_BREAK_COMMAND, INSERT_PARAGRAPH_COMMAND, KEY_ARROW_LEFT_COMMAND, KEY_ARROW_RIGHT_COMMAND, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND, KEY_ENTER_COMMAND, SELECT_ALL_COMMAND, $selectAll, COPY_COMMAND, CUT_COMMAND, PASTE_COMMAND, DROP_COMMAND, DRAGSTART_COMMAND } from 'lexical';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst CAN_USE_DOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst documentMode = CAN_USE_DOM && 'documentMode' in document ? document.documentMode : null;\nconst CAN_USE_BEFORE_INPUT = CAN_USE_DOM && 'InputEvent' in window && !documentMode ? 'getTargetRanges' in new window.InputEvent('input') : false;\nconst IS_SAFARI = CAN_USE_DOM && /Version\\/[\\d.]+.*Safari/.test(navigator.userAgent);\nconst IS_IOS = CAN_USE_DOM && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n\n// Keep these in case we need to use them in the future.\n// export const IS_WINDOWS: boolean = CAN_USE_DOM && /Win/.test(navigator.platform);\nconst IS_CHROME = CAN_USE_DOM && /^(?=.*Chrome).*/i.test(navigator.userAgent);\nconst IS_APPLE_WEBKIT = CAN_USE_DOM && /AppleWebKit\\/[\\d.]+/.test(navigator.userAgent) && !IS_CHROME;\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction onCopyForPlainText(event, editor) {\n editor.update(() => {\n if (event !== null) {\n const clipboardData = objectKlassEquals(event, KeyboardEvent) ? null : event.clipboardData;\n const selection = $getSelection();\n if (selection !== null && clipboardData != null) {\n event.preventDefault();\n const htmlString = $getHtmlContent(editor);\n if (htmlString !== null) {\n clipboardData.setData('text/html', htmlString);\n }\n clipboardData.setData('text/plain', selection.getTextContent());\n }\n }\n });\n}\nfunction onPasteForPlainText(event, editor) {\n event.preventDefault();\n editor.update(() => {\n const selection = $getSelection();\n const {\n clipboardData\n } = event;\n if (clipboardData != null && $isRangeSelection(selection)) {\n $insertDataTransferForPlainText(clipboardData, selection);\n }\n }, {\n tag: 'paste'\n });\n}\nfunction onCutForPlainText(event, editor) {\n onCopyForPlainText(event, editor);\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n selection.removeText();\n }\n });\n}\nfunction registerPlainText(editor) {\n const removeListener = mergeRegister(editor.registerCommand(DELETE_CHARACTER_COMMAND, isBackward => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n selection.deleteCharacter(isBackward);\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(DELETE_WORD_COMMAND, isBackward => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n selection.deleteWord(isBackward);\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(DELETE_LINE_COMMAND, isBackward => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n selection.deleteLine(isBackward);\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(CONTROLLED_TEXT_INSERTION_COMMAND, eventOrText => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n if (typeof eventOrText === 'string') {\n selection.insertText(eventOrText);\n } else {\n const dataTransfer = eventOrText.dataTransfer;\n if (dataTransfer != null) {\n $insertDataTransferForPlainText(dataTransfer, selection);\n } else {\n const data = eventOrText.data;\n if (data) {\n selection.insertText(data);\n }\n }\n }\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(REMOVE_TEXT_COMMAND, () => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n selection.removeText();\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(INSERT_LINE_BREAK_COMMAND, selectStart => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n selection.insertLineBreak(selectStart);\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(INSERT_PARAGRAPH_COMMAND, () => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n selection.insertLineBreak();\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(KEY_ARROW_LEFT_COMMAND, payload => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n const event = payload;\n const isHoldingShift = event.shiftKey;\n if ($shouldOverrideDefaultCharacterSelection(selection, true)) {\n event.preventDefault();\n $moveCharacter(selection, isHoldingShift, true);\n return true;\n }\n return false;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(KEY_ARROW_RIGHT_COMMAND, payload => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n const event = payload;\n const isHoldingShift = event.shiftKey;\n if ($shouldOverrideDefaultCharacterSelection(selection, false)) {\n event.preventDefault();\n $moveCharacter(selection, isHoldingShift, false);\n return true;\n }\n return false;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(KEY_BACKSPACE_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n event.preventDefault();\n return editor.dispatchCommand(DELETE_CHARACTER_COMMAND, true);\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(KEY_DELETE_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n event.preventDefault();\n return editor.dispatchCommand(DELETE_CHARACTER_COMMAND, false);\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(KEY_ENTER_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n if (event !== null) {\n // If we have beforeinput, then we can avoid blocking\n // the default behavior. This ensures that the iOS can\n // intercept that we're actually inserting a paragraph,\n // and autocomplete, autocapitalize etc work as intended.\n // This can also cause a strange performance issue in\n // Safari, where there is a noticeable pause due to\n // preventing the key down of enter.\n if ((IS_IOS || IS_SAFARI || IS_APPLE_WEBKIT) && CAN_USE_BEFORE_INPUT) {\n return false;\n }\n event.preventDefault();\n }\n return editor.dispatchCommand(INSERT_LINE_BREAK_COMMAND, false);\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(SELECT_ALL_COMMAND, () => {\n $selectAll();\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(COPY_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n onCopyForPlainText(event, editor);\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(CUT_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n onCutForPlainText(event, editor);\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(PASTE_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n onPasteForPlainText(event, editor);\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(DROP_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n\n // TODO: Make drag and drop work at some point.\n event.preventDefault();\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(DRAGSTART_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n\n // TODO: Make drag and drop work at some point.\n event.preventDefault();\n return true;\n }, COMMAND_PRIORITY_EDITOR));\n return removeListener;\n}\n\nexport { registerPlainText };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$insertDataTransferForPlainText as e,$getHtmlContent as t}from\"@lexical/clipboard\";import{$shouldOverrideDefaultCharacterSelection as n,$moveCharacter as r}from\"@lexical/selection\";import{mergeRegister as o,objectKlassEquals as i}from\"@lexical/utils\";import{DELETE_CHARACTER_COMMAND as a,$getSelection as s,$isRangeSelection as u,COMMAND_PRIORITY_EDITOR as m,DELETE_WORD_COMMAND as d,DELETE_LINE_COMMAND as c,CONTROLLED_TEXT_INSERTION_COMMAND as l,REMOVE_TEXT_COMMAND as f,INSERT_LINE_BREAK_COMMAND as g,INSERT_PARAGRAPH_COMMAND as p,KEY_ARROW_LEFT_COMMAND as C,KEY_ARROW_RIGHT_COMMAND as v,KEY_BACKSPACE_COMMAND as w,KEY_DELETE_COMMAND as D,KEY_ENTER_COMMAND as x,SELECT_ALL_COMMAND as h,$selectAll as T,COPY_COMMAND as b,CUT_COMMAND as y,PASTE_COMMAND as A,DROP_COMMAND as E,DRAGSTART_COMMAND as K}from\"lexical\";const L=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,M=L&&\"documentMode\"in document?document.documentMode:null,P=!(!L||!(\"InputEvent\"in window)||M)&&\"getTargetRanges\"in new window.InputEvent(\"input\"),S=L&&/Version\\/[\\d.]+.*Safari/.test(navigator.userAgent),k=L&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,B=L&&/^(?=.*Chrome).*/i.test(navigator.userAgent),I=L&&/AppleWebKit\\/[\\d.]+/.test(navigator.userAgent)&&!B;function W(e,n){n.update((()=>{if(null!==e){const r=i(e,KeyboardEvent)?null:e.clipboardData,o=s();if(null!==o&&null!=r){e.preventDefault();const i=t(n);null!==i&&r.setData(\"text/html\",i),r.setData(\"text/plain\",o.getTextContent())}}}))}function R(t){return o(t.registerCommand(a,(e=>{const t=s();return!!u(t)&&(t.deleteCharacter(e),!0)}),m),t.registerCommand(d,(e=>{const t=s();return!!u(t)&&(t.deleteWord(e),!0)}),m),t.registerCommand(c,(e=>{const t=s();return!!u(t)&&(t.deleteLine(e),!0)}),m),t.registerCommand(l,(t=>{const n=s();if(!u(n))return!1;if(\"string\"==typeof t)n.insertText(t);else{const r=t.dataTransfer;if(null!=r)e(r,n);else{const e=t.data;e&&n.insertText(e)}}return!0}),m),t.registerCommand(f,(()=>{const e=s();return!!u(e)&&(e.removeText(),!0)}),m),t.registerCommand(g,(e=>{const t=s();return!!u(t)&&(t.insertLineBreak(e),!0)}),m),t.registerCommand(p,(()=>{const e=s();return!!u(e)&&(e.insertLineBreak(),!0)}),m),t.registerCommand(C,(e=>{const t=s();if(!u(t))return!1;const o=e,i=o.shiftKey;return!!n(t,!0)&&(o.preventDefault(),r(t,i,!0),!0)}),m),t.registerCommand(v,(e=>{const t=s();if(!u(t))return!1;const o=e,i=o.shiftKey;return!!n(t,!1)&&(o.preventDefault(),r(t,i,!1),!0)}),m),t.registerCommand(w,(e=>{const n=s();return!!u(n)&&(e.preventDefault(),t.dispatchCommand(a,!0))}),m),t.registerCommand(D,(e=>{const n=s();return!!u(n)&&(e.preventDefault(),t.dispatchCommand(a,!1))}),m),t.registerCommand(x,(e=>{const n=s();if(!u(n))return!1;if(null!==e){if((k||S||I)&&P)return!1;e.preventDefault()}return t.dispatchCommand(g,!1)}),m),t.registerCommand(h,(()=>(T(),!0)),m),t.registerCommand(b,(e=>{const n=s();return!!u(n)&&(W(e,t),!0)}),m),t.registerCommand(y,(e=>{const n=s();return!!u(n)&&(function(e,t){W(e,t),t.update((()=>{const e=s();u(e)&&e.removeText()}))}(e,t),!0)}),m),t.registerCommand(A,(n=>{const r=s();return!!u(r)&&(function(t,n){t.preventDefault(),n.update((()=>{const n=s(),{clipboardData:r}=t;null!=r&&u(n)&&e(r,n)}),{tag:\"paste\"})}(n,t),!0)}),m),t.registerCommand(E,(e=>{const t=s();return!!u(t)&&(e.preventDefault(),!0)}),m),t.registerCommand(K,(e=>{const t=s();return!!u(t)&&(e.preventDefault(),!0)}),m))}export{R as registerPlainText};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalPlainText.dev.mjs';\nimport * as modProd from './LexicalPlainText.prod.mjs';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const registerPlainText = mod.registerPlainText;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{useLexicalEditable as e}from\"@lexical/react/useLexicalEditable\";import{$canShowPlaceholderCurry as r}from\"@lexical/text\";import{mergeRegister as o}from\"@lexical/utils\";import{useLayoutEffect as n,useEffect as i,useState as c,useMemo as l,Suspense as a}from\"react\";import{flushSync as u,createPortal as m}from\"react-dom\";import{jsx as s,jsxs as d,Fragment as f}from\"react/jsx-runtime\";import{registerDragonSupport as p}from\"@lexical/dragon\";import{registerPlainText as x}from\"@lexical/plain-text\";const g=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:i;function E(t){return t.getEditorState().read(r(t.isComposing()))}function h({contentEditable:e,placeholder:r=null,ErrorBoundary:n}){const[E]=t(),h=function(t,e){const[r,o]=c((()=>t.getDecorators()));return g((()=>t.registerDecoratorListener((t=>{u((()=>{o(t)}))}))),[t]),i((()=>{o(t.getDecorators())}),[t]),l((()=>{const o=[],n=Object.keys(r);for(let i=0;i<n.length;i++){const c=n[i],l=s(e,{onError:e=>t._onError(e),children:s(a,{fallback:null,children:r[c]})}),u=t.getElementByKey(c);null!==u&&o.push(m(l,u,c))}return o}),[e,r,t])}(E,n);return function(t){g((()=>o(x(t),p(t))),[t])}(E),d(f,{children:[e,s(w,{content:r}),h]})}function w({content:r}){const[n]=t(),i=function(t){const[e,r]=c((()=>E(t)));return g((()=>{function e(){const e=E(t);r(e)}return e(),o(t.registerUpdateListener((()=>{e()})),t.registerEditableListener((()=>{e()})))}),[t]),e}(n),l=e();return i?\"function\"==typeof r?r(l):r:null}export{h as PlainTextPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as t,useEffect as i,forwardRef as a,useState as r,useCallback as n,useMemo as o}from\"react\";import{jsx as l,jsxs as d,Fragment as c}from\"react/jsx-runtime\";import{$canShowPlaceholderCurry as s}from\"@lexical/text\";import{mergeRegister as u}from\"@lexical/utils\";const m=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:i;function f({editor:e,ariaActiveDescendant:t,ariaAutoComplete:i,ariaControls:a,ariaDescribedBy:d,ariaExpanded:c,ariaLabel:s,ariaLabelledBy:u,ariaMultiline:f,ariaOwns:b,ariaRequired:p,autoCapitalize:x,className:E,id:v,role:w=\"textbox\",spellCheck:y=!0,style:C,tabIndex:h,\"data-testid\":L,...g},D){const[R,k]=r(e.isEditable()),q=n((t=>{t&&t.ownerDocument&&t.ownerDocument.defaultView?e.setRootElement(t):e.setRootElement(null)}),[e]),z=o((()=>function(...e){return t=>{e.forEach((e=>{\"function\"==typeof e?e(t):null!=e&&(e.current=t)}))}}(D,q)),[q,D]);return m((()=>(k(e.isEditable()),e.registerEditableListener((e=>{k(e)})))),[e]),l(\"div\",{...g,\"aria-activedescendant\":R?t:void 0,\"aria-autocomplete\":R?i:\"none\",\"aria-controls\":R?a:void 0,\"aria-describedby\":d,\"aria-expanded\":R&&\"combobox\"===w?!!c:void 0,\"aria-label\":s,\"aria-labelledby\":u,\"aria-multiline\":f,\"aria-owns\":R?b:void 0,\"aria-readonly\":!R||void 0,\"aria-required\":p,autoCapitalize:x,className:E,contentEditable:R,\"data-testid\":L,id:v,ref:z,role:R?w:void 0,spellCheck:y,style:C,tabIndex:h})}const b=a(f);function p(e){return e.getEditorState().read(s(e.isComposing()))}const x=a(E);function E(t,i){const{placeholder:a,...r}=t,[n]=e();return d(c,{children:[l(b,{editor:n,...r,ref:i}),null!=a&&l(v,{editor:n,content:a})]})}function v({content:e,editor:i}){const a=function(e){const[t,i]=r((()=>p(e)));return m((()=>{function t(){const t=p(e);i(t)}return t(),u(e.registerUpdateListener((()=>{t()})),e.registerEditableListener((()=>{t()})))}),[e]),t}(i),[n,o]=r(i.isEditable());if(t((()=>(o(i.isEditable()),i.registerEditableListener((e=>{o(e)})))),[i]),!a)return null;let d=null;return\"function\"==typeof e?d=e(n):null!==e&&(d=e),null===d?null:l(\"div\",{\"aria-hidden\":!0,children:d})}export{x as ContentEditable};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { mergeRegister } from '@lexical/utils';\nimport { UNDO_COMMAND, COMMAND_PRIORITY_EDITOR, REDO_COMMAND, CLEAR_EDITOR_COMMAND, CLEAR_HISTORY_COMMAND, CAN_REDO_COMMAND, CAN_UNDO_COMMAND, $isRangeSelection, $isTextNode, $isRootNode } from 'lexical';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst HISTORY_MERGE = 0;\nconst HISTORY_PUSH = 1;\nconst DISCARD_HISTORY_CANDIDATE = 2;\nconst OTHER = 0;\nconst COMPOSING_CHARACTER = 1;\nconst INSERT_CHARACTER_AFTER_SELECTION = 2;\nconst DELETE_CHARACTER_BEFORE_SELECTION = 3;\nconst DELETE_CHARACTER_AFTER_SELECTION = 4;\nfunction getDirtyNodes(editorState, dirtyLeaves, dirtyElements) {\n const nodeMap = editorState._nodeMap;\n const nodes = [];\n for (const dirtyLeafKey of dirtyLeaves) {\n const dirtyLeaf = nodeMap.get(dirtyLeafKey);\n if (dirtyLeaf !== undefined) {\n nodes.push(dirtyLeaf);\n }\n }\n for (const [dirtyElementKey, intentionallyMarkedAsDirty] of dirtyElements) {\n if (!intentionallyMarkedAsDirty) {\n continue;\n }\n const dirtyElement = nodeMap.get(dirtyElementKey);\n if (dirtyElement !== undefined && !$isRootNode(dirtyElement)) {\n nodes.push(dirtyElement);\n }\n }\n return nodes;\n}\nfunction getChangeType(prevEditorState, nextEditorState, dirtyLeavesSet, dirtyElementsSet, isComposing) {\n if (prevEditorState === null || dirtyLeavesSet.size === 0 && dirtyElementsSet.size === 0 && !isComposing) {\n return OTHER;\n }\n const nextSelection = nextEditorState._selection;\n const prevSelection = prevEditorState._selection;\n if (isComposing) {\n return COMPOSING_CHARACTER;\n }\n if (!$isRangeSelection(nextSelection) || !$isRangeSelection(prevSelection) || !prevSelection.isCollapsed() || !nextSelection.isCollapsed()) {\n return OTHER;\n }\n const dirtyNodes = getDirtyNodes(nextEditorState, dirtyLeavesSet, dirtyElementsSet);\n if (dirtyNodes.length === 0) {\n return OTHER;\n }\n\n // Catching the case when inserting new text node into an element (e.g. first char in paragraph/list),\n // or after existing node.\n if (dirtyNodes.length > 1) {\n const nextNodeMap = nextEditorState._nodeMap;\n const nextAnchorNode = nextNodeMap.get(nextSelection.anchor.key);\n const prevAnchorNode = nextNodeMap.get(prevSelection.anchor.key);\n if (nextAnchorNode && prevAnchorNode && !prevEditorState._nodeMap.has(nextAnchorNode.__key) && $isTextNode(nextAnchorNode) && nextAnchorNode.__text.length === 1 && nextSelection.anchor.offset === 1) {\n return INSERT_CHARACTER_AFTER_SELECTION;\n }\n return OTHER;\n }\n const nextDirtyNode = dirtyNodes[0];\n const prevDirtyNode = prevEditorState._nodeMap.get(nextDirtyNode.__key);\n if (!$isTextNode(prevDirtyNode) || !$isTextNode(nextDirtyNode) || prevDirtyNode.__mode !== nextDirtyNode.__mode) {\n return OTHER;\n }\n const prevText = prevDirtyNode.__text;\n const nextText = nextDirtyNode.__text;\n if (prevText === nextText) {\n return OTHER;\n }\n const nextAnchor = nextSelection.anchor;\n const prevAnchor = prevSelection.anchor;\n if (nextAnchor.key !== prevAnchor.key || nextAnchor.type !== 'text') {\n return OTHER;\n }\n const nextAnchorOffset = nextAnchor.offset;\n const prevAnchorOffset = prevAnchor.offset;\n const textDiff = nextText.length - prevText.length;\n if (textDiff === 1 && prevAnchorOffset === nextAnchorOffset - 1) {\n return INSERT_CHARACTER_AFTER_SELECTION;\n }\n if (textDiff === -1 && prevAnchorOffset === nextAnchorOffset + 1) {\n return DELETE_CHARACTER_BEFORE_SELECTION;\n }\n if (textDiff === -1 && prevAnchorOffset === nextAnchorOffset) {\n return DELETE_CHARACTER_AFTER_SELECTION;\n }\n return OTHER;\n}\nfunction isTextNodeUnchanged(key, prevEditorState, nextEditorState) {\n const prevNode = prevEditorState._nodeMap.get(key);\n const nextNode = nextEditorState._nodeMap.get(key);\n const prevSelection = prevEditorState._selection;\n const nextSelection = nextEditorState._selection;\n const isDeletingLine = $isRangeSelection(prevSelection) && $isRangeSelection(nextSelection) && prevSelection.anchor.type === 'element' && prevSelection.focus.type === 'element' && nextSelection.anchor.type === 'text' && nextSelection.focus.type === 'text';\n if (!isDeletingLine && $isTextNode(prevNode) && $isTextNode(nextNode) && prevNode.__parent === nextNode.__parent) {\n // This has the assumption that object key order won't change if the\n // content did not change, which should normally be safe given\n // the manner in which nodes and exportJSON are typically implemented.\n return JSON.stringify(prevEditorState.read(() => prevNode.exportJSON())) === JSON.stringify(nextEditorState.read(() => nextNode.exportJSON()));\n }\n return false;\n}\nfunction createMergeActionGetter(editor, delay) {\n let prevChangeTime = Date.now();\n let prevChangeType = OTHER;\n return (prevEditorState, nextEditorState, currentHistoryEntry, dirtyLeaves, dirtyElements, tags) => {\n const changeTime = Date.now();\n\n // If applying changes from history stack there's no need\n // to run history logic again, as history entries already calculated\n if (tags.has('historic')) {\n prevChangeType = OTHER;\n prevChangeTime = changeTime;\n return DISCARD_HISTORY_CANDIDATE;\n }\n const changeType = getChangeType(prevEditorState, nextEditorState, dirtyLeaves, dirtyElements, editor.isComposing());\n const mergeAction = (() => {\n const isSameEditor = currentHistoryEntry === null || currentHistoryEntry.editor === editor;\n const shouldPushHistory = tags.has('history-push');\n const shouldMergeHistory = !shouldPushHistory && isSameEditor && tags.has('history-merge');\n if (shouldMergeHistory) {\n return HISTORY_MERGE;\n }\n if (prevEditorState === null) {\n return HISTORY_PUSH;\n }\n const selection = nextEditorState._selection;\n const hasDirtyNodes = dirtyLeaves.size > 0 || dirtyElements.size > 0;\n if (!hasDirtyNodes) {\n if (selection !== null) {\n return HISTORY_MERGE;\n }\n return DISCARD_HISTORY_CANDIDATE;\n }\n if (shouldPushHistory === false && changeType !== OTHER && changeType === prevChangeType && changeTime < prevChangeTime + delay && isSameEditor) {\n return HISTORY_MERGE;\n }\n\n // A single node might have been marked as dirty, but not have changed\n // due to some node transform reverting the change.\n if (dirtyLeaves.size === 1) {\n const dirtyLeafKey = Array.from(dirtyLeaves)[0];\n if (isTextNodeUnchanged(dirtyLeafKey, prevEditorState, nextEditorState)) {\n return HISTORY_MERGE;\n }\n }\n return HISTORY_PUSH;\n })();\n prevChangeTime = changeTime;\n prevChangeType = changeType;\n return mergeAction;\n };\n}\nfunction redo(editor, historyState) {\n const redoStack = historyState.redoStack;\n const undoStack = historyState.undoStack;\n if (redoStack.length !== 0) {\n const current = historyState.current;\n if (current !== null) {\n undoStack.push(current);\n editor.dispatchCommand(CAN_UNDO_COMMAND, true);\n }\n const historyStateEntry = redoStack.pop();\n if (redoStack.length === 0) {\n editor.dispatchCommand(CAN_REDO_COMMAND, false);\n }\n historyState.current = historyStateEntry || null;\n if (historyStateEntry) {\n historyStateEntry.editor.setEditorState(historyStateEntry.editorState, {\n tag: 'historic'\n });\n }\n }\n}\nfunction undo(editor, historyState) {\n const redoStack = historyState.redoStack;\n const undoStack = historyState.undoStack;\n const undoStackLength = undoStack.length;\n if (undoStackLength !== 0) {\n const current = historyState.current;\n const historyStateEntry = undoStack.pop();\n if (current !== null) {\n redoStack.push(current);\n editor.dispatchCommand(CAN_REDO_COMMAND, true);\n }\n if (undoStack.length === 0) {\n editor.dispatchCommand(CAN_UNDO_COMMAND, false);\n }\n historyState.current = historyStateEntry || null;\n if (historyStateEntry) {\n historyStateEntry.editor.setEditorState(historyStateEntry.editorState, {\n tag: 'historic'\n });\n }\n }\n}\nfunction clearHistory(historyState) {\n historyState.undoStack = [];\n historyState.redoStack = [];\n historyState.current = null;\n}\n\n/**\n * Registers necessary listeners to manage undo/redo history stack and related editor commands.\n * It returns `unregister` callback that cleans up all listeners and should be called on editor unmount.\n * @param editor - The lexical editor.\n * @param historyState - The history state, containing the current state and the undo/redo stack.\n * @param delay - The time (in milliseconds) the editor should delay generating a new history stack,\n * instead of merging the current changes with the current stack.\n * @returns The listeners cleanup callback function.\n */\nfunction registerHistory(editor, historyState, delay) {\n const getMergeAction = createMergeActionGetter(editor, delay);\n const applyChange = ({\n editorState,\n prevEditorState,\n dirtyLeaves,\n dirtyElements,\n tags\n }) => {\n const current = historyState.current;\n const redoStack = historyState.redoStack;\n const undoStack = historyState.undoStack;\n const currentEditorState = current === null ? null : current.editorState;\n if (current !== null && editorState === currentEditorState) {\n return;\n }\n const mergeAction = getMergeAction(prevEditorState, editorState, current, dirtyLeaves, dirtyElements, tags);\n if (mergeAction === HISTORY_PUSH) {\n if (redoStack.length !== 0) {\n historyState.redoStack = [];\n editor.dispatchCommand(CAN_REDO_COMMAND, false);\n }\n if (current !== null) {\n undoStack.push({\n ...current\n });\n editor.dispatchCommand(CAN_UNDO_COMMAND, true);\n }\n } else if (mergeAction === DISCARD_HISTORY_CANDIDATE) {\n return;\n }\n\n // Else we merge\n historyState.current = {\n editor,\n editorState\n };\n };\n const unregister = mergeRegister(editor.registerCommand(UNDO_COMMAND, () => {\n undo(editor, historyState);\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(REDO_COMMAND, () => {\n redo(editor, historyState);\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(CLEAR_EDITOR_COMMAND, () => {\n clearHistory(historyState);\n return false;\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(CLEAR_HISTORY_COMMAND, () => {\n clearHistory(historyState);\n editor.dispatchCommand(CAN_REDO_COMMAND, false);\n editor.dispatchCommand(CAN_UNDO_COMMAND, false);\n return true;\n }, COMMAND_PRIORITY_EDITOR), editor.registerUpdateListener(applyChange));\n return unregister;\n}\n\n/**\n * Creates an empty history state.\n * @returns - The empty history state, as an object.\n */\nfunction createEmptyHistoryState() {\n return {\n current: null,\n redoStack: [],\n undoStack: []\n };\n}\n\nexport { createEmptyHistoryState, registerHistory };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{mergeRegister as t}from\"@lexical/utils\";import{UNDO_COMMAND as e,COMMAND_PRIORITY_EDITOR as n,REDO_COMMAND as r,CLEAR_EDITOR_COMMAND as o,CLEAR_HISTORY_COMMAND as i,CAN_REDO_COMMAND as s,CAN_UNDO_COMMAND as c,$isRangeSelection as a,$isTextNode as u,$isRootNode as d}from\"lexical\";const l=0,f=1,p=2,h=0,m=1,g=2,_=3,S=4;function y(t,e,n,r,o){if(null===t||0===n.size&&0===r.size&&!o)return h;const i=e._selection,s=t._selection;if(o)return m;if(!(a(i)&&a(s)&&s.isCollapsed()&&i.isCollapsed()))return h;const c=function(t,e,n){const r=t._nodeMap,o=[];for(const t of e){const e=r.get(t);void 0!==e&&o.push(e)}for(const[t,e]of n){if(!e)continue;const n=r.get(t);void 0===n||d(n)||o.push(n)}return o}(e,n,r);if(0===c.length)return h;if(c.length>1){const n=e._nodeMap,r=n.get(i.anchor.key),o=n.get(s.anchor.key);return r&&o&&!t._nodeMap.has(r.__key)&&u(r)&&1===r.__text.length&&1===i.anchor.offset?g:h}const l=c[0],f=t._nodeMap.get(l.__key);if(!u(f)||!u(l)||f.__mode!==l.__mode)return h;const p=f.__text,y=l.__text;if(p===y)return h;const k=i.anchor,C=s.anchor;if(k.key!==C.key||\"text\"!==k.type)return h;const x=k.offset,M=C.offset,z=y.length-p.length;return 1===z&&M===x-1?g:-1===z&&M===x+1?_:-1===z&&M===x?S:h}function k(t,e){let n=Date.now(),r=h;return(o,i,s,c,d,m)=>{const g=Date.now();if(m.has(\"historic\"))return r=h,n=g,p;const _=y(o,i,c,d,t.isComposing()),S=(()=>{const S=null===s||s.editor===t,y=m.has(\"history-push\");if(!y&&S&&m.has(\"history-merge\"))return l;if(null===o)return f;const k=i._selection;if(!(c.size>0||d.size>0))return null!==k?l:p;if(!1===y&&_!==h&&_===r&&g<n+e&&S)return l;if(1===c.size){if(function(t,e,n){const r=e._nodeMap.get(t),o=n._nodeMap.get(t),i=e._selection,s=n._selection;return!(a(i)&&a(s)&&\"element\"===i.anchor.type&&\"element\"===i.focus.type&&\"text\"===s.anchor.type&&\"text\"===s.focus.type||!u(r)||!u(o)||r.__parent!==o.__parent)&&JSON.stringify(e.read((()=>r.exportJSON())))===JSON.stringify(n.read((()=>o.exportJSON())))}(Array.from(c)[0],o,i))return l}return f})();return n=g,r=_,S}}function C(t){t.undoStack=[],t.redoStack=[],t.current=null}function x(a,u,d){const l=k(a,d),h=t(a.registerCommand(e,(()=>(function(t,e){const n=e.redoStack,r=e.undoStack;if(0!==r.length){const o=e.current,i=r.pop();null!==o&&(n.push(o),t.dispatchCommand(s,!0)),0===r.length&&t.dispatchCommand(c,!1),e.current=i||null,i&&i.editor.setEditorState(i.editorState,{tag:\"historic\"})}}(a,u),!0)),n),a.registerCommand(r,(()=>(function(t,e){const n=e.redoStack,r=e.undoStack;if(0!==n.length){const o=e.current;null!==o&&(r.push(o),t.dispatchCommand(c,!0));const i=n.pop();0===n.length&&t.dispatchCommand(s,!1),e.current=i||null,i&&i.editor.setEditorState(i.editorState,{tag:\"historic\"})}}(a,u),!0)),n),a.registerCommand(o,(()=>(C(u),!1)),n),a.registerCommand(i,(()=>(C(u),a.dispatchCommand(s,!1),a.dispatchCommand(c,!1),!0)),n),a.registerUpdateListener((({editorState:t,prevEditorState:e,dirtyLeaves:n,dirtyElements:r,tags:o})=>{const i=u.current,d=u.redoStack,h=u.undoStack,m=null===i?null:i.editorState;if(null!==i&&t===m)return;const g=l(e,t,i,n,r,o);if(g===f)0!==d.length&&(u.redoStack=[],a.dispatchCommand(s,!1)),null!==i&&(h.push({...i}),a.dispatchCommand(c,!0));else if(g===p)return;u.current={editor:a,editorState:t}})));return h}function M(){return{current:null,redoStack:[],undoStack:[]}}export{M as createEmptyHistoryState,x as registerHistory};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalHistory.dev.mjs';\nimport * as modProd from './LexicalHistory.prod.mjs';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const createEmptyHistoryState = mod.createEmptyHistoryState;\nexport const registerHistory = mod.registerHistory;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createEmptyHistoryState as o,registerHistory as r}from\"@lexical/history\";export{createEmptyHistoryState}from\"@lexical/history\";import{useMemo as e,useEffect as i}from\"react\";function a({delay:a,externalHistoryState:c}){const[l]=t();return function(t,a,c=1e3){const l=e((()=>a||o()),[a]);i((()=>r(t,l,c)),[c,t,l])}(l,c,a),null}export{a as HistoryPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as t,useEffect as o}from\"react\";const r=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:o;function i({ignoreHistoryMergeTagChange:t=!0,ignoreSelectionChange:o=!1,onChange:i}){const[n]=e();return r((()=>{if(i)return n.registerUpdateListener((({editorState:e,dirtyElements:r,dirtyLeaves:a,prevEditorState:d,tags:s})=>{o&&0===r.size&&0===a.size||t&&s.has(\"history-merge\")||d.isEmpty()||i(e,n,s)}))}),[n,t,o,i]),null}export{i as OnChangePlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport*as r from\"react\";import{jsx as e}from\"react/jsx-runtime\";function t(r,e){return t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,e){return r.__proto__=e,r},t(r,e)}var o={error:null},n=function(e){var n,a;function s(){for(var r,t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return(r=e.call.apply(e,[this].concat(n))||this).state=o,r.resetErrorBoundary=function(){for(var e,t=arguments.length,o=new Array(t),n=0;n<t;n++)o[n]=arguments[n];null==r.props.onReset||(e=r.props).onReset.apply(e,o),r.reset()},r}a=e,(n=s).prototype=Object.create(a.prototype),n.prototype.constructor=n,t(n,a),s.getDerivedStateFromError=function(r){return{error:r}};var l=s.prototype;return l.reset=function(){this.setState(o)},l.componentDidCatch=function(r,e){var t,o;null==(t=(o=this.props).onError)||t.call(o,r,e)},l.componentDidUpdate=function(r,e){var t,o,n,a,s=this.state.error,l=this.props.resetKeys;null!==s&&null!==e.error&&(void 0===(n=r.resetKeys)&&(n=[]),void 0===(a=l)&&(a=[]),n.length!==a.length||n.some((function(r,e){return!Object.is(r,a[e])})))&&(null==(t=(o=this.props).onResetKeysChange)||t.call(o,r.resetKeys,l),this.reset())},l.render=function(){var e=this.state.error,t=this.props,o=t.fallbackRender,n=t.FallbackComponent,a=t.fallback;if(null!==e){var s={error:e,resetErrorBoundary:this.resetErrorBoundary};if(r.isValidElement(a))return a;if(\"function\"==typeof o)return o(s);if(n)return r.createElement(n,s);throw new Error(\"react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop\")}return this.props.children},s}(r.Component);function a({children:r,onError:t}){return e(n,{fallback:e(\"div\",{style:{border:\"1px solid #f00\",color:\"#f00\",padding:\"8px\"},children:\"An error was thrown.\"}),onError:t,children:r})}export{a as LexicalErrorBoundary,a as default};\n","import {$getRoot, $getSelection} from 'lexical';\nimport {useEffect} from 'react';\n\nimport {LexicalComposer} from '@lexical/react/LexicalComposer';\nimport {PlainTextPlugin} from '@lexical/react/LexicalPlainTextPlugin';\nimport {ContentEditable} from '@lexical/react/LexicalContentEditable';\nimport {HistoryPlugin} from '@lexical/react/LexicalHistoryPlugin';\nimport {OnChangePlugin} from '@lexical/react/LexicalOnChangePlugin';\nimport {useLexicalComposerContext} from '@lexical/react/LexicalComposerContext';\nimport {LexicalErrorBoundary} from '@lexical/react/LexicalErrorBoundary';\n\nconst theme = {\n // Theme styling goes here\n // ...\n}\n\n// When the editor changes, you can get notified via the\n// LexicalOnChangePlugin!\nfunction onChange(editorState: any) {\n editorState.read(() => {\n // Read the contents of the EditorState here.\n const root = $getRoot();\n const selection = $getSelection();\n\n console.log(root, selection);\n });\n}\n\n// Lexical React plugins are React components, which makes them\n// highly composable. Furthermore, you can lazy load plugins if\n// desired, so you don't pay the cost for plugins until you\n// actually use them.\nfunction MyCustomAutoFocusPlugin() {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n // Focus the editor when the effect fires!\n editor.focus();\n }, [editor]);\n\n return null;\n}\n\n// Catch any errors that occur during Lexical updates and log them\n// or throw them as needed. If you don't throw them, Lexical will\n// try to recover gracefully without losing user data.\nfunction onError(error: any) {\n console.error(error);\n}\n\nexport function Editor() {\n const initialConfig = {\n namespace: 'MyEditor',\n theme,\n onError,\n };\n\n return (\n <LexicalComposer initialConfig={initialConfig}>\n <PlainTextPlugin\n contentEditable={<ContentEditable />}\n placeholder={<div>Enter some text...</div>}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <OnChangePlugin onChange={onChange} />\n <HistoryPlugin />\n <MyCustomAutoFocusPlugin />\n </LexicalComposer>\n \n );\n}"],"names":["f","require$$0","k","l","m","n","p","q","c","a","g","b","e","reactJsxRuntime_production_min","React","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","args","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","props","reenableLogs","ReactCurrentDispatcher","prefix","describeBuiltInComponentFrame","name","source","ownerFn","x","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","Component","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","value","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","didWarnAboutStringRefs","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","key","ref","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","fileName","lineNumber","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","children","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","module","require$$1","createCommand","SELECTION_CHANGE_COMMAND","SELECTION_INSERT_CLIPBOARD_NODES_COMMAND","CLICK_COMMAND","DELETE_CHARACTER_COMMAND","INSERT_LINE_BREAK_COMMAND","INSERT_PARAGRAPH_COMMAND","CONTROLLED_TEXT_INSERTION_COMMAND","PASTE_COMMAND","REMOVE_TEXT_COMMAND","DELETE_WORD_COMMAND","DELETE_LINE_COMMAND","FORMAT_TEXT_COMMAND","UNDO_COMMAND","REDO_COMMAND","KEY_DOWN_COMMAND","KEY_ARROW_RIGHT_COMMAND","MOVE_TO_END","KEY_ARROW_LEFT_COMMAND","MOVE_TO_START","KEY_ARROW_UP_COMMAND","KEY_ARROW_DOWN_COMMAND","KEY_ENTER_COMMAND","KEY_SPACE_COMMAND","KEY_BACKSPACE_COMMAND","KEY_ESCAPE_COMMAND","KEY_DELETE_COMMAND","KEY_TAB_COMMAND","INSERT_TAB_COMMAND","INDENT_CONTENT_COMMAND","OUTDENT_CONTENT_COMMAND","DROP_COMMAND","FORMAT_ELEMENT_COMMAND","DRAGSTART_COMMAND","DRAGOVER_COMMAND","DRAGEND_COMMAND","COPY_COMMAND","CUT_COMMAND","SELECT_ALL_COMMAND","CLEAR_EDITOR_COMMAND","CLEAR_HISTORY_COMMAND","CAN_REDO_COMMAND","CAN_UNDO_COMMAND","FOCUS_COMMAND","BLUR_COMMAND","KEY_MODIFIER_COMMAND","CAN_USE_DOM","documentMode","IS_APPLE","IS_FIREFOX","CAN_USE_BEFORE_INPUT","IS_SAFARI","IS_IOS","IS_ANDROID","IS_CHROME","IS_ANDROID_CHROME","IS_APPLE_WEBKIT","DOM_ELEMENT_TYPE","DOM_TEXT_TYPE","NO_DIRTY_NODES","HAS_DIRTY_NODES","FULL_RECONCILE","IS_NORMAL","IS_TOKEN","IS_SEGMENTED","IS_BOLD","IS_ITALIC","IS_STRIKETHROUGH","IS_UNDERLINE","IS_CODE","IS_SUBSCRIPT","IS_SUPERSCRIPT","IS_HIGHLIGHT","IS_ALL_FORMATTING","IS_DIRECTIONLESS","IS_UNMERGEABLE","IS_ALIGN_LEFT","IS_ALIGN_CENTER","IS_ALIGN_RIGHT","IS_ALIGN_JUSTIFY","IS_ALIGN_START","IS_ALIGN_END","NON_BREAKING_SPACE","ZERO_WIDTH_SPACE","COMPOSITION_SUFFIX","DOUBLE_LINE_BREAK","COMPOSITION_START_CHAR","RTL","LTR","RTL_REGEX","LTR_REGEX","TEXT_TYPE_TO_FORMAT","DETAIL_TYPE_TO_DETAIL","ELEMENT_TYPE_TO_FORMAT","ELEMENT_FORMAT_TO_TYPE","TEXT_MODE_TO_TYPE","TEXT_TYPE_TO_MODE","normalizeClassNames","classNames","rval","className","TEXT_MUTATION_VARIANCE","isProcessingMutations","lastTextEntryTimeStamp","getIsProcessingMutations","updateTimeStamp","event","initTextEntryListener","editor","getWindow","isManagedLineBreak","dom","target","getLastSelection","selection","$getSelection","$handleTextMutation","domSelection","getDOMSelection","anchorOffset","focusOffset","text","$updateTextNodeFromDOMContent","shouldUpdateTextNodeFromMutation","targetDOM","targetNode","$isRangeSelection","anchorNode","$flushMutations$1","mutations","observer","shouldFlushTextMutations","updateEditor","badDOMTargets","rootElement","currentEditorState","blockCursorElement","shouldRevertSelection","possibleTextForFirefoxPaste","mutation","$getNearestNodeFromDOMNode","$isDecoratorNode","$isTextNode","addedDOMs","addedDOM","$getNodeFromDOMNode","parentDOM","possibleText","removedDOMs","removedDOMsLength","unremovedBRs","removedDOM","internalGetRoot","$isElementNode","childKeys","currentDOM","correctDOM","records","record","addedNodes","$setSelection","isFirefoxClipboardEvents","$flushRootMutations","initMutationObserver","$canSimpleTextNodesBeMerged","node1","node2","node1Mode","node1Format","node1Style","node2Mode","node2Format","node2Style","$mergeTextNodes","writableNode1","normalizedNodes","getActiveEditor","$normalizeTextNode","textNode","previousNode","nextNode","$normalizeSelection","$normalizePoint","point","offset","nextOffsetAtEnd","keyCounter","resetRandomKey","generateRandomKey","getRegisteredNodeOrThrow","nodeType","registeredNode","scheduleMicroTask","$isSelectionCapturedInDecorator","isSelectionCapturedInDecoratorInput","anchorDOM","activeElement","nodeName","getEditorPropertyFromDOMNode","isSelectionWithinEditor","focusDOM","getNearestEditorFromDOMNode","isLexicalEditor","LexicalEditor","currentNode","getParentElement","getTextDirection","$isTokenOrSegmented","isDOMNodeLexicalTextNode","getDOMTextNode","toggleTextFormatType","alignWithFormat","activeFormat","newFormat","$isLeafNode","$isLineBreakNode","$setNodeKey","existingKey","errorOnNodeKeyConstructorMismatch","errorOnReadOnly","errorOnInfiniteTransforms","editorState","getActiveEditorState","internalGetActiveEditorState","existingNode","internalMarkParentElementsAsDirty","parentKey","nodeMap","dirtyElements","nextParentKey","removeFromParent","oldParent","writableNode","writableParent","prevSibling","nextSibling","writableNextSibling","writablePrevSibling","internalMarkNodeAsDirty","latest","parent","internalMarkSiblingsAsDirty","$setCompositionKey","compositionKey","previousCompositionKey","$getNodeByKey","$getCompositionKey","isCurrentlyReadOnlyMode","_editorState","startingDOM","cloneDecorators","currentDecorators","pendingDecorators","getEditorStateTextContent","$getRoot","markAllNodesAsDirty","$flushMutations","$getNodeFromDOM","nodeKey","getNodeKeyFromDOM","getTextNodeOffset","moveSelectionToEnd","doesContainGrapheme","str","getEditorsToPropagate","editorsToPropagate","currentEditor","createUID","getAnchorTextFromDOM","$updateSelectedTextFromDOM","isCompositionEnd","data","textContent","compositionEnd","isComposing","normalizedTextContent","prevTextContent","prevSelection","$getPreviousSelection","prevTextContentSize","originalTextContent","replacement","$createTextNode","$previousSiblingDoesNotAcceptText","previousSibling","$shouldInsertTextAfterOrBeforeTextNode","isToken","isTab","altKey","ctrlKey","metaKey","isBold","controlOrMeta","isItalic","isUnderline","isParagraph","shiftKey","isReturn","isLineBreak","isOpenLineBreak","isDeleteWordBackward","isBackspace","isDeleteWordForward","isDelete","isDeleteLineBackward","isDeleteLineForward","isDeleteBackward","isDeleteForward","isUndo","isRedo","isCopy","isCut","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","isMoveBackward","isMoveToStart","isMoveForward","isMoveToEnd","isMoveUp","isMoveDown","isModifier","isSpace","isEscape","isSelectAll","$selectAll","root","getCachedClassNameArray","classNamesTheme","classNameThemeType","classNamesCache","cachedClassNames","classNamesArr","setMutatedNode","mutatedNodes","registeredNodes","mutationListeners","klass","mutatedNodesByType","prevMutation","isMove","$nodesOfType","klassType","nodes","getCachedTypeToNodeMap","nodesOfType","resolveElement","isBackward","block","$getAdjacentNode","focus","focusNode","possibleNode","inputType","dispatchCommand","command","triggerCommandListeners","$textContentRequiresDoubleLinebreakAtEnd","$isRootNode","getElementByKeyOrThrow","parentElement","scrollIntoViewIfNeeded","selectionRect","doc","defaultView","currentTop","currentBottom","targetTop","targetBottom","isBodyElement","targetRect","diff","scrollTop","yOffset","$hasUpdateTag","tag","$addUpdateTag","$maybeMoveChildrenSelectionToParent","parentNode","anchor","$hasAncestor","getDefaultView","domElem","ownerDoc","windowObj","$isInlineElementOrDecoratorNode","$getNearestRootOrShadowRoot","$isRootOrShadowRoot","$copyNode","copy","$applyNodeReplacement","replaceFunc","replacementNode","errorOnInsertTextNodeOnRoot","insertNode","$getNodeByKeyOrThrow","createBlockCursorElement","editorConfig","theme","blockCursorTheme","needsBlockCursor","removeDOMBlockCursorElement","updateDOMBlockCursorElement","nextSelection","elementNode","elementNodeSize","isBlockCursor","insertBeforeElement","sibling","elementDOM","targetWindow","$splitNode","startNode","recurse","isParentRoot","nodeToMove","leftTree","rightTree","newParent","nextSiblings","isHTMLAnchorElement","isHTMLElement","isInlineDomNode","inlineNodes","isBlockDomNode","blockNodes","INTERNAL_$isBlock","firstChild","isLeafElement","$getAncestor","predicate","$getEditor","cachedNodeMaps","EMPTY_TYPE_TO_NODE_MAP","typeToNodeMap","$cloneWithProperties","latestNode","constructor","mutableNode","$garbageCollectDetachedDecorators","pendingEditorState","decorators","$garbageCollectDetachedDeepChildNodes","prevNodeMap","nodeMapDelete","dirtyNodes","childKey","$garbageCollectDetachedNodes","prevEditorState","dirtyLeaves","subTreeTextContent","subTreeDirectionedTextContent","subTreeTextFormat","subTreeTextStyle","editorTextContent","activeEditorConfig","activeEditor$1","activeEditorNodes","treatAllNodesAsDirty","activeEditorStateReadOnly","activeMutationListeners","activeTextDirection","activeDirtyElements","activeDirtyLeaves","activePrevNodeMap","activeNextNodeMap","activePrevKeyToDOMMap","destroyNode","getPrevElementByKeyOrThrow","createChildrenArray","destroyChildren","_startIndex","endIndex","startIndex","setTextAlign","domStyle","DEFAULT_INDENT_VALUE","setElementIndent","indent","indentClassName","elementHasClassName","indentationBaseValue","setElementFormat","$createNode","insertDOM","storeDOMWithKey","childrenSize","$createChildrenWithDirection","reconcileElementTerminatingLineBreak","decorator","reconcileDecorator","possibleLineBreak","previousSubTreeDirectionedTextContent","$createChildren","reconcileBlockDirection","previousSubTreeTextContent","isLastChildLineBreakOrDecorator","prevElement","nextElement","prevLineBreak","nextLineBreak","msg","reconcileParagraphFormat","$isParagraphNode","reconcileParagraphStyle","previousSubTreeDirectionTextContent","previousDirection","hasEmptyDirectionedTextContent","direction","classList","previousDirectionTheme","nextDirectionTheme","$reconcileChildrenWithDirection","$reconcileChildren","prevChildrenSize","nextChildrenSize","prevFirstChildKey","nextFrstChildKey","$reconcileNode","lastDOM","replacementDOM","nextChildNode","prevChildren","nextChildren","canUseFastPath","$reconcileNodeChildren","prevNode","isDirty","nextIndent","nextFormat","nextRootNode","getFirstChild","getNextSibling","prevChildrenLength","nextChildrenLength","prevEndIndex","nextEndIndex","prevChildrenSet","nextChildrenSet","siblingDOM","prevIndex","nextIndex","prevKey","nextKey","nextHasPrevKey","prevHasNextKey","childDOM","appendNewChildren","removeOldChildren","$reconcileRoot","nextEditorState","dirtyType","currentMutatedNodes","keyToDOMMap","PASS_THROUGH_COMMAND","ANDROID_COMPOSITION_LATENCY","rootElementEvents","onKeyDown","onPointerDown","onCompositionStart","onCompositionEnd","onInput","onClick","onBeforeInput","lastKeyDownTimeStamp","lastKeyCode","lastBeforeInputInsertTextTimeStamp","unprocessedBeforeInputData","rootElementsRegistered","isSelectionChangeFromDOMUpdate","isSelectionChangeFromMouseDown","isInsertLineBreak","isFirefoxEndingComposition","collapsedSelectionFormat","$shouldPreventDefaultAndInsertText","domTargetRange","timeStamp","isBeforeInput","domAnchorNode","anchorKey","backingAnchorElement","textLength","shouldSkipSelectionChange","domNode","onSelectionChange","isActive","windowEvent","currentTimeStamp","lastFormat","lastStyle","lastOffset","lastKey","isRootTextContentEmpty","lastNode","ParagraphNode","focusKey","nodesLength","startOffset","endOffset","startKey","endKey","combinedFormat","hasTextNodes","textContentSize","lastSelection","newSelection","$internalCreateRangeSelection","pointerType","getTargetRange","targetRanges","$canRemoveText","isPossiblyAndroidKeyPress","targetRange","isSelectionAnchorSameAsFocus","selectedNodeText","hasSelectedAllTextInNode","$onCompositionEndImpl","$isNodeSelection","getRootElementRemoveHandles","eventHandles","activeNestedEditorsMap","onDocumentSelectionChange","nextActiveEditor","editors","rootEditor","rootEditorKey","activeNestedEditor","prevActiveEditor","stopLexicalPropagation","hasStoppedLexicalPropagation","addRootElementEvents","documentRootElementsCount","removeHandles","eventName","onEvent","eventHandler","isEditable","removeRootElementEvents","newCount","cleanActiveNestedEditorsMap","markSelectionChangeFromDOMUpdate","markCollapsedSelectionFormat","style","$removeNode","nodeToRemove","restoreSelection","preserveEmptyParent","selectionMoved","moveSelectionPointToSibling","index","$updateElementSelectionOnCreateDeleteNode","LexicalNode","_data","errorOnTypeKlassMismatch","targetSelection","isSelected","firstPoint","firstElement","parents","siblings","aLength","bLength","bSet","ancestor","commonAncestor","indexA","indexB","isBefore","visited","parentSibling","cloneNotNeeded","_config","_editor","_prevNode","_dom","_serializedNode","replaceWith","includeChildren","toReplaceKey","writableReplaceWith","size","$moveSelectionPointToEnd","nodeToInsert","writableSelf","writableNodeToInsert","elementAnchorSelectionOnNode","elementFocusSelectionOnNode","oldIndex","oldParentKey","insertKey","writableParentKey","$createParagraphNode","editorKlass","insertRangeAfter","firstToInsert","lastToInsert","lastToInsert2","current","nodesToInsert","LineBreakNode","isOnlyChildInBlockNode","isLastChildInBlockNode","$convertLineBreakElement","serializedLineBreakNode","$createLineBreakNode","isWhitespaceDomTextNode","lastChild","getElementOuterTag","getElementInnerTag","setTextThemeClassNames","prevFormat","textClassNames","domClassList","hasUnderlineStrikethrough","prevUnderlineStrikethrough","nextUnderlineStrikethrough","flag","diffComposedText","left","right","setTextContent","nextText","nodeValue","remove","insert","createTextInnerDOM","innerDOM","innerTag","wrapElementWith","el","TextNode","formatFlag","outerTag","prevOuterTag","nextOuterTag","prevInnerTag","nextInnerTag","prevInnerDOM","nextInnerDOM","prevStyle","nextStyle","$convertTextDOMNode","convertBringAttentionToElement","convertTextFormatElement","convertSpanElement","serializedNode","detail","mode","_anchorOffset","_focusOffset","$internalMakeRangeSelection","delCount","newText","moveSelection","handledTextLength","newOffset","updatedText","splitOffsets","offsetsSet","parts","string","partsLength","firstPart","hasReplacedSelf","splitNodes","textSize","part","partSize","siblingKey","nextTextSize","insertionIndex","targetKey","adjustPointOffsetForMergedSibling","targetText","applyTextFormatFromStyle","hasNormalFontWeight","preParentCache","isNodePre","findParentPreDOMNode","cached","resultNode","domNode_","length","$createTabNode","previousText","isStartOfLine","findTextInLine","previousTextContent","isEndOfLine","forward","display","descendant","nodeNameToTextFormat","shouldApply","fontWeight","textDecoration","hasBoldFontWeight","hasLinethroughTextDecoration","hasItalicFontStyle","hasUnderlineTextDecoration","verticalAlign","lexicalNode","TabNode","serializedTabNode","_text","_detail","_type","$isTabNode","Point","aNode","bNode","aOffset","bOffset","aNodeDescendant","bNodeDescendant","oldKey","$createPoint","selectPointOnNode","textContentLength","$transferStartingElementPointToTextPoint","start","end","placementNode","$setPointValues","NodeSelection","objects","selectedNodes","selectedNodesLength","lastSelectedNode","selectionAtEnd","cachedNodes","RangeSelection","lastPoint","firstNode","firstNodeDescendant","lastNodeDescendant","$getCharacterOffsets","prevWasElement","range","resolvedSelectionPoints","$internalResolveSelectionPoints","anchorPoint","focusPoint","endPoint","firstNodeTextLength","firstNodeParent","lastIndex","lastNodeParent","$normalizeSelectionPointsForBoundaries","firstNodeFormat","firstNodeStyle","markedNodeKeysForKeep","lastElement","lastElementChild","lastNodeChildren","selectedNodesSet","firstAndLastElementsAreEqual","insertionTarget","lastNodeChild","lastRemovedParent","childrenLength","selectedNode","formatType","selectedTextNodes","selectedTextNodesLength","startPoint","firstIndex","firstNextFormat","lastNextFormat","firstBlock","last","$removeTextAndSplitBlock","notInline","blocksParent","$wrapInlineNodes","nodeToSelect","blocks","isMergeable","insertedParagraph","lastInsertedBlock","paragraph","firstToAppend","newBlock","selectStart","lineBreak","lastNodeTextLength","alter","granularity","collapse","nodeSelection","$createNodeSelection","elementKey","moveNativeSelection","validNodes","shrinkSelection","firstValidNode","lastValidNode","$swapPoints","wasCollapsed","$removeSegment","$updateCaretSelectionForUnicodeCharacter","anchorIsElement","getCharacterOffset","anchorAndFocus","anchorType","characterOffset","split","splitLength","segmentOffset","restoreOffset","isLast","nextTextContent","shouldResolveAncestor","resolvedElement","resolvedOffset","$internalResolveSelectionPoint","resolvedNode","childNodes","childNodesLength","hasBlockCursor","blockCursorElementParent","blockCursorOffset","resolveSelectionPointOnBoundary","isCollapsed","lastAnchor","lastFocus","resolvedAnchorPoint","resolvedFocusPoint","$isBlockElementNode","focusType","$createRangeSelection","$internalCreateSelection","$createRangeSelectionFromDom","eventType","isSelectionChange","useDOMSelection","nodeOffset","times","selectionOffset","newSelectionOffset","$updateSelectionResolveTextNodes","firstPointNode","lastPointNode","firstPointOffset","lastPointOffset","childSize","anchorOffsetAtEnd","focusOffsetAtEnd","applySelectionTransforms","updateDOMSelection","tags","nodeCount","anchorDOMNode","focusDOMNode","nextAnchorOffset","nextFocusOffset","nextAnchorNode","nextFocusNode","anchorFormatOrStyleChanged","selectionTarget","$insertNodes","$getTextContent","selection_","$splitNodeAtPoint","insertPoint","newElement","virtualRoot","currentBlock","isLineBreakNode","activeEditorState","activeEditor","isReadOnlyMode","isAttemptingToRecoverFromReconcilerError","infiniteTransformCount","observerOptions","collectBuildInformation","compatibleEditors","incompatibleEditors","thisVersion","version","output","internalGetActiveEditor","$applyTransforms","transformsCache","transformsArr","transformsArrLength","$isNodeValidForTransform","$normalizeAllDirtyTextNodes","$applyAllTransforms","untransformedDirtyLeaves","untransformedDirtyLeavesLength","untransformedDirtyElements","untransformedDirtyElementsLength","currentUntransformedDirtyElement","intentionallyMarkedAsDirty","$parseSerializedNode","$parseSerializedNodeImpl","nodeClass","serializedJSONChildNode","childNode","parseEditorState","serializedEditorState","updateFn","createEmptyEditorState","previousActiveEditorState","previousReadOnlyMode","previousActiveEditor","previousDirtyElements","previousDirtyLeaves","previousCloneNotNeeded","previousDirtyType","handleDEVOnlyPendingUpdateGuarantees","readEditorState","callbackFn","$commitPendingUpdates","recoveryEditorState","shouldSkipDOM","currentSelection","pendingSelection","needsUpdate","previouslyUpdating","resetEditor","deferred","triggerMutationListeners","triggerListeners","triggerTextContentListeners","triggerDeferredUpdateCallbacks","$triggerEnqueuedUpdates","currentTextContent","latestTextContent","updateTags","listeners","listenersLength","listener","isCurrentlyEnqueuingUpdates","returnVal","listenerInPriorityOrder","listenersSet","j","queuedUpdates","queuedUpdate","options","$beginUpdate","processNestedUpdates","initialSkipTransforms","skipTransforms","nextUpdateFn","onUpdate","discrete","editorStateWasCloned","cloneEditorState","startingCompositionKey","endingCompositionKey","pendingNodeMap","editorStateHasDirtySelection","ElementNode","parentLastChild","textNodes","subChildrenNodes","firstKey","childrenCount","nodesToAppend","indentLevel","deleteCount","nodesToInsertLength","oldSize","writableSelfKey","nodesToInsertKeys","nodesToRemoveKeys","nodeAfterRange","nodeBeforeRange","newSize","nodeToDelete","nodeKeyToDelete","writableNodeToDelete","nodeKeyToInsert","writablePrevNode","writableNodeAfterRange","nodesToRemoveKeySet","nodesToInsertKeySet","isPointRemoved","destination","DecoratorNode","RootNode","cachedText","$createRootNode","EditorState","exportNodeToJSON","serializedChildren","serializedChildNode","$convertParagraphElement","rangeSelection","DEFAULT_SKIP_INITIALIZATION","COMMAND_PRIORITY_EDITOR","COMMAND_PRIORITY_LOW","COMMAND_PRIORITY_NORMAL","COMMAND_PRIORITY_HIGH","COMMAND_PRIORITY_CRITICAL","prevRootElement","nextRootElement","keyNodeMap","initializeConversionCache","additionalConversions","conversionCache","handledConversions","addConversionsToCache","map","currentCache","importDOM","createEditor","parentEditor","disableEvents","namespace","initialEditorState","ArtificialNode__DO_NOT_USE","onError","html","replace","replaceWithKlass","proto","method","transform","transforms","htmlConversions","editable","listenerSetOrMap","priority","commandsMap","listenersInPriorityOrder","klassToMutate","skipInitialization","nodeMutationMap","registeredReplaceWithNode","maybeStringifiedEditorState","t","r","o","u","d","h","_","y","v","S","T","C","w","N","E","P","F","D","L","O","I","A","M","W","z","B","R","K","$","J","U","V","H","Q","X","Y","Z","G","tt","et","nt","rt","it","st","ot","lt","ct","at","ut","ft","dt","ht","gt","_t","pt","yt","mt","xt","vt","St","Tt","Ct","kt","bt","wt","Nt","Et","Pt","Ft","Dt","Lt","Ot","It","At","Mt","Wt","zt","Bt","Rt","Kt","$t","Jt","Ut","Vt","jt","Ht","yn","Me","qt","yi","Qt","hs","Oi","Ce","ms","oi","Te","Ne","_s","Ee","Ye","Xt","Yt","on","Zt","Gt","ts","te","ee","ne","re","ie","se","oe","ue","le","ae","ce","Ms","en","fe","de","he","ge","_e","$r","pe","Yi","Zi","Gi","ye","me","xe","Se","ve","Xi","ke","be","we","Pe","Fe","De","Le","Oe","Ie","Ae","Ii","si","We","ze","Be","Re","Ke","$e","Je","Ue","Ve","je","He","qe","En","Qe","Xe","Ze","us","Ge","vs","tn","nn","rn","sn","ln","cn","an","un","dn","hn","gn","_n","pn","mn","xn","vn","Sn","Tn","Cn","kn","bn","wn","Nn","Pn","Fn","Dn","Ln","On","In","An","Mn","Wn","zn","Bn","Rn","Kn","$n","Jn","Un","Vn","jn","Hn","qn","Qn","dr","lr","Xn","Yn","Zn","Gn","tr","er","nr","sr","ir","ar","rr","or","cr","ur","Es","fr","hr","gr","_r","pr","yr","Cr","xi","Tr","kr","Fr","Pr","wr","xr","Li","mr","vr","Sr","br","Nr","Er","bs","Dr","Lr","Or","Ir","Ar","Mr","Wr","Wi","Ai","zr","gi","Ns","Br","Jr","Rr","Kr","Ur","Vr","jr","Hr","qr","Qr","Xr","ei","Zr","ii","Yr","Ei","zi","li","Gr","ti","ai","ni","ri","ci","ui","fi","di","hi","_i","pi","mi","Si","wi","bi","$i","Fi","Ti","vi","Ci","ki","Ni","Pi","Di","Mi","Bi","Ri","Ki","Ji","Ui","Vi","ji","Hi","qi","Qi","es","ns","rs","is","ss","os","ls","cs","Is","as","ds","fs","Cs","gs","ps","ys","xs","Ss","Ts","ks","ws","Ps","Fs","Ds","Ls","Os","As","mod","modDev","modProd","$rootTextContent","$isRootTextContentEmpty","isEditorComposing","trim","$isRootTextContentEmptyCurry","$canShowPlaceholder","topBlock","topBlockChildren","topBlockChildrenLength","$canShowPlaceholderCurry","$findTextIntersectionFromCharacters","targetCharacters","currentCharacters","mainLoop","characters","registerLexicalTextEntity","getMatch","createNode","isTargetNode","$replaceWithSimpleText","getMode","$textNodeTransform","combinedText","prevMatch","concatText","newTextContent","remainingText","prevMatchLengthToSkip","nextMatch","nodeToReplace","$reverseNodeTransform","removePlainTextTransform","removeReverseNodeTransform","CSS_TO_STYLES","getDOMIndexWithinParent","createDOMRange","createRectsFromDOMRange","rootRect","computedStyle","rootPadding","selectionRects","selectionRectsLength","top","prevRect","isOverlappingRect","selectionSpansElement","getStyleObjectFromRawCSS","css","styleObject","styles","getStyleObjectFromCSS","getCSSFromStyleObject","$sliceSelectedTextNodeContent","isAnchor","isFocus","isSame","isFirst","$isAtNodeEnd","$trimTextContentFromAnchor","remaining","descendantNode","lastDescendant","additionalElementWhitespace","currentNodeSize","slicedText","prevOffset","splitStart","splitEnd","excessNode","$addNodeStyle","CSSText","$patchStyle","patch","prevStyles","newStyles","newCSSText","$patchStyleText","startType","endType","selectedNodeKey","$setBlocksType","createElement","firstSelectedBlock","targetElement","isPointAttached","$removeParentEmptyElements","startingNode","$wrapNodes","wrappingElement","topLevelNode","descendants","$wrapNodesImpl","elementMapping","elements","targetIsPrevSibling","emptyElements","movedNodes","$shouldOverrideDefaultCharacterSelection","$moveCaretSelection","isHoldingShift","$isParentElementRTL","$moveCharacter","isRTL","firstType","lastType","$getNodeStyleValueForProperty","styleProperty","defaultValue","$getSelectionStyleValueForProperty","styleValue","endNode","nodeStyleValue","trimTextContentFromAnchor","CAN_USE_DOM$1","IS_APPLE$1","IS_FIREFOX$1","CAN_USE_BEFORE_INPUT$1","IS_SAFARI$1","IS_IOS$1","IS_ANDROID$1","IS_CHROME$1","IS_ANDROID_CHROME$1","IS_APPLE_WEBKIT$1","mergeRegister","func","px","mutationObserverConfig","positionNodeOnRange","onReposition","rootDOMNode","parentDOMNode","lastNodes","wrapperNode","position","rootLeft","rootTop","parentDOMNode_","rects","hasRepositioned","rect","rectNode","rectNodeStyle","width","height","stop","restart","currentRootDOMNode","currentParentDOMNode","nextRootDOMNode","nextParentDOMNode","removeRootListener","markSelection","previousAnchorNode","previousAnchorOffset","previousFocusNode","previousFocusOffset","removeRangeListener","compute","currentAnchorNode","currentAnchorNodeKey","currentAnchorOffset","currentFocusNode","currentFocusNodeKey","currentFocusOffset","currentAnchorNodeDOM","currentFocusNodeDOM","differentAnchorDOM","differentFocusDOM","anchorHTMLElement","focusHTMLElement","firstHTMLElement","firstOffset","lastHTMLElement","firstTextNode","lastTextNode","domNodes","domNodeStyle","addClassNamesToElement","classesToAdd","removeClassNamesFromElement","classesToRemove","isMimeType","file","acceptableMimeTypes","acceptableType","mediaFileReader","files","filesIterator","resolve","reject","processed","handleNextFile","done","fileReader","result","$dfs","endingNode","depth","$getDepth","innerNode","$getNextRightPreorderNode","$getNearestNodeOfType","$getNearestBlockElementAncestorOrThrow","blockNode","$findMatchingParent","findFn","curr","registerNestedElementResolver","cloneNode","handleOverlap","$isTargetNode","$findMatch","$elementNodeTransform","nextSiblingsLength","$restoreEditorState","$insertNodeToNearestRoot","focusChild","splitNode","splitOffset","paragraphNode","$wrapNodeInElement","createElementNode","objectKlassEquals","objectClass","$filter","filterFn","$insertFirst","calculateZoomLevel","zoom","$isEditorIsNestedEditor","registerDragonSupport","origin","handler","parsedData","elementStart","elementLength","selStart","selLength","formatCommand","setSelStart","setSelEnd","anchorNodeTextLength","$generateNodesFromDOM","lexicalNodes","allArtificialNodes","IGNORE_TAGS","$createNodesFromDOM","$unwrapArtificalNodes","$generateHtmlFromNodes","container","topLevelChildren","$appendNodesToHTML","shouldInclude","shouldExclude","clone","exportOutput","after","shouldIncludeChild","getConversionFunction","cachedConversions","currentConversion","cachedConversion","domConversion","hasBlockAncestorLexicalNode","forChildMap","parentLexicalNode","currentLexicalNode","transformFunction","transformOutput","postTransform","transformNodes","forChildFunction","childLexicalNodes","hasBlockAncestorLexicalNodeForChildren","wrapContinuousInlines","artificialNode","isDomNodeBetweenTwoInlineNodes","createWrapperFn","textAlign","out","continuousInlines","wrapper","$getHtmlContent","$getLexicalContent","$generateJSONFromSelectedNodes","$insertDataTransferForPlainText","dataTransfer","$insertDataTransferForRichText","lexicalString","$generateNodesFromSerializedNodes","$insertGeneratedNodes","htmlString","$appendNodesToJSON","targetArray","serializedNodes","EVENT_LATENCY","clipboardEventTimeout","copyToClipboard","$copyToClipboardEvent","windowDocument","removeListener","secondEvent","$getClipboardDataFromSelection","clipboardData","setLexicalClipboardDataTransfer","clipboardDataFunctions","mimeType","$editorFn","onCopyForPlainText","onPasteForPlainText","onCutForPlainText","registerPlainText","eventOrText","HISTORY_MERGE","HISTORY_PUSH","DISCARD_HISTORY_CANDIDATE","OTHER","COMPOSING_CHARACTER","INSERT_CHARACTER_AFTER_SELECTION","DELETE_CHARACTER_BEFORE_SELECTION","DELETE_CHARACTER_AFTER_SELECTION","getDirtyNodes","dirtyLeafKey","dirtyLeaf","dirtyElementKey","dirtyElement","getChangeType","dirtyLeavesSet","dirtyElementsSet","nextNodeMap","prevAnchorNode","nextDirtyNode","prevDirtyNode","prevText","nextAnchor","prevAnchor","prevAnchorOffset","textDiff","isTextNodeUnchanged","createMergeActionGetter","delay","prevChangeTime","prevChangeType","currentHistoryEntry","changeTime","changeType","mergeAction","isSameEditor","shouldPushHistory","redo","historyState","redoStack","undoStack","historyStateEntry","undo","clearHistory","registerHistory","getMergeAction","applyChange","createEmptyHistoryState","onChange","MyCustomAutoFocusPlugin","useLexicalComposerContext","useEffect","Editor","initialConfig","LexicalComposer","PlainTextPlugin","ContentEditable","LexicalErrorBoundary","OnChangePlugin","HistoryPlugin"],"mappings":";;;;;;;;;AASa,MAAIA,IAAEC,IAAiBC,IAAE,OAAO,IAAI,eAAe,GAAEC,IAAE,OAAO,IAAI,gBAAgB,GAAEC,IAAE,OAAO,UAAU,gBAAeC,IAAEL,EAAE,mDAAmD,mBAAkBM,IAAE,EAAC,KAAI,IAAG,KAAI,IAAG,QAAO,IAAG,UAAS,GAAE;AAClP,WAASC,EAAEC,GAAEC,GAAEC,GAAE;AAAC,QAAIC,GAAE,IAAE,IAAGC,IAAE,MAAK,IAAE;AAAK,IAASF,MAAT,WAAaE,IAAE,KAAGF,IAAYD,EAAE,QAAX,WAAiBG,IAAE,KAAGH,EAAE,MAAcA,EAAE,QAAX,WAAiB,IAAEA,EAAE;AAAK,SAAIE,KAAKF;AAAE,MAAAL,EAAE,KAAKK,GAAEE,CAAC,KAAG,CAACL,EAAE,eAAeK,CAAC,MAAI,EAAEA,KAAGF,EAAEE;AAAI,QAAGH,KAAGA,EAAE;AAAa,WAAIG,KAAKF,IAAED,EAAE,cAAaC;AAAE,QAAS,EAAEE,OAAX,WAAgB,EAAEA,KAAGF,EAAEE;AAAI,WAAM,EAAC,UAAST,GAAE,MAAKM,GAAE,KAAII,GAAE,KAAI,GAAE,OAAM,GAAE,QAAOP,EAAE,QAAO;AAAA,EAAC;AAAC,SAAAQ,cAAiBV,GAAEU,GAAW,MAACN,GAAEM,GAAA,OAAaN;;;;;wBCEtW,QAAQ,IAAI,aAAa,gBAC1B,WAAW;AAGd,QAAIO,IAAQb,IAMRc,IAAqB,OAAO,IAAI,eAAe,GAC/CC,IAAoB,OAAO,IAAI,cAAc,GAC7CC,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAAyB,OAAO,IAAI,mBAAmB,GACvDC,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAAqB,OAAO,IAAI,eAAe,GAC/CC,IAAyB,OAAO,IAAI,mBAAmB,GACvDC,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAA2B,OAAO,IAAI,qBAAqB,GAC3DC,IAAkB,OAAO,IAAI,YAAY,GACzCC,IAAkB,OAAO,IAAI,YAAY,GACzCC,IAAuB,OAAO,IAAI,iBAAiB,GACnDC,IAAwB,OAAO,UAC/BC,IAAuB;AAC3B,aAASC,EAAcC,GAAe;AACpC,UAAIA,MAAkB,QAAQ,OAAOA,KAAkB;AACrD,eAAO;AAGT,UAAIC,IAAgBJ,KAAyBG,EAAcH,MAA0BG,EAAcF;AAEnG,aAAI,OAAOG,KAAkB,aACpBA,IAGF;AAAA,IACR;AAED,QAAIC,IAAuBnB,EAAM;AAEjC,aAASoB,EAAMC,GAAQ;AAEnB;AACE,iBAASC,IAAQ,UAAU,QAAQC,IAAO,IAAI,MAAMD,IAAQ,IAAIA,IAAQ,IAAI,CAAC,GAAGE,IAAQ,GAAGA,IAAQF,GAAOE;AACxG,UAAAD,EAAKC,IAAQ,KAAK,UAAUA;AAG9B,QAAAC,EAAa,SAASJ,GAAQE,CAAI;AAAA,MACnC;AAAA,IAEJ;AAED,aAASE,EAAaC,GAAOL,GAAQE,GAAM;AAGzC;AACE,YAAII,IAAyBR,EAAqB,wBAC9CS,KAAQD,EAAuB;AAEnC,QAAIC,OAAU,OACZP,KAAU,MACVE,IAAOA,EAAK,OAAO,CAACK,EAAK,CAAC;AAI5B,YAAIC,KAAiBN,EAAK,IAAI,SAAUO,GAAM;AAC5C,iBAAO,OAAOA,CAAI;AAAA,QACxB,CAAK;AAED,QAAAD,GAAe,QAAQ,cAAcR,CAAM,GAI3C,SAAS,UAAU,MAAM,KAAK,QAAQK,IAAQ,SAASG,EAAc;AAAA,MACtE;AAAA,IACF;AAID,QAAIE,IAAiB,IACjBC,IAAqB,IACrBC,IAA0B,IAE1BC,IAAqB,IAIrBC,IAAqB,IAErBC;AAGF,IAAAA,IAAyB,OAAO,IAAI,wBAAwB;AAG9D,aAASC,EAAmBC,GAAM;AAUhC,aATI,UAAOA,KAAS,YAAY,OAAOA,KAAS,cAK5CA,MAASnC,KAAuBmC,MAASjC,KAAuB8B,KAAuBG,MAASlC,KAA0BkC,MAAS7B,KAAuB6B,MAAS5B,KAA4BwB,KAAuBI,MAASzB,KAAwBkB,KAAmBC,KAAuBC,KAIjS,OAAOK,KAAS,YAAYA,MAAS,SACnCA,EAAK,aAAa1B,KAAmB0B,EAAK,aAAa3B,KAAmB2B,EAAK,aAAahC,KAAuBgC,EAAK,aAAa/B,KAAsB+B,EAAK,aAAa9B,KAIjL8B,EAAK,aAAaF,KAA0BE,EAAK,gBAAgB;AAAA,IAMpE;AAED,aAASC,EAAeC,GAAWC,GAAWC,GAAa;AACzD,UAAIC,IAAcH,EAAU;AAE5B,UAAIG;AACF,eAAOA;AAGT,UAAIC,KAAeH,EAAU,eAAeA,EAAU,QAAQ;AAC9D,aAAOG,OAAiB,KAAKF,IAAc,MAAME,KAAe,MAAMF;AAAA,IACvE;AAGD,aAASG,EAAeP,GAAM;AAC5B,aAAOA,EAAK,eAAe;AAAA,IAC5B;AAGD,aAASQ,EAAyBR,GAAM;AACtC,UAAIA,KAAQ;AAEV,eAAO;AAST,UALM,OAAOA,EAAK,OAAQ,YACtBlB,EAAM,mHAAwH,GAI9H,OAAOkB,KAAS;AAClB,eAAOA,EAAK,eAAeA,EAAK,QAAQ;AAG1C,UAAI,OAAOA,KAAS;AAClB,eAAOA;AAGT,cAAQA,GAAI;AAAA,QACV,KAAKnC;AACH,iBAAO;AAAA,QAET,KAAKD;AACH,iBAAO;AAAA,QAET,KAAKG;AACH,iBAAO;AAAA,QAET,KAAKD;AACH,iBAAO;AAAA,QAET,KAAKK;AACH,iBAAO;AAAA,QAET,KAAKC;AACH,iBAAO;AAAA,MAEV;AAED,UAAI,OAAO4B,KAAS;AAClB,gBAAQA,EAAK,UAAQ;AAAA,UACnB,KAAK/B;AACH,gBAAIwC,IAAUT;AACd,mBAAOO,EAAeE,CAAO,IAAI;AAAA,UAEnC,KAAKzC;AACH,gBAAI0C,IAAWV;AACf,mBAAOO,EAAeG,EAAS,QAAQ,IAAI;AAAA,UAE7C,KAAKxC;AACH,mBAAO+B,EAAeD,GAAMA,EAAK,QAAQ,YAAY;AAAA,UAEvD,KAAK3B;AACH,gBAAIsC,IAAYX,EAAK,eAAe;AAEpC,mBAAIW,MAAc,OACTA,IAGFH,EAAyBR,EAAK,IAAI,KAAK;AAAA,UAEhD,KAAK1B,GACH;AACE,gBAAIsC,KAAgBZ,GAChBa,KAAUD,GAAc,UACxBE,IAAOF,GAAc;AAEzB,gBAAI;AACF,qBAAOJ,EAAyBM,EAAKD,EAAO,CAAC;AAAA,YAC9C,QAAC;AACA,qBAAO;AAAA,YACR;AAAA,UACF;AAAA,QAGJ;AAGH,aAAO;AAAA,IACR;AAED,QAAIE,IAAS,OAAO,QAMhBC,KAAgB,GAChBC,IACAC,GACAC,IACAC,IACAC,IACAC,IACAC;AAEJ,aAASC,KAAc;AAAA,IAAE;AAEzB,IAAAA,GAAY,qBAAqB;AACjC,aAASC,KAAc;AACrB;AACE,YAAIT,OAAkB,GAAG;AAEvB,UAAAC,KAAU,QAAQ,KAClBC,IAAW,QAAQ,MACnBC,KAAW,QAAQ,MACnBC,KAAY,QAAQ,OACpBC,KAAY,QAAQ,OACpBC,KAAqB,QAAQ,gBAC7BC,KAAe,QAAQ;AAEvB,cAAIG,IAAQ;AAAA,YACV,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,OAAOF;AAAA,YACP,UAAU;AAAA,UAClB;AAEM,iBAAO,iBAAiB,SAAS;AAAA,YAC/B,MAAME;AAAA,YACN,KAAKA;AAAA,YACL,MAAMA;AAAA,YACN,OAAOA;AAAA,YACP,OAAOA;AAAA,YACP,gBAAgBA;AAAA,YAChB,UAAUA;AAAA,UAClB,CAAO;AAAA,QAEF;AAED,QAAAV;AAAA,MACD;AAAA,IACF;AACD,aAASW,KAAe;AACtB;AAGE,YAFAX,MAEIA,OAAkB,GAAG;AAEvB,cAAIU,IAAQ;AAAA,YACV,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,UAAU;AAAA,UAClB;AAEM,iBAAO,iBAAiB,SAAS;AAAA,YAC/B,KAAKX,EAAO,CAAE,GAAEW,GAAO;AAAA,cACrB,OAAOT;AAAA,YACjB,CAAS;AAAA,YACD,MAAMF,EAAO,CAAE,GAAEW,GAAO;AAAA,cACtB,OAAOR;AAAA,YACjB,CAAS;AAAA,YACD,MAAMH,EAAO,CAAE,GAAEW,GAAO;AAAA,cACtB,OAAOP;AAAA,YACjB,CAAS;AAAA,YACD,OAAOJ,EAAO,CAAE,GAAEW,GAAO;AAAA,cACvB,OAAON;AAAA,YACjB,CAAS;AAAA,YACD,OAAOL,EAAO,CAAE,GAAEW,GAAO;AAAA,cACvB,OAAOL;AAAA,YACjB,CAAS;AAAA,YACD,gBAAgBN,EAAO,CAAE,GAAEW,GAAO;AAAA,cAChC,OAAOJ;AAAA,YACjB,CAAS;AAAA,YACD,UAAUP,EAAO,CAAE,GAAEW,GAAO;AAAA,cAC1B,OAAOH;AAAA,YACjB,CAAS;AAAA,UACT,CAAO;AAAA,QAEF;AAED,QAAIP,KAAgB,KAClBlC,EAAM,8EAAmF;AAAA,MAE5F;AAAA,IACF;AAED,QAAI8C,KAAyB/C,EAAqB,wBAC9CgD;AACJ,aAASC,GAA8BC,GAAMC,GAAQC,GAAS;AAC5D;AACE,YAAIJ,OAAW;AAEb,cAAI;AACF,kBAAM,MAAK;AAAA,UACZ,SAAQK,IAAP;AACA,gBAAIC,IAAQD,GAAE,MAAM,KAAI,EAAG,MAAM,cAAc;AAC/C,YAAAL,KAASM,KAASA,EAAM,MAAM;AAAA,UAC/B;AAIH,eAAO;AAAA,IAAON,KAASE;AAAA,MACxB;AAAA,IACF;AACD,QAAIK,KAAU,IACVC;AAEJ;AACE,UAAIC,KAAkB,OAAO,WAAY,aAAa,UAAU;AAChE,MAAAD,KAAsB,IAAIC;IAC3B;AAED,aAASC,GAA6BC,GAAIC,GAAW;AAEnD,UAAK,CAACD,KAAMJ;AACV,eAAO;AAGT;AACE,YAAIM,IAAQL,GAAoB,IAAIG,CAAE;AAEtC,YAAIE,MAAU;AACZ,iBAAOA;AAAA,MAEV;AAED,UAAIC;AACJ,MAAAP,KAAU;AACV,UAAIQ,KAA4B,MAAM;AAEtC,YAAM,oBAAoB;AAC1B,UAAIC;AAGF,MAAAA,KAAqBjB,GAAuB,SAG5CA,GAAuB,UAAU,MACjCH;AAGF,UAAI;AAEF,YAAIgB,GAAW;AAEb,cAAIK,IAAO,WAAY;AACrB,kBAAM,MAAK;AAAA,UACnB;AAWM,cARA,OAAO,eAAeA,EAAK,WAAW,SAAS;AAAA,YAC7C,KAAK,WAAY;AAGf,oBAAM,MAAK;AAAA,YACZ;AAAA,UACT,CAAO,GAEG,OAAO,WAAY,YAAY,QAAQ,WAAW;AAGpD,gBAAI;AACF,sBAAQ,UAAUA,GAAM,CAAA,CAAE;AAAA,YAC3B,SAAQZ,IAAP;AACA,cAAAS,IAAUT;AAAA,YACX;AAED,oBAAQ,UAAUM,GAAI,CAAE,GAAEM,CAAI;AAAA,UACtC,OAAa;AACL,gBAAI;AACF,cAAAA,EAAK,KAAI;AAAA,YACV,SAAQZ,IAAP;AACA,cAAAS,IAAUT;AAAA,YACX;AAED,YAAAM,EAAG,KAAKM,EAAK,SAAS;AAAA,UACvB;AAAA,QACP,OAAW;AACL,cAAI;AACF,kBAAM,MAAK;AAAA,UACZ,SAAQZ,IAAP;AACA,YAAAS,IAAUT;AAAA,UACX;AAED,UAAAM;QACD;AAAA,MACF,SAAQO,IAAP;AAEA,YAAIA,MAAUJ,KAAW,OAAOI,GAAO,SAAU,UAAU;AAQzD,mBALIC,IAAcD,GAAO,MAAM,MAAM;AAAA,CAAI,GACrCE,KAAeN,EAAQ,MAAM,MAAM;AAAA,CAAI,GACvCO,KAAIF,EAAY,SAAS,GACzB5F,KAAI6F,GAAa,SAAS,GAEvBC,MAAK,KAAK9F,MAAK,KAAK4F,EAAYE,QAAOD,GAAa7F;AAOzD,YAAAA;AAGF,iBAAO8F,MAAK,KAAK9F,MAAK,GAAG8F,MAAK9F;AAG5B,gBAAI4F,EAAYE,QAAOD,GAAa7F,KAAI;AAMtC,kBAAI8F,OAAM,KAAK9F,OAAM;AACnB;AAKE,sBAJA8F,MACA9F,MAGIA,KAAI,KAAK4F,EAAYE,QAAOD,GAAa7F,KAAI;AAE/C,wBAAI+F,KAAS;AAAA,IAAOH,EAAYE,IAAG,QAAQ,YAAY,MAAM;AAK7D,2BAAIV,EAAG,eAAeW,GAAO,SAAS,aAAa,MACjDA,KAASA,GAAO,QAAQ,eAAeX,EAAG,WAAW,IAIjD,OAAOA,KAAO,cAChBH,GAAoB,IAAIG,GAAIW,EAAM,GAK/BA;AAAA,kBACR;AAAA,uBACMD,MAAK,KAAK9F,MAAK;AAG1B;AAAA,YACD;AAAA,QAEJ;AAAA,MACL,UAAY;AACR,QAAAgF,KAAU,IAGRR,GAAuB,UAAUiB,IACjClB,MAGF,MAAM,oBAAoBiB;AAAA,MAC3B;AAGD,UAAIb,KAAOS,IAAKA,EAAG,eAAeA,EAAG,OAAO,IACxCY,KAAiBrB,KAAOD,GAA8BC,EAAI,IAAI;AAGhE,aAAI,OAAOS,KAAO,cAChBH,GAAoB,IAAIG,GAAIY,EAAc,GAIvCA;AAAA,IACR;AACD,aAASC,GAA+Bb,GAAIR,GAAQC,GAAS;AAEzD,aAAOM,GAA6BC,GAAI,EAAK;AAAA,IAEhD;AAED,aAASc,GAAgBC,GAAW;AAClC,UAAIC,IAAYD,EAAU;AAC1B,aAAO,CAAC,EAAEC,KAAaA,EAAU;AAAA,IAClC;AAED,aAASC,GAAqCzD,GAAMgC,GAAQC,GAAS;AAEnE,UAAIjC,KAAQ;AACV,eAAO;AAGT,UAAI,OAAOA,KAAS;AAEhB,eAAOuC,GAA6BvC,GAAMsD,GAAgBtD,CAAI,CAAC;AAInE,UAAI,OAAOA,KAAS;AAClB,eAAO8B,GAA8B9B,CAAI;AAG3C,cAAQA,GAAI;AAAA,QACV,KAAK7B;AACH,iBAAO2D,GAA8B,UAAU;AAAA,QAEjD,KAAK1D;AACH,iBAAO0D,GAA8B,cAAc;AAAA,MACtD;AAED,UAAI,OAAO9B,KAAS;AAClB,gBAAQA,EAAK,UAAQ;AAAA,UACnB,KAAK9B;AACH,mBAAOmF,GAA+BrD,EAAK,MAAM;AAAA,UAEnD,KAAK3B;AAEH,mBAAOoF,GAAqCzD,EAAK,MAAMgC,GAAQC,CAAO;AAAA,UAExE,KAAK3D,GACH;AACE,gBAAIsC,IAAgBZ,GAChBa,KAAUD,EAAc,UACxBE,KAAOF,EAAc;AAEzB,gBAAI;AAEF,qBAAO6C,GAAqC3C,GAAKD,EAAO,GAAGmB,GAAQC,CAAO;AAAA,YACtF,QAAY;AAAA,YAAY;AAAA,UACf;AAAA,QACJ;AAGH,aAAO;AAAA,IACR;AAED,QAAIyB,KAAiB,OAAO,UAAU,gBAElCC,KAAqB,CAAA,GACrBtE,KAAyBR,EAAqB;AAElD,aAAS+E,GAA8BC,GAAS;AAE5C,UAAIA,GAAS;AACX,YAAIC,IAAQD,EAAQ,QAChBvE,IAAQmE,GAAqCI,EAAQ,MAAMA,EAAQ,SAASC,IAAQA,EAAM,OAAO,IAAI;AACzG,QAAAzE,GAAuB,mBAAmBC,CAAK;AAAA,MACrD;AACM,QAAAD,GAAuB,mBAAmB,IAAI;AAAA,IAGnD;AAED,aAAS0E,GAAeC,GAAWC,GAAQC,GAAUC,GAAeN,IAAS;AAC3E;AAEE,YAAIO,KAAM,SAAS,KAAK,KAAKV,EAAc;AAE3C,iBAASW,KAAgBL;AACvB,cAAII,GAAIJ,GAAWK,CAAY,GAAG;AAChC,gBAAIC,IAAU;AAId,gBAAI;AAGF,kBAAI,OAAON,EAAUK,MAAkB,YAAY;AAEjD,oBAAIE,KAAM,OAAOJ,KAAiB,iBAAiB,OAAOD,IAAW,YAAYG,IAAe,+FAAoG,OAAOL,EAAUK,KAAgB,iGAAsG;AAC3U,sBAAAE,GAAI,OAAO,uBACLA;AAAA,cACP;AAED,cAAAD,IAAUN,EAAUK,GAAcJ,GAAQI,GAAcF,GAAeD,GAAU,MAAM,8CAA8C;AAAA,YACtI,SAAQM,IAAP;AACA,cAAAF,IAAUE;AAAA,YACX;AAED,YAAIF,KAAW,EAAEA,aAAmB,WAClCV,GAA8BC,EAAO,GAErC/E,EAAM,4RAAqTqF,KAAiB,eAAeD,GAAUG,GAAc,OAAOC,CAAO,GAEjYV,GAA8B,IAAI,IAGhCU,aAAmB,SAAS,EAAEA,EAAQ,WAAWX,QAGnDA,GAAmBW,EAAQ,WAAW,IACtCV,GAA8BC,EAAO,GAErC/E,EAAM,sBAAsBoF,GAAUI,EAAQ,OAAO,GAErDV,GAA8B,IAAI;AAAA,UAErC;AAAA,MAEJ;AAAA,IACF;AAED,QAAIa,KAAc,MAAM;AAExB,aAASC,GAAQrH,GAAG;AAClB,aAAOoH,GAAYpH,CAAC;AAAA,IACrB;AAYD,aAASsH,GAASC,GAAO;AACvB;AAEE,YAAIC,IAAiB,OAAO,UAAW,cAAc,OAAO,aACxD7E,IAAO6E,KAAkBD,EAAM,OAAO,gBAAgBA,EAAM,YAAY,QAAQ;AACpF,eAAO5E;AAAA,MACR;AAAA,IACF;AAGD,aAAS8E,GAAkBF,GAAO;AAE9B,UAAI;AACF,eAAAG,GAAmBH,CAAK,GACjB;AAAA,MACR,QAAC;AACA,eAAO;AAAA,MACR;AAAA,IAEJ;AAED,aAASG,GAAmBH,GAAO;AAwBjC,aAAO,KAAKA;AAAA,IACb;AACD,aAASI,GAAuBJ,GAAO;AAEnC,UAAIE,GAAkBF,CAAK;AACzB,eAAA9F,EAAM,mHAAwH6F,GAASC,CAAK,CAAC,GAEtIG,GAAmBH,CAAK;AAAA,IAGpC;AAED,QAAIK,KAAoBpG,EAAqB,mBACzCqG,KAAiB;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,GACIC,IACAC,IACAC;AAGF,IAAAA,KAAyB,CAAA;AAG3B,aAASC,GAAYC,GAAQ;AAEzB,UAAI7B,GAAe,KAAK6B,GAAQ,KAAK,GAAG;AACtC,YAAIC,IAAS,OAAO,yBAAyBD,GAAQ,KAAK,EAAE;AAE5D,YAAIC,KAAUA,EAAO;AACnB,iBAAO;AAAA,MAEV;AAGH,aAAOD,EAAO,QAAQ;AAAA,IACvB;AAED,aAASE,GAAYF,GAAQ;AAEzB,UAAI7B,GAAe,KAAK6B,GAAQ,KAAK,GAAG;AACtC,YAAIC,IAAS,OAAO,yBAAyBD,GAAQ,KAAK,EAAE;AAE5D,YAAIC,KAAUA,EAAO;AACnB,iBAAO;AAAA,MAEV;AAGH,aAAOD,EAAO,QAAQ;AAAA,IACvB;AAED,aAASG,GAAqCH,GAAQI,GAAM;AAExD,UAAI,OAAOJ,EAAO,OAAQ,YAAYN,GAAkB,WAAWU,KAAQV,GAAkB,QAAQ,cAAcU,GAAM;AACvH,YAAIxB,IAAgB3D,EAAyByE,GAAkB,QAAQ,IAAI;AAE3E,QAAKI,GAAuBlB,OAC1BrF,EAAM,6VAAsX0B,EAAyByE,GAAkB,QAAQ,IAAI,GAAGM,EAAO,GAAG,GAEhcF,GAAuBlB,KAAiB;AAAA,MAE3C;AAAA,IAEJ;AAED,aAASyB,GAA2BlE,GAAOrB,GAAa;AACtD;AACE,YAAIwF,IAAwB,WAAY;AACtC,UAAKV,OACHA,KAA6B,IAE7BrG,EAAM,6OAA4PuB,CAAW;AAAA,QAErR;AAEI,QAAAwF,EAAsB,iBAAiB,IACvC,OAAO,eAAenE,GAAO,OAAO;AAAA,UAClC,KAAKmE;AAAA,UACL,cAAc;AAAA,QACpB,CAAK;AAAA,MACF;AAAA,IACF;AAED,aAASC,GAA2BpE,GAAOrB,GAAa;AACtD;AACE,YAAI0F,IAAwB,WAAY;AACtC,UAAKX,OACHA,KAA6B,IAE7BtG,EAAM,6OAA4PuB,CAAW;AAAA,QAErR;AAEI,QAAA0F,EAAsB,iBAAiB,IACvC,OAAO,eAAerE,GAAO,OAAO;AAAA,UAClC,KAAKqE;AAAA,UACL,cAAc;AAAA,QACpB,CAAK;AAAA,MACF;AAAA,IACF;AAuBD,QAAIC,KAAe,SAAUhG,GAAMiG,GAAKC,GAAKP,GAAM3D,IAAQ8B,IAAOpC,GAAO;AACvE,UAAImC,IAAU;AAAA,QAEZ,UAAUlG;AAAA,QAEV,MAAMqC;AAAA,QACN,KAAKiG;AAAA,QACL,KAAKC;AAAA,QACL,OAAOxE;AAAA,QAEP,QAAQoC;AAAA,MACZ;AAOI,aAAAD,EAAQ,SAAS,IAKjB,OAAO,eAAeA,EAAQ,QAAQ,aAAa;AAAA,QACjD,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,MACb,CAAK,GAED,OAAO,eAAeA,GAAS,SAAS;AAAA,QACtC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO8B;AAAA,MACb,CAAK,GAGD,OAAO,eAAe9B,GAAS,WAAW;AAAA,QACxC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO7B;AAAA,MACb,CAAK,GAEG,OAAO,WACT,OAAO,OAAO6B,EAAQ,KAAK,GAC3B,OAAO,OAAOA,CAAO,IAIlBA;AAAA,IACT;AAQA,aAASsC,GAAOnG,GAAMuF,GAAQa,GAAUpE,GAAQ2D,IAAM;AACpD;AACE,YAAIU,IAEA3E,IAAQ,CAAA,GACRuE,IAAM,MACNC,KAAM;AAOV,QAAIE,MAAa,WAEbpB,GAAuBoB,CAAQ,GAGjCH,IAAM,KAAKG,IAGTX,GAAYF,CAAM,MAElBP,GAAuBO,EAAO,GAAG,GAGnCU,IAAM,KAAKV,EAAO,MAGhBD,GAAYC,CAAM,MACpBW,KAAMX,EAAO,KACbG,GAAqCH,GAAQI,EAAI;AAInD,aAAKU,MAAYd;AACf,UAAI7B,GAAe,KAAK6B,GAAQc,EAAQ,KAAK,CAACnB,GAAe,eAAemB,EAAQ,MAClF3E,EAAM2E,MAAYd,EAAOc;AAK7B,YAAIrG,KAAQA,EAAK,cAAc;AAC7B,cAAIsG,KAAetG,EAAK;AAExB,eAAKqG,MAAYC;AACf,YAAI5E,EAAM2E,QAAc,WACtB3E,EAAM2E,MAAYC,GAAaD;AAAA,QAGpC;AAED,YAAIJ,KAAOC,IAAK;AACd,cAAI7F,KAAc,OAAOL,KAAS,aAAaA,EAAK,eAAeA,EAAK,QAAQ,YAAYA;AAE5F,UAAIiG,KACFL,GAA2BlE,GAAOrB,EAAW,GAG3C6F,MACFJ,GAA2BpE,GAAOrB,EAAW;AAAA,QAEhD;AAED,eAAO2F,GAAahG,GAAMiG,GAAKC,IAAKP,IAAM3D,GAAQiD,GAAkB,SAASvD,CAAK;AAAA,MACnF;AAAA,IACF;AAED,QAAI6E,KAAsB1H,EAAqB,mBAC3C2H,KAA2B3H,EAAqB;AAEpD,aAAS4H,GAAgC5C,GAAS;AAE9C,UAAIA,GAAS;AACX,YAAIC,IAAQD,EAAQ,QAChBvE,IAAQmE,GAAqCI,EAAQ,MAAMA,EAAQ,SAASC,IAAQA,EAAM,OAAO,IAAI;AACzG,QAAA0C,GAAyB,mBAAmBlH,CAAK;AAAA,MACvD;AACM,QAAAkH,GAAyB,mBAAmB,IAAI;AAAA,IAGrD;AAED,QAAIE;AAGF,IAAAA,KAAgC;AAWlC,aAASC,GAAeC,GAAQ;AAE5B,aAAO,OAAOA,KAAW,YAAYA,MAAW,QAAQA,EAAO,aAAajJ;AAAA,IAE/E;AAED,aAASkJ,KAA8B;AACrC;AACE,YAAIN,GAAoB,SAAS;AAC/B,cAAIxE,IAAOvB,EAAyB+F,GAAoB,QAAQ,IAAI;AAEpE,cAAIxE;AACF,mBAAO;AAAA;AAAA,iCAAqCA,IAAO;AAAA,QAEtD;AAED,eAAO;AAAA,MACR;AAAA,IACF;AAED,aAAS+E,GAA2B9E,GAAQ;AAC1C;AACE,YAAIA,MAAW,QAAW;AACxB,cAAI+E,IAAW/E,EAAO,SAAS,QAAQ,aAAa,EAAE,GAClDgF,IAAahF,EAAO;AACxB,iBAAO;AAAA;AAAA,uBAA4B+E,IAAW,MAAMC,IAAa;AAAA,QAClE;AAED,eAAO;AAAA,MACR;AAAA,IACF;AAQD,QAAIC,KAAwB,CAAA;AAE5B,aAASC,GAA6BC,GAAY;AAChD;AACE,YAAIC,IAAOP;AAEX,YAAI,CAACO,GAAM;AACT,cAAIC,IAAa,OAAOF,KAAe,WAAWA,IAAaA,EAAW,eAAeA,EAAW;AAEpG,UAAIE,MACFD,IAAO;AAAA;AAAA,2CAAgDC,IAAa;AAAA,QAEvE;AAED,eAAOD;AAAA,MACR;AAAA,IACF;AAcD,aAASE,GAAoBzD,GAASsD,GAAY;AAChD;AACE,YAAI,CAACtD,EAAQ,UAAUA,EAAQ,OAAO,aAAaA,EAAQ,OAAO;AAChE;AAGF,QAAAA,EAAQ,OAAO,YAAY;AAC3B,YAAI0D,IAA4BL,GAA6BC,CAAU;AAEvE,YAAIF,GAAsBM;AACxB;AAGF,QAAAN,GAAsBM,KAA6B;AAInD,YAAIC,IAAa;AAEjB,QAAI3D,KAAWA,EAAQ,UAAUA,EAAQ,WAAW0C,GAAoB,YAEtEiB,IAAa,iCAAiChH,EAAyBqD,EAAQ,OAAO,IAAI,IAAI,MAGhG4C,GAAgC5C,CAAO,GAEvC/E,EAAM,6HAAkIyI,GAA2BC,CAAU,GAE7Kf,GAAgC,IAAI;AAAA,MACrC;AAAA,IACF;AAYD,aAASgB,GAAkBC,GAAMP,GAAY;AAC3C;AACE,YAAI,OAAOO,KAAS;AAClB;AAGF,YAAIhD,GAAQgD,CAAI;AACd,mBAASC,IAAI,GAAGA,IAAID,EAAK,QAAQC,KAAK;AACpC,gBAAIC,IAAQF,EAAKC;AAEjB,YAAIhB,GAAeiB,CAAK,KACtBN,GAAoBM,GAAOT,CAAU;AAAA,UAExC;AAAA,iBACQR,GAAee,CAAI;AAE5B,UAAIA,EAAK,WACPA,EAAK,OAAO,YAAY;AAAA,iBAEjBA,GAAM;AACf,cAAIG,KAAanJ,EAAcgJ,CAAI;AAEnC,cAAI,OAAOG,MAAe,cAGpBA,OAAeH,EAAK;AAItB,qBAHII,KAAWD,GAAW,KAAKH,CAAI,GAC/BK,GAEG,EAAEA,IAAOD,GAAS,KAAI,GAAI;AAC/B,cAAInB,GAAeoB,EAAK,KAAK,KAC3BT,GAAoBS,EAAK,OAAOZ,CAAU;AAAA,QAKnD;AAAA,MACF;AAAA,IACF;AASD,aAASa,GAAkBnE,GAAS;AAClC;AACE,YAAI7D,IAAO6D,EAAQ;AAEnB,YAAI7D,KAAS,QAA8B,OAAOA,KAAS;AACzD;AAGF,YAAIiI;AAEJ,YAAI,OAAOjI,KAAS;AAClB,UAAAiI,IAAYjI,EAAK;AAAA,iBACR,OAAOA,KAAS,aAAaA,EAAK,aAAa9B,KAE1D8B,EAAK,aAAa3B;AAChB,UAAA4J,IAAYjI,EAAK;AAAA;AAEjB;AAGF,YAAIiI,GAAW;AAEb,cAAIlG,IAAOvB,EAAyBR,CAAI;AACxC,UAAA+D,GAAekE,GAAWpE,EAAQ,OAAO,QAAQ9B,GAAM8B,CAAO;AAAA,QAC/D,WAAU7D,EAAK,cAAc,UAAa,CAAC0G,IAA+B;AACzE,UAAAA,KAAgC;AAEhC,cAAIwB,KAAQ1H,EAAyBR,CAAI;AAEzC,UAAAlB,EAAM,uGAAuGoJ,MAAS,SAAS;AAAA,QAChI;AAED,QAAI,OAAOlI,EAAK,mBAAoB,cAAc,CAACA,EAAK,gBAAgB,wBACtElB,EAAM,4HAAiI;AAAA,MAE1I;AAAA,IACF;AAOD,aAASqJ,GAAsBC,GAAU;AACvC;AAGE,iBAFIC,IAAO,OAAO,KAAKD,EAAS,KAAK,GAE5BT,IAAI,GAAGA,IAAIU,EAAK,QAAQV,KAAK;AACpC,cAAI1B,IAAMoC,EAAKV;AAEf,cAAI1B,MAAQ,cAAcA,MAAQ,OAAO;AACvC,YAAAQ,GAAgC2B,CAAQ,GAExCtJ,EAAM,4GAAiHmH,CAAG,GAE1HQ,GAAgC,IAAI;AACpC;AAAA,UACD;AAAA,QACF;AAED,QAAI2B,EAAS,QAAQ,SACnB3B,GAAgC2B,CAAQ,GAExCtJ,EAAM,uDAAuD,GAE7D2H,GAAgC,IAAI;AAAA,MAEvC;AAAA,IACF;AAED,aAAS6B,GAAkBtI,GAAM0B,GAAOuE,GAAKsC,GAAkBvG,IAAQ2D,IAAM;AAC3E;AACE,YAAI6C,IAAYzI,EAAmBC,CAAI;AAGvC,YAAI,CAACwI,GAAW;AACd,cAAIpB,IAAO;AAEX,WAAIpH,MAAS,UAAa,OAAOA,KAAS,YAAYA,MAAS,QAAQ,OAAO,KAAKA,CAAI,EAAE,WAAW,OAClGoH,KAAQ;AAGV,cAAIqB,KAAa3B,GAA2B9E,EAAM;AAElD,UAAIyG,KACFrB,KAAQqB,KAERrB,KAAQP,GAA2B;AAGrC,cAAI6B;AAEJ,UAAI1I,MAAS,OACX0I,KAAa,SACJhE,GAAQ1E,CAAI,IACrB0I,KAAa,UACJ1I,MAAS,UAAaA,EAAK,aAAarC,KACjD+K,KAAa,OAAOlI,EAAyBR,EAAK,IAAI,KAAK,aAAa,OACxEoH,IAAO,wEAEPsB,KAAa,OAAO1I,GAGtBlB,EAAM,2IAAqJ4J,IAAYtB,CAAI;AAAA,QAC5K;AAED,YAAIvD,KAAUsC,GAAOnG,GAAM0B,GAAOuE,GAAKjE,IAAQ2D,EAAI;AAGnD,YAAI9B,MAAW;AACb,iBAAOA;AAQT,YAAI2E,GAAW;AACb,cAAIG,KAAWjH,EAAM;AAErB,cAAIiH,OAAa;AACf,gBAAIJ;AACF,kBAAI7D,GAAQiE,EAAQ,GAAG;AACrB,yBAAShB,KAAI,GAAGA,KAAIgB,GAAS,QAAQhB;AACnC,kBAAAF,GAAkBkB,GAAShB,KAAI3H,CAAI;AAGrC,gBAAI,OAAO,UACT,OAAO,OAAO2I,EAAQ;AAAA,cAEpC;AACY,gBAAA7J,EAAM,sJAAgK;AAAA;AAGxK,cAAA2I,GAAkBkB,IAAU3I,CAAI;AAAA,QAGrC;AAED,eAAIA,MAASnC,IACXsK,GAAsBtE,EAAO,IAE7BmE,GAAkBnE,EAAO,GAGpBA;AAAA,MACR;AAAA,IACF;AAKD,aAAS+E,GAAwB5I,GAAM0B,GAAOuE,GAAK;AAE/C,aAAOqC,GAAkBtI,GAAM0B,GAAOuE,GAAK,EAAI;AAAA,IAElD;AACD,aAAS4C,GAAyB7I,GAAM0B,GAAOuE,GAAK;AAEhD,aAAOqC,GAAkBtI,GAAM0B,GAAOuE,GAAK,EAAK;AAAA,IAEnD;AAED,QAAI6C,KAAOD,IAGPE,KAAQH;AAEI,IAAAI,GAAA,WAAGnL,GACRmL,GAAA,MAAGF,IACFE,GAAA,OAAGD;AAAA,EACf;;;AC9xCA,EAAI,QAAQ,IAAI,aAAa,eAC3BE,EAAA,UAAiBpM,OAEjBoM,EAAA,UAAiBC;;ACWnB,SAASC,EAAcnJ,GAAM;AAC3B,SAAO;AAAA,IACL,MAAAA;AAAA,EACJ;AACA;AACA,MAAMoJ,KAA2BD,EAAc,0BAA0B,GACnEE,KAA2CF,EAAc,0CAA0C,GACnGG,KAAgBH,EAAc,eAAe,GAC7CI,KAA2BJ,EAAc,0BAA0B,GACnEK,KAA4BL,EAAc,2BAA2B,GACrEM,KAA2BN,EAAc,0BAA0B,GACnEO,KAAoCP,EAAc,mCAAmC,GACrFQ,KAAgBR,EAAc,eAAe,GAC7CS,KAAsBT,EAAc,qBAAqB,GACzDU,KAAsBV,EAAc,qBAAqB,GACzDW,KAAsBX,EAAc,qBAAqB,GACzDY,KAAsBZ,EAAc,qBAAqB,GACzDa,KAAeb,EAAc,cAAc,GAC3Cc,KAAed,EAAc,cAAc,GAC3Ce,KAAmBf,EAAc,iBAAiB,GAClDgB,KAA0BhB,EAAc,yBAAyB,GACjEiB,KAAcjB,EAAc,aAAa,GACzCkB,KAAyBlB,EAAc,wBAAwB,GAC/DmB,KAAgBnB,EAAc,eAAe,GAC7CoB,KAAuBpB,EAAc,sBAAsB,GAC3DqB,KAAyBrB,EAAc,wBAAwB,GAC/DsB,KAAoBtB,EAAc,mBAAmB,GACrDuB,KAAoBvB,EAAc,mBAAmB,GACrDwB,KAAwBxB,EAAc,uBAAuB,GAC7DyB,KAAqBzB,EAAc,oBAAoB,GACvD0B,KAAqB1B,EAAc,oBAAoB,GACvD2B,KAAkB3B,EAAc,iBAAiB,GACjD4B,KAAqB5B,EAAc,oBAAoB,GACvD6B,KAAyB7B,EAAc,wBAAwB,GAC/D8B,KAA0B9B,EAAc,yBAAyB,GACjE+B,KAAe/B,EAAc,cAAc,GAC3CgC,KAAyBhC,EAAc,wBAAwB,GAC/DiC,KAAoBjC,EAAc,mBAAmB,GACrDkC,KAAmBlC,EAAc,kBAAkB,GACnDmC,KAAkBnC,EAAc,iBAAiB,GACjDoC,KAAepC,EAAc,cAAc,GAC3CqC,KAAcrC,EAAc,aAAa,GACzCsC,KAAqBtC,EAAc,oBAAoB,GACvDuC,KAAuBvC,EAAc,sBAAsB,GAC3DwC,KAAwBxC,EAAc,uBAAuB,GAC7DyC,KAAmBzC,EAAc,kBAAkB,GACnD0C,KAAmB1C,EAAc,kBAAkB,GACnD2C,KAAgB3C,EAAc,eAAe,GAC7C4C,KAAe5C,EAAc,cAAc,GAC3C6C,KAAuB7C,EAAc,sBAAsB,GAU3D8C,KAAc,OAAO,SAAW,OAAe,OAAO,OAAO,WAAa,OAAe,OAAO,OAAO,SAAS,gBAAkB,KAUlIC,KAAeD,MAAe,kBAAkB,WAAW,SAAS,eAAe,MACnFE,KAAWF,MAAe,uBAAuB,KAAK,UAAU,QAAQ,GACxEG,KAAaH,MAAe,mCAAmC,KAAK,UAAU,SAAS,GACvFI,KAAuBJ,MAAe,gBAAgB,UAAU,CAACC,KAAe,qBAAqB,IAAI,OAAO,WAAW,OAAO,IAAI,IACtII,KAAYL,MAAe,0BAA0B,KAAK,UAAU,SAAS,GAC7EM,KAASN,MAAe,mBAAmB,KAAK,UAAU,SAAS,KAAK,CAAC,OAAO,UAChFO,KAAaP,MAAe,UAAU,KAAK,UAAU,SAAS,GAI9DQ,KAAYR,MAAe,mBAAmB,KAAK,UAAU,SAAS,GAGtES,KAAoBT,MAAeO,MAAcC,IACjDE,KAAkBV,MAAe,sBAAsB,KAAK,UAAU,SAAS,KAAK,CAACQ,IAYrFG,KAAmB,GACnBC,KAAgB,GAGhBC,KAAiB,GACjBC,KAAkB,GAClBC,KAAiB,GAGjBC,KAAY,GACZC,KAAW,GACXC,KAAe,GAIfC,KAAU,GACVC,KAAY,KAAK,GACjBC,KAAmB,KAAK,GACxBC,KAAe,KAAK,GACpBC,KAAU,KAAK,GACfC,KAAe,KAAK,GACpBC,KAAiB,KAAK,GACtBC,KAAe,KAAK,GACpBC,KAAoBR,KAAUC,KAAYC,KAAmBC,KAAeC,KAAUC,KAAeC,KAAiBC,IAGtHE,KAAmB,GACnBC,KAAiB,KAAK,GAGtBC,KAAgB,GAChBC,KAAkB,GAClBC,KAAiB,GACjBC,KAAmB,GACnBC,KAAiB,GACjBC,KAAe,GAGfC,KAAqB,KACrBC,KAAmB,KAInBC,KAAqBjC,MAAaC,MAAUI,KAAkB0B,KAAqBC,IACnFE,KAAoB;AAAA;AAAA,GAIpBC,KAAyBrC,KAAaiC,KAAqBE,IAC3DG,KAAM,aACNC,KAAM,mCAGNC,KAAY,IAAI,OAAO,QAAQD,KAAM,QAAQD,KAAM,GAAG,GAEtDG,KAAY,IAAI,OAAO,QAAQH,KAAM,QAAQC,KAAM,GAAG,GACtDG,KAAsB;AAAA,EAC1B,MAAM1B;AAAA,EACN,MAAMI;AAAA,EACN,WAAWG;AAAA,EACX,QAAQN;AAAA,EACR,eAAeC;AAAA,EACf,WAAWG;AAAA,EACX,aAAaC;AAAA,EACb,WAAWH;AACb,GACMwB,KAAwB;AAAA,EAC5B,eAAelB;AAAA,EACf,aAAaC;AACf,GACMkB,KAAyB;AAAA,EAC7B,QAAQhB;AAAA,EACR,KAAKI;AAAA,EACL,SAASF;AAAA,EACT,MAAMH;AAAA,EACN,OAAOE;AAAA,EACP,OAAOE;AACT,GACMc,KAAyB;AAAA,EAC7B,CAACjB,KAAkB;AAAA,EACnB,CAACI,KAAe;AAAA,EAChB,CAACF,KAAmB;AAAA,EACpB,CAACH,KAAgB;AAAA,EACjB,CAACE,KAAiB;AAAA,EAClB,CAACE,KAAiB;AACpB,GACMe,KAAoB;AAAA,EACxB,QAAQjC;AAAA,EACR,WAAWE;AAAA,EACX,OAAOD;AACT,GACMiC,KAAoB;AAAA,EACxB,CAAClC,KAAY;AAAA,EACb,CAACE,KAAe;AAAA,EAChB,CAACD,KAAW;AACd;AAUA,SAASkC,MAAuBC,GAAY;AAC1C,QAAMC,IAAO,CAAA;AACb,aAAWC,KAAaF;AACtB,QAAIE,KAAa,OAAOA,KAAc;AACpC,iBAAW,CAACrM,CAAC,KAAKqM,EAAU,SAAS,MAAM;AACzC,QAAAD,EAAK,KAAKpM,CAAC;AAIjB,SAAOoM;AACT;AAWA,MAAME,KAAyB;AAC/B,IAAIC,KAAwB,IACxBC,KAAyB;AAC7B,SAASC,KAA2B;AAClC,SAAOF;AACT;AACA,SAASG,GAAgBC,GAAO;AAC9B,EAAAH,KAAyBG,EAAM;AACjC;AACA,SAASC,GAAsBC,GAAQ;AACrC,EAAIL,OAA2B,KAC7BM,GAAUD,CAAM,EAAE,iBAAiB,aAAaH,IAAiB,EAAI;AAEzE;AACA,SAASK,GAAmBC,GAAKC,GAAQJ,GAAQ;AAC/C,SAEEI,EAAO,uBAAuBD,KAE9BA,EAAI,gBAAgBH,EAAO,YAAY;AAE3C;AACA,SAASK,GAAiBL,GAAQ;AAChC,SAAOA,EAAO,iBAAiB,KAAK,MAAM;AACxC,UAAMM,IAAYC;AAClB,WAAOD,MAAc,OAAOA,EAAU,MAAK,IAAK;AAAA,EACpD,CAAG;AACH;AACA,SAASE,GAAoBJ,GAAQzI,GAAMqI,GAAQ;AACjD,QAAMS,IAAeC,GAAgBV,EAAO,OAAO;AACnD,MAAIW,IAAe,MACfC,IAAc;AAClB,EAAIH,MAAiB,QAAQA,EAAa,eAAeL,MACvDO,IAAeF,EAAa,cAC5BG,IAAcH,EAAa;AAE7B,QAAMI,IAAOT,EAAO;AACpB,EAAIS,MAAS,QACXC,GAA8BnJ,GAAMkJ,GAAMF,GAAcC,GAAa,EAAK;AAE9E;AACA,SAASG,GAAiCT,GAAWU,GAAWC,GAAY;AAC1E,MAAIC,EAAkBZ,CAAS,GAAG;AAChC,UAAMa,IAAab,EAAU,OAAO,QAAO;AAC3C,QAAIa,EAAW,GAAGF,CAAU,KAAKX,EAAU,WAAWa,EAAW;AAC/D,aAAO;AAAA,EAEV;AACD,SAAOH,EAAU,aAAalE,MAAiBmE,EAAW,WAAU;AACtE;AACA,SAASG,GAAkBpB,GAAQqB,GAAWC,GAAU;AACtD,EAAA5B,KAAwB;AACxB,QAAM6B,IAA2B,YAAY,IAAG,IAAK5B,KAAyBF;AAC9E,MAAI;AACF,IAAA+B,GAAaxB,GAAQ,MAAM;AACzB,YAAMM,IAAYC,GAAa,KAAMF,GAAiBL,CAAM,GACtDyB,IAAgB,oBAAI,OACpBC,IAAc1B,EAAO,kBAGrB2B,IAAqB3B,EAAO,cAC5B4B,IAAqB5B,EAAO;AAClC,UAAI6B,IAAwB,IACxBC,IAA8B;AAClC,eAASlK,IAAI,GAAGA,IAAIyJ,EAAU,QAAQzJ,KAAK;AACzC,cAAMmK,IAAWV,EAAUzJ,IACrB3H,IAAO8R,EAAS,MAChBf,IAAYe,EAAS;AAC3B,YAAId,IAAae,GAA2BhB,GAAWW,CAAkB;AACzE,YAAI,EAAAV,MAAe,QAAQD,MAAcU,KAAeO,GAAiBhB,CAAU;AAGnF,cAAIhR,MAAS;AAGX,YAAIsR,KAA4BW,EAAYjB,CAAU,KAAKF,GAAiCT,GAAWU,GAAWC,CAAU,KAC1HT;AAAA,cAEAQ;AAAA,cAAWC;AAAA,cAAYjB;AAAA,YAAM;AAAA,mBAEtB/P,MAAS,aAAa;AAC/B,YAAA4R,IAAwB;AAIxB,kBAAMM,IAAYJ,EAAS;AAC3B,qBAAS5O,IAAI,GAAGA,IAAIgP,EAAU,QAAQhP,KAAK;AACzC,oBAAMiP,IAAWD,EAAUhP,IACrBwE,IAAO0K,GAAoBD,CAAQ,GACnCE,IAAYF,EAAS;AAC3B,kBAAIE,KAAa,QAAQF,MAAaR,KAAsBjK,MAAS,SAASyK,EAAS,aAAa,QAAQ,CAAClC,GAAmBkC,GAAUE,GAAWtC,CAAM,IAAI;AAC7J,oBAAI3D,IAAY;AACd,wBAAMkG,IAAeH,EAAS,aAAaA,EAAS;AACpD,kBAAIG,MACFT,KAA+BS;AAAA,gBAElC;AACD,gBAAAD,EAAU,YAAYF,CAAQ;AAAA,cAC/B;AAAA,YACF;AACD,kBAAMI,IAAcT,EAAS,cACvBU,IAAoBD,EAAY;AACtC,gBAAIC,IAAoB,GAAG;AACzB,kBAAIC,IAAe;AACnB,uBAASvP,IAAI,GAAGA,IAAIsP,GAAmBtP,KAAK;AAC1C,sBAAMwP,IAAaH,EAAYrP;AAC/B,iBAAIwP,EAAW,aAAa,QAAQzC,GAAmByC,GAAY3B,GAAWhB,CAAM,KAAK4B,MAAuBe,OAC9G3B,EAAU,YAAY2B,CAAU,GAChCD;AAAA,cAEH;AACD,cAAID,MAAsBC,MACpB1B,MAAcU,MAChBT,IAAa2B,GAAgBjB,CAAkB,IAEjDF,EAAc,IAAIT,GAAWC,CAAU;AAAA,YAE1C;AAAA,UACF;AAAA;AAAA,MACF;AAMD,UAAIQ,EAAc,OAAO;AACvB,mBAAW,CAACT,GAAWC,CAAU,KAAKQ;AACpC,cAAIoB,EAAe5B,CAAU,GAAG;AAC9B,kBAAM6B,IAAY7B,EAAW;AAC7B,gBAAI8B,IAAa/B,EAAU;AAC3B,qBAAS7N,IAAI,GAAGA,IAAI2P,EAAU,QAAQ3P,KAAK;AACzC,oBAAM+C,IAAM4M,EAAU3P,IAChB6P,IAAahD,EAAO,gBAAgB9J,CAAG;AAC7C,cAAI8M,MAAe,SAGfD,KAAc,QAChB/B,EAAU,YAAYgC,CAAU,GAChCD,IAAaC,KACJD,MAAeC,KACxBhC,EAAU,aAAagC,GAAYD,CAAU,GAE/CA,IAAaA,EAAW;AAAA,YACzB;AAAA,UACb;AAAiB,YAAIb,EAAYjB,CAAU,KAC/BA,EAAW,UAAS;AAQ1B,YAAMgC,IAAU3B,EAAS;AAKzB,UAAI2B,EAAQ,SAAS,GAAG;AACtB,iBAASrL,IAAI,GAAGA,IAAIqL,EAAQ,QAAQrL,KAAK;AACvC,gBAAMsL,IAASD,EAAQrL,IACjBuL,IAAaD,EAAO,YACpB9C,IAAS8C,EAAO;AACtB,mBAAS/P,IAAI,GAAGA,IAAIgQ,EAAW,QAAQhQ,KAAK;AAC1C,kBAAMiP,IAAWe,EAAWhQ,IACtBmP,IAAYF,EAAS;AAC3B,YAAIE,KAAa,QAAQF,EAAS,aAAa,QAAQ,CAAClC,GAAmBkC,GAAUhC,GAAQJ,CAAM,KACjGsC,EAAU,YAAYF,CAAQ;AAAA,UAEjC;AAAA,QACF;AAGD,QAAAd,EAAS,YAAW;AAAA,MACrB;AACD,MAAIhB,MAAc,SACZuB,MACFvB,EAAU,QAAQ,IAClB8C,GAAc9C,CAAS,IAErBjE,MAAcgH,GAAyBrD,CAAM,KAC/CM,EAAU,cAAcwB,CAA2B;AAAA,IAG7D,CAAK;AAAA,EACL,UAAY;AACR,IAAApC,KAAwB;AAAA,EACzB;AACH;AACA,SAAS4D,GAAoBtD,GAAQ;AACnC,QAAMsB,IAAWtB,EAAO;AACxB,MAAIsB,MAAa,MAAM;AACrB,UAAMD,IAAYC,EAAS;AAC3B,IAAAF,GAAkBpB,GAAQqB,GAAWC,CAAQ;AAAA,EAC9C;AACH;AACA,SAASiC,GAAqBvD,GAAQ;AACpC,EAAAD,GAAsBC,CAAM,GAC5BA,EAAO,YAAY,IAAI,iBAAiB,CAACqB,GAAWC,MAAa;AAC/D,IAAAF,GAAkBpB,GAAQqB,GAAWC,CAAQ;AAAA,EACjD,CAAG;AACH;AAUA,SAASkC,GAA4BC,GAAOC,GAAO;AACjD,QAAMC,IAAYF,EAAM,QAClBG,IAAcH,EAAM,UACpBI,IAAaJ,EAAM,SACnBK,IAAYJ,EAAM,QAClBK,IAAcL,EAAM,UACpBM,IAAaN,EAAM;AACzB,UAAQC,MAAc,QAAQA,MAAcG,OAAeF,MAAgB,QAAQA,MAAgBG,OAAiBF,MAAe,QAAQA,MAAeG;AAC5J;AACA,SAASC,GAAgBR,GAAOC,GAAO;AACrC,QAAMQ,IAAgBT,EAAM,iBAAiBC,CAAK,GAC5CS,IAAkBC,GAAiB,EAAC;AAC1C,SAAAD,EAAgB,IAAIV,EAAM,KAAK,GAC/BU,EAAgB,IAAIT,EAAM,KAAK,GACxBQ;AACT;AACA,SAASG,GAAmBC,GAAU;AACpC,MAAI3M,IAAO2M;AACX,MAAI3M,EAAK,WAAW,MAAMA,EAAK,kBAAkB,CAACA,EAAK,iBAAiB;AACtE,IAAAA,EAAK,OAAM;AACX;AAAA,EACD;AAGD,MAAI4M;AACJ,UAAQA,IAAe5M,EAAK,mBAAoB,OAAM,QAAQuK,EAAYqC,CAAY,KAAKA,EAAa,aAAY,KAAM,CAACA,EAAa,cAAa;AACnJ,QAAIA,EAAa,WAAW;AAC1B,MAAAA,EAAa,OAAM;AAAA,aACVf,GAA4Be,GAAc5M,CAAI,GAAG;AAC1D,MAAAA,IAAOsM,GAAgBM,GAAc5M,CAAI;AACzC;AAAA,IACN;AACM;AAKJ,MAAI6M;AACJ,UAAQA,IAAW7M,EAAK,eAAgB,OAAM,QAAQuK,EAAYsC,CAAQ,KAAKA,EAAS,aAAY,KAAM,CAACA,EAAS,cAAa;AAC/H,QAAIA,EAAS,WAAW;AACtB,MAAAA,EAAS,OAAM;AAAA,aACNhB,GAA4B7L,GAAM6M,CAAQ,GAAG;AACtD,MAAA7M,IAAOsM,GAAgBtM,GAAM6M,CAAQ;AACrC;AAAA,IACN;AACM;AAGN;AACA,SAASC,GAAoBnE,GAAW;AACtC,SAAAoE,GAAgBpE,EAAU,MAAM,GAChCoE,GAAgBpE,EAAU,KAAK,GACxBA;AACT;AACA,SAASoE,GAAgBC,GAAO;AAC9B,SAAOA,EAAM,SAAS,aAAW;AAC/B,UAAMhN,IAAOgN,EAAM,WACbC,IAASD,EAAM;AACrB,QAAIH,GACAK;AAQJ,QAPID,MAAWjN,EAAK,qBAClB6M,IAAW7M,EAAK,gBAAgBiN,IAAS,CAAC,GAC1CC,IAAkB,OAElBL,IAAW7M,EAAK,gBAAgBiN,CAAM,GACtCC,IAAkB,KAEhB3C,EAAYsC,CAAQ,GAAG;AACzB,MAAAG,EAAM,IAAIH,EAAS,OAAOK,IAAkBL,EAAS,mBAAoB,IAAG,GAAG,MAAM;AACrF;AAAA,IACN,WAAe,CAAC3B,EAAe2B,CAAQ;AACjC;AAEF,IAAAG,EAAM,IAAIH,EAAS,OAAOK,IAAkBL,EAAS,gBAAiB,IAAG,GAAG,SAAS;AAAA,EACtF;AACH;AAUA,IAAIM,KAAa;AACjB,SAASC,KAAiB;AACxB,EAAAD,KAAa;AACf;AACA,SAASE,KAAoB;AAC3B,SAAO,KAAKF;AACd;AACA,SAASG,GAAyBjF,GAAQkF,GAAU;AAClD,QAAMC,IAAiBnF,EAAO,OAAO,IAAIkF,CAAQ;AACjD,MAAIC,MAAmB;AAEnB,UAAM,MAAM,wBAAwBD,aAAoB;AAG5D,SAAOC;AACT;AACA,MAAMC,KAAoB,OAAO,kBAAmB,aAAa,iBAAiB,CAAA3S,MAAM;AAEtF,UAAQ,QAAO,EAAG,KAAKA,CAAE;AAC3B;AACA,SAAS4S,GAAgC1N,GAAM;AAC7C,SAAOsK,GAAiBD,GAA2BrK,CAAI,CAAC;AAC1D;AACA,SAAS2N,GAAoCC,GAAW;AACtD,QAAMC,IAAgB,SAAS;AAC/B,MAAIA,MAAkB;AACpB,WAAO;AAET,QAAMC,IAAWD,EAAc;AAC/B,SAAOvD,GAAiBD,GAA2BuD,CAAS,CAAC,MAAME,MAAa,WAAWA,MAAa,cAAcD,EAAc,oBAAoB,UAAUE,GAA6BF,CAAa,KAAK;AACnN;AACA,SAASG,GAAwB3F,GAAQuF,GAAWK,GAAU;AAC5D,QAAMlE,IAAc1B,EAAO;AAC3B,MAAI;AACF,WAAO0B,MAAgB,QAAQA,EAAY,SAAS6D,CAAS,KAAK7D,EAAY,SAASkE,CAAQ,KAE/FL,MAAc,QAAQ,CAACD,GAAoCC,CAAS,KAAKM,GAA4BN,CAAS,MAAMvF;AAAA,EACrH,QAAC;AACA,WAAO;AAAA,EACR;AACH;AAKA,SAAS8F,GAAgB9F,GAAQ;AAE/B,SAAOA,aAAkB+F;AAC3B;AACA,SAASF,GAA4BlO,GAAM;AACzC,MAAIqO,IAAcrO;AAClB,SAAOqO,KAAe,QAAM;AAC1B,UAAMhG,IAAS0F,GAA6BM,CAAW;AACvD,QAAIF,GAAgB9F,CAAM;AACxB,aAAOA;AAET,IAAAgG,IAAcC,GAAiBD,CAAW;AAAA,EAC3C;AACD,SAAO;AACT;AAGA,SAASN,GAA6B/N,GAAM;AAE1C,SAAOA,IAAOA,EAAK,kBAAkB;AACvC;AACA,SAASuO,GAAiBrF,GAAM;AAC9B,SAAIhC,GAAU,KAAKgC,CAAI,IACd,QAEL/B,GAAU,KAAK+B,CAAI,IACd,QAEF;AACT;AACA,SAASsF,GAAoBxO,GAAM;AACjC,SAAOA,EAAK,QAAO,KAAMA,EAAK,YAAW;AAC3C;AACA,SAASyO,GAAyBzO,GAAM;AACtC,SAAOA,EAAK,aAAamF;AAC3B;AACA,SAASuJ,GAAevS,GAAS;AAC/B,MAAI6D,IAAO7D;AACX,SAAO6D,KAAQ,QAAM;AACnB,QAAIyO,GAAyBzO,CAAI;AAC/B,aAAOA;AAET,IAAAA,IAAOA,EAAK;AAAA,EACb;AACD,SAAO;AACT;AACA,SAAS2O,GAAqBtX,GAAQiB,GAAMsW,GAAiB;AAC3D,QAAMC,IAAezH,GAAoB9O;AACzC,MAAIsW,MAAoB,SAASvX,IAASwX,QAAmBD,IAAkBC;AAC7E,WAAOxX;AAET,MAAIyX,IAAYzX,IAASwX;AACzB,SAAIvW,MAAS,cACXwW,KAAa,CAAC1H,GAAoB,cACzB9O,MAAS,kBAClBwW,KAAa,CAAC1H,GAAoB,YAE7B0H;AACT;AACA,SAASC,GAAY/O,GAAM;AACzB,SAAOuK,EAAYvK,CAAI,KAAKgP,GAAiBhP,CAAI,KAAKsK,GAAiBtK,CAAI;AAC7E;AACA,SAASiP,GAAYjP,GAAMkP,GAAa;AACtC,MAAIA,KAAe,MAAM;AAErB,IAAAC,GAAkCnP,GAAMkP,CAAW,GAErDlP,EAAK,QAAQkP;AACb;AAAA,EACD;AACD,EAAAE,MACAC;AACA,QAAMhH,IAASoE,MACT6C,IAAcC,MACdhR,IAAM8O;AACZ,EAAAiC,EAAY,SAAS,IAAI/Q,GAAKyB,CAAI,GAE9BkL,EAAelL,CAAI,IACrBqI,EAAO,eAAe,IAAI9J,GAAK,EAAI,IAEnC8J,EAAO,aAAa,IAAI9J,CAAG,GAE7B8J,EAAO,gBAAgB,IAAI9J,CAAG,GAC9B8J,EAAO,aAAahD,IACpBrF,EAAK,QAAQzB;AACf;AACA,SAAS4Q,GAAkCnP,GAAMkP,GAAa;AAC5D,QAAMI,IAAcE;AACpB,MAAI,CAACF;AAEH;AAEF,QAAMG,IAAeH,EAAY,SAAS,IAAIJ,CAAW;AACzD,MAAIO,KAAgBA,EAAa,gBAAgBzP,EAAK;AAEpD,UAAIA,EAAK,YAAY,SAASyP,EAAa,YAAY,OAE7C,MAAM,iCAAiCzP,EAAK,YAAY,kFAAkFyP,EAAa,YAAY,0DAA0D,IAI7N,MAAM,iCAAiCzP,EAAK,YAAY,kNAAkN;AAIxR;AACA,SAAS0P,GAAkCC,GAAWC,GAASC,GAAe;AAC5E,MAAIC,IAAgBH;AACpB,SAAOG,MAAkB,QAAM;AAC7B,QAAID,EAAc,IAAIC,CAAa;AACjC;AAEF,UAAM9P,IAAO4P,EAAQ,IAAIE,CAAa;AACtC,QAAI9P,MAAS;AACX;AAEF,IAAA6P,EAAc,IAAIC,GAAe,EAAK,GACtCA,IAAgB9P,EAAK;AAAA,EACtB;AACH;AAGA,SAAS+P,GAAiB/P,GAAM;AAC9B,QAAMgQ,IAAYhQ,EAAK;AACvB,MAAIgQ,MAAc,MAAM;AACtB,UAAMC,IAAejQ,EAAK,eACpBkQ,IAAiBF,EAAU,eAC3BG,IAAcnQ,EAAK,sBACnBoQ,IAAcpQ,EAAK;AAEzB,QAAImQ,MAAgB;AAClB,UAAIC,MAAgB,MAAM;AACxB,cAAMC,IAAsBD,EAAY;AACxC,QAAAF,EAAe,UAAUE,EAAY,OACrCC,EAAoB,SAAS;AAAA,MACrC;AACQ,QAAAH,EAAe,UAAU;AAAA,SAEtB;AACL,YAAMI,IAAsBH,EAAY;AACxC,UAAIC,MAAgB,MAAM;AACxB,cAAMC,IAAsBD,EAAY;AACxC,QAAAC,EAAoB,SAASC,EAAoB,OACjDA,EAAoB,SAASD,EAAoB;AAAA,MACzD;AACQ,QAAAC,EAAoB,SAAS;AAE/B,MAAAL,EAAa,SAAS;AAAA,IACvB;AACD,QAAIG,MAAgB;AAClB,UAAID,MAAgB,MAAM;AACxB,cAAMG,IAAsBH,EAAY;AACxC,QAAAD,EAAe,SAASC,EAAY,OACpCG,EAAoB,SAAS;AAAA,MACrC;AACQ,QAAAJ,EAAe,SAAS;AAAA,SAErB;AACL,YAAMG,IAAsBD,EAAY;AACxC,UAAID,MAAgB,MAAM;AACxB,cAAMG,IAAsBH,EAAY;AACxC,QAAAG,EAAoB,SAASD,EAAoB,OACjDA,EAAoB,SAASC,EAAoB;AAAA,MACzD;AACQ,QAAAD,EAAoB,SAAS;AAE/B,MAAAJ,EAAa,SAAS;AAAA,IACvB;AACD,IAAAC,EAAe,UACfD,EAAa,WAAW;AAAA,EACzB;AACH;AAIA,SAASM,GAAwBvQ,GAAM;AACrC,EAAAqP;AACA,QAAMmB,IAASxQ,EAAK,aACdyQ,IAASD,EAAO,UAChBlB,IAAcC,MACdlH,IAASoE,MACTmD,IAAUN,EAAY,UACtBO,IAAgBxH,EAAO;AAC7B,EAAIoI,MAAW,QACbf,GAAkCe,GAAQb,GAASC,CAAa;AAElE,QAAMtR,IAAMiS,EAAO;AACnB,EAAAnI,EAAO,aAAahD,IAChB6F,EAAelL,CAAI,IACrB6P,EAAc,IAAItR,GAAK,EAAI,IAG3B8J,EAAO,aAAa,IAAI9J,CAAG;AAE/B;AACA,SAASmS,GAA4B1Q,GAAM;AACzC,QAAM4M,IAAe5M,EAAK,sBACpB6M,IAAW7M,EAAK;AACtB,EAAI4M,MAAiB,QACnB2D,GAAwB3D,CAAY,GAElCC,MAAa,QACf0D,GAAwB1D,CAAQ;AAEpC;AACA,SAAS8D,GAAmBC,GAAgB;AAC1C,EAAAxB;AACA,QAAM/G,IAASoE,MACToE,IAAyBxI,EAAO;AACtC,MAAIuI,MAAmBC,GAAwB;AAE7C,QADAxI,EAAO,kBAAkBuI,GACrBC,MAA2B,MAAM;AACnC,YAAM7Q,IAAO8Q,GAAcD,CAAsB;AACjD,MAAI7Q,MAAS,QACXA,EAAK,YAAW;AAAA,IAEnB;AACD,QAAI4Q,MAAmB,MAAM;AAC3B,YAAM5Q,IAAO8Q,GAAcF,CAAc;AACzC,MAAI5Q,MAAS,QACXA,EAAK,YAAW;AAAA,IAEnB;AAAA,EACF;AACH;AACA,SAAS+Q,KAAqB;AAC5B,SAAIC,GAAuB,IAClB,OAEMvE,KACD;AAChB;AACA,SAASqE,GAAcvS,GAAK0S,GAAc;AAExC,QAAMjR,KADciR,KAAgB1B,MACX,SAAS,IAAIhR,CAAG;AACzC,SAAIyB,MAAS,SACJ,OAEFA;AACT;AACA,SAAS0K,GAAoBlC,GAAK8G,GAAa;AAC7C,QAAMjH,IAASoE,MAETlO,IAAMiK,EAAI,gBAAgBH,EAAO;AACvC,SAAI9J,MAAQ,SACHuS,GAAcvS,GAAK+Q,CAAW,IAEhC;AACT;AACA,SAASjF,GAA2B6G,GAAa5B,GAAa;AAC5D,MAAI9G,IAAM0I;AACV,SAAO1I,KAAO,QAAM;AAClB,UAAMxI,IAAO0K,GAAoBlC,GAAK8G,CAAW;AACjD,QAAItP,MAAS;AACX,aAAOA;AAET,IAAAwI,IAAM8F,GAAiB9F,CAAG;AAAA,EAC3B;AACD,SAAO;AACT;AACA,SAAS2I,GAAgB9I,GAAQ;AAC/B,QAAM+I,IAAoB/I,EAAO,aAC3BgJ,IAAoB,OAAO,OAAO,CAAE,GAAED,CAAiB;AAC7D,SAAA/I,EAAO,qBAAqBgJ,GACrBA;AACT;AACA,SAASC,GAA0BhC,GAAa;AAC9C,SAAOA,EAAY,KAAK,MAAMiC,GAAQ,EAAG,eAAgB,CAAA;AAC3D;AACA,SAASC,GAAoBnJ,GAAQ/P,GAAM;AAEzC,EAAAuR,GAAaxB,GAAQ,MAAM;AACzB,UAAMiH,IAAcC;AACpB,QAAID,EAAY;AACd;AAEF,QAAIhX,MAAS,QAAQ;AACnBiZ,MAAAA,GAAQ,EAAG;AACX;AAAA,IACD;AACD,UAAM3B,IAAUN,EAAY;AAC5B,eAAW,CAAA,EAAGtP,CAAI,KAAK4P;AACrB,MAAA5P,EAAK,UAAS;AAAA,EAEpB,GAAKqI,EAAO,wBAAwB,OAAO;AAAA,IACvC,KAAK;AAAA,EACN,IAAG,MAAS;AACf;AACA,SAASkJ,KAAW;AAClB,SAAOtG,GAAgBsE,GAAoB,CAAE;AAC/C;AACA,SAAStE,GAAgBqE,GAAa;AACpC,SAAOA,EAAY,SAAS,IAAI,MAAM;AACxC;AACA,SAAS7D,GAAc9C,GAAW;AAChC,EAAAyG;AACA,QAAME,IAAcC;AACpB,MAAI5G,MAAc,MAAM;AAEpB,QAAI,OAAO,SAASA,CAAS;AAEzB,YAAM,MAAM,gGAAgG;AAIlH,IAAAA,EAAU,QAAQ,IAClBA,EAAU,eAAe,IAAI;AAAA,EAC9B;AACD,EAAA2G,EAAY,aAAa3G;AAC3B;AACA,SAAS8I,KAAkB;AACzB,EAAArC;AACA,QAAM/G,IAASoE;AACf,EAAAd,GAAoBtD,CAAM;AAC5B;AACA,SAASqJ,GAAgBlJ,GAAK;AAC5B,QAAMH,IAASoE,MACTkF,IAAUC,GAAkBpJ,GAAKH,CAAM;AAC7C,MAAIsJ,MAAY,MAAM;AACpB,UAAM5H,IAAc1B,EAAO;AAC3B,WAAIG,MAAQuB,IACH+G,GAAc,MAAM,IAEtB;AAAA,EACR;AACD,SAAOA,GAAca,CAAO;AAC9B;AACA,SAASE,GAAkB7R,GAAM8R,GAAoB;AACnD,SAAOA,IAAqB9R,EAAK,mBAAkB,IAAK;AAC1D;AACA,SAAS4R,GAETpJ,GAAKH,GAAQ;AACX,MAAIrI,IAAOwI;AACX,SAAOxI,KAAQ,QAAM;AAEnB,UAAMzB,IAAMyB,EAAK,gBAAgBqI,EAAO;AACxC,QAAI9J,MAAQ;AACV,aAAOA;AAET,IAAAyB,IAAOsO,GAAiBtO,CAAI;AAAA,EAC7B;AACD,SAAO;AACT;AACA,SAAS+R,GAAoBC,GAAK;AAChC,SAAO,kCAAkC,KAAKA,CAAG;AACnD;AACA,SAASC,GAAsB5J,GAAQ;AACrC,QAAM6J,IAAqB,CAAA;AAC3B,MAAIC,IAAgB9J;AACpB,SAAO8J,MAAkB;AACvB,IAAAD,EAAmB,KAAKC,CAAa,GACrCA,IAAgBA,EAAc;AAEhC,SAAOD;AACT;AACA,SAASE,KAAY;AACnB,SAAO,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,QAAQ,YAAY,EAAE,EAAE,OAAO,GAAG,CAAC;AACvE;AACA,SAASC,GAAqB7I,GAAY;AACxC,SAAIA,EAAW,aAAarE,KACnBqE,EAAW,YAEb;AACT;AACA,SAAS8I,GAA2BC,GAAkBlK,GAAQmK,GAAM;AAElE,QAAM1J,IAAeC,GAAgBV,EAAO,OAAO;AACnD,MAAIS,MAAiB;AACnB;AAEF,QAAMU,IAAaV,EAAa;AAChC,MAAI;AAAA,IACF,cAAAE;AAAA,IACA,aAAAC;AAAA,EACD,IAAGH;AACJ,MAAIU,MAAe,MAAM;AACvB,QAAIiJ,IAAcJ,GAAqB7I,CAAU;AACjD,UAAMxJ,IAAOqK,GAA2Bb,CAAU;AAClD,QAAIiJ,MAAgB,QAAQlI,EAAYvK,CAAI,GAAG;AAE7C,UAAIyS,MAAgB5L,MAAsB2L,GAAM;AAC9C,cAAMvF,IAASuF,EAAK;AACpB,QAAAC,IAAcD,GACdxJ,IAAeiE,GACfhE,IAAcgE;AAAA,MACf;AACD,MAAIwF,MAAgB,QAClBtJ,GAA8BnJ,GAAMyS,GAAazJ,GAAcC,GAAasJ,CAAgB;AAAA,IAE/F;AAAA,EACF;AACH;AACA,SAASpJ,GAA8BwD,GAAU8F,GAAazJ,GAAcC,GAAayJ,GAAgB;AACvG,MAAI1S,IAAO2M;AACX,MAAI3M,EAAK,iBAAiB0S,KAAkB,CAAC1S,EAAK,QAAO,IAAK;AAC5D,UAAM2S,IAAc3S,EAAK;AACzB,QAAI4S,IAAwBH;AAC5B,KAAKE,KAAeD,MAAmBD,EAAYA,EAAY,SAAS,OAAO5L,OAC7E+L,IAAwBH,EAAY,MAAM,GAAG,EAAE;AAEjD,UAAMI,IAAkB7S,EAAK;AAC7B,QAAI0S,KAAkBE,MAA0BC,GAAiB;AAC/D,UAAID,MAA0B,IAAI;AAEhC,YADAjC,GAAmB,IAAI,GACnB,CAAC/L,MAAa,CAACC,MAAU,CAACI,IAAiB;AAE7C,gBAAMoD,IAASoE;AACf,qBAAW,MAAM;AACf,YAAApE,EAAO,OAAO,MAAM;AAClB,cAAIrI,EAAK,gBACPA,EAAK,OAAM;AAAA,YAE3B,CAAa;AAAA,UACF,GAAE,EAAE;AAAA,QACf;AACU,UAAAA,EAAK,OAAM;AAEb;AAAA,MACD;AACD,YAAMyQ,IAASzQ,EAAK,aACd8S,IAAgBC,MAChBC,IAAsBhT,EAAK,sBAC3B4Q,IAAiBG,MACjBY,IAAU3R,EAAK;AACrB,UAAIA,EAAK,aAAa4Q,MAAmB,QAAQe,MAAYf,KAAkB,CAAC+B,KAGhFpJ,EAAkBuJ,CAAa,MAAMrC,MAAW,QAAQ,CAACA,EAAO,oBAAqB,KAAIqC,EAAc,OAAO,WAAW,KAAKA,EAAc,OAAO,QAAQnG,EAAS,SAASmG,EAAc,OAAO,WAAW,KAAK,CAAC9S,EAAK,yBAAyB,CAAC2S,KAAeG,EAAc,MAAM,QAAQnG,EAAS,SAASmG,EAAc,MAAM,WAAWE,KAAuB,CAAChT,EAAK,mBAAkB,KAAM,CAAC2S,IAAc;AAChZ,QAAA3S,EAAK,UAAS;AACd;AAAA,MACD;AACD,YAAM2I,IAAYC;AAClB,UAAI,CAACW,EAAkBZ,CAAS,KAAKK,MAAiB,QAAQC,MAAgB,MAAM;AAClF,QAAAjJ,EAAK,eAAe4S,CAAqB;AACzC;AAAA,MACD;AAED,UADAjK,EAAU,iBAAiB3I,GAAMgJ,GAAchJ,GAAMiJ,CAAW,GAC5DjJ,EAAK,eAAe;AACtB,cAAMiT,IAAsBjT,EAAK,kBAC3BkT,IAAcC,GAAgBF,CAAmB;AACvD,QAAAjT,EAAK,QAAQkT,CAAW,GACxBlT,IAAOkT;AAAA,MACR;AACD,MAAAlT,EAAK,eAAe4S,CAAqB;AAAA,IAC1C;AAAA,EACF;AACH;AACA,SAASQ,GAAkCpT,GAAM;AAC/C,QAAMqT,IAAkBrT,EAAK;AAC7B,UAAQuK,EAAY8I,CAAe,KAAKnI,EAAemI,CAAe,KAAKA,EAAgB,SAAU,MAAK,CAACA,EAAgB,mBAAkB;AAC/I;AAKA,SAASC,GAAuC3K,GAAW3I,GAAM;AAC/D,MAAIA,EAAK;AACP,WAAO;AAET,MAAI,CAAC2I,EAAU;AACb,WAAO;AAET,QAAMsE,IAAStE,EAAU,OAAO,QAC1B8H,IAASzQ,EAAK,oBACduT,IAAUvT,EAAK;AACrB,SAAIiN,MAAW,IACN,CAACjN,EAAK,yBAAyB,CAACyQ,EAAO,oBAAmB,KAAM,CAACzQ,EAAK,YAAa,KAAIuT,KAAWH,GAAkCpT,CAAI,IACtIiN,MAAWjN,EAAK,uBAClB,CAACA,EAAK,mBAAoB,KAAI,CAACyQ,EAAO,mBAAoB,KAAI,CAACzQ,EAAK,YAAa,KAAIuT,IAErF;AAEX;AACA,SAASC,GAAMjV,GAAKkV,GAAQC,GAASC,GAAS;AAC5C,SAAOpV,MAAQ,SAAS,CAACkV,KAAU,CAACC,KAAW,CAACC;AAClD;AACA,SAASC,GAAOrV,GAAKkV,GAAQE,GAASD,GAAS;AAC7C,SAAOnV,EAAI,YAAW,MAAO,OAAO,CAACkV,KAAUI,GAAcF,GAASD,CAAO;AAC/E;AACA,SAASI,GAASvV,GAAKkV,GAAQE,GAASD,GAAS;AAC/C,SAAOnV,EAAI,YAAW,MAAO,OAAO,CAACkV,KAAUI,GAAcF,GAASD,CAAO;AAC/E;AACA,SAASK,GAAYxV,GAAKkV,GAAQE,GAASD,GAAS;AAClD,SAAOnV,EAAI,YAAW,MAAO,OAAO,CAACkV,KAAUI,GAAcF,GAASD,CAAO;AAC/E;AACA,SAASM,GAAYzV,GAAK0V,GAAU;AAClC,SAAOC,GAAS3V,CAAG,KAAK,CAAC0V;AAC3B;AACA,SAASE,GAAY5V,GAAK0V,GAAU;AAClC,SAAOC,GAAS3V,CAAG,KAAK0V;AAC1B;AAIA,SAASG,GAAgB7V,GAAKmV,GAAS;AAErC,SAAOjP,MAAYiP,KAAWnV,EAAI,YAAW,MAAO;AACtD;AACA,SAAS8V,GAAqB9V,GAAKkV,GAAQC,GAAS;AAClD,SAAOY,GAAY/V,CAAG,MAAMkG,KAAWgP,IAASC;AAClD;AACA,SAASa,GAAoBhW,GAAKkV,GAAQC,GAAS;AACjD,SAAOc,GAASjW,CAAG,MAAMkG,KAAWgP,IAASC;AAC/C;AACA,SAASe,GAAqBlW,GAAKoV,GAAS;AAC1C,SAAOlP,MAAYkP,KAAWW,GAAY/V,CAAG;AAC/C;AACA,SAASmW,GAAoBnW,GAAKoV,GAAS;AACzC,SAAOlP,MAAYkP,KAAWa,GAASjW,CAAG;AAC5C;AACA,SAASoW,GAAiBpW,GAAKkV,GAAQE,GAASD,GAAS;AACvD,SAAIjP,KACEgP,KAAUE,IACL,KAEFW,GAAY/V,CAAG,KAAKA,EAAI,YAAa,MAAK,OAAOmV,IAEtDA,KAAWD,KAAUE,IAChB,KAEFW,GAAY/V,CAAG;AACxB;AACA,SAASqW,GAAgBrW,GAAKmV,GAASO,GAAUR,GAAQE,GAAS;AAChE,SAAIlP,KACEwP,KAAYR,KAAUE,IACjB,KAEFa,GAASjW,CAAG,KAAKA,EAAI,YAAa,MAAK,OAAOmV,IAEnDA,KAAWD,KAAUE,IAChB,KAEFa,GAASjW,CAAG;AACrB;AACA,SAASsW,GAAOtW,GAAK0V,GAAUN,GAASD,GAAS;AAC/C,SAAOnV,EAAI,YAAW,MAAO,OAAO,CAAC0V,KAAYJ,GAAcF,GAASD,CAAO;AACjF;AACA,SAASoB,GAAOvW,GAAK0V,GAAUN,GAASD,GAAS;AAC/C,SAAIjP,KACKlG,EAAI,YAAW,MAAO,OAAOoV,KAAWM,IAE1C1V,EAAI,kBAAkB,OAAOmV,KAAWnV,EAAI,kBAAkB,OAAOmV,KAAWO;AACzF;AACA,SAASc,GAAOxW,GAAK0V,GAAUN,GAASD,GAAS;AAC/C,SAAIO,IACK,KAEL1V,EAAI,YAAa,MAAK,MACjBkG,KAAWkP,IAAUD,IAEvB;AACT;AACA,SAASsB,GAAMzW,GAAK0V,GAAUN,GAASD,GAAS;AAC9C,SAAIO,IACK,KAEL1V,EAAI,YAAa,MAAK,MACjBkG,KAAWkP,IAAUD,IAEvB;AACT;AACA,SAASuB,GAAY1W,GAAK;AACxB,SAAOA,MAAQ;AACjB;AACA,SAAS2W,GAAa3W,GAAK;AACzB,SAAOA,MAAQ;AACjB;AACA,SAAS4W,GAAU5W,GAAK;AACtB,SAAOA,MAAQ;AACjB;AACA,SAAS6W,GAAY7W,GAAK;AACxB,SAAOA,MAAQ;AACjB;AACA,SAAS8W,GAAe9W,GAAKmV,GAASD,GAAQE,GAAS;AACrD,SAAOsB,GAAY1W,CAAG,KAAK,CAACmV,KAAW,CAACC,KAAW,CAACF;AACtD;AACA,SAAS6B,GAAc/W,GAAKmV,GAASO,GAAUR,GAAQE,GAAS;AAC9D,SAAOsB,GAAY1W,CAAG,KAAK,CAACkV,KAAU,CAACQ,MAAaP,KAAWC;AACjE;AACA,SAAS4B,GAAchX,GAAKmV,GAASD,GAAQE,GAAS;AACpD,SAAOuB,GAAa3W,CAAG,KAAK,CAACmV,KAAW,CAACC,KAAW,CAACF;AACvD;AACA,SAAS+B,GAAYjX,GAAKmV,GAASO,GAAUR,GAAQE,GAAS;AAC5D,SAAOuB,GAAa3W,CAAG,KAAK,CAACkV,KAAU,CAACQ,MAAaP,KAAWC;AAClE;AACA,SAAS8B,GAASlX,GAAKmV,GAASC,GAAS;AACvC,SAAOwB,GAAU5W,CAAG,KAAK,CAACmV,KAAW,CAACC;AACxC;AACA,SAAS+B,GAAWnX,GAAKmV,GAASC,GAAS;AACzC,SAAOyB,GAAY7W,CAAG,KAAK,CAACmV,KAAW,CAACC;AAC1C;AACA,SAASgC,GAAWjC,GAASO,GAAUR,GAAQE,GAAS;AACtD,SAAOD,KAAWO,KAAYR,KAAUE;AAC1C;AACA,SAASiC,GAAQrX,GAAK;AACpB,SAAOA,MAAQ;AACjB;AACA,SAASsV,GAAcF,GAASD,GAAS;AACvC,SAAIjP,KACKkP,IAEFD;AACT;AACA,SAASQ,GAAS3V,GAAK;AACrB,SAAOA,MAAQ;AACjB;AACA,SAAS+V,GAAY/V,GAAK;AACxB,SAAOA,MAAQ;AACjB;AACA,SAASsX,GAAStX,GAAK;AACrB,SAAOA,MAAQ;AACjB;AACA,SAASiW,GAASjW,GAAK;AACrB,SAAOA,MAAQ;AACjB;AACA,SAASuX,GAAYvX,GAAKoV,GAASD,GAAS;AAC1C,SAAOnV,EAAI,kBAAkB,OAAOsV,GAAcF,GAASD,CAAO;AACpE;AACA,SAASqC,KAAa;AACpB,QAAMC,IAAOzE,MACP5I,IAAYqN,EAAK,OAAO,GAAGA,EAAK,gBAAe,CAAE;AACvDvK,EAAAA,GAAcqB,GAAoBnE,CAAS,CAAC;AAC9C;AACA,SAASsN,GAAwBC,GAAiBC,GAAoB;AACpE,EAAID,EAAgB,4BAA4B,WAC9CA,EAAgB,0BAA0B;AAE5C,QAAME,IAAkBF,EAAgB,yBAClCG,IAAmBD,EAAgBD;AACzC,MAAIE,MAAqB;AACvB,WAAOA;AAET,QAAM1O,IAAauO,EAAgBC;AAMnC,MAAI,OAAOxO,KAAe,UAAU;AAClC,UAAM2O,IAAgB5O,GAAoBC,CAAU;AACpD,WAAAyO,EAAgBD,KAAsBG,GAC/BA;AAAA,EACR;AACD,SAAO3O;AACT;AACA,SAAS4O,GAAeC,GAAcC,GAAiBC,GAAmB1W,GAAMoK,GAAU;AACxF,MAAIsM,EAAkB,SAAS;AAC7B;AAEF,QAAMnJ,IAAWvN,EAAK,QAChB2R,IAAU3R,EAAK,OACfwN,IAAiBiJ,EAAgB,IAAIlJ,CAAQ;AACnD,MAAIC,MAAmB;AAEnB,UAAM,MAAM,QAAQD,0BAAiC;AAGzD,QAAMoJ,IAAQnJ,EAAe;AAC7B,MAAIoJ,IAAqBJ,EAAa,IAAIG,CAAK;AAC/C,EAAIC,MAAuB,WACzBA,IAAqB,oBAAI,OACzBJ,EAAa,IAAIG,GAAOC,CAAkB;AAE5C,QAAMC,IAAeD,EAAmB,IAAIjF,CAAO,GAK7CmF,IAASD,MAAiB,eAAezM,MAAa;AAC5D,GAAIyM,MAAiB,UAAaC,MAChCF,EAAmB,IAAIjF,GAASmF,IAAS,YAAY1M,CAAQ;AAEjE;AACA,SAAS2M,GAAaJ,GAAO;AAC3B,QAAMK,IAAYL,EAAM,WAClBrH,IAAcC;AACpB,MAAID,EAAY,WAAW;AACzB,UAAM2H,IAAQC,GAAuB5H,CAAW,EAAE,IAAI0H,CAAS;AAC/D,WAAOC,IAAQ,MAAM,KAAKA,EAAM,OAAM,CAAE,IAAI;EAC7C;AACD,QAAMA,IAAQ3H,EAAY,UACpB6H,IAAc,CAAA;AACpB,aAAW,CAAA,EAAGnX,CAAI,KAAKiX;AACrB,IAAIjX,aAAgB2W,KAAS3W,EAAK,WAAWgX,KAAahX,EAAK,gBAC7DmX,EAAY,KAAKnX,CAAI;AAGzB,SAAOmX;AACT;AACA,SAASC,GAAejb,GAASkb,GAAYpO,GAAa;AACxD,QAAMwH,IAAStU,EAAQ;AACvB,MAAI8Q,IAAShE,GACTqO,IAAQnb;AACZ,SAAIsU,MAAW,SACT4G,KAAcpO,MAAgB,KAChCgE,IAASqK,EAAM,wBACfA,IAAQ7G,KACC,CAAC4G,KAAcpO,MAAgBqO,EAAM,gBAAe,MAC7DrK,IAASqK,EAAM,qBAAsB,IAAG,GACxCA,IAAQ7G,KAGL6G,EAAM,gBAAgBD,IAAapK,IAAS,IAAIA,CAAM;AAC/D;AACA,SAASsK,GAAiBC,GAAOH,GAAY;AAC3C,QAAMpO,IAAcuO,EAAM;AAC1B,MAAIA,EAAM,SAAS,WAAW;AAC5B,UAAMF,IAAQE,EAAM;AACpB,WAAOJ,GAAeE,GAAOD,GAAYpO,CAAW;AAAA,EACxD,OAAS;AACL,UAAMwO,IAAYD,EAAM;AACxB,QAAIH,KAAcpO,MAAgB,KAAK,CAACoO,KAAcpO,MAAgBwO,EAAU,sBAAsB;AACpG,YAAMC,IAAeL,IAAaI,EAAU,mBAAkB,IAAKA,EAAU;AAC7E,aAAIC,MAAiB,OACZN,GAAeK,EAAU,iBAAgB,GAAIJ,GAAYI,EAAU,qBAAoB,KAAMJ,IAAa,IAAI,EAAE,IAElHK;AAAA,IACR;AAAA,EACF;AACD,SAAO;AACT;AACA,SAAShM,GAAyBrD,GAAQ;AACxC,QAAMF,IAAQG,GAAUD,CAAM,EAAE,OAC1BsP,IAAYxP,KAASA,EAAM;AACjC,SAAOwP,MAAc,qBAAqBA,MAAc;AAC1D;AACA,SAASC,EAAgBvP,GAAQwP,GAAS1e,GAAS;AACjD,SAAO2e,GAAwBzP,GAAQwP,GAAS1e,CAAO;AACzD;AACA,SAAS4e,GAAyC/X,GAAM;AACtD,SAAO,CAACgY,GAAYhY,CAAI,KAAK,CAACA,EAAK,iBAAiB,CAACA,EAAK;AAC5D;AACA,SAASiY,GAAuB5P,GAAQ9J,GAAK;AAC3C,QAAMpC,IAAUkM,EAAO,aAAa,IAAI9J,CAAG;AAC3C,MAAIpC,MAAY;AAEZ,UAAM,MAAM,2DAA2DoC,GAAK;AAGhF,SAAOpC;AACT;AACA,SAASmS,GAAiBtO,GAAM;AAC9B,QAAMkY,IAAgBlY,EAAK,gBAAgBA,EAAK;AAChD,SAAOkY,MAAkB,QAAQA,EAAc,aAAa,KAAKA,EAAc,OAAOA;AACxF;AACA,SAASC,GAAuB9P,GAAQ+P,GAAerO,GAAa;AAClE,QAAMsO,IAAMtO,EAAY,eAClBuO,IAAcD,EAAI;AACxB,MAAIC,MAAgB;AAClB;AAEF,MAAI;AAAA,IACF,KAAKC;AAAA,IACL,QAAQC;AAAA,EACT,IAAGJ,GACAK,IAAY,GACZC,IAAe,GACfvc,IAAU4N;AACd,SAAO5N,MAAY,QAAM;AACvB,UAAMwc,IAAgBxc,MAAYkc,EAAI;AACtC,QAAIM;AACF,MAAAF,IAAY,GACZC,IAAepQ,GAAUD,CAAM,EAAE;AAAA,SAC5B;AACL,YAAMuQ,IAAazc,EAAQ;AAC3B,MAAAsc,IAAYG,EAAW,KACvBF,IAAeE,EAAW;AAAA,IAC3B;AACD,QAAIC,IAAO;AAMX,QALIN,IAAaE,IACfI,IAAO,EAAEJ,IAAYF,KACZC,IAAgBE,MACzBG,IAAOL,IAAgBE,IAErBG,MAAS;AACX,UAAIF;AAEF,QAAAL,EAAY,SAAS,GAAGO,CAAI;AAAA,WACvB;AACL,cAAMC,IAAY3c,EAAQ;AAC1B,QAAAA,EAAQ,aAAa0c;AACrB,cAAME,IAAU5c,EAAQ,YAAY2c;AACpC,QAAAP,KAAcQ,GACdP,KAAiBO;AAAA,MAClB;AAEH,QAAIJ;AACF;AAEF,IAAAxc,IAAUmS,GAAiBnS,CAAO;AAAA,EACnC;AACH;AACA,SAAS6c,GAAcC,GAAK;AAE1B,SADexM,KACD,YAAY,IAAIwM,CAAG;AACnC;AACA,SAASC,GAAcD,GAAK;AAC1B,EAAA7J,MACe3C,KACR,YAAY,IAAIwM,CAAG;AAC5B;AACA,SAASE,GAAoCC,GAAY;AACvD,QAAMzQ,IAAYC;AAClB,MAAI,CAACW,EAAkBZ,CAAS,KAAK,CAACuC,EAAekO,CAAU;AAC7D,WAAOzQ;AAET,QAAM;AAAA,IACJ,QAAA0Q;AAAA,IACA,OAAA7B;AAAA,EACD,IAAG7O,GACEa,IAAa6P,EAAO,WACpB5B,IAAYD,EAAM;AACxB,SAAI8B,GAAa9P,GAAY4P,CAAU,KACrCC,EAAO,IAAID,EAAW,OAAO,GAAG,SAAS,GAEvCE,GAAa7B,GAAW2B,CAAU,KACpC5B,EAAM,IAAI4B,EAAW,OAAO,GAAG,SAAS,GAEnCzQ;AACT;AACA,SAAS2Q,GAAapZ,GAAOoJ,GAAY;AACvC,MAAImH,IAASvQ,EAAM;AACnB,SAAOuQ,MAAW,QAAM;AACtB,QAAIA,EAAO,GAAGnH,CAAU;AACtB,aAAO;AAET,IAAAmH,IAASA,EAAO;EACjB;AACD,SAAO;AACT;AACA,SAAS8I,GAAeC,GAAS;AAC/B,QAAMC,IAAWD,EAAQ;AACzB,SAAOC,KAAYA,EAAS,eAAe;AAC7C;AACA,SAASnR,GAAUD,GAAQ;AACzB,QAAMqR,IAAYrR,EAAO;AACzB,MAAIqR,MAAc;AAEd,UAAM,MAAM,yBAAyB;AAGzC,SAAOA;AACT;AACA,SAASC,GAAgC3Z,GAAM;AAC7C,SAAOkL,EAAelL,CAAI,KAAKA,EAAK,SAAQ,KAAMsK,GAAiBtK,CAAI,KAAKA,EAAK;AACnF;AACA,SAAS4Z,GAA4B5Z,GAAM;AACzC,MAAIyQ,IAASzQ,EAAK;AAClB,SAAOyQ,MAAW,QAAM;AACtB,QAAIoJ,GAAoBpJ,CAAM;AAC5B,aAAOA;AAET,IAAAA,IAASA,EAAO;EACjB;AACD,SAAOA;AACT;AACA,SAASoJ,GAAoB7Z,GAAM;AACjC,SAAOgY,GAAYhY,CAAI,KAAKkL,EAAelL,CAAI,KAAKA,EAAK;AAC3D;AAQA,SAAS8Z,GAAU9Z,GAAM;AACvB,QAAM+Z,IAAO/Z,EAAK,YAAY,MAAMA,CAAI;AACxC,SAAAiP,GAAY8K,GAAM,IAAI,GACfA;AACT;AACA,SAASC,GAAsBha,GAAM;AACnC,QAAMqI,IAASoE,MACTc,IAAWvN,EAAK,YAAY,QAAO,GACnCwN,IAAiBnF,EAAO,OAAO,IAAIkF,CAAQ;AACjD,MAAIC,MAAmB;AAEnB,UAAM,MAAM,8JAA8J;AAG9K,QAAMyM,IAAczM,EAAe;AACnC,MAAIyM,MAAgB,MAAM;AACxB,UAAMC,IAAkBD,EAAYja,CAAI;AACxC,QAAI,EAAEka,aAA2Bla,EAAK;AAElC,YAAM,MAAM,qFAAqF;AAGrG,WAAOka;AAAA,EACR;AACD,SAAOla;AACT;AACA,SAASma,GAA4Bna,GAAMoa,GAAY;AACrD,QAAMhB,IAAapZ,EAAK;AACxB,MAAIgY,GAAYoB,CAAU,KAAK,CAAClO,EAAekP,CAAU,KAAK,CAAC9P,GAAiB8P,CAAU;AAEtF,UAAM,MAAM,qEAAqE;AAGvF;AACA,SAASC,GAAqB9b,GAAK;AACjC,QAAMyB,IAAO8Q,GAAcvS,CAAG;AAC9B,MAAIyB,MAAS;AAET,UAAM,MAAM,0BAA0BzB,yCAA2C;AAGrF,SAAOyB;AACT;AACA,SAASsa,GAAyBC,GAAc;AAC9C,QAAMC,IAAQD,EAAa,OACrBpe,IAAU,SAAS,cAAc,KAAK;AAC5C,EAAAA,EAAQ,kBAAkB,SAC1BA,EAAQ,aAAa,uBAAuB,MAAM;AAClD,MAAIse,IAAmBD,EAAM;AAC7B,MAAIC,MAAqB,QAAW;AAClC,QAAI,OAAOA,KAAqB,UAAU;AACxC,YAAMnE,IAAgB5O,GAAoB+S,CAAgB;AAE1D,MAAAA,IAAmBD,EAAM,cAAclE;AAAA,IACxC;AACD,IAAImE,MAAqB,UACvBte,EAAQ,UAAU,IAAI,GAAGse,CAAgB;AAAA,EAE5C;AACD,SAAOte;AACT;AACA,SAASue,GAAiB1a,GAAM;AAC9B,UAAQsK,GAAiBtK,CAAI,KAAKkL,EAAelL,CAAI,KAAK,CAACA,EAAK,WAAY,MAAK,CAACA,EAAK,SAAQ;AACjG;AACA,SAAS2a,GAA4B1Q,GAAoB5B,GAAQ0B,GAAa;AAC5E,EAAAA,EAAY,MAAM,eAAe,aAAa,GAC9C1B,EAAO,sBAAsB;AAC7B,QAAM6P,IAAgBjO,EAAmB;AACzC,EAAIiO,MAAkB,QACpBA,EAAc,YAAYjO,CAAkB;AAEhD;AACA,SAAS2Q,GAA4BvS,GAAQ0B,GAAa8Q,GAAe;AACvE,MAAI5Q,IAAqB5B,EAAO;AAChC,MAAIkB,EAAkBsR,CAAa,KAAKA,EAAc,YAAa,KAAIA,EAAc,OAAO,SAAS,aAAa9Q,EAAY,SAAS,SAAS,aAAa,GAAG;AAC9J,UAAMsP,IAASwB,EAAc,QACvBC,IAAczB,EAAO,WACrBpM,IAASoM,EAAO,QAChB0B,IAAkBD,EAAY;AACpC,QAAIE,IAAgB,IAChBC,IAAsB;AAC1B,QAAIhO,MAAW8N,GAAiB;AAC9B,YAAM7a,IAAQ4a,EAAY,gBAAgB7N,IAAS,CAAC;AACpD,MAAIyN,GAAiBxa,CAAK,MACxB8a,IAAgB;AAAA,IAExB,OAAW;AACL,YAAM9a,IAAQ4a,EAAY,gBAAgB7N,CAAM;AAChD,UAAIyN,GAAiBxa,CAAK,GAAG;AAC3B,cAAMgb,IAAUhb,EAAM;AACtB,SAAIgb,MAAY,QAAQR,GAAiBQ,CAAO,OAC9CF,IAAgB,IAChBC,IAAsB5S,EAAO,gBAAgBnI,EAAM,KAAK;AAAA,MAE3D;AAAA,IACF;AACD,QAAI8a,GAAe;AACjB,YAAMG,IAAa9S,EAAO,gBAAgByS,EAAY,KAAK;AAC3D,MAAI7Q,MAAuB,SACzB5B,EAAO,sBAAsB4B,IAAqBqQ,GAAyBjS,EAAO,OAAO,IAE3F0B,EAAY,MAAM,aAAa,eAC3BkR,MAAwB,OAC1BE,EAAW,YAAYlR,CAAkB,IAEzCkR,EAAW,aAAalR,GAAoBgR,CAAmB;AAEjE;AAAA,IACD;AAAA,EACF;AAED,EAAIhR,MAAuB,QACzB0Q,GAA4B1Q,GAAoB5B,GAAQ0B,CAAW;AAEvE;AACA,SAAShB,GAAgBqS,GAAc;AACrC,SAAQ7W,MAAsB6W,KAAgB,QAAQ,iBAAhC;AACxB;AACA,SAASC,GAAWrb,GAAMiN,GAAQ;AAChC,MAAIqO,IAAYtb,EAAK,gBAAgBiN,CAAM;AAI3C,MAHIqO,KAAa,SACfA,IAAYtb,IAER6Z,GAAoB7Z,CAAI;AAC5B,UAAM,MAAM,2CAA2C;AAEzD,QAAMub,IAAU,CAAAlN,MAAe;AAC7B,UAAMoC,IAASpC,EAAY,oBACrBmN,IAAe3B,GAAoBpJ,CAAM,GAGzCgL,IAAapN,MAAgBiN,KAAa,CAACE,IAAenN,IAAcyL,GAAUzL,CAAW;AACnG,QAAImN,GAAc;AAChB,UAAI,EAAEtQ,EAAemD,CAAW,KAAKnD,EAAeuQ,CAAU;AAC5D,cAAM,MAAM,wCAAwC;AAEtD,aAAApN,EAAY,YAAYoN,CAAU,GAC3B,CAACpN,GAAaoN,GAAYA,CAAU;AAAA,IACjD,OAAW;AACL,YAAM,CAACC,GAAUC,GAAWC,CAAS,IAAIL,EAAQ9K,CAAM,GACjDoL,IAAexN,EAAY;AACjC,aAAAuN,EAAU,OAAOH,GAAY,GAAGI,CAAY,GACrC,CAACH,GAAUC,GAAWF,CAAU;AAAA,IACxC;AAAA,EACL,GACQ,CAACC,GAAUC,CAAS,IAAIJ,EAAQD,CAAS;AAC/C,SAAO,CAACI,GAAUC,CAAS;AAC7B;AAMA,SAASG,GAAoBthB,GAAG;AAC9B,SAAOuhB,GAAcvhB,CAAC,KAAKA,EAAE,YAAY;AAC3C;AAMA,SAASuhB,GAAcvhB,GAAG;AAExB,SAAOA,EAAE,aAAa;AACxB;AAOA,SAASwhB,GAAgBhc,GAAM;AAC7B,QAAMic,IAAc,IAAI,OAAO,sHAAsH,GAAG;AACxJ,SAAOjc,EAAK,SAAS,MAAMic,CAAW,MAAM;AAC9C;AAOA,SAASC,GAAelc,GAAM;AAC5B,QAAMmc,IAAa,IAAI,OAAO,6LAA6L,GAAG;AAC9N,SAAOnc,EAAK,SAAS,MAAMmc,CAAU,MAAM;AAC7C;AAMA,SAASC,GAAkBpc,GAAM;AAC/B,MAAIgY,GAAYhY,CAAI,KAAKsK,GAAiBtK,CAAI,KAAK,CAACA,EAAK;AACvD,WAAO;AAET,MAAI,CAACkL,EAAelL,CAAI,KAAK6Z,GAAoB7Z,CAAI;AACnD,WAAO;AAET,QAAMqc,IAAarc,EAAK,iBAClBsc,IAAgBD,MAAe,QAAQrN,GAAiBqN,CAAU,KAAK9R,EAAY8R,CAAU,KAAKA,EAAW,SAAQ;AAC3H,SAAO,CAACrc,EAAK,SAAU,KAAIA,EAAK,WAAY,MAAK,MAASsc;AAC5D;AACA,SAASC,GAAavc,GAAMwc,GAAW;AACrC,MAAI/L,IAASzQ;AACb,SAAOyQ,MAAW,QAAQA,EAAO,UAAW,MAAK,QAAQ,CAAC+L,EAAU/L,CAAM;AACxE,IAAAA,IAASA,EAAO;AAElB,SAAO+L,EAAU/L,CAAM,IAAIA,IAAS;AACtC;AAMA,SAASgM,KAAa;AACpB,SAAOhQ,GAAe;AACxB;AAQA,MAAMiQ,KAAiB,oBAAI,WACrBC,KAAyB,oBAAI;AACnC,SAASzF,GAAuB5H,GAAa;AAG3C,MAAI,CAACA,EAAY,aAAaA,EAAY,QAAO;AAC/C,WAAOqN;AAET,MAAI,CAACrN,EAAY;AACf,UAAM,MAAM,2DAA2D;AAEzE,MAAIsN,IAAgBF,GAAe,IAAIpN,CAAW;AAClD,MAAI,CAACsN,GAAe;AAClB,IAAAA,IAAgB,oBAAI,OACpBF,GAAe,IAAIpN,GAAasN,CAAa;AAC7C,eAAW,CAACjL,GAAS3R,CAAI,KAAKsP,EAAY,UAAU;AAClD,YAAM/B,IAAWvN,EAAK;AACtB,UAAI4P,IAAUgN,EAAc,IAAIrP,CAAQ;AACxC,MAAKqC,MACHA,IAAU,oBAAI,OACdgN,EAAc,IAAIrP,GAAUqC,CAAO,IAErCA,EAAQ,IAAI+B,GAAS3R,CAAI;AAAA,IAC1B;AAAA,EACF;AACD,SAAO4c;AACT;AAeA,SAASC,GAAqBC,GAAY;AACxC,QAAMC,IAAcD,EAAW,aACzBE,IAAcD,EAAY,MAAMD,CAAU;AAChD,EAAAE,EAAY,eAAeF,CAAU;AACrC;AACE,QAAME,EAAY,UAAUF,EAAW;AACrC,YAAM,MAAM,yBAAyBC,EAAY,gCAAgCA,EAAY,QAAO,sHAAuH;AAE7N,QAAI,EAAEC,EAAY,aAAaF,EAAW,YAAYE,EAAY,WAAWF,EAAW,UAAUE,EAAY,WAAWF,EAAW;AAClI,YAAM,MAAM,yBAAyBC,EAAY,gCAAgCA,EAAY,QAAO,8EAA+E;AAAA,EAEtL;AACD,SAAOC;AACT;AAUA,SAASC,GAAkC5U,GAAQ6U,GAAoB;AACrE,QAAM9L,IAAoB/I,EAAO;AAEjC,MAAI8U,IADsB9U,EAAO,sBACK+I;AACtC,QAAMxB,IAAUsN,EAAmB;AACnC,MAAI3e;AACJ,OAAKA,KAAO4e;AACV,IAAKvN,EAAQ,IAAIrR,CAAG,MACd4e,MAAe/L,MACjB+L,IAAahM,GAAgB9I,CAAM,IAErC,OAAO8U,EAAW5e;AAGxB;AACA,SAAS6e,GAAsCpd,GAAM2P,GAAW0N,GAAazN,GAAS0N,GAAeC,GAAY;AAC/G,MAAIrd,IAAQF,EAAK;AACjB,SAAOE,MAAU,QAAM;AACrB,UAAMsd,IAAWtd,EAAM;AAEvB,IAAIA,EAAM,aAAayP,MACjBzE,EAAehL,CAAK,KACtBkd,GAAsCld,GAAOsd,GAAUH,GAAazN,GAAS0N,GAAeC,CAAU,GAKnGF,EAAY,IAAIG,CAAQ,KAC3BD,EAAW,OAAOC,CAAQ,GAE5BF,EAAc,KAAKE,CAAQ,IAE7Btd,IAAQA,EAAM;EACf;AACH;AACA,SAASud,GAA6BC,GAAiBpO,GAAaqO,GAAa9N,GAAe;AAC9F,QAAMwN,IAAcK,EAAgB,UAC9B9N,IAAUN,EAAY,UAGtBgO,IAAgB,CAAA;AACtB,aAAW,CAAC3L,CAAO,KAAK9B,GAAe;AACrC,UAAM7P,IAAO4P,EAAQ,IAAI+B,CAAO;AAChC,IAAI3R,MAAS,WAENA,EAAK,iBACJkL,EAAelL,CAAI,KACrBod,GAAsCpd,GAAM2R,GAAS0L,GAAazN,GAAS0N,GAAezN,CAAa,GAIpGwN,EAAY,IAAI1L,CAAO,KAC1B9B,EAAc,OAAO8B,CAAO,GAE9B2L,EAAc,KAAK3L,CAAO;AAAA,EAG/B;AACD,aAAWA,KAAW2L;AACpB,IAAA1N,EAAQ,OAAO+B,CAAO;AAExB,aAAWA,KAAWgM,GAAa;AACjC,UAAM3d,IAAO4P,EAAQ,IAAI+B,CAAO;AAChC,IAAI3R,MAAS,UAAa,CAACA,EAAK,WAAU,MACnCqd,EAAY,IAAI1L,CAAO,KAC1BgM,EAAY,OAAOhM,CAAO,GAE5B/B,EAAQ,OAAO+B,CAAO;AAAA,EAEzB;AACH;AAUA,IAAIiM,KAAqB,IACrBC,KAAgC,IAChCC,KAAoB,MACpBC,KAAmB,IACnBC,KAAoB,IACpBC,IACAC,IACAC,IACAC,KAAuB,IACvBC,KAA4B,IAC5BC,IACAC,KAAsB,MACtBC,IACAC,IACAC,IACAC,IACAC,IACApI;AACJ,SAASqI,GAAYtgB,GAAKoM,GAAW;AACnC,QAAM3K,IAAO0e,GAAkB,IAAIngB,CAAG;AACtC,MAAIoM,MAAc,MAAM;AACtB,UAAMnC,IAAMsW,GAA2BvgB,CAAG;AAC1C,IAAIiK,EAAI,eAAemC,KACrBA,EAAU,YAAYnC,CAAG;AAAA,EAE5B;AAOD,MAHKmW,GAAkB,IAAIpgB,CAAG,KAC5B2f,GAAe,aAAa,OAAO3f,CAAG,GAEpC2M,EAAelL,CAAI,GAAG;AACxB,UAAMiB,IAAW8d,GAAoB/e,GAAM0e,EAAiB;AAC5D,IAAAM,GAAgB/d,GAAU,GAAGA,EAAS,SAAS,GAAG,IAAI;AAAA,EACvD;AACD,EAAIjB,MAAS,UACXuW,GAAeC,IAAc2H,IAAmBG,IAAyBte,GAAM,WAAW;AAE9F;AACA,SAASgf,GAAgB/d,GAAUge,GAAaC,GAAU1W,GAAK;AAC7D,MAAI2W,IAAaF;AACjB,SAAOE,KAAcD,GAAU,EAAEC,GAAY;AAC3C,UAAMjf,IAAQe,EAASke;AACvB,IAAIjf,MAAU,UACZ2e,GAAY3e,GAAOsI,CAAG;AAAA,EAEzB;AACH;AACA,SAAS4W,GAAaC,GAAUniB,GAAO;AACrC,EAAAmiB,EAAS,YAAY,cAAcniB,CAAK;AAC1C;AACA,MAAMoiB,KAAuB;AAC7B,SAASC,GAAiB/W,GAAKgX,GAAQ;AACrC,QAAMC,IAAkBxB,GAAmB,MAAM;AACjD,MAAI,OAAOwB,KAAoB,UAAU;AACvC,UAAMC,IAAsBlX,EAAI,UAAU,SAASiX,CAAe;AAClE,IAAID,IAAS,KAAK,CAACE,IACjBlX,EAAI,UAAU,IAAIiX,CAAe,IACxBD,IAAS,KAAKE,KACvBlX,EAAI,UAAU,OAAOiX,CAAe;AAAA,EAEvC;AACD,QAAME,IAAuB,iBAAiBnX,CAAG,EAAE,iBAAiB,6BAA6B,KAAK8W;AACtG,EAAA9W,EAAI,MAAM,YAAY,wBAAwBgX,MAAW,IAAI,KAAK,QAAQA,OAAYG,IAAuB;AAC/G;AACA,SAASC,GAAiBpX,GAAKnR,GAAQ;AACrC,QAAMgoB,IAAW7W,EAAI;AACrB,EAAInR,MAAW,IACb+nB,GAAaC,GAAU,EAAE,IAChBhoB,MAAWgP,KACpB+Y,GAAaC,GAAU,MAAM,IACpBhoB,MAAWiP,KACpB8Y,GAAaC,GAAU,QAAQ,IACtBhoB,MAAWkP,KACpB6Y,GAAaC,GAAU,OAAO,IACrBhoB,MAAWmP,KACpB4Y,GAAaC,GAAU,SAAS,IACvBhoB,MAAWoP,KACpB2Y,GAAaC,GAAU,OAAO,IACrBhoB,MAAWqP,MACpB0Y,GAAaC,GAAU,KAAK;AAEhC;AACA,SAASQ,GAAYthB,GAAKoM,GAAWmV,GAAW;AAC9C,QAAM9f,IAAO2e,GAAkB,IAAIpgB,CAAG;AACtC,MAAIyB,MAAS;AAET,UAAM,MAAM,4CAA4C;AAG5D,QAAMwI,IAAMxI,EAAK,UAAUie,IAAoBC,EAAc;AAW7D,MAVA6B,GAAgBxhB,GAAKiK,GAAK0V,EAAc,GAKpC3T,EAAYvK,CAAI,IAClBwI,EAAI,aAAa,qBAAqB,MAAM,IACnC8B,GAAiBtK,CAAI,KAC9BwI,EAAI,aAAa,0BAA0B,MAAM,GAE/C0C,EAAelL,CAAI,GAAG;AACxB,UAAMwf,IAASxf,EAAK,UACdggB,IAAehgB,EAAK;AAI1B,QAHIwf,MAAW,KACbD,GAAiB/W,GAAKgX,CAAM,GAE1BQ,MAAiB,GAAG;AACtB,YAAMd,IAAWc,IAAe,GAC1B/e,IAAW8d,GAAoB/e,GAAM2e,EAAiB;AAC5D,MAAAsB,GAA6Bhf,GAAUie,GAAUlf,GAAMwI,CAAG;AAAA,IAC3D;AACD,UAAMnR,IAAS2I,EAAK;AACpB,IAAI3I,MAAW,KACbuoB,GAAiBpX,GAAKnR,CAAM,GAEzB2I,EAAK,cACRkgB,GAAqC,MAAMlgB,GAAMwI,CAAG,GAElDuP,GAAyC/X,CAAI,MAC/C4d,MAAsB9W,IACtBkX,MAAqBlX;AAAA,EAE3B,OAAS;AACL,UAAMoC,IAAOlJ,EAAK;AAClB,QAAIsK,GAAiBtK,CAAI,GAAG;AAC1B,YAAMmgB,IAAYngB,EAAK,SAASke,IAAgBD,EAAkB;AAClE,MAAIkC,MAAc,QAChBC,GAAmB7hB,GAAK4hB,CAAS,GAGnC3X,EAAI,kBAAkB;AAAA,IAC5B;AAAW,MAAI+B,EAAYvK,CAAI,MACpBA,EAAK,sBACR6d,MAAiC3U;AAGrC,IAAA0U,MAAsB1U,GACtB8U,MAAqB9U;AAAA,EACtB;AACD,MAAIyB,MAAc;AAChB,QAAImV,KAAa;AACf,MAAAnV,EAAU,aAAanC,GAAKsX,CAAS;AAAA,SAChC;AAEL,YAAMO,IAAoB1V,EAAU;AACpC,MAAI0V,KAAqB,OACvB1V,EAAU,aAAanC,GAAK6X,CAAiB,IAE7C1V,EAAU,YAAYnC,CAAG;AAAA,IAE5B;AAID,gBAAO,OAAOxI,CAAI,GAEpBuW,GAAeC,IAAc2H,IAAmBG,IAAyBte,GAAM,SAAS,GACjFwI;AACT;AACA,SAASyX,GAA6Bhf,GAAUie,GAAU/iB,GAASqM,GAAK;AACtE,QAAM8X,IAAwCzC;AAC9C,EAAAA,KAAgC,IAChC0C,GAAgBtf,GAAU9E,GAAS,GAAG+iB,GAAU1W,GAAK,IAAI,GACzDgY,GAAwBrkB,GAASqM,CAAG,GACpCqV,KAAgCyC;AAClC;AACA,SAASC,GAAgBtf,GAAU9E,GAAS8iB,GAAaC,GAAU1W,GAAKsX,GAAW;AACjF,QAAMW,IAA6B7C;AACnC,EAAAA,KAAqB;AACrB,MAAIuB,IAAaF;AACjB,SAAOE,KAAcD,GAAU,EAAEC,GAAY;AAC3C,IAAAU,GAAY5e,EAASke,IAAa3W,GAAKsX,CAAS;AAChD,UAAM9f,IAAO2e,GAAkB,IAAI1d,EAASke,EAAW;AACvD,IAAInf,MAAS,QAAQuK,EAAYvK,CAAI,MAC/B8d,OAAsB,SACxBA,KAAoB9d,EAAK,cAEvB+d,OAAqB,OACvBA,KAAmB/d,EAAK;EAG7B;AACD,EAAI+X,GAAyC5b,CAAO,MAClDyhB,MAAsB9W,KAGxB0B,EAAI,uBAAuBoV,IAC3BA,KAAqB6C,IAA6B7C;AACpD;AACA,SAAS8C,GAAgClD,GAAU5N,GAAS;AAC1D,QAAM5P,IAAO4P,EAAQ,IAAI4N,CAAQ;AACjC,SAAOxO,GAAiBhP,CAAI,KAAKsK,GAAiBtK,CAAI,KAAKA,EAAK;AAClE;AAGA,SAASkgB,GAAqCS,GAAaC,GAAapY,GAAK;AAC3E,QAAMqY,IAAgBF,MAAgB,SAASA,EAAY,WAAW,KAAKD,GAAgCC,EAAY,QAAQjC,EAAiB,IAC1IoC,IAAgBF,EAAY,WAAW,KAAKF,GAAgCE,EAAY,QAAQjC,EAAiB;AACvH,MAAIkC;AACF,QAAI,CAACC,GAAe;AAElB,YAAM3kB,IAAUqM,EAAI;AACpB,UAAIrM,KAAW;AACb,YAAI;AACF,UAAAqM,EAAI,YAAYrM,CAAO;AAAA,QACxB,SAAQ/E,GAAP;AACA,cAAI,OAAOA,KAAU,YAAYA,KAAS,MAAM;AAC9C,kBAAM2pB,IAAM,GAAG3pB,EAAM,SAAU,aAAYoR,EAAI,mBAAmBrM,EAAQ;AAC1E,kBAAM,IAAI,MAAM4kB,CAAG;AAAA,UAC/B;AACY,kBAAM3pB;AAAA,QAET;AAIH,MAAAoR,EAAI,qBAAqB;AAAA,IAC1B;AAAA,aACQsY,GAAe;AACxB,UAAM3kB,IAAU,SAAS,cAAc,IAAI;AAE3C,IAAAqM,EAAI,qBAAqBrM,GACzBqM,EAAI,YAAYrM,CAAO;AAAA,EACxB;AACH;AACA,SAAS6kB,GAAyB7kB,GAAS;AACzC,EAAI8kB,GAAiB9kB,CAAO,KAAK2hB,MAAqB,QAAQA,OAAsB3hB,EAAQ,gBAAgB,CAACkiB,OAC3GliB,EAAQ,cAAc2hB,EAAiB,GACvC3hB,EAAQ,aAAa4hB,EAAgB;AAEzC;AACA,SAASmD,GAAwB/kB,GAAS;AACxC,EAAI8kB,GAAiB9kB,CAAO,KAAK4hB,OAAqB,MAAMA,OAAqB5hB,EAAQ,eAAe,CAACkiB,MACvGliB,EAAQ,aAAa4hB,EAAgB;AAEzC;AACA,SAASyC,GAAwBrkB,GAASqM,GAAK;AAC7C,QAAM2Y,IAEN3Y,EAAI,yBAEE4Y,IAAoB5Y,EAAI;AAC9B,MAAI2Y,MAAwCtD,MAAiCuD,MAAsB7C,IAAqB;AACtH,UAAM8C,IAAiCxD,OAAkC,IACnEyD,IAAYD,IAAiC9C,KAAsBhQ,GAAiBsP,EAA6B;AACvH,QAAIyD,MAAcF,GAAmB;AACnC,YAAMG,IAAY/Y,EAAI,WAChBgS,IAAQyD,GAAmB;AACjC,UAAIuD,IAAyBJ,MAAsB,OAAO5G,EAAM4G,KAAqB,QACjFK,IAAqBH,MAAc,OAAO9G,EAAM8G,KAAa;AAGjE,UAAIE,MAA2B,QAAW;AACxC,YAAI,OAAOA,KAA2B,UAAU;AAC9C,gBAAMlL,IAAgB5O,GAAoB8Z,CAAsB;AAChE,UAAAA,IAAyBhH,EAAM4G,KAAqB9K;AAAA,QACrD;AAGD,QAAAiL,EAAU,OAAO,GAAGC,CAAsB;AAAA,MAC3C;AACD,UAAIF,MAAc,QAAQD,KAAkCC,MAAc;AAExE,QAAA9Y,EAAI,gBAAgB,KAAK;AAAA,WACpB;AAEL,YAAIiZ,MAAuB,QAAW;AACpC,cAAI,OAAOA,KAAuB,UAAU;AAC1C,kBAAMnL,IAAgB5O,GAAoB+Z,CAAkB;AAE5D,YAAAA,IAAqBjH,EAAM8G,KAAahL;AAAA,UACzC;AACD,UAAImL,MAAuB,UACzBF,EAAU,IAAI,GAAGE,CAAkB;AAAA,QAEtC;AAGD,QAAAjZ,EAAI,MAAM8Y;AAAA,MACX;AACD,UAAI,CAACjD,IAA2B;AAC9B,cAAMpO,IAAe9T,EAAQ;AAC7B,QAAA8T,EAAa,QAAQqR;AAAA,MACtB;AAAA,IACF;AACD,IAAA/C,KAAsB+C,GAEtB9Y,EAAI,0BAA0BqV,IAE9BrV,EAAI,eAAe8Y;AAAA,EACpB;AACH;AACA,SAASI,GAAgCf,GAAaC,GAAapY,GAAK;AACtE,QAAM2Y,IAAsCtD;AAC5C,EAAAA,KAAgC,IAChCC,KAAoB,MACpBC,KAAmB,IACnB4D,GAAmBhB,GAAaC,GAAapY,CAAG,GAChDgY,GAAwBI,GAAapY,CAAG,GACxCwY,GAAyBJ,CAAW,GACpCM,GAAwBN,CAAW,GACnC/C,KAAgCsD;AAClC;AACA,SAASpC,GAAoB5iB,GAASyT,GAAS;AAC7C,QAAM3O,IAAW,CAAA;AACjB,MAAI0Q,IAAUxV,EAAQ;AACtB,SAAOwV,MAAY,QAAM;AACvB,UAAM3R,IAAO4P,EAAQ,IAAI+B,CAAO;AAChC,QAAI3R,MAAS;AAET,YAAM,MAAM,qDAAqD;AAGrE,IAAAiB,EAAS,KAAK0Q,CAAO,GACrBA,IAAU3R,EAAK;AAAA,EAChB;AACD,SAAOiB;AACT;AACA,SAAS0gB,GAAmBhB,GAAaC,GAAapY,GAAK;AACzD,QAAMiY,IAA6B7C,IAC7BgE,IAAmBjB,EAAY,QAC/BkB,IAAmBjB,EAAY;AAErC,MADAhD,KAAqB,IACjBgE,MAAqB,KAAKC,MAAqB,GAAG;AACpD,UAAMC,IAAoBnB,EAAY,SAChCoB,IAAmBnB,EAAY;AACrC,QAAIkB,MAAsBC;AACxB,MAAAC,GAAeF,GAAmBtZ,CAAG;AAAA,SAChC;AACL,YAAMyZ,IAAUnD,GAA2BgD,CAAiB,GACtDI,IAAiBrC,GAAYkC,GAAkB,MAAM,IAAI;AAC/D,UAAI;AACF,QAAAvZ,EAAI,aAAa0Z,GAAgBD,CAAO;AAAA,MACzC,SAAQ7qB,GAAP;AACA,YAAI,OAAOA,KAAU,YAAYA,KAAS,MAAM;AAC9C,gBAAM2pB,IAAM,GAAG3pB,EAAM,SAAU,aAAYoR,EAAI,6BAA6B0Z,EAAe,gBAAgBH,wBAAuCE,EAAQ,iBAAiBH;AAC3K,gBAAM,IAAI,MAAMf,CAAG;AAAA,QAC7B;AACU,gBAAM3pB;AAAA,MAET;AACD,MAAAynB,GAAYiD,GAAmB,IAAI;AAAA,IACpC;AACD,UAAMK,IAAgBxD,GAAkB,IAAIoD,CAAgB;AAC5D,IAAIxX,EAAY4X,CAAa,MACvBrE,OAAsB,SACxBA,KAAoBqE,EAAc,cAEhCpE,OAAqB,OACvBA,KAAmBoE,EAAc;EAGzC,OAAS;AACL,UAAMC,IAAerD,GAAoB4B,GAAajC,EAAiB,GACjE2D,IAAetD,GAAoB6B,GAAajC,EAAiB;AACvE,QAAIiD,MAAqB;AACvB,MAAIC,MAAqB,KACvBtB,GAAgB8B,GAAczB,GAAa,GAAGiB,IAAmB,GAAGrZ,GAAK,IAAI;AAAA,aAEtEqZ,MAAqB;AAC9B,UAAID,MAAqB,GAAG;AAG1B,cAAMU,IADmB9Z,EAAI,sBACc;AAC3C,QAAAwW,GAAgBoD,GAAc,GAAGR,IAAmB,GAAGU,IAAiB,OAAO9Z,CAAG,GAC9E8Z,MAEF9Z,EAAI,cAAc;AAAA,MAErB;AAAA;AAED,MAAA+Z,GAAuB3B,GAAawB,GAAcC,GAAcT,GAAkBC,GAAkBrZ,CAAG;AAAA,EAE1G;AACD,EAAIuP,GAAyC6I,CAAW,MACtDhD,MAAsB9W,KAIxB0B,EAAI,uBAAuBoV,IAC3BA,KAAqB6C,IAA6B7C;AACpD;AACA,SAASoE,GAAezjB,GAAKoM,GAAW;AACtC,QAAM6X,IAAW9D,GAAkB,IAAIngB,CAAG;AAC1C,MAAIsO,IAAW8R,GAAkB,IAAIpgB,CAAG;AACxC,MAAIikB,MAAa,UAAa3V,MAAa;AAEvC,UAAM,MAAM,+DAA+D;AAG/E,QAAM4V,IAAUrE,MAAwBK,GAAkB,IAAIlgB,CAAG,KAAKigB,GAAoB,IAAIjgB,CAAG,GAC3FiK,IAAMyP,GAAuBiG,IAAgB3f,CAAG;AAKtD,MAAIikB,MAAa3V,KAAY,CAAC4V,GAAS;AACrC,QAAIvX,EAAesX,CAAQ,GAAG;AAE5B,YAAM/B,IAA6BjY,EAAI;AACvC,MAAIiY,MAA+B,WACjC7C,MAAsB6C,GACtBzC,MAAqByC;AAIvB,YAAMU,IAAsC3Y,EAAI;AAChD,MAAI2Y,MAAwC,WAC1CtD,MAAiCsD;AAAA,IAEzC,OAAW;AACL,YAAMjY,IAAOsZ,EAAS;AACtB,MAAIjY,EAAYiY,CAAQ,KAAK,CAACA,EAAS,gBAAe,MACpD3E,MAAiC3U,IAEnC8U,MAAqB9U,GACrB0U,MAAsB1U;AAAA,IACvB;AACD,WAAOV;AAAA,EACR;AAQD,MALIga,MAAa3V,KAAY4V,KAC3BlM,GAAeC,IAAc2H,IAAmBG,IAAyBzR,GAAU,SAAS,GAI1FA,EAAS,UAAU2V,GAAUha,GAAKyV,EAAkB,GAAG;AACzD,UAAMiE,IAAiBrC,GAAYthB,GAAK,MAAM,IAAI;AAClD,QAAIoM,MAAc;AAEd,YAAM,MAAM,kCAAkC;AAGlD,WAAAA,EAAU,aAAauX,GAAgB1Z,CAAG,GAC1CqW,GAAYtgB,GAAK,IAAI,GACd2jB;AAAA,EACR;AACD,MAAIhX,EAAesX,CAAQ,KAAKtX,EAAe2B,CAAQ,GAAG;AAExD,UAAM6V,IAAa7V,EAAS;AAC5B,IAAI6V,MAAeF,EAAS,YAC1BjD,GAAiB/W,GAAKka,CAAU;AAElC,UAAMC,IAAa9V,EAAS;AAC5B,IAAI8V,MAAeH,EAAS,YAC1B5C,GAAiBpX,GAAKma,CAAU,GAE9BF,MACFf,GAAgCc,GAAU3V,GAAUrE,CAAG,GACnD,CAACwP,GAAYnL,CAAQ,KAAK,CAACA,EAAS,SAAQ,KAC9CqT,GAAqCsC,GAAU3V,GAAUrE,CAAG,IAG5DuP,GAAyClL,CAAQ,MACnD+Q,MAAsB9W,IACtBkX,MAAqBlX;AAAA,EAE3B,OAAS;AACL,UAAMoC,IAAO2D,EAAS;AACtB,QAAIvC,GAAiBuC,CAAQ,GAAG;AAC9B,YAAMsT,IAAYtT,EAAS,SAASqR,IAAgBD,EAAkB;AACtE,MAAIkC,MAAc,QAChBC,GAAmB7hB,GAAK4hB,CAAS;AAAA,IAEzC;AAAW,MAAI5V,EAAYsC,CAAQ,KAAK,CAACA,EAAS,gBAAe,MAE3DgR,MAAiC3U;AAEnC,IAAA0U,MAAsB1U,GACtB8U,MAAqB9U;AAAA,EACtB;AACD,MAAI,CAACmV,MAA6BrG,GAAYnL,CAAQ,KAAKA,EAAS,iBAAiBmR,IAAmB;AAEtG,UAAM4E,IAAe/V,EAAS;AAC9B,IAAA+V,EAAa,eAAe5E,IAC5BnR,IAAW+V;AAAA,EACZ;AAGC,gBAAO,OAAO/V,CAAQ,GAEjBrE;AACT;AACA,SAAS4X,GAAmB7hB,GAAK4hB,GAAW;AAC1C,MAAI9O,IAAoB6M,GAAe;AACvC,QAAM9M,IAAoB8M,GAAe;AACzC,MAAI7M,MAAsB,MAAM;AAC9B,QAAID,EAAkB7S,OAAS4hB;AAC7B;AAEF,IAAA9O,IAAoBF,GAAgB+M,EAAc;AAAA,EACnD;AACD,EAAA7M,EAAkB9S,KAAO4hB;AAC3B;AACA,SAAS0C,GAAc1mB,GAAS;AAC9B,SAAOA,EAAQ;AACjB;AACA,SAAS2mB,GAAe3mB,GAAS;AAC/B,MAAIiU,IAAcjU,EAAQ;AAC1B,SAAIiU,MAAgB,QAAQA,MAAgB8N,GAAe,wBACzD9N,IAAcA,EAAY,cAErBA;AACT;AACA,SAASmS,GAAuB3B,GAAawB,GAAcC,GAAcU,GAAoBC,GAAoBxa,GAAK;AACpH,QAAMya,IAAeF,IAAqB,GACpCG,IAAeF,IAAqB;AAC1C,MAAIG,GACAC,GACAC,IAAaR,GAAcra,CAAG,GAC9B8a,IAAY,GACZC,IAAY;AAChB,SAAOD,KAAaL,KAAgBM,KAAaL,KAAc;AAC7D,UAAMM,IAAUpB,EAAakB,IACvBG,IAAUpB,EAAakB;AAC7B,QAAIC,MAAYC;AACd,MAAAJ,IAAaP,GAAed,GAAeyB,GAASjb,CAAG,CAAC,GACxD8a,KACAC;AAAA,SACK;AACL,MAAIJ,MAAoB,WACtBA,IAAkB,IAAI,IAAIf,CAAY,IAEpCgB,MAAoB,WACtBA,IAAkB,IAAI,IAAIf,CAAY;AAExC,YAAMqB,IAAiBN,EAAgB,IAAII,CAAO,GAC5CG,IAAiBR,EAAgB,IAAIM,CAAO;AAClD,UAAI,CAACC;AAEH,QAAAL,IAAaP,GAAehE,GAA2B0E,CAAO,CAAC,GAC/D3E,GAAY2E,GAAShb,CAAG,GACxB8a;AAAA,eACS,CAACK;AAEV,QAAA9D,GAAY4D,GAASjb,GAAK6a,CAAU,GACpCE;AAAA,WACK;AAEL,cAAMK,IAAW3L,GAAuBiG,IAAgBuF,CAAO;AAC/D,QAAIG,MAAaP,IACfA,IAAaP,GAAed,GAAeyB,GAASjb,CAAG,CAAC,KAEpD6a,KAAc,OAChB7a,EAAI,aAAaob,GAAUP,CAAU,IAErC7a,EAAI,YAAYob,CAAQ,GAE1B5B,GAAeyB,GAASjb,CAAG,IAE7B8a,KACAC;AAAA,MACD;AAAA,IACF;AACD,UAAMvjB,IAAO2e,GAAkB,IAAI8E,CAAO;AAC1C,IAAIzjB,MAAS,QAAQuK,EAAYvK,CAAI,MAC/B8d,OAAsB,SACxBA,KAAoB9d,EAAK,cAEvB+d,OAAqB,OACvBA,KAAmB/d,EAAK;EAG7B;AACD,QAAM6jB,IAAoBP,IAAYL,GAChCa,IAAoBP,IAAYL;AACtC,MAAIW,KAAqB,CAACC,GAAmB;AAC3C,UAAMlX,IAAeyV,EAAaa,IAAe,IAC3CpD,IAAYlT,MAAiB,SAAY,OAAOsR,GAAe,gBAAgBtR,CAAY;AACjG,IAAA2T,GAAgB8B,GAAczB,GAAa2C,GAAWL,GAAc1a,GAAKsX,CAAS;AAAA,EACtF;AAAS,IAAIgE,KAAqB,CAACD,KAC/B7E,GAAgBoD,GAAckB,GAAWL,GAAcza,CAAG;AAE9D;AACA,SAASub,GAAerG,GAAiBsG,GAAiB3b,GAAQ4b,GAAWpU,GAAe8N,GAAa;AAGvG,EAAAC,KAAqB,IACrBI,KAAoB,IACpBH,KAAgC,IAGhCO,KAAuB6F,MAAc3e,IACrCiZ,KAAsB,MACtBL,KAAiB7V,GACjB4V,KAAqB5V,EAAO,SAC5B8V,KAAoB9V,EAAO,QAC3BiW,KAA0BJ,GAAe,WAAW,UACpDM,KAAsB3O,GACtB4O,KAAoBd,GACpBe,KAAoBhB,EAAgB,UACpCiB,KAAoBqF,EAAgB,UACpC3F,KAA4B2F,EAAgB,WAC5CpF,KAAwB,IAAI,IAAIvW,EAAO,YAAY;AAGnD,QAAM6b,IAAsB,oBAAI;AAChC,SAAA1N,KAAe0N,GACflC,GAAe,QAAQ,IAAI,GAM3B9D,KAAiB,QAEjBC,KAAoB,QAEpBK,KAAsB,QAEtBC,KAAoB,QAEpBC,KAAoB,QAEpBC,KAAoB,QAEpBV,KAAqB,QAErBW,KAAwB,QAExBpI,KAAe,QACR0N;AACT;AACA,SAASnE,GAAgBxhB,GAAKiK,GAAKH,GAAQ;AACzC,QAAM8b,IAAc9b,EAAO;AAE3B,EAAAG,EAAI,kBAAkBH,EAAO,QAAQ9J,GACrC4lB,EAAY,IAAI5lB,GAAKiK,CAAG;AAC1B;AACA,SAASsW,GAA2BvgB,GAAK;AACvC,QAAMpC,IAAUyiB,GAAsB,IAAIrgB,CAAG;AAC7C,MAAIpC,MAAY;AAEZ,UAAM,MAAM,2DAA2DoC,GAAK;AAGhF,SAAOpC;AACT;AAUA,MAAMioB,KAAuB,OAAO,OAAO,CAAA,CAAE,GACvCC,KAA8B,IAC9BC,KAAoB,CAAC,CAAC,WAAWC,EAAS,GAAG,CAAC,eAAeC,EAAa,GAAG,CAAC,oBAAoBC,EAAkB,GAAG,CAAC,kBAAkBC,EAAgB,GAAG,CAAC,SAASC,EAAO,GAAG,CAAC,SAASC,EAAO,GAAG,CAAC,OAAOR,EAAoB,GAAG,CAAC,QAAQA,EAAoB,GAAG,CAAC,aAAaA,EAAoB,GAAG,CAAC,YAAYA,EAAoB,GAAG,CAAC,WAAWA,EAAoB,GAAG,CAAC,SAASA,EAAoB,GAAG,CAAC,SAASA,EAAoB,GAAG,CAAC,QAAQA,EAAoB,GAAG,CAAC,QAAQA,EAAoB,CAAC;AAClfzf,MACF2f,GAAkB,KAAK,CAAC,eAAe,CAACnc,GAAOE,MAAWwc,GAAc1c,GAAOE,CAAM,CAAC,CAAC;AAEzF,IAAIyc,KAAuB,GACvBC,KAAc,MACdC,KAAqC,GACrCC,KAA6B;AACjC,MAAMC,KAAyB,oBAAI;AACnC,IAAIC,KAAiC,IACjCC,KAAiC,IACjCC,KAAoB,IACpBC,KAA6B,IAC7BC,KAA2B,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC;AASnD,SAASC,GAAmC7c,GAAW8c,GAAgBvc,GAAMwc,GAAWC,GAAe;AACrG,QAAMtM,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU,OAClBa,IAAa6P,EAAO,WACpBhR,IAASoE,MACT3D,IAAeC,GAAgBV,EAAO,OAAO,GAC7Cud,IAAgB9c,MAAiB,OAAOA,EAAa,aAAa,MAClE+c,IAAYxM,EAAO,KACnByM,IAAuBzd,EAAO,gBAAgBwd,CAAS,GACvDE,IAAa7c,EAAK;AACxB,SAAO2c,MAAcrO,EAAM,OAE3B,CAACjN,EAAYf,CAAU,MAEtB,CAACmc,MAAkB,CAAChhB,MAKrBqgB,KAAqCU,IAAY,OAAOlc,EAAW,QAAO,KAAMuc,IAAa,KAAKhU,GAAoB7I,CAAI,MAAMmQ,EAAO,WAAW7B,EAAM,UAAU,CAAChO,EAAW,YAAa,KAE3LgF,GAAoBhF,CAAU,KAI9BA,EAAW,aAAauc,IAAa,MAEpCJ,KAAiB,CAAChhB,OAAyBmhB,MAAyB,QAAQ,CAACtc,EAAW,YAAa,KAAIoc,MAAkBlX,GAAeoX,CAAoB,KAG/Jhd,MAAiB,QAAQ2c,MAAmB,SAAS,CAACA,EAAe,aAAaA,EAAe,mBAAmB3c,EAAa,cAAc2c,EAAe,gBAAgB3c,EAAa,iBAE3LU,EAAW,UAAW,MAAKb,EAAU,UAAUa,EAAW,SAAQ,MAAOb,EAAU,SAEnF2K,GAAuC3K,GAAWa,CAAU;AAC9D;AACA,SAASwc,GAA0BC,GAAShZ,GAAQ;AAClD,SAAOgZ,MAAY,QAAQA,EAAQ,cAAc,QAAQA,EAAQ,aAAa9gB,MAAiB8H,MAAW,KAAKA,MAAWgZ,EAAQ,UAAU;AAC9I;AACA,SAASC,GAAkBpd,GAAcT,GAAQ8d,GAAU;AACzD,QAAM;AAAA,IACJ,YAAYvY;AAAA,IACZ,cAAA5E;AAAA,IACA,WAAWiF;AAAA,IACX,aAAAhF;AAAA,EACD,IAAGH;AACJ,EAAIqc,OACFA,KAAiC,IAU7Ba,GAA0BpY,GAAW5E,CAAY,KAAKgd,GAA0B/X,GAAUhF,CAAW,MAI3GY,GAAaxB,GAAQ,MAAM;AAGzB,QAAI,CAAC8d,GAAU;AACb1a,MAAAA,GAAc,IAAI;AAClB;AAAA,IACD;AACD,QAAI,CAACuC,GAAwB3F,GAAQuF,GAAWK,CAAQ;AACtD;AAEF,UAAMtF,IAAYC;AAGlB,QAAIW,EAAkBZ,CAAS,GAAG;AAChC,YAAM0Q,IAAS1Q,EAAU,QACnBa,IAAa6P,EAAO;AAC1B,UAAI1Q,EAAU,eAAe;AAE3B,QAAIG,EAAa,SAAS,WAAWA,EAAa,eAAeA,EAAa,cAC5EH,EAAU,QAAQ;AAMpB,cAAMyd,IAAc9d,GAAUD,CAAM,EAAE,OAChCge,IAAmBD,IAAcA,EAAY,YAAY,YAAY,OACrE,CAACE,GAAYC,GAAWC,GAAYC,GAASf,CAAS,IAAIH,IAC1DvP,IAAOzE,MACPmV,IAAyBre,EAAO,YAAa,MAAK,MAAS2N,EAAK,eAAgB,MAAK;AAC3F,YAAIqQ,IAAmBX,IAAY,OAAOrM,EAAO,WAAWmN,KAAcnN,EAAO,QAAQoN;AACvF,UAAA9d,EAAU,SAAS2d,GACnB3d,EAAU,QAAQ4d;AAAA,iBAEdlN,EAAO,SAAS,QAAQ;AAC1B,cAAI,CAAC9O,EAAYf,CAAU;AACzB,kBAAM,MAAM,wDAAwD;AAEtE,UAAAb,EAAU,SAASa,EAAW,aAC9Bb,EAAU,QAAQa,EAAW;QAC9B,WAAU6P,EAAO,SAAS,aAAa,CAACqN,GAAwB;AAC/D,gBAAMC,IAAWtN,EAAO;AACxB,UAAA1Q,EAAU,QAAQ,IACdge,aAAoBC,MAAiBD,EAAS,gBAAe,MAAO,KACtEhe,EAAU,SAASge,EAAS,iBAC5Bhe,EAAU,QAAQge,EAAS,kBAE3Bhe,EAAU,SAAS;AAAA,QAEtB;AAAA,MAEX,OAAa;AACL,cAAMkd,IAAYxM,EAAO,KAEnBwN,IADQle,EAAU,MACD,KACjBsO,IAAQtO,EAAU,YAClBme,IAAc7P,EAAM,QACpBI,IAAa1O,EAAU,cACvBoe,IAAc1P,IAAapO,IAAcD,GACzCge,IAAY3P,IAAarO,IAAeC,GACxCge,IAAW5P,IAAawP,IAAWhB,GACnCqB,IAAS7P,IAAawO,IAAYgB;AACxC,YAAIM,IAAiBjhB,IACjBkhB,IAAe;AACnB,iBAASnnB,IAAI,GAAGA,IAAI6mB,GAAa7mB,KAAK;AACpC,gBAAMD,IAAOiX,EAAMhX,IACbonB,IAAkBrnB,EAAK;AAC7B,cAAIuK,EAAYvK,CAAI,KAAKqnB,MAAoB,KAE7C,EAAEpnB,MAAM,KAAKD,EAAK,UAAUinB,KAAYF,MAAgBM,KAAmBpnB,MAAM6mB,IAAc,KAAK9mB,EAAK,UAAUknB,KAAUF,MAAc,OAEzII,IAAe,IACfD,KAAkBnnB,EAAK,aACnBmnB,MAAmB;AACrB;AAAA,QAGL;AACD,QAAAxe,EAAU,SAASye,IAAeD,IAAiB;AAAA,MACpD;AAAA,IACF;AACD,IAAAvP,EAAgBvP,GAAQ3G,IAA0B,MAAS;AAAA,EAC/D,CAAG;AACH;AAOA,SAASkjB,GAAQzc,GAAOE,GAAQ;AAC9B,EAAAwB,GAAaxB,GAAQ,MAAM;AACzB,UAAMM,IAAYC,MACZE,IAAeC,GAAgBV,EAAO,OAAO,GAC7Cif,IAAgBvU;AACtB,QAAIjK;AACF,UAAIS,EAAkBZ,CAAS,GAAG;AAChC,cAAM0Q,IAAS1Q,EAAU,QACnBa,IAAa6P,EAAO;AAC1B,YAAIA,EAAO,SAAS,aAAaA,EAAO,WAAW,KAAK1Q,EAAU,YAAa,KAAI,CAACqP,GAAYxO,CAAU,KAAK+H,KAAW,sBAAsB,KAAK/H,EAAW,0BAAyB,EAAG,aAAa8d,MAAkB,QAAQ3e,EAAU,GAAG2e,CAAa;AAC3P,UAAAxe,EAAa,gBAAe,GAC5BH,EAAU,QAAQ;AAAA,iBACTR,EAAM,WAAW,KAAK,CAACQ,EAAU,eAAe;AAMzD,gBAAM8O,IADQ9O,EAAU,MACA;AACxB,UAAIa,MAAeiO,MACbvM,EAAe1B,CAAU,IAC3BA,EAAW,OAAO,CAAC,IAEnBA,EAAW,iBAAgB,EAAG,OAAO,CAAC;AAAA,QAG3C;AAAA,MACT,WAAiBrB,EAAM,gBAAgB,SAAS;AAGxC,cAAMyd,IAAgB9c,EAAa;AACnC,YAAI8c,MAAkB,MAAM;AAC1B,gBAAMrY,IAAWqY,EAAc;AAK/B,cAAIrY,MAAarI,MAAoBqI,MAAapI,IAAe;AAC/D,kBAAMoiB,IAAeC,GAA8BF,GAAexe,GAAcT,GAAQF,CAAK;AAC7FsD,YAAAA,GAAc8b,CAAY;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA;AAEH,IAAA3P,EAAgBvP,GAAQzG,IAAeuG,CAAK;AAAA,EAChD,CAAG;AACH;AACA,SAASqc,GAAcrc,GAAOE,GAAQ;AAEpC,QAAMI,IAASN,EAAM,QACfsf,IAActf,EAAM;AAC1B,EAAIM,aAAkB,QAAQgf,MAAgB,WAC5C5d,GAAaxB,GAAQ,MAAM;AAGzB,IAAKqF,GAAgCjF,CAAM,MACzC2c,KAAiC;AAAA,EAEzC,CAAK;AAEL;AACA,SAASsC,GAAevf,GAAO;AAC7B,MAAI,CAACA,EAAM;AACT,WAAO;AAET,QAAMwf,IAAexf,EAAM;AAC3B,SAAIwf,EAAa,WAAW,IACnB,OAEFA,EAAa;AACtB;AACA,SAASC,GAAepe,GAAYiO,GAAW;AAC7C,SAAOjO,MAAeiO,KAAavM,EAAe1B,CAAU,KAAK0B,EAAeuM,CAAS,KAAK,CAACjO,EAAW,QAAO,KAAM,CAACiO,EAAU,QAAO;AAC3I;AACA,SAASoQ,GAA0BnC,GAAW;AAC5C,SAAOX,OAAgB,eAAeW,IAAYZ,KAAuBT;AAC3E;AACA,SAASQ,GAAc1c,GAAOE,GAAQ;AACpC,QAAMsP,IAAYxP,EAAM,WAClB2f,IAAcJ,GAAevf,CAAK;AAGxC,EAAIwP,MAAc,2BAMlBjT,MAAcgH,GAAyBrD,CAAM,KAElCsP,MAAc,2BAGzB9N,GAAaxB,GAAQ,MAAM;AACzB,UAAMM,IAAYC;AAClB,QAAI+O,MAAc,yBAAyB;AACzC,UAAIhP,MAAc,MAAM;AAEtB,cAAMmK,IAAgBC;AACtB,YAAI,CAACxJ,EAAkBuJ,CAAa;AAClC;AAEFrH,QAAAA,GAAcqH,EAAc,MAAK,CAAE;AAAA,MACpC;AACD,UAAIvJ,EAAkBZ,CAAS,GAAG;AAChC,cAAMof,IAA+Bpf,EAAU,OAAO,QAAQA,EAAU,MAAM;AAC9E,YAAIkf,GAA0B1f,EAAM,SAAS,KAAKE,EAAO,YAAa,KAAI0f;AASxE,cARApX,GAAmB,IAAI,GACvBmU,KAAuB,GAEvB,WAAW,MAAM;AACf,YAAAjb,GAAaxB,GAAQ,MAAM;AACzB,cAAAsI,GAAmB,IAAI;AAAA,YACrC,CAAa;AAAA,UACF,GAAE0T,EAA2B,GAC1B9a,EAAkBZ,CAAS,GAAG;AAChC,kBAAMa,IAAab,EAAU,OAAO,QAAO;AAG3C,gBAFAa,EAAW,UAAS,GACpBb,EAAU,SAASa,EAAW,aAC1B,CAACe,EAAYf,CAAU;AACzB,oBAAM,MAAM,gCAAgC;AAE9C,YAAAb,EAAU,QAAQa,EAAW;UAC9B;AAAA,eACI;AACL,UAAAmH,GAAmB,IAAI,GACvBxI,EAAM,eAAc;AAIpB,gBAAM6f,IAAmBrf,EAAU,OAAO,QAAS,EAAC,eAAc,GAC5Dsf,IAA2Btf,EAAU,OAAO,WAAW,KAAKA,EAAU,MAAM,WAAWqf,EAAiB;AAE9G,UADqChjB,MAAqB+iB,KAAgC,CAACE,KAEzFrQ,EAAgBvP,GAAQxG,IAA0B,EAAI;AAAA,QAEzD;AACD;AAAA,MACD;AAAA,IACF;AACD,QAAI,CAAC0H,EAAkBZ,CAAS;AAC9B;AAEF,UAAM6J,IAAOrK,EAAM;AASnB,IAAI8c,OAA+B,QACjC3S,GAA2B,IAAOjK,GAAQ4c,EAA0B,IAEjE,CAACtc,EAAU,SAASsc,OAA+B,SAAStc,EAAU,YAAW,KAAM,CAACqP,GAAYrP,EAAU,OAAO,QAAO,CAAE,KAAKmf,MAAgB,QACtJnf,EAAU,cAAcmf,CAAW,GAErC7C,KAA6B;AAC7B,UAAM5L,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU,OAClBa,IAAa6P,EAAO,WACpB5B,IAAYD,EAAM;AACxB,QAAIG,MAAc,gBAAgBA,MAAc,mBAAmB;AACjE,UAAInF,MAAS;AAAA;AACX,QAAArK,EAAM,eAAc,GACpByP,EAAgBvP,GAAQvG,IAA2B,EAAK;AAAA,eAC/C0Q,MAAS1L;AAClB,QAAAqB,EAAM,eAAc,GACpByP,EAAgBvP,GAAQtG,IAA0B,MAAS;AAAA,eAClDyQ,KAAQ,QAAQrK,EAAM,cAAc;AAE7C,cAAMe,IAAOf,EAAM,aAAa,QAAQ,YAAY;AACpD,QAAAA,EAAM,eAAc,GACpBQ,EAAU,cAAcO,CAAI;AAAA,MAC7B;AAAM,QAAIsJ,KAAQ,QAAQgT,GAAmC7c,GAAWmf,GAAatV,GAAMrK,EAAM,WAAW,EAAI,KAC/GA,EAAM,eAAc,GACpByP,EAAgBvP,GAAQrG,IAAmCwQ,CAAI,KAE/DyS,KAA6BzS;AAE/B,MAAAwS,KAAqC7c,EAAM;AAC3C;AAAA,IACD;AAMD,YADAA,EAAM,eAAc,GACZwP,GAAS;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,yBACH;AACE,QAAAC,EAAgBvP,GAAQrG,IAAmCmG,CAAK;AAChE;AAAA,MACD;AAAA,MACH,KAAK,yBACH;AAEE,QAAAwI,GAAmB,IAAI,GACvBiH,EAAgBvP,GAAQrG,IAAmCmG,CAAK;AAChE;AAAA,MACD;AAAA,MACH,KAAK,mBACH;AAEE,QAAAwI,GAAmB,IAAI,GACvBiH,EAAgBvP,GAAQvG,IAA2B,EAAK;AACxD;AAAA,MACD;AAAA,MACH,KAAK,mBACH;AAEE,QAAA6O,GAAmB,IAAI,GAMnB0U,MAAqB,CAACxgB,MACxBwgB,KAAoB,IACpBzN,EAAgBvP,GAAQvG,IAA2B,EAAK,KAExD8V,EAAgBvP,GAAQtG,IAA0B,MAAS;AAE7D;AAAA,MACD;AAAA,MACH,KAAK;AAAA,MACL,KAAK,8BACH;AACE,QAAA6V,EAAgBvP,GAAQpG,IAAekG,CAAK;AAC5C;AAAA,MACD;AAAA,MACH,KAAK,uBACH;AACE,QAAIyf,GAAepe,GAAYiO,CAAS,KACtCG,EAAgBvP,GAAQnG,IAAqBiG,CAAK;AAEpD;AAAA,MACD;AAAA,MACH,KAAK;AAAA,MACL,KAAK,eACH;AACE,QAAAyP,EAAgBvP,GAAQnG,IAAqBiG,CAAK;AAClD;AAAA,MACD;AAAA,MACH,KAAK,iBACH;AACE,QAAAyP,EAAgBvP,GAAQxG,IAA0B,EAAK;AACvD;AAAA,MACD;AAAA,MACH,KAAK,sBACH;AACE,QAAA+V,EAAgBvP,GAAQlG,IAAqB,EAAI;AACjD;AAAA,MACD;AAAA,MACH,KAAK,qBACH;AACE,QAAAyV,EAAgBvP,GAAQlG,IAAqB,EAAK;AAClD;AAAA,MACD;AAAA,MACH,KAAK;AAAA,MACL,KAAK,0BACH;AACE,QAAAyV,EAAgBvP,GAAQjG,IAAqB,EAAI;AACjD;AAAA,MACD;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,yBACH;AACE,QAAAwV,EAAgBvP,GAAQjG,IAAqB,EAAK;AAClD;AAAA,MACD;AAAA,MACH,KAAK,uBACH;AACE,QAAAwV,EAAgBvP,GAAQhG,IAAqB,eAAe;AAC5D;AAAA,MACD;AAAA,MACH,KAAK,cACH;AACE,QAAAuV,EAAgBvP,GAAQhG,IAAqB,MAAM;AACnD;AAAA,MACD;AAAA,MACH,KAAK,gBACH;AACE,QAAAuV,EAAgBvP,GAAQhG,IAAqB,QAAQ;AACrD;AAAA,MACD;AAAA,MACH,KAAK,mBACH;AACE,QAAAuV,EAAgBvP,GAAQhG,IAAqB,WAAW;AACxD;AAAA,MACD;AAAA,MACH,KAAK,eACH;AACE,QAAAuV,EAAgBvP,GAAQ/F,IAAc,MAAS;AAC/C;AAAA,MACD;AAAA,MACH,KAAK,eACH;AACE,QAAAsV,EAAgBvP,GAAQ9F,IAAc,MAAS;AAC/C;AAAA,MACD;AAAA,IAEJ;AAAA,EACL,CAAG;AACH;AACA,SAASoiB,GAAQxc,GAAOE,GAAQ;AAE9B,EAAAF,EAAM,gBAAe,GACrB0B,GAAaxB,GAAQ,MAAM;AACzB,UAAMM,IAAYC,MACZ4J,IAAOrK,EAAM,MACb2f,IAAcJ,GAAevf,CAAK;AACxC,QAAIqK,KAAQ,QAAQjJ,EAAkBZ,CAAS,KAAK6c,GAAmC7c,GAAWmf,GAAatV,GAAMrK,EAAM,WAAW,EAAK,GAAG;AAI5I,MAAImd,OACF4C,GAAsB7f,GAAQmK,CAAI,GAClC8S,KAA6B;AAG/B,YAAM9b,IADSb,EAAU,OACC,WACpBG,IAAeC,GAAgBV,EAAO,OAAO;AACnD,UAAIS,MAAiB;AACnB;AAEF,YAAMuO,IAAa1O,EAAU,cACvBoe,IAAc1P,IAAa1O,EAAU,OAAO,SAASA,EAAU,MAAM,QACrEqe,IAAY3P,IAAa1O,EAAU,MAAM,SAASA,EAAU,OAAO;AAIzE,OAAI,CAAChE,MAAwBgE,EAAU,YAAW,KAAM,CAAC4B,EAAYf,CAAU,KAAKV,EAAa,eAAe,QAAQU,EAAW,eAAgB,EAAC,MAAM,GAAGud,CAAW,IAAIvU,IAAOhJ,EAAW,eAAgB,EAAC,MAAMud,IAAcC,CAAS,MAAM3U,GAAqBvJ,EAAa,UAAU,MAC5R8O,EAAgBvP,GAAQrG,IAAmCwQ,CAAI;AAEjE,YAAMuT,IAAavT,EAAK;AAIxB,MAAI9N,MAAcqhB,IAAa,KAAK5d,EAAM,cAAc,2BAA2B,CAACE,EAAO,kBACzFM,EAAU,OAAO,UAAUod,IAIzB,CAACnhB,MAAa,CAACC,MAAU,CAACI,MAAmBoD,EAAO,kBACtDyc,KAAuB,GACvBnU,GAAmB,IAAI;AAAA,IAE/B;AAEM,MAAA2B,GAA2B,IAAOjK,GADZmK,MAAS,OAAOA,IAAO,MACU,GAGnD8S,OACF4C,GAAsB7f,GAAQmK,KAAQ,MAAS,GAC/C8S,KAA6B;AAMjC,IAAA7T;EACJ,CAAG,GACDwT,KAA6B;AAC/B;AACA,SAASR,GAAmBtc,GAAOE,GAAQ;AACzC,EAAAwB,GAAaxB,GAAQ,MAAM;AACzB,UAAMM,IAAYC;AAClB,QAAIW,EAAkBZ,CAAS,KAAK,CAACN,EAAO,YAAW,GAAI;AACzD,YAAMgR,IAAS1Q,EAAU,QACnB3I,IAAO2I,EAAU,OAAO,QAAO;AACrC,MAAAgI,GAAmB0I,EAAO,GAAG,IAK7BlR,EAAM,YAAY2c,KAAuBT,MAGzChL,EAAO,SAAS,aAAa,CAAC1Q,EAAU,YAAa,KAAI3I,EAAK,UAAW,MAAK2I,EAAU,UAAU4B,EAAYvK,CAAI,KAAKA,EAAK,SAAU,MAAK2I,EAAU,UAKnJiP,EAAgBvP,GAAQrG,IAAmC+E,EAAsB;AAAA,IAEpF;AAAA,EACL,CAAG;AACH;AACA,SAASmhB,GAAsB7f,GAAQmK,GAAM;AAC3C,QAAM5B,IAAiBvI,EAAO;AAI9B,MAHAsI,GAAmB,IAAI,GAGnBC,MAAmB,QAAQ4B,KAAQ,MAAM;AAG3C,QAAIA,MAAS,IAAI;AACf,YAAMxS,IAAO8Q,GAAcF,CAAc,GACnCjE,IAAW+B,GAAerG,EAAO,gBAAgBuI,CAAc,CAAC;AACtE,MAAIjE,MAAa,QAAQA,EAAS,cAAc,QAAQpC,EAAYvK,CAAI,KACtEmJ,GAA8BnJ,GAAM2M,EAAS,WAAW,MAAM,MAAM,EAAI;AAE1E;AAAA,IACD;AAID,QAAI6F,EAAKA,EAAK,SAAS,OAAO;AAAA,GAAM;AAClC,YAAM7J,IAAYC;AAClB,UAAIW,EAAkBZ,CAAS,GAAG;AAGhC,cAAM6O,IAAQ7O,EAAU;AACxB,QAAAA,EAAU,OAAO,IAAI6O,EAAM,KAAKA,EAAM,QAAQA,EAAM,IAAI,GACxDI,EAAgBvP,GAAQtF,IAAmB,IAAI;AAC/C;AAAA,MACD;AAAA,IACF;AAAA,EACF;AACD,EAAAuP,GAA2B,IAAMjK,GAAQmK,CAAI;AAC/C;AACA,SAASkS,GAAiBvc,GAAOE,GAAQ;AAMvC,EAAI3D,KACF4gB,KAA6B,KAE7Bzb,GAAaxB,GAAQ,MAAM;AACzB,IAAA6f,GAAsB7f,GAAQF,EAAM,IAAI;AAAA,EAC9C,CAAK;AAEL;AACA,SAASoc,GAAUpc,GAAOE,GAAQ;AAGhC,MAFAyc,KAAuB3c,EAAM,WAC7B4c,KAAc5c,EAAM,KAChBE,EAAO;AACT;AAEF,QAAM;AAAA,IACJ,KAAA9J;AAAA,IACA,UAAA0V;AAAA,IACA,SAAAP;AAAA,IACA,SAAAC;AAAA,IACA,QAAAF;AAAA,EACD,IAAGtL;AACJ,MAAI,CAAAyP,EAAgBvP,GAAQ7F,IAAkB2F,CAAK,KAG/C5J,KAAO,MAGX;AAAA,QAAIgX,GAAchX,GAAKmV,GAASD,GAAQE,CAAO;AAC7C,MAAAiE,EAAgBvP,GAAQ5F,IAAyB0F,CAAK;AAAA,aAC7CqN,GAAYjX,GAAKmV,GAASO,GAAUR,GAAQE,CAAO;AAC5D,MAAAiE,EAAgBvP,GAAQ3F,IAAayF,CAAK;AAAA,aACjCkN,GAAe9W,GAAKmV,GAASD,GAAQE,CAAO;AACrD,MAAAiE,EAAgBvP,GAAQ1F,IAAwBwF,CAAK;AAAA,aAC5CmN,GAAc/W,GAAKmV,GAASO,GAAUR,GAAQE,CAAO;AAC9D,MAAAiE,EAAgBvP,GAAQzF,IAAeuF,CAAK;AAAA,aACnCsN,GAASlX,GAAKmV,GAASC,CAAO;AACvC,MAAAiE,EAAgBvP,GAAQxF,IAAsBsF,CAAK;AAAA,aAC1CuN,GAAWnX,GAAKmV,GAASC,CAAO;AACzC,MAAAiE,EAAgBvP,GAAQvF,IAAwBqF,CAAK;AAAA,aAC5CgM,GAAY5V,GAAK0V,CAAQ;AAClC,MAAAoR,KAAoB,IACpBzN,EAAgBvP,GAAQtF,IAAmBoF,CAAK;AAAA,aACvCyN,GAAQrX,CAAG;AACpB,MAAAqZ,EAAgBvP,GAAQrF,IAAmBmF,CAAK;AAAA,aACvCiM,GAAgB7V,GAAKmV,CAAO;AACrC,MAAAvL,EAAM,eAAc,GACpBkd,KAAoB,IACpBzN,EAAgBvP,GAAQvG,IAA2B,EAAI;AAAA,aAC9CkS,GAAYzV,GAAK0V,CAAQ;AAClC,MAAAoR,KAAoB,IACpBzN,EAAgBvP,GAAQtF,IAAmBoF,CAAK;AAAA,aACvCwM,GAAiBpW,GAAKkV,GAAQE,GAASD,CAAO;AACvD,MAAIY,GAAY/V,CAAG,IACjBqZ,EAAgBvP,GAAQpF,IAAuBkF,CAAK,KAEpDA,EAAM,eAAc,GACpByP,EAAgBvP,GAAQxG,IAA0B,EAAI;AAAA,aAE/CgU,GAAStX,CAAG;AACrB,MAAAqZ,EAAgBvP,GAAQnF,IAAoBiF,CAAK;AAAA,aACxCyM,GAAgBrW,GAAKmV,GAASO,GAAUR,GAAQE,CAAO;AAChE,MAAIa,GAASjW,CAAG,IACdqZ,EAAgBvP,GAAQlF,IAAoBgF,CAAK,KAEjDA,EAAM,eAAc,GACpByP,EAAgBvP,GAAQxG,IAA0B,EAAK;AAAA,aAEhDwS,GAAqB9V,GAAKkV,GAAQC,CAAO;AAClD,MAAAvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQlG,IAAqB,EAAI;AAAA,aACxCoS,GAAoBhW,GAAKkV,GAAQC,CAAO;AACjD,MAAAvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQlG,IAAqB,EAAK;AAAA,aACzCsS,GAAqBlW,GAAKoV,CAAO;AAC1C,MAAAxL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQjG,IAAqB,EAAI;AAAA,aACxCsS,GAAoBnW,GAAKoV,CAAO;AACzC,MAAAxL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQjG,IAAqB,EAAK;AAAA,aACzCwR,GAAOrV,GAAKkV,GAAQE,GAASD,CAAO;AAC7C,MAAAvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQhG,IAAqB,MAAM;AAAA,aAC1C0R,GAAYxV,GAAKkV,GAAQE,GAASD,CAAO;AAClD,MAAAvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQhG,IAAqB,WAAW;AAAA,aAC/CyR,GAASvV,GAAKkV,GAAQE,GAASD,CAAO;AAC/C,MAAAvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQhG,IAAqB,QAAQ;AAAA,aAC5CmR,GAAMjV,GAAKkV,GAAQC,GAASC,CAAO;AAC5C,MAAAiE,EAAgBvP,GAAQjF,IAAiB+E,CAAK;AAAA,aACrC0M,GAAOtW,GAAK0V,GAAUN,GAASD,CAAO;AAC/C,MAAAvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQ/F,IAAc,MAAS;AAAA,aACtCwS,GAAOvW,GAAK0V,GAAUN,GAASD,CAAO;AAC/C,MAAAvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQ9F,IAAc,MAAS;AAAA,SAC1C;AACL,YAAMuQ,IAAgBzK,EAAO,aAAa;AAC1C,MAAI8f,GAAiBrV,CAAa,IAC5BiC,GAAOxW,GAAK0V,GAAUN,GAASD,CAAO,KACxCvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQxE,IAAcsE,CAAK,KAClC6M,GAAMzW,GAAK0V,GAAUN,GAASD,CAAO,KAC9CvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQvE,IAAaqE,CAAK,KACjC2N,GAAYvX,GAAKoV,GAASD,CAAO,MAC1CvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQtE,IAAoBoE,CAAK,KAG1C,CAACzD,MAAcoR,GAAYvX,GAAKoV,GAASD,CAAO,MACzDvL,EAAM,eAAc,GACpByP,EAAgBvP,GAAQtE,IAAoBoE,CAAK;AAAA,IAEpD;AACD,IAAIwN,GAAWjC,GAASO,GAAUR,GAAQE,CAAO,KAC/CiE,EAAgBvP,GAAQ/D,IAAsB6D,CAAK;AAAA;AAEvD;AACA,SAASigB,GAA4Bre,GAAa;AAEhD,MAAIse,IAAete,EAAY;AAC/B,SAAIse,MAAiB,WACnBA,IAAe,CAAA,GAEfte,EAAY,wBAAwBse,IAE/BA;AACT;AAIA,MAAMC,KAAyB,oBAAI;AACnC,SAASC,GAA0BpgB,GAAO;AACxC,QAAMM,IAASN,EAAM,QACfiT,IAAe3S,KAAU,OAAO,OAAOA,EAAO,aAAa,IAAIA,EAAO,cAAcA,EAAO,cAAc,aACzGK,IAAeC,GAAgBqS,CAAY;AACjD,MAAItS,MAAiB;AACnB;AAEF,QAAM0f,IAAmBta,GAA4BpF,EAAa,UAAU;AAC5E,MAAI0f,MAAqB;AACvB;AAEF,EAAIpD,OACFA,KAAiC,IACjCvb,GAAa2e,GAAkB,MAAM;AACnC,UAAMlB,IAAgBvU,MAChB6S,IAAgB9c,EAAa;AACnC,QAAI8c,MAAkB;AACpB;AAEF,UAAMrY,IAAWqY,EAAc;AAK/B,QAAIrY,MAAarI,MAAoBqI,MAAapI;AAChD;AAEF,UAAMoiB,IAAeC,GAA8BF,GAAexe,GAAc0f,GAAkBrgB,CAAK;AACvGsD,IAAAA,GAAc8b,CAAY;AAAA,EAChC,CAAK;AAMH,QAAMkB,IAAUxW,GAAsBuW,CAAgB,GAChDE,IAAaD,EAAQA,EAAQ,SAAS,IACtCE,IAAgBD,EAAW,MAC3BE,IAAqBN,GAAuB,IAAIK,CAAa,GAC7DE,IAAmBD,KAAsBF;AAC/C,EAAIG,MAAqBL,KACvBtC,GAAkBpd,GAAc+f,GAAkB,EAAK,GAEzD3C,GAAkBpd,GAAc0f,GAAkB,EAAI,GAGlDA,MAAqBE,IACvBJ,GAAuB,IAAIK,GAAeH,CAAgB,IACjDI,KACTN,GAAuB,OAAOK,CAAa;AAE/C;AACA,SAASG,GAAuB3gB,GAAO;AAIrC,EAAAA,EAAM,kBAAkB;AAC1B;AACA,SAAS4gB,GAA6B5gB,GAAO;AAG3C,SADgBA,EAAM,oBAAoB;AAE5C;AACA,SAAS6gB,GAAqBjf,GAAa1B,GAAQ;AAGjD,QAAMgQ,IAAMtO,EAAY,eAClBkf,IAA4B/D,GAAuB,IAAI7M,CAAG;AAChE,GAAI4Q,MAA8B,UAAaA,IAA4B,MACzE5Q,EAAI,iBAAiB,mBAAmBkQ,EAAyB,GAEnErD,GAAuB,IAAI7M,IAAM4Q,KAA6B,KAAK,CAAC,GAGpElf,EAAY,kBAAkB1B;AAC9B,QAAM6gB,IAAgBd,GAA4Bre,CAAW;AAC7D,WAAS9J,IAAI,GAAGA,IAAIqkB,GAAkB,QAAQrkB,KAAK;AACjD,UAAM,CAACkpB,GAAWC,CAAO,IAAI9E,GAAkBrkB,IACzCopB,IAAe,OAAOD,KAAY,aAAa,CAAAjhB,MAAS;AAC5D,MAAI4gB,GAA6B5gB,CAAK,MAGtC2gB,GAAuB3gB,CAAK,IACxBE,EAAO,gBAAgB8gB,MAAc,YACvCC,EAAQjhB,GAAOE,CAAM;AAAA,IAExB,IAAG,CAAAF,MAAS;AACX,UAAI4gB,GAA6B5gB,CAAK;AACpC;AAEF,MAAA2gB,GAAuB3gB,CAAK;AAC5B,YAAMmhB,IAAajhB,EAAO;AAC1B,cAAQ8gB,GAAS;AAAA,QACf,KAAK;AACH,iBAAOG,KAAc1R,EAAgBvP,GAAQvE,IAAaqE,CAAK;AAAA,QACjE,KAAK;AACH,iBAAOyP,EAAgBvP,GAAQxE,IAAcsE,CAAK;AAAA,QACpD,KAAK;AACH,iBAAOmhB,KAAc1R,EAAgBvP,GAAQpG,IAAekG,CAAK;AAAA,QACnE,KAAK;AACH,iBAAOmhB,KAAc1R,EAAgBvP,GAAQ3E,IAAmByE,CAAK;AAAA,QACvE,KAAK;AACH,iBAAOmhB,KAAc1R,EAAgBvP,GAAQ1E,IAAkBwE,CAAK;AAAA,QACtE,KAAK;AACH,iBAAOmhB,KAAc1R,EAAgBvP,GAAQzE,IAAiBuE,CAAK;AAAA,QACrE,KAAK;AACH,iBAAOmhB,KAAc1R,EAAgBvP,GAAQjE,IAAe+D,CAAK;AAAA,QACnE,KAAK;AAED,iBAAOmhB,KAAc1R,EAAgBvP,GAAQhE,IAAc8D,CAAK;AAAA,QAEpE,KAAK;AACH,iBAAOmhB,KAAc1R,EAAgBvP,GAAQ7E,IAAc2E,CAAK;AAAA,MACnE;AAAA,IACP;AACI,IAAA4B,EAAY,iBAAiBof,GAAWE,CAAY,GACpDH,EAAc,KAAK,MAAM;AACvB,MAAAnf,EAAY,oBAAoBof,GAAWE,CAAY;AAAA,IAC7D,CAAK;AAAA,EACF;AACH;AACA,SAASE,GAAwBxf,GAAa;AAC5C,QAAMsO,IAAMtO,EAAY,eAClBkf,IAA4B/D,GAAuB,IAAI7M,CAAG;AAChE,MAAM4Q,MAA8B;AAClC,UAAM,MAAM,6BAA6B;AAG3C,QAAMO,IAAWP,IAA4B;AAC7C,MAAI,EAAEO,KAAY;AAChB,UAAM,MAAM,gCAAgC;AAE9C,EAAAtE,GAAuB,IAAI7M,GAAKmR,CAAQ,GACpCA,MAAa,KACfnR,EAAI,oBAAoB,mBAAmBkQ,EAAyB;AAEtE,QAAMlgB,IAAS0F,GAA6BhE,CAAW;AACvD,MAAIoE,GAAgB9F,CAAM;AACxB,IAAAohB,GAA4BphB,CAAM,GAElC0B,EAAY,kBAAkB;AAAA,WACrB1B;AAEP,UAAM,MAAM,8FAA8F;AAG9G,QAAM6gB,IAAgBd,GAA4Bre,CAAW;AAC7D,WAAS,IAAI,GAAG,IAAImf,EAAc,QAAQ;AACxC,IAAAA,EAAc;AAIhB,EAAAnf,EAAY,wBAAwB;AACtC;AACA,SAAS0f,GAA4BphB,GAAQ;AAC3C,MAAIA,EAAO,kBAAkB,MAAM;AAEjC,UAAMogB,IAAUxW,GAAsB5J,CAAM,GAEtCsgB,IADaF,EAAQA,EAAQ,SAAS,GACX;AACjC,IAAIH,GAAuB,IAAIK,CAAa,MAAMtgB,KAChDigB,GAAuB,OAAOK,CAAa;AAAA,EAEjD;AAEI,IAAAL,GAAuB,OAAOjgB,EAAO,IAAI;AAE7C;AACA,SAASqhB,KAAmC;AAC1C,EAAAvE,KAAiC;AACnC;AACA,SAASwE,GAA6BtyB,GAAQuyB,GAAO3c,GAAQ1O,GAAKmnB,GAAW;AAC3E,EAAAH,KAA2B,CAACluB,GAAQuyB,GAAO3c,GAAQ1O,GAAKmnB,CAAS;AACnE;AAUA,SAASmE,GAAYC,GAAcC,GAAkBC,GAAqB;AACxE,EAAA5a;AACA,QAAM7Q,IAAMurB,EAAa,OACnBrZ,IAASqZ,EAAa;AAC5B,MAAIrZ,MAAW;AACb;AAEF,QAAM9H,IAAYwQ,GAAoC2Q,CAAY;AAClE,MAAIG,IAAiB;AACrB,MAAI1gB,EAAkBZ,CAAS,KAAKohB,GAAkB;AACpD,UAAM1Q,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU;AACxB,IAAI0Q,EAAO,QAAQ9a,MACjB2rB,GAA4B7Q,GAAQyQ,GAAcrZ,GAAQqZ,EAAa,sBAAsBA,EAAa,eAAc,CAAE,GAC1HG,IAAiB,KAEfzS,EAAM,QAAQjZ,MAChB2rB,GAA4B1S,GAAOsS,GAAcrZ,GAAQqZ,EAAa,sBAAsBA,EAAa,eAAc,CAAE,GACzHG,IAAiB;AAAA,EAEvB;AAAS,IAAI9B,GAAiBxf,CAAS,KAAKohB,KAAoBD,EAAa,gBACzEA,EAAa,eAAc;AAE7B,MAAIvgB,EAAkBZ,CAAS,KAAKohB,KAAoB,CAACE,GAAgB;AAEvE,UAAME,IAAQL,EAAa;AAC3B,IAAA/Z,GAAiB+Z,CAAY,GAC7BM,GAA0CzhB,GAAW8H,GAAQ0Z,GAAO,EAAE;AAAA,EAC1E;AACI,IAAApa,GAAiB+Z,CAAY;AAE/B,EAAI,CAACE,KAAuB,CAACnQ,GAAoBpJ,CAAM,KAAK,CAACA,EAAO,WAAY,KAAIA,EAAO,aACzFoZ,GAAYpZ,GAAQsZ,CAAgB,GAElCA,KAAoB/R,GAAYvH,CAAM,KAAKA,EAAO,QAAO,KAC3DA,EAAO,UAAS;AAEpB;AACA,MAAM4Z,GAAY;AAAA,EAyBhB,OAAO,UAAU;AAEb,UAAM,MAAM,qBAAqB,KAAK,qCAAqC;AAAA,EAE9E;AAAA,EAQD,OAAO,MAAMC,GAAO;AAEhB,UAAM,MAAM,qBAAqB,KAAK,mCAAmC;AAAA,EAE5E;AAAA,EAoDD,eAAe9H,GAAU;AACvB,SAAK,WAAWA,EAAS,UACzB,KAAK,SAASA,EAAS,QACvB,KAAK,SAASA,EAAS;AAAA,EACxB;AAAA,EAID,YAAYjkB,GAAK;AACf,SAAK,SAAS,KAAK,YAAY,QAAO,GACtC,KAAK,WAAW,MAChB,KAAK,SAAS,MACd,KAAK,SAAS,MACd0Q,GAAY,MAAM1Q,CAAG,GAEf,KAAK,WAAW,WAClB6Q,MACAmb,GAAyB,KAAK,QAAQ,KAAK,WAAW;AAAA,EAG3D;AAAA,EAMD,UAAU;AACR,WAAO,KAAK;AAAA,EACb;AAAA,EACD,WAAW;AAEP,UAAM,MAAM,qBAAqB,KAAK,YAAY,sCAAsC;AAAA,EAE3F;AAAA,EAOD,aAAa;AACX,QAAI5Y,IAAU,KAAK;AACnB,WAAOA,MAAY,QAAM;AACvB,UAAIA,MAAY;AACd,eAAO;AAET,YAAM3R,IAAO8Q,GAAca,CAAO;AAClC,UAAI3R,MAAS;AACX;AAEF,MAAA2R,IAAU3R,EAAK;AAAA,IAChB;AACD,WAAO;AAAA,EACR;AAAA,EASD,WAAW2I,GAAW;AACpB,UAAM6hB,IAAkB7hB,KAAaC;AACrC,QAAI4hB,KAAmB;AACrB,aAAO;AAET,UAAMC,IAAaD,EAAgB,SAAQ,EAAG,KAAK,CAAAj1B,MAAKA,EAAE,UAAU,KAAK,KAAK;AAC9E,QAAIgV,EAAY,IAAI;AAClB,aAAOkgB;AAKT,QADgClhB,EAAkBihB,CAAe,KAAKA,EAAgB,OAAO,SAAS,aAAaA,EAAgB,MAAM,SAAS,WACrH;AAC3B,UAAIA,EAAgB;AAClB,eAAO;AAET,YAAMpR,IAAa,KAAK;AACxB,UAAI9O,GAAiB,IAAI,KAAK,KAAK,SAAQ,KAAM8O,GAAY;AAC3D,cAAMsR,IAAaF,EAAgB,WAAU,IAAKA,EAAgB,QAAQA,EAAgB,QACpFG,IAAeD,EAAW;AAChC,YAAIA,EAAW,WAAWC,EAAa,gBAAe,KAAMA,EAAa,GAAGvR,CAAU,KAAKuR,EAAa,oBAAqB,EAAC,GAAG,IAAI;AACnI,iBAAO;AAAA,MAEV;AAAA,IACF;AACD,WAAOF;AAAA,EACR;AAAA,EAKD,SAAS;AAEP,WAAO,KAAK;AAAA,EACb;AAAA,EAKD,uBAAuB;AACrB,UAAMha,IAAS,KAAK;AACpB,QAAIA,MAAW;AACb,aAAO;AAET,QAAIzQ,IAAOyQ,EAAO,iBACd0Z,IAAQ;AACZ,WAAOnqB,MAAS,QAAM;AACpB,UAAI,KAAK,GAAGA,CAAI;AACd,eAAOmqB;AAET,MAAAA,KACAnqB,IAAOA,EAAK;IACb;AACD,WAAO;AAAA,EACR;AAAA,EAKD,YAAY;AACV,UAAMyQ,IAAS,KAAK,UAAS,EAAG;AAChC,WAAIA,MAAW,OACN,OAEFK,GAAcL,CAAM;AAAA,EAC5B;AAAA,EAKD,mBAAmB;AACjB,UAAMA,IAAS,KAAK;AACpB,QAAIA,MAAW;AAEX,YAAM,MAAM,iBAAiB,KAAK,yBAAyB;AAG/D,WAAOA;AAAA,EACR;AAAA,EAOD,qBAAqB;AACnB,QAAIzQ,IAAO;AACX,WAAOA,MAAS,QAAM;AACpB,YAAMyQ,IAASzQ,EAAK;AACpB,UAAI6Z,GAAoBpJ,CAAM,GAAG;AAC/B,YAAI,EAAEvF,EAAelL,CAAI,KAAKA,MAAS,QAAQsK,GAAiBtK,CAAI;AAClE,gBAAM,MAAM,uDAAuD;AAErE,eAAOA;AAAA,MACR;AACD,MAAAA,IAAOyQ;AAAA,IACR;AACD,WAAO;AAAA,EACR;AAAA,EAOD,4BAA4B;AAC1B,UAAMA,IAAS,KAAK;AACpB,QAAIA,MAAW;AAEX,YAAM,MAAM,iBAAiB,KAAK,qCAAqC;AAG3E,WAAOA;AAAA,EACR;AAAA,EAOD,aAAa;AACX,UAAMma,IAAU,CAAA;AAChB,QAAI5qB,IAAO,KAAK;AAChB,WAAOA,MAAS;AACd,MAAA4qB,EAAQ,KAAK5qB,CAAI,GACjBA,IAAOA,EAAK;AAEd,WAAO4qB;AAAA,EACR;AAAA,EAOD,gBAAgB;AACd,UAAMA,IAAU,CAAA;AAChB,QAAI5qB,IAAO,KAAK;AAChB,WAAOA,MAAS;AACd,MAAA4qB,EAAQ,KAAK5qB,EAAK,KAAK,GACvBA,IAAOA,EAAK;AAEd,WAAO4qB;AAAA,EACR;AAAA,EAOD,qBAAqB;AAEnB,UAAMpH,IADO,KAAK,YACG;AACrB,WAAOA,MAAY,OAAO,OAAO1S,GAAc0S,CAAO;AAAA,EACvD;AAAA,EAOD,sBAAsB;AACpB,UAAMqH,IAAW,CAAA,GACXpa,IAAS,KAAK;AACpB,QAAIA,MAAW;AACb,aAAOoa;AAET,QAAI7qB,IAAOyQ,EAAO;AAClB,WAAOzQ,MAAS,QACV,CAAAA,EAAK,GAAG,IAAI;AAGhB,MAAA6qB,EAAS,KAAK7qB,CAAI,GAClBA,IAAOA,EAAK;AAEd,WAAO6qB;AAAA,EACR;AAAA,EAOD,iBAAiB;AAEf,UAAMpH,IADO,KAAK,YACG;AACrB,WAAOA,MAAY,OAAO,OAAO3S,GAAc2S,CAAO;AAAA,EACvD;AAAA,EAOD,kBAAkB;AAChB,UAAMoH,IAAW,CAAA;AACjB,QAAI7qB,IAAO,KAAK;AAChB,WAAOA,MAAS;AACd,MAAA6qB,EAAS,KAAK7qB,CAAI,GAClBA,IAAOA,EAAK;AAEd,WAAO6qB;AAAA,EACR;AAAA,EAQD,kBAAkB7qB,GAAM;AACtB,UAAMrK,IAAI,KAAK,cACTE,IAAImK,EAAK;AACf,IAAIkL,EAAe,IAAI,KACrBvV,EAAE,QAAQ,IAAI,GAEZuV,EAAelL,CAAI,KACrBnK,EAAE,QAAQmK,CAAI;AAEhB,UAAM8qB,IAAUn1B,EAAE,QACZo1B,IAAUl1B,EAAE;AAClB,QAAIi1B,MAAY,KAAKC,MAAY,KAAKp1B,EAAEm1B,IAAU,OAAOj1B,EAAEk1B,IAAU;AACnE,aAAO;AAET,UAAMC,IAAO,IAAI,IAAIn1B,CAAC;AACtB,aAASoK,IAAI,GAAGA,IAAI6qB,GAAS7qB,KAAK;AAChC,YAAMgrB,IAAWt1B,EAAEsK;AACnB,UAAI+qB,EAAK,IAAIC,CAAQ;AACnB,eAAOA;AAAA,IAEV;AACD,WAAO;AAAA,EACR;AAAA,EAQD,GAAG/rB,GAAQ;AACT,WAAIA,KAAU,OACL,KAEF,KAAK,UAAUA,EAAO;AAAA,EAC9B;AAAA,EAOD,SAASoK,GAAY;AACnB,QAAI,SAASA;AACX,aAAO;AAET,QAAIA,EAAW,WAAW,IAAI;AAC5B,aAAO;AAET,QAAI,KAAK,WAAWA,CAAU;AAC5B,aAAO;AAET,UAAM4hB,IAAiB,KAAK,kBAAkB5hB,CAAU;AACxD,QAAI6hB,IAAS,GACTC,IAAS,GACTprB,IAAO;AACX,eAAa;AACX,YAAMyQ,IAASzQ,EAAK;AACpB,UAAIyQ,MAAWya,GAAgB;AAC7B,QAAAC,IAASnrB,EAAK;AACd;AAAA,MACD;AACD,MAAAA,IAAOyQ;AAAA,IACR;AAED,SADAzQ,IAAOsJ,OACM;AACX,YAAMmH,IAASzQ,EAAK;AACpB,UAAIyQ,MAAWya,GAAgB;AAC7B,QAAAE,IAASprB,EAAK;AACd;AAAA,MACD;AACD,MAAAA,IAAOyQ;AAAA,IACR;AACD,WAAO0a,IAASC;AAAA,EACjB;AAAA,EAOD,WAAW9hB,GAAY;AACrB,UAAM/K,IAAM,KAAK;AACjB,QAAIA,MAAQ+K,EAAW;AACrB,aAAO;AAET,QAAItJ,IAAOsJ;AACX,WAAOtJ,MAAS,QAAM;AACpB,UAAIA,EAAK,UAAUzB;AACjB,eAAO;AAET,MAAAyB,IAAOA,EAAK;IACb;AACD,WAAO;AAAA,EACR;AAAA,EASD,gBAAgBsJ,GAAY;AAC1B,UAAM+hB,IAAW,KAAK,SAAS/hB,CAAU,GACnC2N,IAAQ,CAAA,GACRqU,IAAU,oBAAI;AACpB,QAAItrB,IAAO;AACX,WACMA,MAAS,QADF;AAIX,YAAMzB,IAAMyB,EAAK;AAKjB,UAJKsrB,EAAQ,IAAI/sB,CAAG,MAClB+sB,EAAQ,IAAI/sB,CAAG,GACf0Y,EAAM,KAAKjX,CAAI,IAEbA,MAASsJ;AACX;AAEF,YAAMpJ,IAAQgL,EAAelL,CAAI,IAAIqrB,IAAWrrB,EAAK,kBAAkBA,EAAK,aAAY,IAAK;AAC7F,UAAIE,MAAU,MAAM;AAClB,QAAAF,IAAOE;AACP;AAAA,MACD;AACD,YAAMkQ,IAAcib,IAAWrrB,EAAK,eAAc,IAAKA,EAAK;AAC5D,UAAIoQ,MAAgB,MAAM;AACxB,QAAApQ,IAAOoQ;AACP;AAAA,MACD;AACD,YAAMK,IAASzQ,EAAK;AAIpB,UAHKsrB,EAAQ,IAAI7a,EAAO,KAAK,KAC3BwG,EAAM,KAAKxG,CAAM,GAEfA,MAAWnH;AACb;AAEF,UAAIiiB,IAAgB,MAChBN,IAAWxa;AACf,SAAG;AACD,YAAIwa,MAAa;AAEb,gBAAM,MAAM,mCAAmC;AAKnD,YAFAM,IAAgBF,IAAWJ,EAAS,eAAc,IAAKA,EAAS,sBAChEA,IAAWA,EAAS,aAChBA,MAAa;AACf,UAAIM,MAAkB,QAAQ,CAACD,EAAQ,IAAIL,EAAS,KAAK,KACvDhU,EAAM,KAAKgU,CAAQ;AAAA;AAGrB;AAAA,MAEV,SAAeM,MAAkB;AAC3B,MAAAvrB,IAAOurB;AAAA,IACR;AACD,WAAKF,KACHpU,EAAM,QAAO,GAERA;AAAA,EACR;AAAA,EAMD,UAAU;AAER,UAAM0G,IADSlR,KACY;AAC3B,WAAOkR,MAAgB,QAAQA,EAAY,IAAI,KAAK,KAAK;AAAA,EAC1D;AAAA,EAOD,YAAY;AACV,UAAMnN,IAASM,GAAc,KAAK,KAAK;AACvC,QAAIN,MAAW;AAEX,YAAM,MAAM,uJAAuJ;AAGvK,WAAOA;AAAA,EACR;AAAA,EAQD,cAAc;AACZ,IAAApB;AACA,UAAME,IAAcC,MACdlH,IAASoE,MACTmD,IAAUN,EAAY,UACtB/Q,IAAM,KAAK,OAEXue,IAAa,KAAK,aAClB0O,IAAiBnjB,EAAO,iBACxBM,IAAYC;AAIlB,QAHID,MAAc,QAChBA,EAAU,eAAe,IAAI,GAE3B6iB,EAAe,IAAIjtB,CAAG;AAExB,aAAAgS,GAAwBuM,CAAU,GAC3BA;AAET,UAAME,IAAcH,GAAqBC,CAAU;AACnD,WAAA0O,EAAe,IAAIjtB,CAAG,GACtBgS,GAAwByM,CAAW,GAEnCpN,EAAQ,IAAIrR,GAAKye,CAAW,GACrBA;AAAA,EACR;AAAA,EAQD,iBAAiB;AACf,WAAO;AAAA,EACR;AAAA,EAMD,qBAAqB;AACnB,WAAO,KAAK,eAAgB,EAAC;AAAA,EAC9B;AAAA,EAgBD,UAAUyO,GAASC,GAAS;AAExB,UAAM,MAAM,qCAAqC;AAAA,EAEpD;AAAA,EAYD,UAAUC,GAAWC,GAAMH,GAAS;AAEhC,UAAM,MAAM,qCAAqC;AAAA,EAEpD;AAAA,EAUD,UAAUpjB,GAAQ;AAEhB,WAAO;AAAA,MACL,SAFc,KAAK,UAAUA,EAAO,SAASA,CAAM;AAAA,IAGzD;AAAA,EACG;AAAA,EASD,aAAa;AAET,UAAM,MAAM,sCAAsC;AAAA,EAErD;AAAA,EASD,OAAO,WAAWwjB,GAAiB;AAE/B,UAAM,MAAM,qBAAqB,KAAK,wCAAwC;AAAA,EAEjF;AAAA,EAUD,OAAO,YAAY;AACjB,WAAO;AAAA,EACR;AAAA,EAYD,OAAO7B,GAAqB;AAC1B,IAAAH,GAAY,MAAM,IAAMG,CAAmB;AAAA,EAC5C;AAAA,EASD,QAAQ8B,GAAaC,GAAiB;AACpC,IAAA3c;AACA,QAAIzG,IAAYC;AAChB,IAAID,MAAc,SAChBA,IAAYA,EAAU,UAExBwR,GAA4B,MAAM2R,CAAW;AAC7C,UAAM7tB,IAAO,KAAK,aACZ+tB,IAAe,KAAK,OACpBztB,IAAMutB,EAAY,OAClBG,IAAsBH,EAAY,eAClC5b,IAAiB,KAAK,iBAAkB,EAAC,YAAW,GACpDgc,IAAOhc,EAAe;AAC5B,IAAAH,GAAiBkc,CAAmB;AACpC,UAAM9b,IAAclS,EAAK,sBACnBmS,IAAcnS,EAAK,kBACnBulB,IAAUvlB,EAAK,QACfwlB,IAAUxlB,EAAK,QACf0R,IAAY1R,EAAK;AAEvB,QADA4rB,GAAY5rB,GAAM,IAAO,EAAI,GACzBkS,MAAgB;AAClB,MAAAD,EAAe,UAAU3R;AAAA,SACpB;AACL,YAAM+R,IAAsBH,EAAY;AACxC,MAAAG,EAAoB,SAAS/R;AAAA,IAC9B;AAED,QADA0tB,EAAoB,SAASzI,GACzBpT,MAAgB;AAClB,MAAAF,EAAe,SAAS3R;AAAA,SACnB;AACL,YAAM8R,IAAsBD,EAAY;AACxC,MAAAC,EAAoB,SAAS9R;AAAA,IAC9B;AAID,QAHA0tB,EAAoB,SAASxI,GAC7BwI,EAAoB,WAAWtc,GAC/BO,EAAe,SAASgc,GACpBH,GAAiB;AACnB,UAAI,EAAE7gB,EAAe,IAAI,KAAKA,EAAe+gB,CAAmB;AAC9D,cAAM,MAAM,sDAAsD;AAEpE,WAAK,YAAW,EAAG,QAAQ,CAAA/rB,MAAS;AAClC,QAAA+rB,EAAoB,OAAO/rB,CAAK;AAAA,MACxC,CAAO;AAAA,IACF;AACD,QAAIqJ,EAAkBZ,CAAS,GAAG;AAChC8C,MAAAA,GAAc9C,CAAS;AACvB,YAAM0Q,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU;AACxB,MAAI0Q,EAAO,QAAQ2S,KACjBG,GAAyB9S,GAAQ4S,CAAmB,GAElDzU,EAAM,QAAQwU,KAChBG,GAAyB3U,GAAOyU,CAAmB;AAAA,IAEtD;AACD,WAAIlb,GAAoB,MAAKib,KAC3Brb,GAAmBpS,CAAG,GAEjB0tB;AAAA,EACR;AAAA,EASD,YAAYG,GAAcrC,IAAmB,IAAM;AACjD,IAAA3a,MACA+K,GAA4B,MAAMiS,CAAY;AAC9C,UAAMC,IAAe,KAAK,eACpBC,IAAuBF,EAAa,eACpCpc,IAAYsc,EAAqB,aACjC3jB,IAAYC;AAClB,QAAI2jB,IAA+B,IAC/BC,IAA8B;AAClC,QAAIxc,MAAc,MAAM;AAEtB,YAAMyc,IAAWL,EAAa;AAE9B,UADArc,GAAiBuc,CAAoB,GACjC/iB,EAAkBZ,CAAS,GAAG;AAChC,cAAM+jB,IAAe1c,EAAU,OACzBqJ,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU;AACxB,QAAA4jB,IAA+BlT,EAAO,SAAS,aAAaA,EAAO,QAAQqT,KAAgBrT,EAAO,WAAWoT,IAAW,GACxHD,IAA8BhV,EAAM,SAAS,aAAaA,EAAM,QAAQkV,KAAgBlV,EAAM,WAAWiV,IAAW;AAAA,MACrH;AAAA,IACF;AACD,UAAMrc,IAAc,KAAK,kBACnBF,IAAiB,KAAK,iBAAkB,EAAC,YAAW,GACpDyc,IAAYL,EAAqB,OACjC7I,IAAU4I,EAAa;AAC7B,QAAIjc,MAAgB;AAClB,MAAAF,EAAe,SAASyc;AAAA,SACnB;AACL,YAAMtc,IAAsBD,EAAY;AACxC,MAAAC,EAAoB,SAASsc;AAAA,IAC9B;AAMD,QALAzc,EAAe,UACfmc,EAAa,SAASM,GACtBL,EAAqB,SAAS7I,GAC9B6I,EAAqB,SAASD,EAAa,OAC3CC,EAAqB,WAAWD,EAAa,UACzCtC,KAAoBxgB,EAAkBZ,CAAS,GAAG;AACpD,YAAMwhB,IAAQ,KAAK;AACnB,MAAAC,GAA0CzhB,GAAWuH,GAAgBia,IAAQ,CAAC;AAC9E,YAAMyC,IAAoB1c,EAAe;AACzC,MAAIqc,KACF5jB,EAAU,OAAO,IAAIikB,GAAmBzC,IAAQ,GAAG,SAAS,GAE1DqC,KACF7jB,EAAU,MAAM,IAAIikB,GAAmBzC,IAAQ,GAAG,SAAS;AAAA,IAE9D;AACD,WAAOiC;AAAA,EACR;AAAA,EASD,aAAaA,GAAcrC,IAAmB,IAAM;AAClD,IAAA3a,MACA+K,GAA4B,MAAMiS,CAAY;AAC9C,UAAMC,IAAe,KAAK,eACpBC,IAAuBF,EAAa,eACpCO,IAAYL,EAAqB;AACvC,IAAAvc,GAAiBuc,CAAoB;AACrC,UAAMnc,IAAc,KAAK,sBACnBD,IAAiB,KAAK,iBAAkB,EAAC,YAAW,GACpDsT,IAAU6I,EAAa,QAEvBlC,IAAQ,KAAK;AACnB,QAAIha,MAAgB;AAClB,MAAAD,EAAe,UAAUyc;AAAA,SACpB;AACL,YAAMrc,IAAsBH,EAAY;AACxC,MAAAG,EAAoB,SAASqc;AAAA,IAC9B;AACD,IAAAzc,EAAe,UACfmc,EAAa,SAASM,GACtBL,EAAqB,SAAS9I,GAC9B8I,EAAqB,SAASD,EAAa,OAC3CC,EAAqB,WAAWD,EAAa;AAC7C,UAAM1jB,IAAYC;AAClB,QAAImhB,KAAoBxgB,EAAkBZ,CAAS,GAAG;AACpD,YAAM8H,IAAS,KAAK;AACpB,MAAA2Z,GAA0CzhB,GAAW8H,GAAQ0Z,CAAK;AAAA,IACnE;AACD,WAAOiC;AAAA,EACR;AAAA,EAQD,mBAAmB;AACjB,WAAO;AAAA,EACR;AAAA,EAMD,0BAA0B;AACxB,WAAOS,GAAoB;AAAA,EAC5B;AAAA,EACD,cAAc;AACZ,WAAO,KAAK;EACb;AAAA,EACD,YAAY;AACV,WAAO,KAAK,WAAW,GAAG,CAAC;AAAA,EAC5B;AAAA,EAQD,eAAe7jB,GAAcC,GAAa;AACxC,IAAAmG;AACA,UAAMe,IAAc,KAAK,sBACnBM,IAAS,KAAK;AACpB,QAAIN,MAAgB;AAClB,aAAOM,EAAO,OAAO,GAAG,CAAC;AAE3B,QAAIvF,EAAeiF,CAAW;AAC5B,aAAOA,EAAY;AACd,QAAI,CAAC5F,EAAY4F,CAAW,GAAG;AACpC,YAAMga,IAAQha,EAAY,qBAAoB,IAAK;AACnD,aAAOM,EAAO,OAAO0Z,GAAOA,CAAK;AAAA,IAClC;AACD,WAAOha,EAAY,OAAOnH,GAAcC,CAAW;AAAA,EACpD;AAAA,EAQD,WAAWD,GAAcC,GAAa;AACpC,IAAAmG;AACA,UAAMgB,IAAc,KAAK,kBACnBK,IAAS,KAAK;AACpB,QAAIL,MAAgB;AAClB,aAAOK,EAAO;AAEhB,QAAIvF,EAAekF,CAAW;AAC5B,aAAOA,EAAY,OAAO,GAAG,CAAC;AACzB,QAAI,CAAC7F,EAAY6F,CAAW,GAAG;AACpC,YAAM+Z,IAAQ/Z,EAAY;AAC1B,aAAOK,EAAO,OAAO0Z,GAAOA,CAAK;AAAA,IAClC;AACD,WAAO/Z,EAAY,OAAOpH,GAAcC,CAAW;AAAA,EACpD;AAAA,EAOD,YAAY;AACV,SAAK,YAAW;AAAA,EACjB;AACH;AACA,SAASshB,GAAyBjyB,GAAMqe,GAAO;AAC7C,QAAMnJ,IAAiBf,GAAiB,EAAC,OAAO,IAAInU,CAAI;AAExD,MAAIkV,MAAmB;AAEnB,UAAM,MAAM,yCAAyCmJ,EAAM,wDAAwD;AAGvH,QAAMmW,IAActf,EAAe;AACnC,MAAIsf,MAAgBnW;AAEhB,UAAM,MAAM,qBAAqBre,aAAgBqe,EAAM,uCAAuCmW,EAAY,yBAAyB;AAGzI;AASA,SAASC,GAAiB/sB,GAAMgtB,GAAeC,GAAc;AAC3D,QAAMC,IAAgBF,EAAc,iBAAkB,EAAC,aAAY;AACnE,MAAIG,IAAUH;AACd,QAAMI,IAAgB,CAACJ,CAAa;AACpC,SAAOG,MAAYD,KAAe;AAChC,QAAI,CAACC,EAAQ;AAET,YAAM,MAAM,yEAAyE;AAGzF,IAAAA,IAAUA,EAAQ,kBAClBC,EAAc,KAAKD,CAAO;AAAA,EAC3B;AACD,MAAI9e,IAAcrO;AAClB,aAAWosB,KAAgBgB;AACzB,IAAA/e,IAAcA,EAAY,YAAY+d,CAAY;AAEtD;AAWA,MAAMiB,WAAsBhD,GAAY;AAAA,EACtC,OAAO,UAAU;AACf,WAAO;AAAA,EACR;AAAA,EACD,OAAO,MAAMrqB,GAAM;AACjB,WAAO,IAAIqtB,GAAcrtB,EAAK,KAAK;AAAA,EACpC;AAAA,EACD,YAAYzB,GAAK;AACf,UAAMA,CAAG;AAAA,EACV;AAAA,EACD,iBAAiB;AACf,WAAO;AAAA;AAAA,EACR;AAAA,EACD,YAAY;AACV,WAAO,SAAS,cAAc,IAAI;AAAA,EACnC;AAAA,EACD,YAAY;AACV,WAAO;AAAA,EACR;AAAA,EACD,OAAO,YAAY;AACjB,WAAO;AAAA,MACL,IAAI,CAAAyB,MACEstB,GAAuBttB,CAAI,KAAKutB,GAAuBvtB,CAAI,IACtD,OAEF;AAAA,QACL,YAAYwtB;AAAA,QACZ,UAAU;AAAA,MACpB;AAAA,IAEA;AAAA,EACG;AAAA,EACD,OAAO,WAAWC,GAAyB;AACzC,WAAOC,GAAoB;AAAA,EAC5B;AAAA,EACD,aAAa;AACX,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACf;AAAA,EACG;AACH;AACA,SAASF,GAAyBxtB,GAAM;AACtC,SAAO;AAAA,IACL,MAAM0tB,GAAsB;AAAA,EAChC;AACA;AACA,SAASA,KAAuB;AAC9B,SAAO1T,GAAsB,IAAIqT,GAAa,CAAE;AAClD;AACA,SAASre,GAAiBhP,GAAM;AAC9B,SAAOA,aAAgBqtB;AACzB;AACA,SAASC,GAAuBttB,GAAM;AACpC,QAAMkY,IAAgBlY,EAAK;AAC3B,MAAIkY,MAAkB,QAAQgE,GAAehE,CAAa,GAAG;AAC3D,UAAMmE,IAAanE,EAAc;AACjC,QAAImE,MAAerc,KAAQqc,EAAW,gBAAgBrc,KAAQ2tB,GAAwBtR,CAAU,GAAG;AACjG,YAAMuR,IAAY1V,EAAc;AAChC,UAAI0V,MAAc5tB,KAAQ4tB,EAAU,oBAAoB5tB,KAAQ2tB,GAAwBC,CAAS;AAC/F,eAAO;AAAA,IAEV;AAAA,EACF;AACD,SAAO;AACT;AACA,SAASL,GAAuBvtB,GAAM;AACpC,QAAMkY,IAAgBlY,EAAK;AAC3B,MAAIkY,MAAkB,QAAQgE,GAAehE,CAAa,GAAG;AAE3D,UAAMmE,IAAanE,EAAc;AACjC,QAAImE,MAAerc,KAAQqc,EAAW,gBAAgBrc,KAAQ2tB,GAAwBtR,CAAU;AAC9F,aAAO;AAIT,UAAMuR,IAAY1V,EAAc;AAChC,QAAI0V,MAAc5tB,KAAQ4tB,EAAU,oBAAoB5tB,KAAQ2tB,GAAwBC,CAAS;AAC/F,aAAO;AAAA,EAEV;AACD,SAAO;AACT;AACA,SAASD,GAAwB3tB,GAAM;AACrC,SAAOA,EAAK,aAAamF,MAAiB,kBAAkB,KAAKnF,EAAK,eAAe,EAAE;AACzF;AAUA,SAAS6tB,GAAmB7tB,GAAM3I,GAAQ;AACxC,SAAIA,IAASyO,KACJ,SAELzO,IAAS4O,KACJ,SAEL5O,IAAS0O,KACJ,QAEL1O,IAAS2O,KACJ,QAEF;AACT;AACA,SAAS8nB,GAAmB9tB,GAAM3I,GAAQ;AACxC,SAAIA,IAASqO,KACJ,WAELrO,IAASsO,KACJ,OAEF;AACT;AACA,SAASooB,GAAuB9U,GAAK+U,GAAYrL,GAAYna,GAAKylB,GAAgB;AAChF,QAAMC,IAAe1lB,EAAI;AAEzB,MAAIb,IAAasO,GAAwBgY,GAAgB,MAAM;AAC/D,EAAItmB,MAAe,UACjBumB,EAAa,IAAI,GAAGvmB,CAAU,GAOhCA,IAAasO,GAAwBgY,GAAgB,wBAAwB;AAC7E,MAAIE,IAA4B;AAChC,QAAMC,IAA6BJ,IAAanoB,MAAgBmoB,IAAapoB,IACvEyoB,IAA6B1L,IAAa9c,MAAgB8c,IAAa/c;AAC7E,EAAI+B,MAAe,WACb0mB,KACFF,IAA4B,IACvBC,KACHF,EAAa,IAAI,GAAGvmB,CAAU,KAEvBymB,KACTF,EAAa,OAAO,GAAGvmB,CAAU;AAGrC,aAAWpJ,KAAO6I,IAAqB;AAErC,UAAMknB,IAAOlnB,GADE7I;AAGf,QADAoJ,IAAasO,GAAwBgY,GAAgB1vB,CAAG,GACpDoJ,MAAe;AACjB,UAAIgb,IAAa2L,GAAM;AACrB,YAAIH,MAA8B5vB,MAAQ,eAAeA,MAAQ,kBAAkB;AACjF,UAAIyvB,IAAaM,KACfJ,EAAa,OAAO,GAAGvmB,CAAU;AAEnC;AAAA,QACD;AACD,SAAK,EAAAqmB,IAAaM,MAAeF,KAA8B7vB,MAAQ,eAAeA,MAAQ,oBAC5F2vB,EAAa,IAAI,GAAGvmB,CAAU;AAAA,MAExC;AAAa,QAAIqmB,IAAaM,KACtBJ,EAAa,OAAO,GAAGvmB,CAAU;AAAA,EAGtC;AACH;AACA,SAAS4mB,GAAiB54B,GAAGE,GAAG;AAC9B,QAAMi1B,IAAUn1B,EAAE,QACZo1B,IAAUl1B,EAAE;AAClB,MAAI24B,IAAO,GACPC,IAAQ;AACZ,SAAOD,IAAO1D,KAAW0D,IAAOzD,KAAWp1B,EAAE64B,OAAU34B,EAAE24B;AACvD,IAAAA;AAEF,SAAOC,IAAQD,IAAO1D,KAAW2D,IAAQD,IAAOzD,KAAWp1B,EAAEm1B,IAAU2D,IAAQ,OAAO54B,EAAEk1B,IAAU0D,IAAQ;AACxG,IAAAA;AAEF,SAAO,CAACD,GAAM1D,IAAU0D,IAAOC,GAAO54B,EAAE,MAAM24B,GAAMzD,IAAU0D,CAAK,CAAC;AACtE;AACA,SAASC,GAAeC,GAAUnmB,GAAKxI,GAAM;AAC3C,QAAMqc,IAAa7T,EAAI,YACjBmK,IAAc3S,EAAK,eAGnBkJ,IAAOylB,KADEhc,IAAc9L,KAAqB;AAElD,MAAIwV,KAAc;AAChB,IAAA7T,EAAI,cAAcU;AAAA,OACb;AACL,UAAM0lB,IAAYvS,EAAW;AAC7B,QAAIuS,MAAc1lB;AAChB,UAAIyJ,KAAejO,IAAY;AAG7B,cAAM,CAACylB,GAAO0E,GAAQC,CAAM,IAAIP,GAAiBK,GAAW1lB,CAAI;AAChE,QAAI2lB,MAAW,KAEbxS,EAAW,WAAW8N,GAAO0E,CAAM,GAGrCxS,EAAW,WAAW8N,GAAO2E,CAAM;AAAA,MAC3C;AACQ,QAAAzS,EAAW,YAAYnT;AAAA,EAG5B;AACH;AACA,SAAS6lB,GAAmBC,GAAUhvB,GAAMivB,GAAU53B,GAAQ6R,GAAMrL,GAAQ;AAC1E,EAAA6wB,GAAexlB,GAAM8lB,GAAUhvB,CAAI;AAGnC,QAAMiuB,IAFQpwB,EAAO,MAEQ;AAC7B,EAAIowB,MAAmB,UACrBF,GAAuBkB,GAAU,GAAG53B,GAAQ23B,GAAUf,CAAc;AAExE;AACA,SAASiB,GAAgB/yB,GAAS8c,GAAK;AACrC,QAAMkW,IAAK,SAAS,cAAclW,CAAG;AACrC,SAAAkW,EAAG,YAAYhzB,CAAO,GACfgzB;AACT;SAMA,cAAuB9E,GAAY;AAAA,EASjC,OAAO,UAAU;AACf,WAAO;AAAA,EACR;AAAA,EACD,OAAO,MAAMrqB,GAAM;AACjB,WAAO,IAAIovB,GAASpvB,EAAK,QAAQA,EAAK,KAAK;AAAA,EAC5C;AAAA,EACD,eAAewiB,GAAU;AACvB,UAAM,eAAeA,CAAQ,GAC7B,KAAK,WAAWA,EAAS,UACzB,KAAK,UAAUA,EAAS,SACxB,KAAK,SAASA,EAAS,QACvB,KAAK,WAAWA,EAAS;AAAA,EAC1B;AAAA,EACD,YAAYtZ,GAAM3K,GAAK;AACrB,UAAMA,CAAG,GACT,KAAK,SAAS2K,GACd,KAAK,WAAW,GAChB,KAAK,UAAU,IACf,KAAK,SAAS,GACd,KAAK,WAAW;AAAA,EACjB;AAAA,EAQD,YAAY;AAEV,WADa,KAAK,YACN;AAAA,EACb;AAAA,EASD,YAAY;AAEV,WADa,KAAK,YACN;AAAA,EACb;AAAA,EAOD,UAAU;AACR,UAAMjL,IAAO,KAAK;AAClB,WAAOwJ,GAAkBxJ,EAAK;AAAA,EAC/B;AAAA,EAOD,WAAW;AAET,WADa,KAAK,YACN;AAAA,EACb;AAAA,EAQD,UAAU;AAER,WADa,KAAK,YACN,WAAWuH;AAAA,EACxB;AAAA,EAOD,cAAc;AACZ,WAAO,KAAK,UAAUuL;EACvB;AAAA,EAQD,cAAc;AAEZ,WADa,KAAK,YACN,WAAWtL;AAAA,EACxB;AAAA,EAMD,kBAAkB;AAEhB,YADa,KAAK,YACL,WAAWU,QAAsB;AAAA,EAC/C;AAAA,EAOD,gBAAgB;AAEd,YADa,KAAK,YACL,WAAWC,QAAoB;AAAA,EAC7C;AAAA,EAUD,UAAU9N,GAAM;AACd,UAAM+2B,IAAajoB,GAAoB9O;AACvC,YAAQ,KAAK,cAAc+2B,OAAgB;AAAA,EAC5C;AAAA,EAQD,eAAe;AACb,WAAO,KAAK,WAAW,UAAU,KAAK,WAAW;AAAA,EAClD;AAAA,EAOD,iBAAiB;AAEf,WADa,KAAK,YACN;AAAA,EACb;AAAA,EAOD,eAAe/2B,GAAMsW,GAAiB;AAEpC,UAAMvX,IADO,KAAK,YACE;AACpB,WAAOsX,GAAqBtX,GAAQiB,GAAMsW,CAAe;AAAA,EAC1D;AAAA,EAMD,gBAAgB;AACd,WAAO;AAAA,EACR;AAAA,EAID,UAAU/Q,GAAQwK,GAAQ;AACxB,UAAMhR,IAAS,KAAK,UACdi4B,IAAWzB,GAAmB,MAAMx2B,CAAM,GAC1C43B,IAAWnB,GAAmB,MAAMz2B,CAAM,GAC1C4hB,IAAMqW,MAAa,OAAOL,IAAWK,GACrC9mB,IAAM,SAAS,cAAcyQ,CAAG;AACtC,QAAI+V,IAAWxmB;AACf,IAAI,KAAK,UAAU,MAAM,KACvBA,EAAI,aAAa,cAAc,OAAO,GAEpC8mB,MAAa,SACfN,IAAW,SAAS,cAAcC,CAAQ,GAC1CzmB,EAAI,YAAYwmB,CAAQ;AAE1B,UAAM9lB,IAAO,KAAK;AAClB,IAAA6lB,GAAmBC,GAAU,MAAMC,GAAU53B,GAAQ6R,GAAMrL,CAAM;AACjE,UAAM+rB,IAAQ,KAAK;AACnB,WAAIA,MAAU,OACZphB,EAAI,MAAM,UAAUohB,IAEfphB;AAAA,EACR;AAAA,EACD,UAAUga,GAAUha,GAAK3K,GAAQ;AAC/B,UAAM8wB,IAAW,KAAK,QAChBX,IAAaxL,EAAS,UACtBG,IAAa,KAAK,UAClB4M,IAAe1B,GAAmB,MAAMG,CAAU,GAClDwB,IAAe3B,GAAmB,MAAMlL,CAAU,GAClD8M,IAAe3B,GAAmB,MAAME,CAAU,GAClD0B,IAAe5B,GAAmB,MAAMnL,CAAU;AAGxD,SAFgB4M,MAAiB,OAAOE,IAAeF,QACvCC,MAAiB,OAAOE,IAAeF;AAErD,aAAO;AAET,QAAID,MAAiBC,KAAgBC,MAAiBC,GAAc;AAElE,YAAMC,IAAennB,EAAI;AACzB,UAAImnB,KAAgB;AAEhB,cAAM,MAAM,8CAA8C;AAG9D,YAAMC,IAAe,SAAS,cAAcF,CAAY;AACxD,aAAAX,GAAmBa,GAAc,MAAMF,GAAc/M,GAAYgM,GAAU9wB,CAAM,GACjF2K,EAAI,aAAaonB,GAAcD,CAAY,GACpC;AAAA,IACR;AACD,QAAIX,IAAWxmB;AACf,QAAIgnB,MAAiB,QACfD,MAAiB,SACnBP,IAAWxmB,EAAI,YACXwmB,KAAY;AAEZ,YAAM,MAAM,0CAA0C;AAK9D,IAAAN,GAAeC,GAAUK,GAAU,IAAI;AAGvC,UAAMf,IAFQpwB,EAAO,MAEQ;AAC7B,IAAIowB,MAAmB,UAAaD,MAAerL,KACjDoL,GAAuB2B,GAAc1B,GAAYrL,GAAYqM,GAAUf,CAAc;AAEvF,UAAM4B,IAAYrN,EAAS,SACrBsN,IAAY,KAAK;AACvB,WAAID,MAAcC,MAChBtnB,EAAI,MAAM,UAAUsnB,IAEf;AAAA,EACR;AAAA,EACD,OAAO,YAAY;AACjB,WAAO;AAAA,MACL,SAAS,OAAO;AAAA,QACd,YAAYC;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,MACM,GAAG,OAAO;AAAA,QACR,YAAYC;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,MACM,MAAM,OAAO;AAAA,QACX,YAAYC;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,MACM,IAAI,OAAO;AAAA,QACT,YAAYA;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,MACM,GAAG,OAAO;AAAA,QACR,YAAYA;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,MACM,GAAG,OAAO;AAAA,QACR,YAAYA;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,MACM,MAAM,OAAO;AAAA,QACX,YAAYC;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,MACM,QAAQ,OAAO;AAAA,QACb,YAAYD;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,MACM,KAAK,OAAO;AAAA,QACV,YAAYA;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,MACM,KAAK,OAAO;AAAA,QACV,YAAYA;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,MACM,GAAG,OAAO;AAAA,QACR,YAAYA;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,IACA;AAAA,EACG;AAAA,EACD,OAAO,WAAWE,GAAgB;AAChC,UAAMnwB,IAAOmT,GAAgBgd,EAAe,IAAI;AAChD,WAAAnwB,EAAK,UAAUmwB,EAAe,MAAM,GACpCnwB,EAAK,UAAUmwB,EAAe,MAAM,GACpCnwB,EAAK,QAAQmwB,EAAe,IAAI,GAChCnwB,EAAK,SAASmwB,EAAe,KAAK,GAC3BnwB;AAAA,EACR;AAAA,EAKD,UAAUqI,GAAQ;AAChB,QAAI;AAAA,MACF,SAAAlM;AAAA,IACN,IAAQ,MAAM,UAAUkM,CAAM;AAC1B,QAAI,EAAElM,MAAY,QAAQ4f,GAAc5f,CAAO;AAC7C,YAAM,MAAM,4DAA4D;AAE1E,WAAAA,EAAQ,MAAM,aAAa,YAIvB,KAAK,UAAU,MAAM,MACvBA,IAAU+yB,GAAgB/yB,GAAS,GAAG,IAEpC,KAAK,UAAU,QAAQ,MACzBA,IAAU+yB,GAAgB/yB,GAAS,GAAG,IAEpC,KAAK,UAAU,eAAe,MAChCA,IAAU+yB,GAAgB/yB,GAAS,GAAG,IAEpC,KAAK,UAAU,WAAW,MAC5BA,IAAU+yB,GAAgB/yB,GAAS,GAAG,IAEjC;AAAA,MACL,SAAAA;AAAA,IACN;AAAA,EACG;AAAA,EACD,aAAa;AACX,WAAO;AAAA,MACL,QAAQ,KAAK,UAAW;AAAA,MACxB,QAAQ,KAAK,UAAW;AAAA,MACxB,MAAM,KAAK,QAAS;AAAA,MACpB,OAAO,KAAK,SAAU;AAAA,MACtB,MAAM,KAAK,eAAgB;AAAA,MAC3B,MAAM;AAAA,MACN,SAAS;AAAA,IACf;AAAA,EACG;AAAA,EAGD,mBAAmB2W,GAAe+H,GAAe;AAAA,EAEhD;AAAA,EAYD,UAAUxjB,GAAQ;AAChB,UAAM4G,IAAO,KAAK;AAClB,WAAAA,EAAK,WAAW,OAAO5G,KAAW,WAAW+P,GAAoB/P,KAAUA,GACpE4G;AAAA,EACR;AAAA,EAaD,UAAUmyB,GAAQ;AAChB,UAAMnyB,IAAO,KAAK;AAClB,WAAAA,EAAK,WAAW,OAAOmyB,KAAW,WAAW/oB,GAAsB+oB,KAAUA,GACtEnyB;AAAA,EACR;AAAA,EAUD,SAAS2rB,GAAO;AACd,UAAM3rB,IAAO,KAAK;AAClB,WAAAA,EAAK,UAAU2rB,GACR3rB;AAAA,EACR;AAAA,EAWD,aAAa3F,GAAM;AACjB,UAAMjB,IAAS,KAAK,aACdyX,IAAYH,GAAqBtX,GAAQiB,GAAM,IAAI;AACzD,WAAO,KAAK,UAAUwW,CAAS;AAAA,EAChC;AAAA,EAOD,sBAAsB;AACpB,UAAM7Q,IAAO,KAAK;AAClB,WAAAA,EAAK,YAAYkI,IACVlI;AAAA,EACR;AAAA,EAOD,oBAAoB;AAClB,UAAMA,IAAO,KAAK;AAClB,WAAAA,EAAK,YAAYmI,IACVnI;AAAA,EACR;AAAA,EAOD,QAAQ3F,GAAM;AACZ,UAAM+3B,IAAO7oB,GAAkBlP;AAC/B,QAAI,KAAK,WAAW+3B;AAClB,aAAO;AAET,UAAMpyB,IAAO,KAAK;AAClB,WAAAA,EAAK,SAASoyB,GACPpyB;AAAA,EACR;AAAA,EASD,eAAeiL,GAAM;AACnB,QAAI,KAAK,WAAWA;AAClB,aAAO;AAET,UAAMjL,IAAO,KAAK;AAClB,WAAAA,EAAK,SAASiL,GACPjL;AAAA,EACR;AAAA,EAUD,OAAOqyB,GAAeC,GAAc;AAClC,IAAAnhB;AACA,QAAIpG,IAAesnB,GACfrnB,IAAcsnB;AAClB,UAAM5nB,IAAYC,MACZM,IAAO,KAAK,kBACZ3K,IAAM,KAAK;AACjB,QAAI,OAAO2K,KAAS,UAAU;AAC5B,YAAMsd,IAAatd,EAAK;AACxB,MAAIF,MAAiB,WACnBA,IAAewd,IAEbvd,MAAgB,WAClBA,IAAcud;AAAA,IAEtB;AACM,MAAAxd,IAAe,GACfC,IAAc;AAEhB,QAAKM,EAAkBZ,CAAS,GAEzB;AACL,YAAMiI,IAAiBG;AACvB,OAAIH,MAAmBjI,EAAU,OAAO,OAAOiI,MAAmBjI,EAAU,MAAM,QAChFgI,GAAmBpS,CAAG,GAExBoK,EAAU,iBAAiB,MAAMK,GAAc,MAAMC,CAAW;AAAA,IACjE;AAPC,aAAOunB,GAA4BjyB,GAAKyK,GAAczK,GAAK0K,GAAa,QAAQ,MAAM;AAQxF,WAAON;AAAA,EACR;AAAA,EACD,cAAc;AACZ,WAAO,KAAK,OAAO,GAAG,CAAC;AAAA,EACxB;AAAA,EACD,YAAY;AACV,UAAMujB,IAAO,KAAK;AAClB,WAAO,KAAK,OAAOA,GAAMA,CAAI;AAAA,EAC9B;AAAA,EAaD,WAAWjf,GAAQwjB,GAAUC,GAASC,GAAe;AACnD,UAAMtE,IAAe,KAAK,eACpBnjB,IAAOmjB,EAAa,QACpBuE,IAAoBF,EAAQ;AAClC,QAAIvG,IAAQld;AACZ,IAAIkd,IAAQ,MACVA,IAAQyG,IAAoBzG,GACxBA,IAAQ,MACVA,IAAQ;AAGZ,UAAMxhB,IAAYC;AAClB,QAAI+nB,KAAiBpnB,EAAkBZ,CAAS,GAAG;AACjD,YAAMkoB,IAAY5jB,IAAS2jB;AAC3B,MAAAjoB,EAAU,iBAAiB0jB,GAAcwE,GAAWxE,GAAcwE,CAAS;AAAA,IAC5E;AACD,UAAMC,IAAc5nB,EAAK,MAAM,GAAGihB,CAAK,IAAIuG,IAAUxnB,EAAK,MAAMihB,IAAQsG,CAAQ;AAChF,WAAApE,EAAa,SAASyE,GACfzE;AAAA,EACR;AAAA,EASD,sBAAsB;AACpB,WAAO;AAAA,EACR;AAAA,EASD,qBAAqB;AACnB,WAAO;AAAA,EACR;AAAA,EAUD,aAAa0E,GAAc;AACzB,IAAA3hB;AACA,UAAMnR,IAAO,KAAK,aACZwU,IAAcxU,EAAK,kBACnBM,IAAMN,EAAK,OACX2S,IAAiBG,MACjBigB,IAAa,IAAI,IAAID,CAAY,GACjCE,IAAQ,CAAA,GACRlL,IAAatT,EAAY;AAC/B,QAAIye,IAAS;AACb,aAASjxB,IAAI,GAAGA,IAAI8lB,GAAY9lB;AAC9B,MAAIixB,MAAW,MAAMF,EAAW,IAAI/wB,CAAC,MACnCgxB,EAAM,KAAKC,CAAM,GACjBA,IAAS,KAEXA,KAAUze,EAAYxS;AAExB,IAAIixB,MAAW,MACbD,EAAM,KAAKC,CAAM;AAEnB,UAAMC,IAAcF,EAAM;AAC1B,QAAIE,MAAgB;AAClB,aAAO;AACF,QAAIF,EAAM,OAAOxe;AACtB,aAAO,CAACxU,CAAI;AAEd,UAAMmzB,IAAYH,EAAM,IAClBxgB,IAASxS,EAAK;AACpB,QAAIgS;AACJ,UAAM5Y,IAAS4G,EAAK,aACd2rB,IAAQ3rB,EAAK,YACbmyB,IAASnyB,EAAK;AACpB,QAAIozB,IAAkB;AACtB,IAAIpzB,EAAK,iBAEPgS,IAAekD,GAAgBie,CAAS,GACxCnhB,EAAa,WAAW5Y,GACxB4Y,EAAa,UAAU2Z,GACvB3Z,EAAa,WAAWmgB,GACxBiB,IAAkB,OAGlBphB,IAAehS,EAAK,eACpBgS,EAAa,SAASmhB;AAIxB,UAAMzoB,IAAYC,MAGZ0oB,IAAa,CAACrhB,CAAY;AAChC,QAAIshB,IAAWH,EAAU;AACzB,aAASnxB,IAAI,GAAGA,IAAIkxB,GAAalxB,KAAK;AACpC,YAAMuxB,IAAOP,EAAMhxB,IACbwxB,IAAWD,EAAK,QAChBtW,IAAU/H,GAAgBqe,CAAI,EAAE,YAAW;AACjD,MAAAtW,EAAQ,WAAW7jB,GACnB6jB,EAAQ,UAAU0O,GAClB1O,EAAQ,WAAWkV;AACnB,YAAMsB,IAAaxW,EAAQ,OACrByW,IAAeJ,IAAWE;AAChC,UAAIloB,EAAkBZ,CAAS,GAAG;AAChC,cAAM0Q,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU;AACxB,QAAI0Q,EAAO,QAAQ9a,KAAO8a,EAAO,SAAS,UAAUA,EAAO,SAASkY,KAAYlY,EAAO,UAAUsY,MAC/FtY,EAAO,MAAMqY,GACbrY,EAAO,UAAUkY,GACjB5oB,EAAU,QAAQ,KAEhB6O,EAAM,QAAQjZ,KAAOiZ,EAAM,SAAS,UAAUA,EAAM,SAAS+Z,KAAY/Z,EAAM,UAAUma,MAC3Fna,EAAM,MAAMka,GACZla,EAAM,UAAU+Z,GAChB5oB,EAAU,QAAQ;AAAA,MAErB;AACD,MAAIiI,MAAmBrS,KACrBoS,GAAmB+gB,CAAU,GAE/BH,IAAWI,GACXL,EAAW,KAAKpW,CAAO;AAAA,IACxB;AAGD,QAAIzK,MAAW,MAAM;AACnB,MAAAC,GAA4B,IAAI;AAChC,YAAMR,IAAiBO,EAAO,eACxBmhB,IAAiB,KAAK;AAC5B,MAAIP,KACFnhB,EAAe,OAAO0hB,GAAgB,GAAGN,CAAU,GACnD,KAAK,OAAM,KAEXphB,EAAe,OAAO0hB,GAAgB,GAAGN,CAAU,GAEjD/nB,EAAkBZ,CAAS,KAC7ByhB,GAA0CzhB,GAAW8H,GAAQmhB,GAAgBT,IAAc,CAAC;AAAA,IAE/F;AACD,WAAOG;AAAA,EACR;AAAA,EASD,iBAAiB7oB,GAAQ;AACvB,UAAM4iB,IAAW5iB,MAAW,KAAK,mBAAkB;AACnD,QAAI,CAAC4iB,KAAY5iB,MAAW,KAAK,eAAc;AAE3C,YAAM,MAAM,8DAA8D;AAG9E,UAAMlK,IAAM,KAAK,OACXszB,IAAYppB,EAAO,OACnBS,IAAO,KAAK,QACZ6c,IAAa7c,EAAK;AAExB,IADuB6H,SACA8gB,KACrBlhB,GAAmBpS,CAAG;AAExB,UAAMoK,IAAYC;AAClB,QAAIW,EAAkBZ,CAAS,GAAG;AAChC,YAAM0Q,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU;AACxB,MAAI0Q,MAAW,QAAQA,EAAO,QAAQwY,MACpCC,GAAkCzY,GAAQgS,GAAU9sB,GAAKkK,GAAQsd,CAAU,GAC3Epd,EAAU,QAAQ,KAEhB6O,MAAU,QAAQA,EAAM,QAAQqa,MAClCC,GAAkCta,GAAO6T,GAAU9sB,GAAKkK,GAAQsd,CAAU,GAC1Epd,EAAU,QAAQ;AAAA,IAErB;AACD,UAAMopB,IAAatpB,EAAO,QACpBioB,IAAUrF,IAAW0G,IAAa7oB,IAAOA,IAAO6oB;AACtD,SAAK,eAAerB,CAAO;AAC3B,UAAMrE,IAAe,KAAK;AAC1B,WAAA5jB,EAAO,OAAM,GACN4jB;AAAA,EACR;AAAA,EASD,eAAe;AACb,WAAO;AAAA,EACR;AACH;AACA,SAAS6D,GAAmBjK,GAAS;AAGnC,QAAM2D,IADO3D,EACM;AACnB,SAAO;AAAA,IACL,UAAU+L,GAAyBpI,CAAK;AAAA,IACxC,MAAM;AAAA,EACV;AACA;AACA,SAASoG,GAA+B/J,GAAS;AAE/C,QAAMpwB,IAAIowB,GAEJgM,IAAsBp8B,EAAE,MAAM,eAAe;AACnD,SAAO;AAAA,IACL,UAAUm8B,GAAyBn8B,EAAE,OAAOo8B,IAAsB,SAAY,MAAM;AAAA,IACpF,MAAM;AAAA,EACV;AACA;AACA,MAAMC,KAAiB,oBAAI;AAC3B,SAASC,GAAUnyB,GAAM;AACvB,SAAOA,EAAK,aAAa,SAASA,EAAK,aAAakF,MAAoBlF,EAAK,UAAU,UAAaA,EAAK,MAAM,eAAe,UAAaA,EAAK,MAAM,WAAW,WAAW,KAAK;AACnL;AACA,SAASoyB,GAAqBpyB,GAAM;AAClC,MAAIqyB,GACA5hB,IAASzQ,EAAK;AAClB,QAAMsrB,IAAU,CAACtrB,CAAI;AACrB,SAAOyQ,MAAW,SAAS4hB,IAASH,GAAe,IAAIzhB,CAAM,OAAO,UAAa,CAAC0hB,GAAU1hB,CAAM;AAChG,IAAA6a,EAAQ,KAAK7a,CAAM,GACnBA,IAASA,EAAO;AAElB,QAAM6hB,IAAaD,MAAW,SAAY5hB,IAAS4hB;AACnD,WAASpyB,IAAI,GAAGA,IAAIqrB,EAAQ,QAAQrrB;AAClC,IAAAiyB,GAAe,IAAI5G,EAAQrrB,IAAIqyB,CAAU;AAE3C,SAAOA;AACT;AACA,SAASvC,GAAoB9J,GAAS;AACpC,QAAMsM,IAAWtM;AAEjB,MADkBA,EAAQ,kBACN;AAClB,UAAM,MAAM,+CAA+C;AAE7D,MAAIxT,IAAc8f,EAAS,eAAe;AAE1C,MAAIH,GAAqBG,CAAQ,MAAM,MAAM;AAC3C,UAAMtB,IAAQxe,EAAY,MAAM,YAAY,GACtCwE,IAAQ,CAAA,GACRub,IAASvB,EAAM;AACrB,aAAShxB,IAAI,GAAGA,IAAIuyB,GAAQvyB,KAAK;AAC/B,YAAMuxB,IAAOP,EAAMhxB;AACnB,MAAIuxB,MAAS;AAAA,KAAQA,MAAS;AAAA,IAC5Bva,EAAM,KAAKyW,GAAoB,CAAE,IACxB8D,MAAS,MAClBva,EAAM,KAAKwb,GAAc,CAAE,IAClBjB,MAAS,MAClBva,EAAM,KAAK9D,GAAgBqe,CAAI,CAAC;AAAA,IAEnC;AACD,WAAO;AAAA,MACL,MAAMva;AAAA,IACZ;AAAA,EACG;AAED,MADAxE,IAAcA,EAAY,QAAQ,OAAO,EAAE,EAAE,QAAQ,aAAa,GAAG,GACjEA,MAAgB;AAClB,WAAO;AAAA,MACL,MAAM;AAAA,IACZ;AAEE,MAAIA,EAAY,OAAO,KAAK;AAI1B,QAAIigB,IAAeH,GACfI,IAAgB;AACpB,WAAOD,MAAiB,SAASA,IAAeE,GAAeF,GAAc,EAAK,OAAO,QAAM;AAC7F,YAAMG,IAAsBH,EAAa,eAAe;AACxD,UAAIG,EAAoB,SAAS,GAAG;AAClC,QAAI,WAAW,KAAKA,CAAmB,MACrCpgB,IAAcA,EAAY,MAAM,CAAC,IAEnCkgB,IAAgB;AAChB;AAAA,MACD;AAAA,IACF;AACD,IAAIA,MACFlgB,IAAcA,EAAY,MAAM,CAAC;AAAA,EAEpC;AACD,MAAIA,EAAYA,EAAY,SAAS,OAAO,KAAK;AAE/C,QAAIkc,IAAW4D,GACXO,IAAc;AAClB,WAAOnE,MAAa,SAASA,IAAWiE,GAAejE,GAAU,EAAI,OAAO;AAE1E,WADyBA,EAAS,eAAe,IAAI,QAAQ,kBAAkB,EAAE,EAC7D,SAAS,GAAG;AAC9B,QAAAmE,IAAc;AACd;AAAA,MACD;AAEH,IAAIA,MACFrgB,IAAcA,EAAY,MAAM,GAAGA,EAAY,SAAS,CAAC;AAAA,EAE5D;AACD,SAAIA,MAAgB,KACX;AAAA,IACL,MAAM;AAAA,EACZ,IAES;AAAA,IACL,MAAMU,GAAgBV,CAAW;AAAA,EACrC;AACA;AACA,SAASmgB,GAAe1pB,GAAM6pB,GAAS;AACrC,MAAI/yB,IAAOkJ;AAEX,aAAa;AACX,QAAIgS;AACJ,YAAQA,IAAU6X,IAAU/yB,EAAK,cAAcA,EAAK,qBAAqB,QAAM;AAC7E,YAAMkY,IAAgBlY,EAAK;AAC3B,UAAIkY,MAAkB;AACpB,eAAO;AAET,MAAAlY,IAAOkY;AAAA,IACR;AAED,QADAlY,IAAOkb,GACHlb,EAAK,aAAakF,IAAkB;AACtC,YAAM8tB,IAAUhzB,EAAK,MAAM;AAC3B,UAAIgzB,MAAY,MAAM,CAAChX,GAAgBhc,CAAI,KAAKgzB,MAAY,MAAM,CAACA,EAAQ,WAAW,QAAQ;AAC5F,eAAO;AAAA,IAEV;AACD,QAAIC,IAAajzB;AACjB,YAAQizB,IAAaF,IAAU/yB,EAAK,aAAaA,EAAK,eAAe;AACnE,MAAAA,IAAOizB;AAET,QAAIjzB,EAAK,aAAamF;AACpB,aAAOnF;AACF,QAAIA,EAAK,aAAa;AAC3B,aAAO;AAAA,EAEV;AACH;AACA,MAAMkzB,KAAuB;AAAA,EAC3B,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,GAAG;AAAA,EACH,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,KAAK;AAAA,EACL,GAAG;AACL;AACA,SAASjD,GAAyBhK,GAAS;AACzC,QAAM5uB,IAAS67B,GAAqBjN,EAAQ,SAAS,YAAa;AAClE,SAAI5uB,MAAW,SACN;AAAA,IACL,MAAM;AAAA,EACZ,IAES;AAAA,IACL,UAAU26B,GAAyB/L,EAAQ,OAAO5uB,CAAM;AAAA,IACxD,MAAM;AAAA,EACV;AACA;AACA,SAAS8b,GAAgBjK,IAAO,IAAI;AAClC,SAAO8Q,GAAsB,IAAIoV,GAASlmB,CAAI,CAAC;AACjD;AACA,SAASqB,EAAYvK,GAAM;AACzB,SAAOA,aAAgBovB;AACzB;AACA,SAAS4C,GAAyBpI,GAAOuJ,GAAa;AACpD,QAAMC,IAAaxJ,EAAM,YACnByJ,IAAiBzJ,EAAM,eAAe,MAAM,GAAG,GAE/C0J,IAAoBF,MAAe,SAASA,MAAe,QAE3DG,IAA+BF,EAAe,SAAS,cAAc,GAErEG,IAAqB5J,EAAM,cAAc,UAEzC6J,IAA6BJ,EAAe,SAAS,WAAW,GAEhEK,IAAgB9J,EAAM;AAC5B,SAAO,CAAA+J,OACAppB,EAAYopB,CAAW,MAGxBL,KAAqB,CAACK,EAAY,UAAU,MAAM,KACpDA,EAAY,aAAa,MAAM,GAE7BJ,KAAgC,CAACI,EAAY,UAAU,eAAe,KACxEA,EAAY,aAAa,eAAe,GAEtCH,KAAsB,CAACG,EAAY,UAAU,QAAQ,KACvDA,EAAY,aAAa,QAAQ,GAE/BF,KAA8B,CAACE,EAAY,UAAU,WAAW,KAClEA,EAAY,aAAa,WAAW,GAElCD,MAAkB,SAAS,CAACC,EAAY,UAAU,WAAW,KAC/DA,EAAY,aAAa,WAAW,GAElCD,MAAkB,WAAW,CAACC,EAAY,UAAU,aAAa,KACnEA,EAAY,aAAa,aAAa,GAEpCR,KAAe,CAACQ,EAAY,UAAUR,CAAW,KACnDQ,EAAY,aAAaR,CAAW,IAE/BQ;AAEX;AAWA,MAAMC,WAAgBxE,GAAS;AAAA,EAC7B,OAAO,UAAU;AACf,WAAO;AAAA,EACR;AAAA,EACD,OAAO,MAAMpvB,GAAM;AACjB,WAAO,IAAI4zB,GAAQ5zB,EAAK,KAAK;AAAA,EAC9B;AAAA,EACD,eAAewiB,GAAU;AACvB,UAAM,eAAeA,CAAQ,GAE7B,KAAK,SAASA,EAAS;AAAA,EACxB;AAAA,EACD,YAAYjkB,GAAK;AACf,UAAM,KAAMA,CAAG,GACf,KAAK,WAAW6H;AAAA,EACjB;AAAA,EACD,OAAO,YAAY;AACjB,WAAO;AAAA,EACR;AAAA,EACD,OAAO,WAAWytB,GAAmB;AACnC,UAAM7zB,IAAOyyB;AACb,WAAAzyB,EAAK,UAAU6zB,EAAkB,MAAM,GACvC7zB,EAAK,SAAS6zB,EAAkB,KAAK,GAC9B7zB;AAAA,EACR;AAAA,EACD,aAAa;AACX,WAAO;AAAA,MACL,GAAG,MAAM,WAAY;AAAA,MACrB,MAAM;AAAA,MACN,SAAS;AAAA,IACf;AAAA,EACG;AAAA,EACD,eAAe8zB,GAAO;AAElB,UAAM,MAAM,yCAAyC;AAAA,EAExD;AAAA,EACD,UAAUC,GAAS;AAEf,UAAM,MAAM,oCAAoC;AAAA,EAEnD;AAAA,EACD,QAAQC,GAAO;AAEX,UAAM,MAAM,kCAAkC;AAAA,EAEjD;AAAA,EACD,sBAAsB;AACpB,WAAO;AAAA,EACR;AAAA,EACD,qBAAqB;AACnB,WAAO;AAAA,EACR;AACH;AACA,SAASvB,KAAiB;AACxB,SAAOzY,GAAsB,IAAI4Z,GAAO,CAAE;AAC5C;AACA,SAASK,GAAWj0B,GAAM;AACxB,SAAOA,aAAgB4zB;AACzB;AAUA,MAAMM,GAAM;AAAA,EACV,YAAY31B,GAAK0O,GAAQ3U,GAAM;AAC7B,SAAK,aAAa,MAClB,KAAK,MAAMiG,GACX,KAAK,SAAS0O,GACd,KAAK,OAAO3U;AAAA,EACb;AAAA,EACD,GAAG0U,GAAO;AACR,WAAO,KAAK,QAAQA,EAAM,OAAO,KAAK,WAAWA,EAAM,UAAU,KAAK,SAASA,EAAM;AAAA,EACtF;AAAA,EACD,SAASnX,GAAG;AACV,QAAIs+B,IAAQ,KAAK,WACbC,IAAQv+B,EAAE;AACd,UAAMw+B,IAAU,KAAK,QACfC,IAAUz+B,EAAE;AAClB,QAAIqV,EAAeipB,CAAK,GAAG;AACzB,YAAMI,IAAkBJ,EAAM,qBAAqBE,CAAO;AAC1D,MAAAF,IAAQI,KAA4CJ;AAAA,IACrD;AACD,QAAIjpB,EAAekpB,CAAK,GAAG;AACzB,YAAMI,IAAkBJ,EAAM,qBAAqBE,CAAO;AAC1D,MAAAF,IAAQI,KAA4CJ;AAAA,IACrD;AACD,WAAID,MAAUC,IACLC,IAAUC,IAEZH,EAAM,SAASC,CAAK;AAAA,EAC5B;AAAA,EACD,UAAU;AACR,UAAM71B,IAAM,KAAK,KACXyB,IAAO8Q,GAAcvS,CAAG;AAC9B,QAAIyB,MAAS;AAET,YAAM,MAAM,+BAA+B;AAG/C,WAAOA;AAAA,EACR;AAAA,EACD,IAAIzB,GAAK0O,GAAQ3U,GAAM;AACrB,UAAMqQ,IAAY,KAAK,YACjB8rB,IAAS,KAAK;AACpB,SAAK,MAAMl2B,GACX,KAAK,SAAS0O,GACd,KAAK,OAAO3U,GACP0Y,GAAuB,MACtBD,GAAoB,MAAK0jB,KAC3B9jB,GAAmBpS,CAAG,GAEpBoK,MAAc,SAChBA,EAAU,eAAe,IAAI,GAC7BA,EAAU,QAAQ;AAAA,EAGvB;AACH;AACA,SAAS+rB,GAAan2B,GAAK0O,GAAQ3U,GAAM;AAEvC,SAAO,IAAI47B,GAAM31B,GAAK0O,GAAQ3U,CAAI;AACpC;AACA,SAASq8B,GAAkB3nB,GAAOhN,GAAM;AACtC,MAAIzB,IAAMyB,EAAK,OACXiN,IAASD,EAAM,QACf1U,IAAO;AACX,MAAIiS,EAAYvK,CAAI,GAAG;AACrB,IAAA1H,IAAO;AACP,UAAMs8B,IAAoB50B,EAAK;AAC/B,IAAIiN,IAAS2nB,MACX3nB,IAAS2nB;AAAA,EAEf,WAAa,CAAC1pB,EAAelL,CAAI,GAAG;AAChC,UAAMoQ,IAAcpQ,EAAK;AACzB,QAAIuK,EAAY6F,CAAW;AACzB,MAAA7R,IAAM6R,EAAY,OAClBnD,IAAS,GACT3U,IAAO;AAAA,SACF;AACL,YAAM8gB,IAAapZ,EAAK;AACxB,MAAIoZ,MACF7a,IAAM6a,EAAW,OACjBnM,IAASjN,EAAK,qBAAsB,IAAG;AAAA,IAE1C;AAAA,EACF;AACD,EAAAgN,EAAM,IAAIzO,GAAK0O,GAAQ3U,CAAI;AAC7B;AACA,SAAS6zB,GAAyBnf,GAAOhN,GAAM;AAC7C,MAAIkL,EAAelL,CAAI,GAAG;AACxB,UAAM2mB,IAAW3mB,EAAK;AACtB,IAAIkL,EAAeyb,CAAQ,KAAKpc,EAAYoc,CAAQ,IAClDgO,GAAkB3nB,GAAO2Z,CAAQ,IAEjCgO,GAAkB3nB,GAAOhN,CAAI;AAAA,EAEnC;AACI,IAAA20B,GAAkB3nB,GAAOhN,CAAI;AAEjC;AACA,SAAS60B,GAAyCC,GAAOC,GAAK19B,GAAQuyB,GAAO;AAC3E,QAAMztB,IAAU24B,EAAM,WAChBE,IAAgB74B,EAAQ,gBAAgB24B,EAAM,MAAM,GACpDnoB,IAAWwG,MACX1K,IAASuP,GAAY7b,CAAO,IAAI0wB,GAAoB,EAAG,OAAOlgB,CAAQ,IAAIA;AAChF,EAAAA,EAAS,UAAUtV,CAAM,GACzBsV,EAAS,SAASid,CAAK,GACnBoL,MAAkB,OACpB74B,EAAQ,OAAOsM,CAAM,IAErBusB,EAAc,aAAavsB,CAAM,GAG/BqsB,EAAM,GAAGC,CAAG,KACdA,EAAI,IAAIpoB,EAAS,OAAO,GAAG,MAAM,GAEnCmoB,EAAM,IAAInoB,EAAS,OAAO,GAAG,MAAM;AACrC;AACA,SAASsoB,GAAgBjoB,GAAOzO,GAAK0O,GAAQ3U,GAAM;AACjD,EAAA0U,EAAM,MAAMzO,GACZyO,EAAM,SAASC,GACfD,EAAM,OAAO1U;AACf;AACA,MAAM48B,GAAc;AAAA,EAClB,YAAYC,GAAS;AACnB,SAAK,eAAe,MACpB,KAAK,SAASA,GACd,KAAK,QAAQ;AAAA,EACd;AAAA,EACD,iBAAiB;AACf,WAAO,KAAK;AAAA,EACb;AAAA,EACD,eAAele,GAAO;AACpB,SAAK,eAAeA;AAAA,EACrB;AAAA,EACD,GAAGtO,GAAW;AACZ,QAAI,CAACwf,GAAiBxf,CAAS;AAC7B,aAAO;AAET,UAAMhT,IAAI,KAAK,QACTE,IAAI8S,EAAU;AACpB,WAAOhT,EAAE,SAASE,EAAE,QAAQ,MAAM,KAAKF,CAAC,EAAE,MAAM,CAAA4I,MAAO1I,EAAE,IAAI0I,CAAG,CAAC;AAAA,EAClE;AAAA,EACD,cAAc;AACZ,WAAO;AAAA,EACR;AAAA,EACD,aAAa;AACX,WAAO;AAAA,EACR;AAAA,EACD,oBAAoB;AAClB,WAAO;AAAA,EACR;AAAA,EACD,IAAIA,GAAK;AACP,SAAK,QAAQ,IACb,KAAK,OAAO,IAAIA,CAAG,GACnB,KAAK,eAAe;AAAA,EACrB;AAAA,EACD,OAAOA,GAAK;AACV,SAAK,QAAQ,IACb,KAAK,OAAO,OAAOA,CAAG,GACtB,KAAK,eAAe;AAAA,EACrB;AAAA,EACD,QAAQ;AACN,SAAK,QAAQ,IACb,KAAK,OAAO,SACZ,KAAK,eAAe;AAAA,EACrB;AAAA,EACD,IAAIA,GAAK;AACP,WAAO,KAAK,OAAO,IAAIA,CAAG;AAAA,EAC3B;AAAA,EACD,QAAQ;AACN,WAAO,IAAI22B,GAAc,IAAI,IAAI,KAAK,MAAM,CAAC;AAAA,EAC9C;AAAA,EACD,UAAU;AACR,WAAO,KAAK;EACb;AAAA,EACD,cAAchsB,GAAM;AAAA,EAEnB;AAAA,EACD,aAAa;AAAA,EAEZ;AAAA,EACD,YAAY+N,GAAO;AACjB,UAAMme,IAAgB,KAAK,YACrBC,IAAsBD,EAAc,QACpCE,IAAmBF,EAAcC,IAAsB;AAC7D,QAAIE;AAEJ,QAAIhrB,EAAY+qB,CAAgB;AAC9B,MAAAC,IAAiBD,EAAiB;SAC7B;AACL,YAAMnL,IAAQmL,EAAiB,qBAAoB,IAAK;AACxD,MAAAC,IAAiBD,EAAiB,iBAAgB,EAAG,OAAOnL,GAAOA,CAAK;AAAA,IACzE;AACD,IAAAoL,EAAe,YAAYte,CAAK;AAEhC,aAAS,IAAI,GAAG,IAAIoe,GAAqB;AACvC,MAAAD,EAAc,GAAG;EAEpB;AAAA,EACD,WAAW;AACT,UAAMI,IAAc,KAAK;AACzB,QAAIA,MAAgB;AAClB,aAAOA;AAET,UAAML,IAAU,KAAK,QACfle,IAAQ,CAAA;AACd,eAAW/X,KAAUi2B,GAAS;AAC5B,YAAMn1B,IAAO8Q,GAAc5R,CAAM;AACjC,MAAIc,MAAS,QACXiX,EAAM,KAAKjX,CAAI;AAAA,IAElB;AACD,WAAKgR,GAAuB,MAC1B,KAAK,eAAeiG,IAEfA;AAAA,EACR;AAAA,EACD,iBAAiB;AACf,UAAMA,IAAQ,KAAK;AACnB,QAAIxE,IAAc;AAClB,aAASxS,IAAI,GAAGA,IAAIgX,EAAM,QAAQhX;AAChC,MAAAwS,KAAewE,EAAMhX,GAAG,eAAc;AAExC,WAAOwS;AAAA,EACR;AACH;AACA,SAASlJ,EAAkB/O,GAAG;AAC5B,SAAOA,aAAai7B;AACtB;AACA,MAAMA,GAAe;AAAA,EACnB,YAAYpc,GAAQ7B,GAAOngB,GAAQuyB,GAAO;AACxC,SAAK,SAASvQ,GACd,KAAK,QAAQ7B,GACb6B,EAAO,aAAa,MACpB7B,EAAM,aAAa,MACnB,KAAK,eAAe,MACpB,KAAK,SAASngB,GACd,KAAK,QAAQuyB,GACb,KAAK,QAAQ;AAAA,EACd;AAAA,EACD,iBAAiB;AACf,WAAO,KAAK;AAAA,EACb;AAAA,EACD,eAAe3S,GAAO;AACpB,SAAK,eAAeA;AAAA,EACrB;AAAA,EAQD,GAAGtO,GAAW;AACZ,WAAKY,EAAkBZ,CAAS,IAGzB,KAAK,OAAO,GAAGA,EAAU,MAAM,KAAK,KAAK,MAAM,GAAGA,EAAU,KAAK,KAAK,KAAK,WAAWA,EAAU,UAAU,KAAK,UAAUA,EAAU,QAFjI;AAAA,EAGV;AAAA,EAQD,cAAc;AACZ,WAAO,KAAK,OAAO,GAAG,KAAK,KAAK;AAAA,EACjC;AAAA,EAQD,WAAW;AACT,UAAM6sB,IAAc,KAAK;AACzB,QAAIA,MAAgB;AAClB,aAAOA;AAET,UAAMnc,IAAS,KAAK,QACd7B,IAAQ,KAAK,OACb6T,IAAWhS,EAAO,SAAS7B,CAAK,GAChCkT,IAAaW,IAAWhS,IAAS7B,GACjCke,IAAYrK,IAAW7T,IAAQ6B;AACrC,QAAIsc,IAAYjL,EAAW,WACvB/D,IAAW+O,EAAU;AACzB,UAAM3O,IAAc2D,EAAW,QACzB1D,IAAY0O,EAAU;AAC5B,QAAIxqB,EAAeyqB,CAAS,GAAG;AAC7B,YAAMC,IAAsBD,EAAU,qBAAqB5O,CAAW;AACtE,MAAA4O,IAAYC,KAAoDD;AAAA,IACjE;AACD,QAAIzqB,EAAeyb,CAAQ,GAAG;AAC5B,UAAIkP,IAAqBlP,EAAS,qBAAqBK,CAAS;AAGhE,MAAI6O,MAAuB,QAAQA,MAAuBF,KAAahP,EAAS,gBAAgBK,CAAS,MAAM6O,MAC7GA,IAAqBA,EAAmB,uBAE1ClP,IAAWkP,KAAkDlP;AAAA,IAC9D;AACD,QAAI1P;AACJ,WAAI0e,EAAU,GAAGhP,CAAQ,IACnBzb,EAAeyqB,CAAS,KAAKA,EAAU,gBAAe,IAAK,IAC7D1e,IAAQ,CAAA,IAERA,IAAQ,CAAC0e,CAAS,IAGpB1e,IAAQ0e,EAAU,gBAAgBhP,CAAQ,GAEvC3V,GAAuB,MAC1B,KAAK,eAAeiG,IAEfA;AAAA,EACR;AAAA,EAUD,iBAAiBzN,GAAYR,GAAcyO,GAAWxO,GAAa;AACjE,IAAAgsB,GAAgB,KAAK,QAAQzrB,EAAW,OAAOR,GAAc,MAAM,GACnEisB,GAAgB,KAAK,OAAOxd,EAAU,OAAOxO,GAAa,MAAM,GAChE,KAAK,eAAe,MACpB,KAAK,QAAQ;AAAA,EACd;AAAA,EAOD,iBAAiB;AACf,UAAMgO,IAAQ,KAAK;AACnB,QAAIA,EAAM,WAAW;AACnB,aAAO;AAET,UAAM0e,IAAY1e,EAAM,IAClB0P,IAAW1P,EAAMA,EAAM,SAAS,IAChCoC,IAAS,KAAK,QACd7B,IAAQ,KAAK,OACb6T,IAAWhS,EAAO,SAAS7B,CAAK,GAChC,CAACxO,GAAcC,CAAW,IAAI6sB,GAAqB,IAAI;AAC7D,QAAIrjB,IAAc,IACdsjB,IAAiB;AACrB,aAAS91B,IAAI,GAAGA,IAAIgX,EAAM,QAAQhX,KAAK;AACrC,YAAMD,IAAOiX,EAAMhX;AACnB,UAAIiL,EAAelL,CAAI,KAAK,CAACA,EAAK,SAAQ;AACxC,QAAK+1B,MACHtjB,KAAe;AAAA,IAEbzS,EAAK,YACP+1B,IAAiB,KAEjBA,IAAiB;AAAA,eAGnBA,IAAiB,IACbxrB,EAAYvK,CAAI,GAAG;AACrB,YAAIkJ,IAAOlJ,EAAK;AAChB,QAAIA,MAAS21B,IACP31B,MAAS2mB,KACPtN,EAAO,SAAS,aAAa7B,EAAM,SAAS,aAAaA,EAAM,WAAW6B,EAAO,YACnFnQ,IAAOF,IAAeC,IAAcC,EAAK,MAAMF,GAAcC,CAAW,IAAIC,EAAK,MAAMD,GAAaD,CAAY,KAGlHE,IAAOmiB,IAAWniB,EAAK,MAAMF,CAAY,IAAIE,EAAK,MAAMD,CAAW,IAE5DjJ,MAAS2mB,MAClBzd,IAAOmiB,IAAWniB,EAAK,MAAM,GAAGD,CAAW,IAAIC,EAAK,MAAM,GAAGF,CAAY,IAE3EyJ,KAAevJ;AAAA,MAChB;AAAM,SAAKoB,GAAiBtK,CAAI,KAAKgP,GAAiBhP,CAAI,OAAOA,MAAS2mB,KAAY,CAAC,KAAK,YAAa,OACxGlU,KAAezS,EAAK;IAGzB;AACD,WAAOyS;AAAA,EACR;AAAA,EAQD,cAAcujB,GAAO;AACnB,UAAM3tB,IAASoE,MAET6a,IADqBjf,EAAO,iBACO,YACnC4tB,IAA0BC,GAAgCF,EAAM,gBAAgBA,EAAM,aAAaA,EAAM,cAAcA,EAAM,WAAW3tB,GAAQif,CAAa;AACnK,QAAI2O,MAA4B;AAC9B;AAEF,UAAM,CAACE,GAAaC,CAAU,IAAIH;AAClC,IAAAhB,GAAgB,KAAK,QAAQkB,EAAY,KAAKA,EAAY,QAAQA,EAAY,IAAI,GAClFlB,GAAgB,KAAK,OAAOmB,EAAW,KAAKA,EAAW,QAAQA,EAAW,IAAI,GAC9E,KAAK,eAAe;AAAA,EACrB;AAAA,EAOD,QAAQ;AACN,UAAM/c,IAAS,KAAK,QACd7B,IAAQ,KAAK;AAEnB,WADkB,IAAIie,GAAef,GAAarb,EAAO,KAAKA,EAAO,QAAQA,EAAO,IAAI,GAAGqb,GAAald,EAAM,KAAKA,EAAM,QAAQA,EAAM,IAAI,GAAG,KAAK,QAAQ,KAAK,KAAK;AAAA,EAEtK;AAAA,EAOD,aAAangB,GAAQ;AACnB,SAAK,SAASsX,GAAqB,KAAK,QAAQtX,GAAQ,IAAI,GAC5D,KAAK,QAAQ;AAAA,EACd;AAAA,EAOD,SAASuyB,GAAO;AACd,SAAK,QAAQA,GACb,KAAK,QAAQ;AAAA,EACd;AAAA,EASD,UAAUtxB,GAAM;AACd,UAAM+2B,IAAajoB,GAAoB9O;AACvC,YAAQ,KAAK,SAAS+2B,OAAgB;AAAA,EACvC;AAAA,EAQD,cAAcnmB,GAAM;AAClB,UAAM+nB,IAAQ/nB,EAAK,MAAM,YAAY,GAC/B+N,IAAQ,CAAA,GACRub,IAASvB,EAAM;AACrB,aAAShxB,IAAI,GAAGA,IAAIuyB,GAAQvyB,KAAK;AAC/B,YAAMuxB,IAAOP,EAAMhxB;AACnB,MAAIuxB,MAAS;AAAA,KAAQA,MAAS;AAAA,IAC5Bva,EAAM,KAAKyW,GAAoB,CAAE,IACxB8D,MAAS,MAClBva,EAAM,KAAKwb,GAAc,CAAE,IAE3Bxb,EAAM,KAAK9D,GAAgBqe,CAAI,CAAC;AAAA,IAEnC;AACD,SAAK,YAAYva,CAAK;AAAA,EACvB;AAAA,EAQD,WAAW/N,GAAM;AACf,UAAMmQ,IAAS,KAAK,QACd7B,IAAQ,KAAK,OACbngB,IAAS,KAAK,QACduyB,IAAQ,KAAK;AACnB,QAAIc,IAAarR,GACbgd,IAAW7e;AACf,IAAI,CAAC,KAAK,YAAW,KAAMA,EAAM,SAAS6B,CAAM,MAC9CqR,IAAalT,GACb6e,IAAWhd,IAETqR,EAAW,SAAS,aACtBmK,GAAyCnK,GAAY2L,GAAUh/B,GAAQuyB,CAAK;AAE9E,UAAM7C,IAAc2D,EAAW;AAC/B,QAAI1D,IAAYqP,EAAS;AACzB,UAAMjB,IAAgB,KAAK,YACrBC,IAAsBD,EAAc;AAC1C,QAAIO,IAAYP,EAAc;AAC9B,QAAI,CAAC7qB,EAAYorB,CAAS;AAEtB,YAAM,MAAM,2CAA2C;AAI3D,UAAMW,IADgBX,EAAU,iBACU,QACpCY,IAAkBZ,EAAU,oBAC5Ba,IAAYnB,IAAsB;AACxC,QAAI1O,IAAWyO,EAAcoB;AAK7B,QAJInB,MAAwB,KAAKgB,EAAS,SAAS,cACjDrP,IAAYsP,GACZD,EAAS,IAAI3L,EAAW,KAAK1D,GAAW,MAAM,IAE5C,KAAK,YAAW,KAAMD,MAAgBuP,MAAwBX,EAAU,iBAAiBA,EAAU,QAAO,KAAM,CAACA,EAAU,wBAAwB,CAACY,EAAgB,mBAAoB,KAAIZ,EAAU,qBAAqB,OAAO;AACpO,UAAIvlB,IAAculB,EAAU;AAa5B,WAZI,CAACprB,EAAY6F,CAAW,KAAK,CAACA,EAAY,oBAAqB,KAAI5B,GAAoB4B,CAAW,OACpGA,IAAc+C,GAAe,GAC7B/C,EAAY,UAAU/Y,CAAM,GAC5B+Y,EAAY,SAASwZ,CAAK,GACrB2M,EAAgB,uBAGnBZ,EAAU,YAAYvlB,CAAW,IAFjCmmB,EAAgB,YAAYnmB,CAAW,IAK3CA,EAAY,OAAO,GAAG,CAAC,GACvBulB,IAAYvlB,GACRlH,MAAS,IAAI;AACf,aAAK,WAAWA,CAAI;AACpB;AAAA,MACD;AAAA,IACP,WAAe,KAAK,YAAW,KAAM6d,MAAgB,MAAM4O,EAAU,iBAAiBA,EAAU,QAAO,KAAM,CAACA,EAAU,yBAAyB,CAACY,EAAgB,oBAAqB,KAAIZ,EAAU,yBAAyB,OAAO;AAC/N,UAAIxlB,IAAcwlB,EAAU;AAY5B,WAXI,CAACprB,EAAY4F,CAAW,KAAK3B,GAAoB2B,CAAW,OAC9DA,IAAcgD,GAAe,GAC7BhD,EAAY,UAAU9Y,CAAM,GACvBk/B,EAAgB,wBAGnBZ,EAAU,aAAaxlB,CAAW,IAFlComB,EAAgB,aAAapmB,CAAW,IAK5CA,EAAY,OAAM,GAClBwlB,IAAYxlB,GACRjH,MAAS,IAAI;AACf,aAAK,WAAWA,CAAI;AACpB;AAAA,MACD;AAAA,IACF,WAAUysB,EAAU,iBAAiB5O,MAAgBuP,GAAqB;AACzE,YAAM3pB,IAAWwG,GAAgBwiB,EAAU,eAAgB,CAAA;AAC3D,MAAAhpB,EAAS,UAAUtV,CAAM,GACzBs+B,EAAU,QAAQhpB,CAAQ,GAC1BgpB,IAAYhpB;AAAA,IACb,WAAU,CAAC,KAAK,YAAW,KAAMzD,MAAS,IAAI;AAK7C,YAAMutB,IAAiB9P,EAAS;AAChC,UAAI,CAAC4P,EAAgB,oBAAmB,KAAM,CAACA,EAAgB,mBAAkB,KAAMrrB,EAAeurB,CAAc,MAAM,CAACA,EAAe,oBAAmB,KAAM,CAACA,EAAe,mBAAkB,IAAK;AACxM,aAAK,WAAW,EAAE,GAClBC,GAAuC,KAAK,QAAQ,KAAK,OAAO,IAAI,GACpE,KAAK,WAAWxtB,CAAI;AACpB;AAAA,MACD;AAAA,IACF;AACD,QAAImsB,MAAwB,GAAG;AAC7B,UAAIM,EAAU,WAAW;AACvB,cAAMhpB,IAAWwG,GAAgBjK,CAAI;AACrC,QAAAyD,EAAS,OAAM,GACfgpB,EAAU,QAAQhpB,CAAQ;AAC1B;AAAA,MACD;AACD,YAAMgqB,IAAkBhB,EAAU,aAC5BiB,IAAiBjB,EAAU;AACjC,UAAI5O,MAAgBC,MAAc2P,MAAoBt/B,KAAUu/B,MAAmBhN;AACjF,YAAI+L,EAAU,eAAgB,MAAK;AACjC,UAAAA,EAAU,UAAUt+B,CAAM,GAC1Bs+B,EAAU,SAAS/L,CAAK;AAAA,aACnB;AACL,gBAAMjd,IAAWwG,GAAgBjK,CAAI;AAIrC,cAHAyD,EAAS,UAAUtV,CAAM,GACzBsV,EAAS,SAASid,CAAK,GACvBjd,EAAS,OAAM,GACXoa,MAAgB;AAClB,YAAA4O,EAAU,aAAahpB,GAAU,EAAK;AAAA,eACjC;AACL,kBAAM,CAACrD,CAAU,IAAIqsB,EAAU,UAAU5O,CAAW;AACpD,YAAAzd,EAAW,YAAYqD,GAAU,EAAK;AAAA,UACvC;AAGD,UAAIA,EAAS,YAAa,KAAI,KAAK,OAAO,SAAS,WACjD,KAAK,OAAO,UAAUzD,EAAK;AAE7B;AAAA,QACD;AAAA,eACQ+qB,GAAW0B,CAAS,GAAG;AAGhC,cAAMhpB,IAAWwG,GAAgBjK,CAAI;AACrC,QAAAyD,EAAS,UAAUtV,CAAM,GACzBsV,EAAS,SAASid,CAAK,GACvBjd,EAAS,OAAM,GACfgpB,EAAU,QAAQhpB,CAAQ;AAC1B;AAAA,MACD;AACD,YAAM8jB,IAAWzJ,IAAYD;AAC7B,MAAA4O,IAAYA,EAAU,WAAW5O,GAAa0J,GAAUvnB,GAAM,EAAI,GAC9DysB,EAAU,eAAgB,MAAK,KACjCA,EAAU,OAAM,IACP,KAAK,OAAO,SAAS,WAC1BA,EAAU,gBAGZ,KAAK,OAAO,UAAUzsB,EAAK,UAE3B,KAAK,SAASytB,GACd,KAAK,QAAQC;AAAA,IAGvB,OAAW;AACL,YAAMC,IAAwB,oBAAI,IAAI,CAAC,GAAGlB,EAAU,cAAe,GAAE,GAAGhP,EAAS,cAAe,CAAA,CAAC,GAI3FgE,IAAezf,EAAeyqB,CAAS,IAAIA,IAAYA,EAAU;AACvE,UAAImB,IAAc5rB,EAAeyb,CAAQ,IAAIA,IAAWA,EAAS,oBAC7DoQ,IAAmBpQ;AAMvB,UAAI,CAACgE,EAAa,GAAGmM,CAAW,KAAKA,EAAY;AAE/C;AACE,UAAAC,IAAmBD,GACnBA,IAAcA,EAAY;eACnBA,EAAY;AAIvB,UAAIT,EAAS,SAAS,WAAWrP,MAAc,KAAKL,EAAS,eAAc,MAAO,OAAO0P,EAAS,SAAS,aAAa1P,EAAS,qBAAsB,IAAGK;AACxJ,YAAIzc,EAAYoc,CAAQ,KAAK,CAACA,EAAS,QAAO,KAAMK,MAAcL,EAAS,sBAAsB;AAC/F,cAAIA,EAAS,eAAe;AAC1B,kBAAMha,IAAWwG,GAAgBwT,EAAS,eAAgB,CAAA;AAC1D,YAAAA,EAAS,QAAQha,CAAQ,GACzBga,IAAWha;AAAA,UACZ;AAED,UAAI,CAACqL,GAAYqe,EAAS,QAAS,CAAA,KAAKA,EAAS,SAAS,WACxD1P,IAAWA,EAAS,WAAW,GAAGK,GAAW,EAAE,IAEjD6P,EAAsB,IAAIlQ,EAAS,KAAK;AAAA,QAClD,OAAe;AACL,gBAAM8P,IAAiB9P,EAAS;AAChC,UAAI,CAAC8P,EAAe,WAAU,KAAMA,EAAe,gBAAiB,MAAK,IACvEA,EAAe,OAAM,IAErB9P,EAAS,OAAM;AAAA,QAElB;AAAA;AAED,QAAAkQ,EAAsB,IAAIlQ,EAAS,KAAK;AAM1C,YAAMqQ,IAAmBF,EAAY,eAC/BG,IAAmB,IAAI,IAAI7B,CAAa,GACxC8B,IAA+BvM,EAAa,GAAGmM,CAAW,GAQ1DK,IAAkBxM,EAAa,cAAcgL,EAAU,qBAAqB,OAAOhL,IAAegL;AACxG,eAAS11B,IAAI+2B,EAAiB,SAAS,GAAG/2B,KAAK,GAAGA,KAAK;AACrD,cAAMm3B,IAAgBJ,EAAiB/2B;AACvC,YAAIm3B,EAAc,GAAGzB,CAAS,KAAKzqB,EAAeksB,CAAa,KAAKA,EAAc,WAAWzB,CAAS;AACpG;AAEF,QAAIyB,EAAc,iBACZ,CAACH,EAAiB,IAAIG,CAAa,KAAKA,EAAc,GAAGL,CAAgB,IACtEG,KACHC,EAAgB,YAAYC,GAAe,EAAK,IAGlDA,EAAc,OAAM;AAAA,MAGzB;AACD,UAAI,CAACF,GAA8B;AAIjC,YAAIzmB,IAASqmB,GACTO,IAAoB;AACxB,eAAO5mB,MAAW,QAAM;AACtB,gBAAMxP,IAAWwP,EAAO,eAClB6mB,IAAiBr2B,EAAS;AAChC,WAAIq2B,MAAmB,KAAKr2B,EAASq2B,IAAiB,GAAG,GAAGD,CAAiB,OAC3ER,EAAsB,OAAOpmB,EAAO,KAAK,GACzC4mB,IAAoB5mB,IAEtBA,IAASA,EAAO;QACjB;AAAA,MACF;AAID,UAAI,CAACklB,EAAU;AACb,QAAAA,IAAYA,EAAU,WAAW5O,GAAauP,IAAsBvP,GAAa7d,GAAM,EAAI,GACvFysB,EAAU,eAAgB,MAAK,KACjCA,EAAU,OAAM,IACPA,EAAU,YAAa,KAAI,KAAK,OAAO,SAAS,WAGzD,KAAK,OAAO,UAAUzsB,EAAK;AAAA,eAEpB6d,MAAgBuP;AACzB,QAAAX,EAAU,OAAM;AAAA,WACX;AACL,cAAMhpB,IAAWwG,GAAgBjK,CAAI;AACrC,QAAAyD,EAAS,OAAM,GACfgpB,EAAU,QAAQhpB,CAAQ;AAAA,MAC3B;AAGD,eAAS1M,IAAI,GAAGA,IAAIo1B,GAAqBp1B,KAAK;AAC5C,cAAMs3B,IAAenC,EAAcn1B,IAC7B1B,IAAMg5B,EAAa;AACzB,QAAKV,EAAsB,IAAIt4B,CAAG,KAChCg5B,EAAa,OAAM;AAAA,MAEtB;AAAA,IACF;AAAA,EACF;AAAA,EAKD,aAAa;AACX,SAAK,WAAW,EAAE;AAAA,EACnB;AAAA,EAQD,WAAWC,GAAY;AACrB,QAAI,KAAK,eAAe;AACtB,WAAK,aAAaA,CAAU,GAE5B7mB,GAAmB,IAAI;AACvB;AAAA,IACD;AACD,UAAMykB,IAAgB,KAAK,YACrBqC,IAAoB,CAAA;AAC1B,eAAWF,KAAgBnC;AACzB,MAAI7qB,EAAYgtB,CAAY,KAC1BE,EAAkB,KAAKF,CAAY;AAGvC,UAAMG,IAA0BD,EAAkB;AAClD,QAAIC,MAA4B,GAAG;AACjC,WAAK,aAAaF,CAAU,GAE5B7mB,GAAmB,IAAI;AACvB;AAAA,IACD;AACD,UAAM0I,IAAS,KAAK,QACd7B,IAAQ,KAAK,OACbH,IAAa,KAAK,cAClBsgB,IAAatgB,IAAaG,IAAQ6B,GAClCgd,IAAWhf,IAAagC,IAAS7B;AACvC,QAAIogB,IAAa,GACbjC,IAAY8B,EAAkB,IAC9B1Q,IAAc4Q,EAAW,SAAS,YAAY,IAAIA,EAAW;AAQjE,QALIA,EAAW,SAAS,UAAU5Q,MAAgB4O,EAAU,yBAC1DiC,IAAa,GACbjC,IAAY8B,EAAkB,IAC9B1Q,IAAc,IAEZ4O,KAAa;AACf;AAEF,UAAMkC,IAAkBlC,EAAU,eAAe6B,GAAY,IAAI,GAC3DhB,IAAYkB,IAA0B;AAC5C,QAAI/Q,IAAW8Q,EAAkBjB;AACjC,UAAMxP,IAAYqP,EAAS,SAAS,SAASA,EAAS,SAAS1P,EAAS;AAGxE,QAAIgP,EAAU,GAAGhP,CAAQ,GAAG;AAE1B,UAAII,MAAgBC;AAClB;AAGF,UAAIxY,GAAoBmnB,CAAS,KAAK5O,MAAgB,KAAKC,MAAc2O,EAAU;AACjF,QAAAA,EAAU,UAAUkC,CAAe;AAAA,WAC9B;AAGL,cAAMvG,IAAaqE,EAAU,UAAU5O,GAAaC,CAAS,GACvD9T,IAAc6T,MAAgB,IAAIuK,EAAW,KAAKA,EAAW;AACnE,QAAApe,EAAY,UAAU2kB,CAAe,GAGjCF,EAAW,SAAS,UACtBA,EAAW,IAAIzkB,EAAY,OAAO,GAAG,MAAM,GAEzCmjB,EAAS,SAAS,UACpBA,EAAS,IAAInjB,EAAY,OAAO8T,IAAYD,GAAa,MAAM;AAAA,MAElE;AACD,WAAK,SAAS8Q;AACd;AAAA,IACD;AAGD,IAAI9Q,MAAgB,KAAK,CAACvY,GAAoBmnB,CAAS,MACrD,CAAA,EAAGA,CAAS,IAAIA,EAAU,UAAU5O,CAAW,GAC/CA,IAAc,IAEhB4O,EAAU,UAAUkC,CAAe;AACnC,UAAMC,IAAiBnR,EAAS,eAAe6Q,GAAYK,CAAe;AAG1E,IAAI7Q,IAAY,MACVA,MAAcL,EAAS,mBAAoB,KAAI,CAACnY,GAAoBmY,CAAQ,MAC9E,CAACA,CAAQ,IAAIA,EAAS,UAAUK,CAAS,IAE3CL,EAAS,UAAUmR,CAAc;AAInC,aAAS73B,IAAI23B,IAAa,GAAG33B,IAAIu2B,GAAWv2B,KAAK;AAC/C,YAAM0M,IAAW8qB,EAAkBx3B,IAC7B0iB,IAAahW,EAAS,eAAe6qB,GAAYM,CAAc;AACrE,MAAAnrB,EAAS,UAAUgW,CAAU;AAAA,IAC9B;AAGD,IAAIgV,EAAW,SAAS,UACtBA,EAAW,IAAIhC,EAAU,OAAO5O,GAAa,MAAM,GAEjDsP,EAAS,SAAS,UACpBA,EAAS,IAAI1P,EAAS,OAAOK,GAAW,MAAM,GAEhD,KAAK,SAAS6Q,IAAkBC;AAAA,EACjC;AAAA,EASD,YAAY7gB,GAAO;AACjB,QAAIA,EAAM,WAAW;AACnB;AAEF,QAAI,KAAK,OAAO,QAAQ,QAAQ;AAC9B,WAAK,gBAAe;AACpB,YAAMtO,IAAYC;AAClB,UAAI,CAACW,EAAkBZ,CAAS;AAC9B,cAAM,MAAM,+CAA+C;AAE7D,aAAOA,EAAU,YAAYsO,CAAK;AAAA,IACnC;AACD,UAAMyT,IAAa,KAAK,WAAU,IAAK,KAAK,QAAQ,KAAK,QACnDqN,IAAaxb,GAAamO,EAAW,QAAS,GAAEtO,EAAiB,GACjE4b,IAAO/gB,EAAMA,EAAM,SAAS;AAGlC,QAAI,gBAAgB8gB,KAAc7sB,EAAe6sB,CAAU,GAAG;AAC5D,UAAI,gBAAgB9gB,EAAM;AACxB,aAAK,WAAWA,EAAM,GAAG,eAAgB,CAAA;AAAA,WACpC;AACL,cAAMkT,IAAQ8N,GAAyB,IAAI;AAC3C,QAAAF,EAAW,OAAO5N,GAAO,GAAGlT,CAAK,GACjC+gB,EAAK,UAAS;AAAA,MACf;AACD;AAAA,IACD;AAGD,UAAME,IAAY,CAAAl4B,OAASkL,EAAelL,CAAI,KAAKsK,GAAiBtK,CAAI,MAAM,CAACA,EAAK,SAAQ;AAC5F,QAAI,CAACiX,EAAM,KAAKihB,CAAS,GAAG;AAC1B,UAAI,CAAChtB,EAAe6sB,CAAU;AAC5B,cAAM,MAAM,4CAA4C;AAE1D,YAAM5N,IAAQ8N,GAAyB,IAAI;AAC3C,MAAAF,EAAW,OAAO5N,GAAO,GAAGlT,CAAK,GACjC+gB,EAAK,UAAS;AACd;AAAA,IACD;AAGD,UAAMG,IAAeC,GAAiBnhB,CAAK,GACrCohB,IAAeF,EAAa,qBAC5BG,IAASH,EAAa,eACtBI,IAAc,CAAAv4B,MAAQkL,EAAelL,CAAI,KAAKoc,GAAkBpc,CAAI,KAAK,CAACA,EAAK,QAAO,KAAMkL,EAAe6sB,CAAU,MAAM,CAACA,EAAW,aAAaA,EAAW,kBAAiB,IAEhLS,IADe,CAACttB,EAAe6sB,CAAU,KAAK,CAACA,EAAW,YACvB,KAAK,gBAAe,IAAK,MAC5D9K,IAAeqL,EAAOA,EAAO,SAAS;AAC5C,QAAItL,IAAgBsL,EAAO;AAC3B,QAAIC,EAAYvL,CAAa,GAAG;AAC9B,UAAI,CAAC9hB,EAAe6sB,CAAU;AAC5B,cAAM,MAAM,4CAA4C;AAE1D,MAAAA,EAAW,OAAO,GAAG/K,EAAc,YAAa,CAAA,GAChDA,IAAgBsL,EAAO;AAAA,IACxB;AACD,IAAItL,KACFD,GAAiBgL,GAAY/K,CAAa;AAE5C,UAAMyL,IAAoBlc,GAAa8b,GAAcjc,EAAiB;AACtE,IAAIoc,KAAqBttB,EAAeutB,CAAiB,MAAMD,EAAkB,uBAAuBpc,GAAkB6Q,CAAY,OACpIwL,EAAkB,OAAO,GAAGD,EAAkB,YAAa,CAAA,GAC3DA,EAAkB,OAAM,IAEtBttB,EAAe6sB,CAAU,KAAKA,EAAW,QAAO,KAClDA,EAAW,OAAM,GAEnBM,EAAa,UAAS;AAGtB,UAAMzK,IAAY1iB,EAAe6sB,CAAU,IAAIA,EAAW,aAAc,IAAG;AAC3E,IAAI/oB,GAAiB4e,CAAS,KAAK6K,MAAsBV,KACvDnK,EAAU,OAAM;AAAA,EAEnB;AAAA,EAOD,kBAAkB;AAChB,QAAI,KAAK,OAAO,QAAQ,QAAQ;AAC9B,YAAM8K,IAAY7L;AAClBtb,aAAAA,GAAU,EAAC,OAAO,KAAK,OAAO,QAAQ,GAAG,CAACmnB,CAAS,CAAC,GACpDA,EAAU,OAAM,GACTA;AAAA,IACR;AACD,UAAMvO,IAAQ8N,GAAyB,IAAI,GACrC3gB,IAAQiF,GAAa,KAAK,OAAO,QAAO,GAAIH,EAAiB;AACnE,QAAI,CAAClR,EAAeoM,CAAK;AACvB,YAAM,MAAM,wCAAwC;AAEtD,UAAMqhB,IAAgBrhB,EAAM,gBAAgB6S,CAAK,GAC3CiD,IAAgBuL,IAAgB,CAACA,GAAe,GAAGA,EAAc,gBAAe,CAAE,IAAI,IACtFC,IAAWthB,EAAM,eAAe,MAAM,EAAK;AACjD,WAAIshB,KACFA,EAAS,OAAO,GAAGxL,CAAa,GAChCwL,EAAS,YAAW,GACbA,KAGF;AAAA,EACR;AAAA,EAMD,gBAAgBC,GAAa;AAC3B,UAAMC,IAAYpL;AAGlB,QAFA,KAAK,YAAY,CAACoL,CAAS,CAAC,GAExBD,GAAa;AACf,YAAMpoB,IAASqoB,EAAU,oBACnB3O,IAAQ2O,EAAU;AACxB,MAAAroB,EAAO,OAAO0Z,GAAOA,CAAK;AAAA,IAC3B;AAAA,EACF;AAAA,EAQD,UAAU;AACR,UAAMiL,IAAgB,KAAK,YACrBC,IAAsBD,EAAc,QACpCoB,IAAYnB,IAAsB,GAClChc,IAAS,KAAK,QACd7B,IAAQ,KAAK;AACnB,QAAIme,IAAYP,EAAc,IAC1BzO,IAAWyO,EAAcoB;AAC7B,UAAM,CAACxtB,GAAcC,CAAW,IAAI6sB,GAAqB,IAAI;AAC7D,QAAIT,MAAwB;AAC1B,aAAO;AACF,QAAIA,MAAwB,GAAG;AACpC,UAAI9qB,EAAYorB,CAAS,KAAK,CAAC,KAAK,YAAW,GAAI;AACjD,cAAM5O,IAAc/d,IAAeC,IAAcA,IAAcD,GACzDge,IAAYhe,IAAeC,IAAcD,IAAeC,GACxDqoB,IAAaqE,EAAU,UAAU5O,GAAaC,CAAS,GACvDhnB,IAAO+mB,MAAgB,IAAIuK,EAAW,KAAKA,EAAW;AAC5D,eAAOtxB,KAAQ,OAAO,CAACA,CAAI,IAAI,CAAA;AAAA,MAChC;AACD,aAAO,CAAC21B,CAAS;AAAA,IAClB;AACD,UAAMtK,IAAWhS,EAAO,SAAS7B,CAAK;AACtC,QAAIjN,EAAYorB,CAAS,GAAG;AAC1B,YAAM5O,IAAcsE,IAAWriB,IAAeC;AAC9C,MAAI8d,MAAgB4O,EAAU,uBAC5BP,EAAc,MAAK,IACVrO,MAAgB,MACzB,CAAA,EAAG4O,CAAS,IAAIA,EAAU,UAAU5O,CAAW,GAC/CqO,EAAc,KAAKO;AAAA,IAEtB;AACD,QAAIprB,EAAYoc,CAAQ,GAAG;AAEzB,YAAMoS,IADepS,EAAS,iBACU,QAClCK,IAAYqE,IAAWpiB,IAAcD;AAC3C,MAAIge,MAAc,IAChBoO,EAAc,IAAG,IACRpO,MAAc+R,MACvB,CAACpS,CAAQ,IAAIA,EAAS,UAAUK,CAAS,GACzCoO,EAAcoB,KAAa7P;AAAA,IAE9B;AACD,WAAOyO;AAAA,EACR;AAAA,EAWD,OAAO4D,GAAO3hB,GAAY4hB,GAAa;AACrC,UAAMzhB,IAAQ,KAAK,OACb6B,IAAS,KAAK,QACd6f,IAAWF,MAAU,QAGrBthB,IAAeH,GAAiBC,GAAOH,CAAU;AACvD,QAAI/M,GAAiBoN,CAAY,KAAK,CAACA,EAAa,WAAU,GAAI;AAGhE,UAAIwhB,KAAYxhB,EAAa,wBAAwB;AACnD,cAAMyhB,IAAgBC;AACtB,QAAAD,EAAc,IAAIzhB,EAAa,KAAK,GACpCjM,GAAc0tB,CAAa;AAC3B;AAAA,MACD;AACD,YAAMje,IAAU7D,IAAaK,EAAa,mBAAkB,IAAKA,EAAa;AAC9E,UAAKnN,EAAY2Q,CAAO,GAmBjB;AACL,cAAMwW,IAAaxW,EAAQ,OACrBjO,IAASoK,IAAa6D,EAAQ,eAAgB,EAAC,SAAS;AAC9D,QAAA1D,EAAM,IAAIka,GAAYzkB,GAAQ,MAAM,GAChCisB,KACF7f,EAAO,IAAIqY,GAAYzkB,GAAQ,MAAM;AAEvC;AAAA,MACD,OA3B0B;AACzB,cAAMwD,IAASiH,EAAa;AAC5B,YAAIzK,GACAosB;AACJ,QAAInuB,EAAegQ,CAAO,KACxBme,IAAane,EAAQ,OACrBjO,IAASoK,IAAa6D,EAAQ,gBAAe,IAAK,MAElDjO,IAASyK,EAAa,wBACtB2hB,IAAa5oB,EAAO,OACf4G,KACHpK,MAGJuK,EAAM,IAAI6hB,GAAYpsB,GAAQ,SAAS,GACnCisB,KACF7f,EAAO,IAAIggB,GAAYpsB,GAAQ,SAAS;AAE1C;AAAA,MACR;AAAA,IASK;AACD,UAAM5E,IAASoE,MACT3D,IAAeC,GAAgBV,EAAO,OAAO;AACnD,QAAI,CAACS;AACH;AAEF,UAAMmB,IAAqB5B,EAAO,qBAC5B0B,IAAc1B,EAAO;AAe3B,QAXI0B,MAAgB,QAAQE,MAAuB,QAAQiB,EAAewM,CAAY,KAAK,CAACA,EAAa,SAAQ,KAAM,CAACA,EAAa,WAAU,KAC7IiD,GAA4B1Q,GAAoB5B,GAAQ0B,CAAW,GAQrEuvB,GAAoBxwB,GAAckwB,GAAO3hB,IAAa,aAAa,WAAW4hB,CAAW,GAErFnwB,EAAa,aAAa,GAAG;AAC/B,YAAMktB,IAAQltB,EAAa,WAAW,CAAC,GAEjCU,IAAa,KAAK,OAAO,QAAO,GAChCwM,IAAOgC,GAAYxO,CAAU,IAAIA,IAAaoQ,GAA4BpQ,CAAU;AAG1F,UAFA,KAAK,cAAcwsB,CAAK,GACxB,KAAK,QAAQ,IACT,CAACkD,GAAU;AAEb,cAAMjiB,IAAQ,KAAK,YACbsiB,IAAa,CAAA;AACnB,YAAIC,IAAkB;AACtB,iBAASv5B,IAAI,GAAGA,IAAIgX,EAAM,QAAQhX,KAAK;AACrC,gBAAM4M,IAAWoK,EAAMhX;AACvB,UAAIqZ,GAAazM,GAAUmJ,CAAI,IAC7BujB,EAAW,KAAK1sB,CAAQ,IAExB2sB,IAAkB;AAAA,QAErB;AACD,YAAIA,KAAmBD,EAAW,SAAS;AAGzC,cAAIliB,GAAY;AACd,kBAAMoiB,IAAiBF,EAAW;AAClC,YAAIruB,EAAeuuB,CAAc,IAC/BA,EAAe,YAAW,IAE1BA,EAAe,mBAAmB;UAEhD,OAAiB;AACL,kBAAMC,IAAgBH,EAAWA,EAAW,SAAS;AACrD,YAAIruB,EAAewuB,CAAa,IAC9BA,EAAc,UAAS,IAEvBA,EAAc,mBAAmB;UAEpC;AAMH,SAAI5wB,EAAa,eAAektB,EAAM,kBAAkBltB,EAAa,iBAAiBktB,EAAM,gBAC1F2D,GAAY,IAAI;AAAA,MAEnB;AAAA,IACF;AAAA,EACF;AAAA,EASD,gBAAgBtgB,GAAQ7P,GAAY6N,GAAY;AAC9C,QAAI,CAACA,MAELgC,EAAO,SAAS,aAAanO,EAAe1B,CAAU,KAAK6P,EAAO,WAAW7P,EAAW,gBAAe,KAAM6P,EAAO,SAAS,UAAUA,EAAO,WAAW7P,EAAW,mBAAkB,IAAK;AACzL,YAAMiH,IAASjH,EAAW,aACpB4G,IAAc5G,EAAW,qBAAqBiH,MAAW,OAAO,OAAOA,EAAO,eAAc;AAClG,UAAIvF,EAAekF,CAAW,KAAKA,EAAY,aAAY;AACzD,eAAO;AAAA,IAEV;AACD,WAAO;AAAA,EACR;AAAA,EAQD,gBAAgBiH,GAAY;AAC1B,UAAMuiB,IAAe,KAAK;AAC1B,QAAI,KAAK,eAAe;AACtB,YAAMvgB,IAAS,KAAK;AACpB,UAAI7P,IAAa6P,EAAO;AACxB,UAAI,KAAK,gBAAgBA,GAAQ7P,GAAY6N,CAAU;AACrD;AAIF,YAAMG,IAAQ,KAAK,OACbE,IAAeH,GAAiBC,GAAOH,CAAU;AACvD,UAAI/M,GAAiBoN,CAAY,KAAK,CAACA,EAAa,WAAU,GAAI;AAGhE,YAAIA,EAAa,qBAAoB,KAAMxM,EAAe1B,CAAU,KAAKA,EAAW,gBAAiB,MAAK,GAAG;AAC3G,UAAAA,EAAW,OAAM;AACjB,gBAAM2vB,IAAgBC;AACtB,UAAAD,EAAc,IAAIzhB,EAAa,KAAK,GACpCjM,GAAc0tB,CAAa;AAAA,QACrC;AACU,UAAAzhB,EAAa,OAAM,GACJjL,KACR,gBAAgB/K,IAA0B,MAAS;AAE5D;AAAA,MACR,WAAiB,CAAC2V,KAAcnM,EAAewM,CAAY,KAAKxM,EAAe1B,CAAU,KAAKA,EAAW,WAAW;AAC5G,QAAAA,EAAW,OAAM,GACjBkO,EAAa,YAAW;AACxB;AAAA,MACD;AAED,UADA,KAAK,OAAO,UAAUL,GAAY,WAAW,GACxC,KAAK;AAmBH,YAAIA,KAAcgC,EAAO,WAAW,MAEzBA,EAAO,SAAS,YAAYA,EAAO,QAAO,IAAKA,EAAO,QAAS,EAAC,iBAAgB,GACpF,gBAAgB,IAAI;AAC9B;AAAA,aAvBqB;AACvB,cAAM5B,IAAYD,EAAM,SAAS,SAASA,EAAM,QAAS,IAAG;AAE5D,YADAhO,IAAa6P,EAAO,SAAS,SAASA,EAAO,QAAS,IAAG,MACrD5B,MAAc,QAAQA,EAAU,YAAW,GAAI;AACjD,gBAAMxK,IAASuK,EAAM,QACf6P,IAAkB5P,EAAU;AAClC,cAAIA,EAAU,GAAGjO,CAAU,KAAK6N,KAAcpK,MAAWoa,KAAmB,CAAChQ,KAAcpK,MAAW,GAAG;AACvG,YAAA4sB,GAAepiB,GAAWJ,GAAYpK,CAAM;AAC5C;AAAA,UACD;AAAA,QACF,WAAUzD,MAAe,QAAQA,EAAW,YAAW,GAAI;AAC1D,gBAAMyD,IAASoM,EAAO,QAChBgO,IAAkB7d,EAAW;AACnC,cAAIA,EAAW,GAAGiO,CAAS,KAAKJ,KAAcpK,MAAW,KAAK,CAACoK,KAAcpK,MAAWoa,GAAiB;AACvG,YAAAwS,GAAerwB,GAAY6N,GAAYpK,CAAM;AAC7C;AAAA,UACD;AAAA,QACF;AACD,QAAA6sB,GAAyC,MAAMziB,CAAU;AAAA,MAC1D;AAAA,IAOF;AAED,QADA,KAAK,WAAU,GACXA,KAAc,CAACuiB,KAAgB,KAAK,YAAa,KAAI,KAAK,OAAO,SAAS,aAAa,KAAK,OAAO,WAAW,GAAG;AACnH,YAAMpwB,IAAa,KAAK,OAAO,QAAO;AACtC,MAAIA,EAAW,aAAawO,GAAYxO,EAAW,UAAW,CAAA,KAAKA,EAAW,qBAAsB,MAAK,KACvGA,EAAW,gBAAgB,IAAI;AAAA,IAElC;AAAA,EACF;AAAA,EAQD,WAAW6N,GAAY;AACrB,QAAI,KAAK,eAAe;AAItB,YAAM0iB,IAAkB,KAAK,OAAO,SAAS;AAe7C,UAdIA,KACF,KAAK,WAAW,GAAG,GAErB,KAAK,OAAO,UAAU1iB,GAAY,cAAc,IAK/BA,IAAa,KAAK,QAAQ,KAAK,QACnC,WAAW,KACtB,KAAK,OAAO,UAAUA,GAAY,WAAW,GAI3C0iB,GAAiB;AACnB,cAAMpC,IAAatgB,IAAa,KAAK,SAAS,KAAK;AACnD,QAAAsgB,EAAW,IAAIA,EAAW,KAAKA,EAAW,SAAS,GAAGA,EAAW,IAAI;AAAA,MACtE;AAAA,IACF;AACD,SAAK,WAAU;AAAA,EAChB;AAAA,EAQD,WAAWtgB,GAAY;AACrB,QAAI,KAAK,eAAe;AACtB,YAAMgC,IAAS,KAAK,QACd7P,IAAa6P,EAAO;AAC1B,UAAI,KAAK,gBAAgBA,GAAQ7P,GAAY6N,CAAU;AACrD;AAEF,WAAK,OAAO,UAAUA,GAAY,MAAM;AAAA,IACzC;AACD,SAAK,WAAU;AAAA,EAChB;AAAA,EAOD,aAAa;AACX,WAAO,KAAK,MAAM,SAAS,KAAK,MAAM;AAAA,EACvC;AAAA,EACD,oBAAoB;AAClB,WAAO,CAAC,KAAK,QAAQ,KAAK,KAAK;AAAA,EAChC;AACH;AACA,SAAS8Q,GAAiB3tB,GAAG;AAC3B,SAAOA,aAAa06B;AACtB;AACA,SAAS8E,GAAmBhtB,GAAO;AACjC,QAAMC,IAASD,EAAM;AACrB,MAAIA,EAAM,SAAS;AACjB,WAAOC;AAET,QAAMwD,IAASzD,EAAM;AACrB,SAAOC,MAAWwD,EAAO,gBAAiB,IAAGA,EAAO,eAAgB,EAAC,SAAS;AAChF;AACA,SAASqlB,GAAqBntB,GAAW;AACvC,QAAMsxB,IAAiBtxB,EAAU;AACjC,MAAIsxB,MAAmB;AACrB,WAAO,CAAC,GAAG,CAAC;AAEd,QAAM,CAAC5gB,GAAQ7B,CAAK,IAAIyiB;AACxB,SAAI5gB,EAAO,SAAS,aAAa7B,EAAM,SAAS,aAAa6B,EAAO,QAAQ7B,EAAM,OAAO6B,EAAO,WAAW7B,EAAM,SACxG,CAAC,GAAG,CAAC,IAEP,CAACwiB,GAAmB3gB,CAAM,GAAG2gB,GAAmBxiB,CAAK,CAAC;AAC/D;AACA,SAASmiB,GAAYhxB,GAAW;AAC9B,QAAM6O,IAAQ7O,EAAU,OAClB0Q,IAAS1Q,EAAU,QACnBkd,IAAYxM,EAAO,KACnBrQ,IAAeqQ,EAAO,QACtB6gB,IAAa7gB,EAAO;AAC1B,EAAA4b,GAAgB5b,GAAQ7B,EAAM,KAAKA,EAAM,QAAQA,EAAM,IAAI,GAC3Dyd,GAAgBzd,GAAOqO,GAAW7c,GAAckxB,CAAU,GAC1DvxB,EAAU,eAAe;AAC3B;AACA,SAAS2wB,GAAoBxwB,GAAckwB,GAAO1X,GAAW2X,GAAa;AAGxE,EAAAnwB,EAAa,OAAOkwB,GAAO1X,GAAW2X,CAAW;AACnD;AACA,SAASa,GAAyCnxB,GAAW0O,GAAY;AACvE,QAAMgC,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU,OAClBa,IAAa6P,EAAO,WACpB5B,IAAYD,EAAM;AACxB,MAAIhO,MAAeiO,KAAa4B,EAAO,SAAS,UAAU7B,EAAM,SAAS,QAAQ;AAE/E,UAAMxO,IAAeqQ,EAAO,QACtBpQ,IAAcuO,EAAM,QACpB6T,IAAWriB,IAAeC,GAC1B8d,IAAcsE,IAAWriB,IAAeC,GACxC+d,IAAYqE,IAAWpiB,IAAcD,GACrCmxB,IAAkBnT,IAAY;AACpC,QAAID,MAAgBoT,GAAiB;AACnC,YAAMjxB,IAAOM,EAAW,eAAc,EAAG,MAAMud,GAAaC,CAAS;AACrE,MAAKjV,GAAoB7I,CAAI,MACvBmO,IACFG,EAAM,SAAS2iB,IAEf9gB,EAAO,SAAS8gB;AAAA,IAGrB;AAAA,EACF;AACH;AACA,SAASN,GAAe75B,GAAMqX,GAAYpK,GAAQ;AAChD,QAAMN,IAAW3M,GAEXo6B,IADcztB,EAAS,iBACH,MAAM,SAAS,GACnC0tB,IAAcD,EAAM;AAC1B,MAAIE,IAAgB,GAChBC,IAAgB;AACpB,WAASt6B,IAAI,GAAGA,IAAIo6B,GAAap6B,KAAK;AACpC,UAAMiJ,IAAOkxB,EAAMn6B,IACbu6B,IAASv6B,MAAMo6B,IAAc;AAGnC,QAFAE,IAAgBD,GAChBA,KAAiBpxB,EAAK,QAClBmO,KAAcijB,MAAkBrtB,KAAUqtB,IAAgBrtB,KAAUutB,GAAQ;AAC9E,MAAAJ,EAAM,OAAOn6B,GAAG,CAAC,GACbu6B,MACFD,IAAgB;AAElB;AAAA,IACD;AAAA,EACF;AACD,QAAME,IAAkBL,EAAM,KAAK,EAAE,EAAE,KAAI;AAC3C,EAAIK,MAAoB,KACtB9tB,EAAS,OAAM,KAEfA,EAAS,eAAe8tB,CAAe,GACvC9tB,EAAS,OAAO4tB,GAAeA,CAAa;AAEhD;AACA,SAASG,GAAsBC,GAAiBC,GAAgBlF,GAAW;AACzE,QAAMjlB,IAASkqB,EAAgB;AAC/B,SAAOjF,MAAc,QAAQjlB,MAAW,QAAQ,CAACA,EAAO,gBAAgBA,MAAWilB,EAAU,QAAO;AACtG;AACA,SAASmF,GAA+BryB,GAAKyE,GAAQyoB,GAAWrtB,GAAQ;AACtE,MAAIuyB,IAAiB3tB,GACjB6tB;AAKJ,MAAItyB,EAAI,aAAatD,IAAkB;AAErC,QAAI4M,IAAqB;AAIzB,UAAMipB,IAAavyB,EAAI,YACjBwyB,IAAmBD,EAAW,QAC9B9wB,IAAqB5B,EAAO;AAGlC,IAAIuyB,MAAmBI,MACrBlpB,IAAqB,IACrB8oB,IAAiBI,IAAmB;AAEtC,QAAIpX,IAAWmX,EAAWH,IACtBK,IAAiB;AACrB,QAAIrX,MAAa3Z;AACf,MAAA2Z,IAAWmX,EAAWH,IAAiB,IACvCK,IAAiB;AAAA,aACRhxB,MAAuB,MAAM;AACtC,YAAMixB,IAA2BjxB,EAAmB;AACpD,UAAIzB,MAAQ0yB,GAA0B;AACpC,cAAMC,IAAoB,MAAM,UAAU,QAAQ,KAAKD,EAAyB,UAAUjxB,CAAkB;AAC5G,QAAIgD,IAASkuB,KACXP;AAAA,MAEH;AAAA,IACF;AAED,QADAE,IAAeppB,GAAgBkS,CAAQ,GACnCrZ,EAAYuwB,CAAY;AAC1B,MAAAF,IAAiB/oB,GAAkBipB,GAAchpB,CAAkB;AAAA,SAC9D;AACL,UAAI6oB,IAAkBjpB,GAAgBlJ,CAAG;AAEzC,UAAImyB,MAAoB;AACtB,eAAO;AAET,UAAIzvB,EAAeyvB,CAAe,GAAG;AACnC,QAAAC,IAAiB,KAAK,IAAID,EAAgB,gBAAe,GAAIC,CAAc;AAC3E,YAAI16B,IAAQy6B,EAAgB,gBAAgBC,CAAc;AAC1D,YAAI1vB,EAAehL,CAAK,KAAKw6B,GAAsBx6B,GAAO06B,GAAgBlF,CAAS,GAAG;AACpF,gBAAMzC,IAAanhB,IAAqB5R,EAAM,kBAAiB,IAAKA,EAAM;AAC1E,UAAI+yB,MAAe,OACjB0H,IAAkBz6B,KAElBA,IAAQ+yB,GACR0H,IAAkBzvB,EAAehL,CAAK,IAAIA,IAAQA,EAAM,qBAE1D06B,IAAiB;AAAA,QAClB;AACD,QAAIrwB,EAAYrK,CAAK,KACnB46B,IAAe56B,GACfy6B,IAAkB,MAClBC,IAAiB/oB,GAAkB3R,GAAO4R,CAAkB,KACnD5R,MAAUy6B,KAAmB7oB,KAAsB,CAACmpB,KAC7DL;AAAA,MAEV,OAAa;AACL,cAAMzQ,IAAQwQ,EAAgB;AAG9B,QAAI1tB,MAAW,KAAK3C,GAAiBqwB,CAAe,KAAKjpB,GAAgBlJ,CAAG,MAAMmyB,IAChFC,IAAiBzQ,IAEjByQ,IAAiBzQ,IAAQ,GAE3BwQ,IAAkBA,EAAgB;MACnC;AACD,UAAIzvB,EAAeyvB,CAAe;AAChC,eAAOjG,GAAaiG,EAAgB,OAAOC,GAAgB,SAAS;AAAA,IAEvE;AAAA,EACL;AAEI,IAAAE,IAAeppB,GAAgBlJ,CAAG;AAEpC,SAAK+B,EAAYuwB,CAAY,IAGtBpG,GAAaoG,EAAa,OAAOF,GAAgB,MAAM,IAFrD;AAGX;AACA,SAASQ,GAAgCpuB,GAAOqK,GAAYgkB,GAAa;AACvE,QAAMpuB,IAASD,EAAM,QACfhN,IAAOgN,EAAM;AACnB,MAAIC,MAAW,GAAG;AAChB,UAAMkD,IAAcnQ,EAAK,sBACnByQ,IAASzQ,EAAK;AACpB,QAAI,CAACqX;AACH,MAAInM,EAAeiF,CAAW,KAAK,CAACkrB,KAAelrB,EAAY,cAC7DnD,EAAM,MAAMmD,EAAY,OACxBnD,EAAM,SAASmD,EAAY,mBAE3BnD,EAAM,OAAO,aACJzC,EAAY4F,CAAW,MAChCnD,EAAM,MAAMmD,EAAY,OACxBnD,EAAM,SAASmD,EAAY,eAAc,EAAG;AAAA,cAEpCkrB,KAAe,CAAChkB,MAAelH,MAAgB,QAAQjF,EAAeuF,CAAM,KAAKA,EAAO,SAAQ,GAAI;AAC9G,YAAM8a,IAAgB9a,EAAO;AAC7B,MAAIlG,EAAYghB,CAAa,MAC3Bve,EAAM,MAAMue,EAAc,OAC1Bve,EAAM,SAASue,EAAc,eAAc,EAAG;AAAA,IAEjD;AAAA,EACF,WAAUte,MAAWjN,EAAK,eAAc,EAAG,QAAQ;AAClD,UAAMoQ,IAAcpQ,EAAK,kBACnByQ,IAASzQ,EAAK;AACpB,QAAIqX,KAAcnM,EAAekF,CAAW,KAAKA,EAAY,SAAQ;AACnE,MAAApD,EAAM,MAAMoD,EAAY,OACxBpD,EAAM,SAAS,GAEfA,EAAM,OAAO;AAAA,cACHquB,KAAehkB,MAAejH,MAAgB,QAAQlF,EAAeuF,CAAM,KAAKA,EAAO,SAAQ,KAAM,CAACA,EAAO,mBAAkB,GAAI;AAC7I,YAAM8a,IAAgB9a,EAAO;AAC7B,MAAIlG,EAAYghB,CAAa,MAC3Bve,EAAM,MAAMue,EAAc,OAC1Bve,EAAM,SAAS;AAAA,IAElB;AAAA,EACF;AACH;AACA,SAAS0pB,GAAuCrd,GAAQ7B,GAAO8P,GAAe;AAC5E,MAAIjO,EAAO,SAAS,UAAU7B,EAAM,SAAS,QAAQ;AACnD,UAAMH,IAAagC,EAAO,SAAS7B,CAAK,GAClC6jB,IAAchiB,EAAO,GAAG7B,CAAK;AAInC,IAAA4jB,GAAgC/hB,GAAQhC,GAAYgkB,CAAW,GAC/DD,GAAgC5jB,GAAO,CAACH,GAAYgkB,CAAW,GAC3DA,MACF7jB,EAAM,MAAM6B,EAAO,KACnB7B,EAAM,SAAS6B,EAAO,QACtB7B,EAAM,OAAO6B,EAAO;AAEtB,UAAMhR,IAASoE;AACf,QAAIpE,EAAO,YAAa,KAAIA,EAAO,oBAAoBgR,EAAO,OAAO9P,EAAkB+d,CAAa,GAAG;AACrG,YAAMgU,IAAahU,EAAc,QAC3BiU,IAAYjU,EAAc;AAChC,MAAA2N,GAAgB5b,GAAQiiB,EAAW,KAAKA,EAAW,QAAQA,EAAW,IAAI,GAC1ErG,GAAgBzd,GAAO+jB,EAAU,KAAKA,EAAU,QAAQA,EAAU,IAAI;AAAA,IACvE;AAAA,EACF;AACH;AACA,SAASrF,GAAgCtoB,GAAW5E,GAAciF,GAAUhF,GAAaZ,GAAQif,GAAe;AAC9G,MAAI1Z,MAAc,QAAQK,MAAa,QAAQ,CAACD,GAAwB3F,GAAQuF,GAAWK,CAAQ;AACjG,WAAO;AAET,QAAMutB,IAAsBX,GAA+BjtB,GAAW5E,GAAcO,EAAkB+d,CAAa,IAAIA,EAAc,SAAS,MAAMjf,CAAM;AAC1J,MAAImzB,MAAwB;AAC1B,WAAO;AAET,QAAMC,IAAqBZ,GAA+B5sB,GAAUhF,GAAaM,EAAkB+d,CAAa,IAAIA,EAAc,QAAQ,MAAMjf,CAAM;AACtJ,MAAIozB,MAAuB;AACzB,WAAO;AAET,MAAID,EAAoB,SAAS,aAAaC,EAAmB,SAAS,WAAW;AACnF,UAAMjyB,IAAakI,GAAgB9D,CAAS,GACtC6J,IAAY/F,GAAgBzD,CAAQ;AAI1C,QAAI3D,GAAiBd,CAAU,KAAKc,GAAiBmN,CAAS;AAC5D,aAAO;AAAA,EAEV;AAGD,SAAAif,GAAuC8E,GAAqBC,GAAoBnU,CAAa,GACtF,CAACkU,GAAqBC,CAAkB;AACjD;AACA,SAASC,GAAoB17B,GAAM;AACjC,SAAOkL,EAAelL,CAAI,KAAK,CAACA,EAAK,SAAQ;AAC/C;AAMA,SAASwwB,GAA4B3K,GAAW7c,GAAc6d,GAAU5d,GAAaixB,GAAYyB,GAAW;AAC1G,QAAMrsB,IAAcC,MACd5G,IAAY,IAAI8sB,GAAef,GAAa7O,GAAW7c,GAAckxB,CAAU,GAAGxF,GAAa7N,GAAU5d,GAAa0yB,CAAS,GAAG,GAAG,EAAE;AAC7I,SAAAhzB,EAAU,QAAQ,IAClB2G,EAAY,aAAa3G,GAClBA;AACT;AACA,SAASizB,KAAwB;AAC/B,QAAMviB,IAASqb,GAAa,QAAQ,GAAG,SAAS,GAC1Cld,IAAQkd,GAAa,QAAQ,GAAG,SAAS;AAC/C,SAAO,IAAIe,GAAepc,GAAQ7B,GAAO,GAAG,EAAE;AAChD;AACA,SAAS4hB,KAAuB;AAC9B,SAAO,IAAIlE,GAAc,oBAAI,IAAG,CAAE;AACpC;AACA,SAAS2G,GAAyBxzB,GAAQ;AAExC,QAAMif,IADqBjf,EAAO,iBACO,YACnCS,IAAeC,GAAgBV,EAAO,OAAO;AACnD,SAAIkB,EAAkB+d,CAAa,KAAKA,KAAiB,OAChDE,GAA8BF,GAAexe,GAAcT,GAAQ,IAAI,IAEzEif,EAAc;AACvB;AACA,SAASwU,GAA6BhzB,GAAcT,GAAQ;AAC1D,SAAOmf,GAA8B,MAAM1e,GAAcT,GAAQ,IAAI;AACvE;AACA,SAASmf,GAA8BF,GAAexe,GAAcT,GAAQF,GAAO;AACjF,QAAMuR,IAAYrR,EAAO;AACzB,MAAIqR,MAAc;AAChB,WAAO;AAgBT,QAAM0M,IAAcje,KAASuR,EAAU,OACjCqiB,IAAY3V,IAAcA,EAAY,OAAO,QAC7C4V,IAAoBD,MAAc,mBAClCE,IAAkB,CAACh0B,GAAwB,MAAO+zB,KAAqBD,MAAc,iBAAiBA,MAAc,sBAAsBA,MAAc,oBAAoBA,MAAc,WAAW3V,KAAeA,EAAY,WAAW,KAAK2V,MAAc,UAAUA,MAAc;AAC5R,MAAInuB,GAAWK,GAAUjF,GAAcC;AACvC,MAAI,CAACM,EAAkB+d,CAAa,KAAK2U,GAAiB;AACxD,QAAInzB,MAAiB;AACnB,aAAO;AAMT,QAJA8E,IAAY9E,EAAa,YACzBmF,IAAWnF,EAAa,WACxBE,IAAeF,EAAa,cAC5BG,IAAcH,EAAa,aACvBkzB,KAAqBzyB,EAAkB+d,CAAa,KAAK,CAACtZ,GAAwB3F,GAAQuF,GAAWK,CAAQ;AAC/G,aAAOqZ,EAAc;EAE3B;AACI,WAAOA,EAAc;AAIvB,QAAM2O,IAA0BC,GAAgCtoB,GAAW5E,GAAciF,GAAUhF,GAAaZ,GAAQif,CAAa;AACrI,MAAI2O,MAA4B;AAC9B,WAAO;AAET,QAAM,CAACuF,GAAqBC,CAAkB,IAAIxF;AAClD,SAAO,IAAIR,GAAe+F,GAAqBC,GAAqBlyB,EAAkB+d,CAAa,IAAQA,EAAc,SAAlB,GAA2B/d,EAAkB+d,CAAa,IAASA,EAAc,QAAnB,EAAwB;AAC/L;AACA,SAAS1e,KAAgB;AAEvB,SADoB2G,KACD;AACrB;AACA,SAASwD,KAAwB;AAE/B,SADetG,KACD,aAAa;AAC7B;AACA,SAAS2d,GAA0CzhB,GAAWyQ,GAAY8iB,GAAYC,IAAQ,GAAG;AAC/F,QAAM9iB,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU,OAClBa,IAAa6P,EAAO,WACpB5B,IAAYD,EAAM;AACxB,MAAI,CAAC4B,EAAW,GAAG5P,CAAU,KAAK,CAAC4P,EAAW,GAAG3B,CAAS;AACxD;AAEF,QAAM9H,IAAYyJ,EAAW;AAE7B,MAAIzQ,EAAU,eAAe;AAC3B,UAAMyzB,IAAkB/iB,EAAO;AAC/B,QAAI6iB,KAAcE,KAAmBD,IAAQ,KAAKD,IAAaE,KAAmBD,IAAQ,GAAG;AAC3F,YAAME,IAAqB,KAAK,IAAI,GAAGD,IAAkBD,CAAK;AAC9D,MAAA9iB,EAAO,IAAI1J,GAAW0sB,GAAoB,SAAS,GACnD7kB,EAAM,IAAI7H,GAAW0sB,GAAoB,SAAS,GAElDC,GAAiC3zB,CAAS;AAAA,IAC3C;AAAA,EACL,OAAS;AAEL,UAAM0O,IAAa1O,EAAU,cACvB+hB,IAAarT,IAAaG,IAAQ6B,GAClCkjB,IAAiB7R,EAAW,WAC5BgL,IAAYre,IAAagC,IAAS7B,GAClCglB,IAAgB9G,EAAU;AAChC,QAAItc,EAAW,GAAGmjB,CAAc,GAAG;AACjC,YAAME,IAAmB/R,EAAW;AACpC,OAAIwR,KAAcO,KAAoBN,IAAQ,KAAKD,IAAaO,KAAoBN,IAAQ,MAC1FzR,EAAW,IAAI/a,GAAW,KAAK,IAAI,GAAG8sB,IAAmBN,CAAK,GAAG,SAAS;AAAA,IAE7E;AACD,QAAI/iB,EAAW,GAAGojB,CAAa,GAAG;AAChC,YAAME,IAAkBhH,EAAU;AAClC,OAAIwG,KAAcQ,KAAmBP,IAAQ,KAAKD,IAAaQ,KAAmBP,IAAQ,MACxFzG,EAAU,IAAI/lB,GAAW,KAAK,IAAI,GAAG+sB,IAAkBP,CAAK,GAAG,SAAS;AAAA,IAE3E;AAAA,EACF;AAED,EAAAG,GAAiC3zB,CAAS;AAC5C;AACA,SAAS2zB,GAAiC3zB,GAAW;AACnD,QAAM0Q,IAAS1Q,EAAU,QACnBK,IAAeqQ,EAAO,QACtB7B,IAAQ7O,EAAU,OAClBM,IAAcuO,EAAM,QACpBhO,IAAa6P,EAAO,WACpB5B,IAAYD,EAAM;AACxB,MAAI7O,EAAU,eAAe;AAC3B,QAAI,CAACuC,EAAe1B,CAAU;AAC5B;AAEF,UAAMmzB,IAAYnzB,EAAW,mBACvBozB,IAAoB5zB,KAAgB2zB,GACpCz8B,IAAQ08B,IAAoBpzB,EAAW,gBAAgBmzB,IAAY,CAAC,IAAInzB,EAAW,gBAAgBR,CAAY;AACrH,QAAIuB,EAAYrK,CAAK,GAAG;AACtB,UAAI2wB,IAAY;AAChB,MAAI+L,MACF/L,IAAY3wB,EAAM,uBAEpBmZ,EAAO,IAAInZ,EAAM,OAAO2wB,GAAW,MAAM,GACzCrZ,EAAM,IAAItX,EAAM,OAAO2wB,GAAW,MAAM;AAAA,IACzC;AACD;AAAA,EACD;AACD,MAAI3lB,EAAe1B,CAAU,GAAG;AAC9B,UAAMmzB,IAAYnzB,EAAW,mBACvBozB,IAAoB5zB,KAAgB2zB,GACpCz8B,IAAQ08B,IAAoBpzB,EAAW,gBAAgBmzB,IAAY,CAAC,IAAInzB,EAAW,gBAAgBR,CAAY;AACrH,QAAIuB,EAAYrK,CAAK,GAAG;AACtB,UAAI2wB,IAAY;AAChB,MAAI+L,MACF/L,IAAY3wB,EAAM,uBAEpBmZ,EAAO,IAAInZ,EAAM,OAAO2wB,GAAW,MAAM;AAAA,IAC1C;AAAA,EACF;AACD,MAAI3lB,EAAeuM,CAAS,GAAG;AAC7B,UAAMklB,IAAYllB,EAAU,mBACtBolB,IAAmB5zB,KAAe0zB,GAClCz8B,IAAQ28B,IAAmBplB,EAAU,gBAAgBklB,IAAY,CAAC,IAAIllB,EAAU,gBAAgBxO,CAAW;AACjH,QAAIsB,EAAYrK,CAAK,GAAG;AACtB,UAAI2wB,IAAY;AAChB,MAAIgM,MACFhM,IAAY3wB,EAAM,uBAEpBsX,EAAM,IAAItX,EAAM,OAAO2wB,GAAW,MAAM;AAAA,IACzC;AAAA,EACF;AACH;AACA,SAASiM,GAAyB9Y,GAAiB3b,GAAQ;AAEzD,QAAMyK,IADkBzK,EAAO,iBACO,YAChCwS,IAAgBmJ,EAAgB;AACtC,MAAIza,EAAkBsR,CAAa,GAAG;AACpC,UAAMxB,IAASwB,EAAc,QACvBrD,IAAQqD,EAAc;AAC5B,QAAIrR;AAKJ,QAJI6P,EAAO,SAAS,WAClB7P,IAAa6P,EAAO,WACpB7P,EAAW,mBAAmBsJ,GAAe+H,CAAa,IAExDrD,EAAM,SAAS,QAAQ;AACzB,YAAMC,IAAYD,EAAM;AACxB,MAAIhO,MAAeiO,KACjBA,EAAU,mBAAmB3E,GAAe+H,CAAa;AAAA,IAE5D;AAAA,EACF;AACH;AACA,SAASqP,GAA4Bld,GAAOhN,GAAMyQ,GAAQN,GAAaC,GAAa;AAClF,MAAIshB,IAAa,MACbzkB,IAAS,GACT3U,IAAO;AACX,EAAI6X,MAAgB,QAClBuhB,IAAavhB,EAAY,OACrB5F,EAAY4F,CAAW,KACzBlD,IAASkD,EAAY,sBACrB7X,IAAO,UACE4S,EAAeiF,CAAW,MACnClD,IAASkD,EAAY,mBACrB7X,IAAO,cAGL8X,MAAgB,SAClBshB,IAAathB,EAAY,OACrB7F,EAAY6F,CAAW,IACzB9X,IAAO,SACE4S,EAAekF,CAAW,MACnC9X,IAAO,aAITo5B,MAAe,QAAQp5B,MAAS,OAClC0U,EAAM,IAAI0kB,GAAYzkB,GAAQ3U,CAAI,KAElC2U,IAASjN,EAAK,wBACViN,MAAW,OAEbA,IAASwD,EAAO,oBAElBzD,EAAM,IAAIyD,EAAO,OAAOxD,GAAQ,SAAS;AAE7C;AACA,SAAS6kB,GAAkC9kB,GAAOqe,GAAU9sB,GAAKkK,GAAQsd,GAAY;AACnF,EAAI/Y,EAAM,SAAS,UACjBA,EAAM,MAAMzO,GACP8sB,MACHre,EAAM,UAAU+Y,MAET/Y,EAAM,SAASvE,EAAO,qBAAoB,MACnDuE,EAAM,UAAU;AAEpB;AACA,SAAS+vB,GAAmBjqB,GAAe+H,GAAexS,GAAQS,GAAck0B,GAAMjzB,GAAakzB,GAAW;AAC5G,QAAMC,IAAgBp0B,EAAa,YAC7Bq0B,IAAer0B,EAAa,WAC5BE,IAAeF,EAAa,cAC5BG,IAAcH,EAAa,aAC3B+E,IAAgB,SAAS;AAI/B,MAAImvB,EAAK,IAAI,eAAe,KAAKnvB,MAAkB9D,KAAe8D,MAAkB,QAAQF,GAAoCE,CAAa;AAC3I;AAEF,MAAI,CAACtE,EAAkBsR,CAAa,GAAG;AAKrC,IAAI/H,MAAkB,QAAQ9E,GAAwB3F,GAAQ60B,GAAeC,CAAY,KACvFr0B,EAAa,gBAAe;AAE9B;AAAA,EACD;AACD,QAAMuQ,IAASwB,EAAc,QACvBrD,IAAQqD,EAAc,OACtBgL,IAAYxM,EAAO,KACnBwN,IAAWrP,EAAM,KACjB5J,IAAYqK,GAAuB5P,GAAQwd,CAAS,GACpD5X,IAAWgK,GAAuB5P,GAAQwe,CAAQ,GAClDuW,IAAmB/jB,EAAO,QAC1BgkB,IAAkB7lB,EAAM,QACxBmL,IAAa9H,EAAc,QAC3BiV,IAAYjV,EAAc,OAC1BwgB,IAAcxgB,EAAc;AAClC,MAAIyiB,IAAiB1vB,GACjB2vB,IAAgBtvB,GAChBuvB,IAA6B;AACjC,MAAInkB,EAAO,SAAS,QAAQ;AAC1B,IAAAikB,IAAiB5uB,GAAed,CAAS;AACzC,UAAMpE,IAAa6P,EAAO;AAC1B,IAAAmkB,IAA6Bh0B,EAAW,UAAW,MAAKmZ,KAAcnZ,EAAW,SAAU,MAAKsmB;AAAA,EACpG;AAAS,IAAIvmB,EAAkBuJ,CAAa,KAAKA,EAAc,OAAO,SAAS,WAC3E0qB,IAA6B;AAQ/B,MANIhmB,EAAM,SAAS,WACjB+lB,IAAgB7uB,GAAeT,CAAQ,IAKrC,EAAAqvB,MAAmB,QAAQC,MAAkB,UAG7ClC,MAAgBvoB,MAAkB,QAAQ0qB,KAA8Bj0B,EAAkBuJ,CAAa,MAAMA,EAAc,WAAW6P,KAAc7P,EAAc,UAAUgd,OAC9KnG,GAA6BhH,GAAYmN,GAAWsN,GAAkBvX,GAAW,YAAY,IAAG,CAAE,GAOhG,EAAA7c,MAAiBo0B,KAAoBn0B,MAAgBo0B,KAAmBH,MAAkBI,KAAkBH,MAAiBI,KAEjI,EAAEz0B,EAAa,SAAS,WAAWuyB,QAE7BxtB,MAAkB,QAAQ,CAAC9D,EAAY,SAAS8D,CAAa,MAC/D9D,EAAY,MAAM;AAAA,IAChB,eAAe;AAAA,EACvB,CAAO,GAECsP,EAAO,SAAS,cAOtB;AAAA,QAAI;AACF,MAAAvQ,EAAa,iBAAiBw0B,GAAgBF,GAAkBG,GAAeF,CAAe;AAAA,IAC/F,SAAQjmC,GAAP;AAKE,cAAQ,KAAKA,CAAK;AAAA,IAErB;AACD,QAAI,CAAC4lC,EAAK,IAAI,uBAAuB,KAAKniB,EAAc,YAAa,KAAI9Q,MAAgB,QAAQA,MAAgB,SAAS,eAAe;AACvI,YAAM0zB,IAAkB5iB,aAAyB4a,MAAkB5a,EAAc,OAAO,SAAS,YAAYyiB,EAAe,WAAWF,MAAqB,OAAOt0B,EAAa,aAAa,IAAIA,EAAa,WAAW,CAAC,IAAI;AAC9N,UAAI20B,MAAoB,MAAM;AAC5B,YAAIrlB;AACJ,YAAIqlB,aAA2B,MAAM;AACnC,gBAAMzH,IAAQ,SAAS;AACvB,UAAAA,EAAM,WAAWyH,CAAe,GAChCrlB,IAAgB4d,EAAM;QAC9B;AACQ,UAAA5d,IAAgBqlB,EAAgB;AAElC,QAAAtlB,GAAuB9P,GAAQ+P,GAAerO,CAAW;AAAA,MAC1D;AAAA,IACF;AACD,IAAA2f;;AACF;AACA,SAASgU,GAAazmB,GAAO;AAC3B,MAAItO,IAAYC,QAAmBmK;AACnC,EAAIpK,MAAc,SAChBA,IAAY4I,KAAW,cAEzB5I,EAAU,YAAYsO,CAAK;AAC7B;AACA,SAAS0mB,KAAkB;AACzB,QAAMh1B,IAAYC;AAClB,SAAID,MAAc,OACT,KAEFA,EAAU;AACnB;AACA,SAASsvB,GAAyBtvB,GAAW;AAC3C,MAAIi1B,IAAaj1B;AACjB,EAAKA,EAAU,iBACbi1B,EAAW,WAAU;AAIvB,QAAMrW,IAAe3e;AAIrB,MAHIW,EAAkBge,CAAY,MAChCqW,IAAarW,IAEX,CAAChe,EAAkBq0B,CAAU;AAC/B,UAAM,MAAM,uCAAuC;AAErD,QAAMvkB,IAASukB,EAAW;AAC1B,MAAI59B,IAAOqZ,EAAO,WACdpM,IAASoM,EAAO;AACpB,SAAO,CAAC+C,GAAkBpc,CAAI;AAC5B,KAACA,GAAMiN,CAAM,IAAI4wB,GAAkB79B,GAAMiN,CAAM;AAEjD,SAAOA;AACT;AACA,SAAS4wB,GAAkB79B,GAAMiN,GAAQ;AACvC,QAAMwD,IAASzQ,EAAK;AACpB,MAAI,CAACyQ,GAAQ;AACX,UAAMioB,IAAY7L;AAClBtb,WAAAA,GAAU,EAAC,OAAOmnB,CAAS,GAC3BA,EAAU,OAAM,GACT,CAACnnB,MAAY,CAAC;AAAA,EACtB;AACD,MAAIhH,EAAYvK,CAAI,GAAG;AACrB,UAAMo6B,IAAQp6B,EAAK,UAAUiN,CAAM;AACnC,QAAImtB,EAAM,WAAW;AACnB,aAAO,CAAC3pB,GAAQzQ,EAAK,qBAAsB,CAAA;AAE7C,UAAMxF,IAAIyS,MAAW,IAAI,IAAI,GACvBkd,IAAQiQ,EAAM,GAAG,qBAAoB,IAAK5/B;AAChD,WAAO,CAACiW,GAAQ0Z,CAAK;AAAA,EACtB;AACD,MAAI,CAACjf,EAAelL,CAAI,KAAKiN,MAAW;AACtC,WAAO,CAACwD,GAAQzQ,EAAK,qBAAsB,CAAA;AAE7C,QAAM24B,IAAgB34B,EAAK,gBAAgBiN,CAAM;AACjD,MAAI0rB,GAAe;AACjB,UAAMmF,IAAc,IAAIrI,GAAef,GAAa10B,EAAK,OAAOiN,GAAQ,SAAS,GAAGynB,GAAa10B,EAAK,OAAOiN,GAAQ,SAAS,GAAG,GAAG,EAAE,GAChI8wB,IAAa/9B,EAAK,eAAe89B,CAAW;AAClD,IAAIC,KACFA,EAAW,OAAOpF,GAAe,GAAGA,EAAc,gBAAiB,CAAA;AAAA,EAEtE;AACD,SAAO,CAACloB,GAAQzQ,EAAK,qBAAsB,IAAG,CAAC;AACjD;AACA,SAASo4B,GAAiBnhB,GAAO;AAG/B,QAAM+mB,IAAcnR;AACpB,MAAIoR,IAAe;AACnB,WAASh+B,IAAI,GAAGA,IAAIgX,EAAM,QAAQhX,KAAK;AACrC,UAAMD,IAAOiX,EAAMhX,IACbi+B,IAAkBlvB,GAAiBhP,CAAI;AAC7C,QAAIk+B,KAAmB5zB,GAAiBtK,CAAI,KAAKA,EAAK,SAAU,KAAIkL,EAAelL,CAAI,KAAKA,EAAK,SAAQ,KAAMuK,EAAYvK,CAAI,KAAKA,EAAK,oBAAoB;AAC3J,UAAIi+B,MAAiB,SACnBA,IAAej+B,EAAK,2BACpBg+B,EAAY,OAAOC,CAAY,GAG3BC;AACF;AAGJ,MAAID,MAAiB,QACnBA,EAAa,OAAOj+B,CAAI;AAAA,IAEhC;AACM,MAAAg+B,EAAY,OAAOh+B,CAAI,GACvBi+B,IAAe;AAAA,EAElB;AACD,SAAOD;AACT;AAUA,IAAIG,KAAoB,MACpBC,KAAe,MACfC,KAAiB,IACjBC,KAA2C,IAC3CC,KAAyB;AAC7B,MAAMC,KAAkB;AAAA,EACtB,eAAe;AAAA,EACf,WAAW;AAAA,EACX,SAAS;AACX;AACA,SAASxtB,KAA0B;AACjC,SAAOqtB,MAAkBF,OAAsB,QAAQA,GAAkB;AAC3E;AACA,SAAS/uB,KAAkB;AACzB,MAAIivB;AAEA,UAAM,MAAM,sCAAsC;AAGxD;AACA,SAAShvB,KAA4B;AACnC,MAAIkvB,KAAyB;AAEzB,UAAM,MAAM,6MAA6M;AAG/N;AACA,SAAShvB,KAAuB;AAC9B,MAAI4uB,OAAsB;AAEtB,UAAM,MAAM,oLAAoLM,GAAyB,GAAE;AAG/N,SAAON;AACT;AACA,SAAS1xB,KAAkB;AACzB,MAAI2xB,OAAiB;AAEjB,UAAM,MAAM,uIAAuIK,GAAyB,GAAE;AAGlL,SAAOL;AACT;AACA,SAASK,KAA0B;AACjC,MAAIC,IAAoB;AACxB,QAAMC,IAAsB,oBAAI,OAC1BC,IAAcxwB,GAAc;AAClC,MAAI,OAAO,SAAW;AACpB,eAAWpO,KAAQ,SAAS,iBAAiB,mBAAmB,GAAG;AACjE,YAAMqI,IAAS0F,GAA6B/N,CAAI;AAChD,UAAImO,GAAgB9F,CAAM;AACxB,QAAAq2B;AAAA,eACSr2B,GAAQ;AACjB,YAAIw2B,IAAU,OAAOx2B,EAAO,YAAY,WAAW,SAAS;AAC5D,QAAIw2B,MAAYD,MACdC,KAAW,8DAEbF,EAAoB,IAAIE,CAAO;AAAA,MAChC;AAAA,IACF;AAEH,MAAIC,IAAS,0BAA0BJ,uCAAuDE;AAC9F,SAAID,EAAoB,SACtBG,KAAU,2CAA2C,MAAM,KAAKH,CAAmB,EAAE,KAAK,IAAI,MAEzFG;AACT;AACA,SAASC,KAA0B;AACjC,SAAOX;AACT;AACA,SAAS5uB,KAA+B;AACtC,SAAO2uB;AACT;AACA,SAASa,GAAiB32B,GAAQrI,GAAMi/B,GAAiB;AACvD,QAAM3mC,IAAO0H,EAAK,QACZwN,IAAiBF,GAAyBjF,GAAQ/P,CAAI;AAC5D,MAAI4mC,IAAgBD,EAAgB,IAAI3mC,CAAI;AAC5C,EAAI4mC,MAAkB,WACpBA,IAAgB,MAAM,KAAK1xB,EAAe,UAAU,GACpDyxB,EAAgB,IAAI3mC,GAAM4mC,CAAa;AAEzC,QAAMC,IAAsBD,EAAc;AAC1C,WAASj/B,IAAI,GAAGA,IAAIk/B,MAClBD,EAAcj/B,GAAGD,CAAI,GACjB,EAACA,EAAK,eAF6BC;AAEvC;AAIJ;AACA,SAASm/B,GAAyBp/B,GAAM4Q,GAAgB;AACtD,SAAO5Q,MAAS,UAEhBA,EAAK,UAAU4Q,KAAkB5Q,EAAK,WAAU;AAClD;AACA,SAASq/B,GAA4B/vB,GAAajH,GAAQ;AACxD,QAAMsV,IAActV,EAAO,cACrBuH,IAAUN,EAAY;AAC5B,aAAWqC,KAAWgM,GAAa;AACjC,UAAM3d,IAAO4P,EAAQ,IAAI+B,CAAO;AAChC,IAAIpH,EAAYvK,CAAI,KAAKA,EAAK,WAAU,KAAMA,EAAK,aAAc,KAAI,CAACA,EAAK,cAAa,KACtF0M,GAAmB1M,CAAI;AAAA,EAE1B;AACH;AAYA,SAASs/B,GAAoBhwB,GAAajH,GAAQ;AAChD,QAAMsV,IAActV,EAAO,cACrBwH,IAAgBxH,EAAO,gBACvBuH,IAAUN,EAAY,UACtBsB,IAAiBG,MACjBkuB,IAAkB,oBAAI;AAC5B,MAAIM,IAA2B5hB,GAC3B6hB,IAAiCD,EAAyB,MAC1DE,IAA6B5vB,GAC7B6vB,IAAmCD,EAA2B;AAClE,SAAOD,IAAiC,KAAKE,IAAmC,KAAG;AACjF,QAAIF,IAAiC,GAAG;AAEtC,MAAAn3B,EAAO,eAAe,oBAAI;AAC1B,iBAAWsJ,KAAW4tB,GAA0B;AAC9C,cAAMv/B,IAAO4P,EAAQ,IAAI+B,CAAO;AAChC,QAAIpH,EAAYvK,CAAI,KAAKA,EAAK,WAAU,KAAMA,EAAK,aAAc,KAAI,CAACA,EAAK,cAAa,KACtF0M,GAAmB1M,CAAI,GAErBA,MAAS,UAAao/B,GAAyBp/B,GAAM4Q,CAAc,KACrEouB,GAAiB32B,GAAQrI,GAAMi/B,CAAe,GAEhDthB,EAAY,IAAIhM,CAAO;AAAA,MACxB;AAKD,UAJA4tB,IAA2Bl3B,EAAO,cAClCm3B,IAAiCD,EAAyB,MAGtDC,IAAiC,GAAG;AACtC,QAAAjB;AACA;AAAA,MACD;AAAA,IACF;AAKD,IAAAl2B,EAAO,eAAe,oBAAI,OAC1BA,EAAO,iBAAiB,oBAAI;AAC5B,eAAWs3B,KAAoCF,GAA4B;AACzE,YAAM9tB,IAAUguB,EAAiC,IAC3CC,IAA6BD,EAAiC;AACpE,UAAIhuB,MAAY,UAAU,CAACiuB;AACzB;AAEF,YAAM5/B,IAAO4P,EAAQ,IAAI+B,CAAO;AAChC,MAAI3R,MAAS,UAAao/B,GAAyBp/B,GAAM4Q,CAAc,KACrEouB,GAAiB32B,GAAQrI,GAAMi/B,CAAe,GAEhDpvB,EAAc,IAAI8B,GAASiuB,CAA0B;AAAA,IACtD;AACD,IAAAL,IAA2Bl3B,EAAO,cAClCm3B,IAAiCD,EAAyB,MAC1DE,IAA6Bp3B,EAAO,gBACpCq3B,IAAmCD,EAA2B,MAC9DlB;AAAA,EACD;AACD,EAAAl2B,EAAO,eAAesV,GACtBtV,EAAO,iBAAiBwH;AAC1B;AACA,SAASgwB,GAAqB1P,GAAgB;AAE5C,SAAO2P,GADwB3P,GACyB1jB,GAAiB,EAAC,MAAM;AAClF;AACA,SAASqzB,GAAyB3P,GAAgB1Z,GAAiB;AACjE,QAAMne,IAAO63B,EAAe,MACtB3iB,IAAiBiJ,EAAgB,IAAIne,CAAI;AAC/C,MAAIkV,MAAmB;AAEnB,UAAM,MAAM,2BAA2BlV,gBAAmB;AAG9D,QAAMynC,IAAYvyB,EAAe;AACjC,MAAI2iB,EAAe,SAAS4P,EAAU,QAAO;AAEzC,UAAM,MAAM,qBAAqBA,EAAU,wCAAwC;AAGvF,QAAM//B,IAAO+/B,EAAU,WAAW5P,CAAc,GAC1ClvB,IAAWkvB,EAAe;AAChC,MAAIjlB,EAAelL,CAAI,KAAK,MAAM,QAAQiB,CAAQ;AAChD,aAAShB,IAAI,GAAGA,IAAIgB,EAAS,QAAQhB,KAAK;AACxC,YAAM+/B,IAA0B/+B,EAAShB,IACnCggC,IAAYH,GAAyBE,GAAyBvpB,CAAe;AACnF,MAAAzW,EAAK,OAAOigC,CAAS;AAAA,IACtB;AAEH,SAAOjgC;AACT;AACA,SAASkgC,GAAiBC,GAAuB93B,GAAQ+3B,GAAU;AACjE,QAAM9wB,IAAc+wB,MACdC,IAA4BnC,IAC5BoC,IAAuBlC,IACvBmC,IAAuBpC,IACvBqC,IAAwBp4B,EAAO,gBAC/Bq4B,IAAsBr4B,EAAO,cAC7Bs4B,IAAyBt4B,EAAO,iBAChCu4B,IAAoBv4B,EAAO;AACjC,EAAAA,EAAO,iBAAiB,oBAAI,OAC5BA,EAAO,eAAe,oBAAI,OAC1BA,EAAO,kBAAkB,oBAAI,OAC7BA,EAAO,aAAa,GACpB81B,KAAoB7uB,GACpB+uB,KAAiB,IACjBD,KAAe/1B;AACf,MAAI;AACF,UAAMoO,IAAkBpO,EAAO,QACzB8nB,IAAiBgQ,EAAsB;AAC7C,IAAAL,GAAyB3P,GAAgB1Z,CAAe,GACpD2pB,KACFA,KAIF9wB,EAAY,YAAY,IAEtBuxB,GAAqCvxB,CAAW;AAAA,EAEnD,SAAQlY,GAAP;AACA,IAAIA,aAAiB,SACnBiR,EAAO,SAASjR,CAAK;AAAA,EAE3B,UAAY;AACR,IAAAiR,EAAO,iBAAiBo4B,GACxBp4B,EAAO,eAAeq4B,GACtBr4B,EAAO,kBAAkBs4B,GACzBt4B,EAAO,aAAau4B,GACpBzC,KAAoBmC,GACpBjC,KAAiBkC,GACjBnC,KAAeoC;AAAA,EAChB;AACD,SAAOlxB;AACT;AAMA,SAASwxB,GAAgBz4B,GAAQiH,GAAayxB,GAAY;AACxD,QAAMT,IAA4BnC,IAC5BoC,IAAuBlC,IACvBmC,IAAuBpC;AAC7B,EAAAD,KAAoB7uB,GACpB+uB,KAAiB,IACjBD,KAAe/1B;AACf,MAAI;AACF,WAAO04B,EAAU;AAAA,EACrB,UAAY;AACR,IAAA5C,KAAoBmC,GACpBjC,KAAiBkC,GACjBnC,KAAeoC;AAAA,EAChB;AACH;AACA,SAASK,GAAqC3jB,GAAoB;AAGhE,QAAMtN,IAAUsN,EAAmB;AACnC,EAAAtN,EAAQ,MAAM,MAAM;AAClB,UAAM,IAAI,MAAM,gDAAgD;AAAA,EACpE,GACEA,EAAQ,QAAQ,MAAM;AACpB,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACtE,GACEA,EAAQ,SAAS,MAAM;AACrB,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACvE;AACA;AACA,SAASoxB,GAAsB34B,GAAQ44B,GAAqB;AAC1D,QAAM/jB,IAAqB7U,EAAO,qBAC5B0B,IAAc1B,EAAO,cACrB64B,IAAgB74B,EAAO,aAAa0B,MAAgB;AAC1D,MAAImT,MAAuB;AACzB;AAOF,QAAMlT,IAAqB3B,EAAO,cAC5B84B,IAAmBn3B,EAAmB,YACtCo3B,IAAmBlkB,EAAmB,YACtCmkB,IAAch5B,EAAO,eAAejD,IACpCk7B,IAA4BnC,IAC5BoC,IAAuBlC,IACvBmC,IAAuBpC,IACvBkD,IAAqBj5B,EAAO,WAC5BsB,IAAWtB,EAAO;AACxB,MAAImO,IAAe;AAGnB,MAFAnO,EAAO,sBAAsB,MAC7BA,EAAO,eAAe6U,GAClB,CAACgkB,KAAiBG,KAAe13B,MAAa,MAAM;AACtD,IAAAy0B,KAAe/1B,GACf81B,KAAoBjhB,GACpBmhB,KAAiB,IAEjBh2B,EAAO,YAAY;AACnB,QAAI;AACF,YAAM4b,IAAY5b,EAAO,YACnBwH,IAAgBxH,EAAO,gBACvBsV,IAActV,EAAO;AAC3B,MAAAsB,EAAS,WAAU,GACnB6M,IAAeuN,GAAe/Z,GAAoBkT,GAAoB7U,GAAQ4b,GAAWpU,GAAe8N,CAAW;AAAA,IACpH,SAAQvmB,GAAP;AAOA,UALIA,aAAiB,SACnBiR,EAAO,SAASjR,CAAK,GAInB,CAACknC;AACH,QAAAiD,GAAYl5B,GAAQ,MAAM0B,GAAamT,CAAkB,GACzDtR,GAAqBvD,CAAM,GAC3BA,EAAO,aAAa/C,IACpBg5B,KAA2C,IAC3C0C,GAAsB34B,GAAQ2B,CAAkB,GAChDs0B,KAA2C;AAAA;AAG3C,cAAMlnC;AAER;AAAA,IACN,UAAc;AACR,MAAAuS,EAAS,QAAQI,GAAay0B,EAAe,GAC7Cn2B,EAAO,YAAYi5B,GACnBnD,KAAoBmC,GACpBjC,KAAiBkC,GACjBnC,KAAeoC;AAAA,IAChB;AAAA,EACF;AACD,EAAKtjB,EAAmB,cACtBA,EAAmB,YAAY,IAE7B2jB,GAAqC3jB,CAAkB,GACnD3T,EAAkB63B,CAAgB,MACpC,OAAO,OAAOA,EAAiB,MAAM,GACrC,OAAO,OAAOA,EAAiB,KAAK,IAEtC,OAAO,OAAOA,CAAgB;AAGlC,QAAMzjB,IAActV,EAAO,cACrBwH,IAAgBxH,EAAO,gBACvBmE,IAAkBnE,EAAO,kBACzB20B,IAAO30B,EAAO,aACdm5B,IAAWn5B,EAAO;AACxB,EAAIg5B,MACFh5B,EAAO,aAAajD,IACpBiD,EAAO,gBAAgB,SACvBA,EAAO,eAAe,oBAAI,OAC1BA,EAAO,iBAAiB,oBAAI,OAC5BA,EAAO,mBAAmB,oBAAI,OAC9BA,EAAO,cAAc,oBAAI,QAE3B4U,GAAkC5U,GAAQ6U,CAAkB;AAM5D,QAAMpU,IAAeo4B,IAAgB,OAAOn4B,GAAgBV,EAAO,OAAO;AAI1E,MAAIA,EAAO,aAEXS,MAAiB,SAASu4B,KAAeD,MAAqB,QAAQA,EAAiB,QAAQ;AAC7F,IAAAhD,KAAe/1B,GACf81B,KAAoBjhB;AACpB,QAAI;AAIF,UAHIvT,MAAa,QACfA,EAAS,WAAU,GAEjB03B,KAAeD,MAAqB,QAAQA,EAAiB,OAAO;AACtE,cAAMn3B,IAAqB5B,EAAO;AAClC,QAAI4B,MAAuB,QACzB0Q,GAA4B1Q,GAAoB5B,GAAQ0B,CAAW,GAErEgzB,GAAmBoE,GAAkBC,GAAkB/4B,GAAQS,GAAck0B,GAAMjzB,CAAW;AAAA,MAC/F;AACD,MAAA6Q,GAA4BvS,GAAQ0B,GAAaq3B,CAAgB,GAC7Dz3B,MAAa,QACfA,EAAS,QAAQI,GAAay0B,EAAe;AAAA,IAErD,UAAc;AACR,MAAAJ,KAAeoC,GACfrC,KAAoBmC;AAAA,IACrB;AAAA,EACF;AACD,EAAI9pB,MAAiB,QACnBirB,GAAyBp5B,GAAQmO,GAAcwmB,GAAMrf,GAAa3T,CAAkB,GAElF,CAACT,EAAkB63B,CAAgB,KAAKA,MAAqB,SAASD,MAAqB,QAAQ,CAACA,EAAiB,GAAGC,CAAgB,MAC1I/4B,EAAO,gBAAgB3G,IAA0B,MAAS;AAK5D,QAAM2P,IAAoBhJ,EAAO;AACjC,EAAIgJ,MAAsB,SACxBhJ,EAAO,cAAcgJ,GACrBhJ,EAAO,qBAAqB,MAC5Bq5B,GAAiB,aAAar5B,GAAQ,IAAMgJ,CAAiB,IAQ/DswB,GAA4Bt5B,GAAQ44B,KAAuBj3B,GAAoBkT,CAAkB,GACjGwkB,GAAiB,UAAUr5B,GAAQ,IAAM;AAAA,IACvC,eAAAwH;AAAA,IACA,aAAA8N;AAAA,IACA,aAAaT;AAAA,IACb,iBAAA1Q;AAAA,IACA,iBAAiBy0B,KAAuBj3B;AAAA,IACxC,MAAAgzB;AAAA,EACJ,CAAG,GACD4E,GAA+Bv5B,GAAQm5B,CAAQ,GAC/CK,GAAwBx5B,CAAM;AAChC;AACA,SAASs5B,GAA4Bt5B,GAAQ2B,GAAoBkT,GAAoB;AACnF,QAAM4kB,IAAqBxwB,GAA0BtH,CAAkB,GACjE+3B,IAAoBzwB,GAA0B4L,CAAkB;AACtE,EAAI4kB,MAAuBC,KACzBL,GAAiB,eAAer5B,GAAQ,IAAM05B,CAAiB;AAEnE;AACA,SAASN,GAAyBp5B,GAAQmO,GAAcwrB,GAAYrkB,GAAaD,GAAiB;AAChG,QAAMukB,IAAY,MAAM,KAAK55B,EAAO,WAAW,QAAQ,GACjD65B,IAAkBD,EAAU;AAClC,WAAShiC,IAAI,GAAGA,IAAIiiC,GAAiBjiC,KAAK;AACxC,UAAM,CAACkiC,GAAUxrB,CAAK,IAAIsrB,EAAUhiC,IAC9B2W,IAAqBJ,EAAa,IAAIG,CAAK;AACjD,IAAIC,MAAuB,UACzBurB,EAASvrB,GAAoB;AAAA,MAC3B,aAAA+G;AAAA,MACA,iBAAAD;AAAA,MACA,YAAAskB;AAAA,IACR,CAAO;AAAA,EAEJ;AACH;AACA,SAASN,GAAiBppC,GAAM+P,GAAQ+5B,MAAgCjpC,GAAS;AAC/E,QAAMmoC,IAAqBj5B,EAAO;AAClC,EAAAA,EAAO,YAAY+5B;AACnB,MAAI;AACF,UAAMH,IAAY,MAAM,KAAK55B,EAAO,WAAW/P,EAAK;AACpD,aAAS,IAAI,GAAG,IAAI2pC,EAAU,QAAQ;AAEpC,MAAAA,EAAU,GAAG,MAAM,MAAM9oC,CAAO;AAAA,EAEtC,UAAY;AACR,IAAAkP,EAAO,YAAYi5B;AAAA,EACpB;AACH;AACA,SAASxpB,GAAwBzP,GAAQ/P,GAAMa,GAAS;AACtD,MAAIkP,EAAO,cAAc,MAAS+1B,OAAiB/1B,GAAQ;AACzD,QAAIg6B,IAAY;AAChB,WAAAh6B,EAAO,OAAO,MAAM;AAClB,MAAAg6B,IAAYvqB,GAAwBzP,GAAQ/P,GAAMa,CAAO;AAAA,IAC/D,CAAK,GACMkpC;AAAA,EACR;AACD,QAAM5Z,IAAUxW,GAAsB5J,CAAM;AAC5C,WAASpI,IAAI,GAAGA,KAAK,GAAGA;AACtB,aAASnK,IAAI,GAAGA,IAAI2yB,EAAQ,QAAQ3yB,KAAK;AAGvC,YAAMwsC,IAFgB7Z,EAAQ3yB,GACS,UACU,IAAIwC,CAAI;AACzD,UAAIgqC,MAA4B,QAAW;AACzC,cAAMC,IAAeD,EAAwBriC;AAC7C,YAAIsiC,MAAiB,QAAW;AAC9B,gBAAMN,IAAY,MAAM,KAAKM,CAAY,GACnCL,IAAkBD,EAAU;AAClC,mBAASO,IAAI,GAAGA,IAAIN,GAAiBM;AACnC,gBAAIP,EAAUO,GAAGrpC,GAASkP,CAAM,MAAM;AACpC,qBAAO;AAAA,QAGZ;AAAA,MACF;AAAA,IACF;AAEH,SAAO;AACT;AACA,SAASw5B,GAAwBx5B,GAAQ;AACvC,QAAMo6B,IAAgBp6B,EAAO;AAC7B,MAAIo6B,EAAc,WAAW,GAAG;AAC9B,UAAMC,IAAeD,EAAc;AACnC,QAAIC,GAAc;AAChB,YAAM,CAACtC,GAAUuC,CAAO,IAAID;AAC5B,MAAAE,GAAav6B,GAAQ+3B,GAAUuC,CAAO;AAAA,IACvC;AAAA,EACF;AACH;AACA,SAASf,GAA+Bv5B,GAAQm5B,GAAU;AAExD,MADAn5B,EAAO,YAAY,IACfm5B,EAAS,WAAW,GAAG;AACzB,UAAMF,IAAqBj5B,EAAO;AAClC,IAAAA,EAAO,YAAY;AACnB,QAAI;AACF,eAASpI,IAAI,GAAGA,IAAIuhC,EAAS,QAAQvhC;AACnC,QAAAuhC,EAASvhC;IAEjB,UAAc;AACR,MAAAoI,EAAO,YAAYi5B;AAAA,IACpB;AAAA,EACF;AACH;AACA,SAASuB,GAAqBx6B,GAAQy6B,GAAuB;AAC3D,QAAML,IAAgBp6B,EAAO;AAC7B,MAAI06B,IAAiBD,KAAyB;AAK9C,SAAOL,EAAc,WAAW,KAAG;AACjC,UAAMC,IAAeD,EAAc;AACnC,QAAIC,GAAc;AAChB,YAAM,CAACM,GAAcL,CAAO,IAAID;AAChC,UAAIO,GACAhqB;AACJ,UAAI0pB,MAAY,QAAW;AAMzB,YALAM,IAAWN,EAAQ,UACnB1pB,IAAM0pB,EAAQ,KACVA,EAAQ,mBACVI,IAAiB,KAEfJ,EAAQ,UAAU;AACpB,gBAAMzlB,IAAqB7U,EAAO;AAClC,cAAM6U,MAAuB;AAC3B,kBAAM,MAAM,iEAAiE;AAE/E,UAAAA,EAAmB,aAAa;AAAA,QACjC;AACD,QAAI+lB,KACF56B,EAAO,UAAU,KAAK46B,CAAQ,GAE5BhqB,KACF5Q,EAAO,YAAY,IAAI4Q,CAAG;AAAA,MAE7B;AACD,MAAA+pB;IACD;AAAA,EACF;AACD,SAAOD;AACT;AACA,SAASH,GAAav6B,GAAQ+3B,GAAUuC,GAAS;AAC/C,QAAMX,IAAa35B,EAAO;AAC1B,MAAI46B,GACAhqB,GACA8pB,IAAiB,IACjBG,IAAW;AACf,EAAIP,MAAY,WACdM,IAAWN,EAAQ,UACnB1pB,IAAM0pB,EAAQ,KACV1pB,KAAO,QACT+oB,EAAW,IAAI/oB,CAAG,GAEpB8pB,IAAiBJ,EAAQ,kBAAkB,IAC3CO,IAAWP,EAAQ,YAAY,KAE7BM,KACF56B,EAAO,UAAU,KAAK46B,CAAQ;AAEhC,QAAMj5B,IAAqB3B,EAAO;AAClC,MAAI6U,IAAqB7U,EAAO,qBAC5B86B,IAAuB;AAC3B,GAAIjmB,MAAuB,QAAQA,EAAmB,eACpDA,IAAqB7U,EAAO,sBAAsB+6B,GAAiBlmB,KAAsBlT,CAAkB,GAC3Gm5B,IAAuB,KAEzBjmB,EAAmB,aAAagmB;AAChC,QAAM5C,IAA4BnC,IAC5BoC,IAAuBlC,IACvBmC,IAAuBpC,IACvBkD,IAAqBj5B,EAAO;AAClC,EAAA81B,KAAoBjhB,GACpBmhB,KAAiB,IACjBh2B,EAAO,YAAY,IACnB+1B,KAAe/1B;AACf,MAAI;AACF,IAAI86B,MACE96B,EAAO,YACL2B,EAAmB,eAAe,SACpCkT,EAAmB,aAAalT,EAAmB,WAAW,MAAK,KAGrEkT,EAAmB,aAAa2e,GAAyBxzB,CAAM;AAGnE,UAAMg7B,IAAyBh7B,EAAO;AACtC,IAAA+3B,KACA2C,IAAiBF,GAAqBx6B,GAAQ06B,CAAc,GAC5DjG,GAAyB5f,GAAoB7U,CAAM,GAC/CA,EAAO,eAAejD,OACpB29B,IACF1D,GAA4BniB,GAAoB7U,CAAM,IAEtDi3B,GAAoBpiB,GAAoB7U,CAAM,GAEhDw6B,GAAqBx6B,CAAM,GAC3BoV,GAA6BzT,GAAoBkT,GAAoB7U,EAAO,cAAcA,EAAO,cAAc;AAEjH,UAAMi7B,IAAuBj7B,EAAO;AACpC,IAAIg7B,MAA2BC,MAC7BpmB,EAAmB,aAAa;AAElC,UAAMkkB,IAAmBlkB,EAAmB;AAC5C,QAAI3T,EAAkB63B,CAAgB,GAAG;AACvC,YAAMmC,IAAiBrmB,EAAmB,UACpC2I,IAAYub,EAAiB,OAAO,KACpCva,IAAWua,EAAiB,MAAM;AACxC,UAAImC,EAAe,IAAI1d,CAAS,MAAM,UAAa0d,EAAe,IAAI1c,CAAQ,MAAM;AAEhF,cAAM,MAAM,8MAA8M;AAAA,IAGpO;AAAW,MAAIsB,GAAiBiZ,CAAgB,KAEtCA,EAAiB,OAAO,SAAS,MACnClkB,EAAmB,aAAa;AAAA,EAGrC,SAAQ9lB,GAAP;AAEA,IAAIA,aAAiB,SACnBiR,EAAO,SAASjR,CAAK,GAIvBiR,EAAO,sBAAsB2B,GAC7B3B,EAAO,aAAa/C,IACpB+C,EAAO,gBAAgB,SACvBA,EAAO,eAAe,oBAAI,OAC1BA,EAAO,eAAe,SACtB24B,GAAsB34B,CAAM;AAC5B;AAAA,EACJ,UAAY;AACR,IAAA81B,KAAoBmC,GACpBjC,KAAiBkC,GACjBnC,KAAeoC,GACfn4B,EAAO,YAAYi5B,GACnB/C,KAAyB;AAAA,EAC1B;AAED,EADqBl2B,EAAO,eAAejD,MAAkBo+B,GAA6BtmB,GAAoB7U,CAAM,IAE9G6U,EAAmB,cACrBA,EAAmB,aAAa,IAChC8jB,GAAsB34B,CAAM,KACnB86B,KACT11B,GAAkB,MAAM;AACtB,IAAAuzB,GAAsB34B,CAAM;AAAA,EACpC,CAAO,KAGH6U,EAAmB,aAAa,IAC5BimB,MACFnB,EAAW,MAAK,GAChB35B,EAAO,YAAY,IACnBA,EAAO,sBAAsB;AAGnC;AACA,SAASwB,GAAaxB,GAAQ+3B,GAAUuC,GAAS;AAC/C,EAAIt6B,EAAO,YACTA,EAAO,SAAS,KAAK,CAAC+3B,GAAUuC,CAAO,CAAC,IAExCC,GAAav6B,GAAQ+3B,GAAUuC,CAAO;AAE1C;AAeA,MAAMc,WAAoBpZ,GAAY;AAAA,EAepC,YAAY9rB,GAAK;AACf,UAAMA,CAAG,GACT,KAAK,UAAU,MACf,KAAK,SAAS,MACd,KAAK,SAAS,GACd,KAAK,WAAW,GAChB,KAAK,UAAU,IACf,KAAK,WAAW,GAChB,KAAK,QAAQ;AAAA,EACd;AAAA,EACD,eAAeikB,GAAU;AACvB,UAAM,eAAeA,CAAQ,GAC7B,KAAK,UAAUA,EAAS,SACxB,KAAK,SAASA,EAAS,QACvB,KAAK,SAASA,EAAS,QACvB,KAAK,WAAWA,EAAS,UACzB,KAAK,WAAWA,EAAS,UACzB,KAAK,UAAUA,EAAS,SACxB,KAAK,QAAQA,EAAS;AAAA,EACvB;AAAA,EACD,YAAY;AAEV,WADa,KAAK,YACN;AAAA,EACb;AAAA,EACD,gBAAgB;AACd,UAAMnrB,IAAS,KAAK;AACpB,WAAOkQ,GAAuBlQ,MAAW;AAAA,EAC1C;AAAA,EACD,WAAW;AAET,WADa,KAAK,YACN;AAAA,EACb;AAAA,EACD,YAAY;AAEV,WADa,KAAK,YACN;AAAA,EACb;AAAA,EACD,cAAc;AACZ,UAAM4J,IAAW,CAAA;AACjB,QAAIf,IAAQ,KAAK;AACjB,WAAOA,MAAU;AACf,MAAAe,EAAS,KAAKf,CAAK,GACnBA,IAAQA,EAAM;AAEhB,WAAOe;AAAA,EACR;AAAA,EACD,kBAAkB;AAChB,UAAMA,IAAW,CAAA;AACjB,QAAIf,IAAQ,KAAK;AACjB,WAAOA,MAAU;AACf,MAAAe,EAAS,KAAKf,EAAM,KAAK,GACzBA,IAAQA,EAAM;AAEhB,WAAOe;AAAA,EACR;AAAA,EACD,kBAAkB;AAEhB,WADa,KAAK,YACN;AAAA,EACb;AAAA,EACD,UAAU;AACR,WAAO,KAAK,gBAAiB,MAAK;AAAA,EACnC;AAAA,EACD,UAAU;AAER,UAAM4O,IADSpD,KACc;AAC7B,WAAOoD,MAAkB,QAAQA,EAAc,IAAI,KAAK,KAAK;AAAA,EAC9D;AAAA,EACD,cAAc;AACZ,UAAM5R,IAAO,KAAK,aACZylC,IAAkB,KAAK,iBAAkB,EAAC,aAAY;AAC5D,WAAOA,MAAoB,QAAQA,EAAgB,GAAGzlC,CAAI;AAAA,EAC3D;AAAA,EACD,kBAAkB;AAChB,UAAM0lC,IAAY,CAAA;AAClB,QAAIzjC,IAAQ,KAAK;AACjB,WAAOA,MAAU,QAAM;AAIrB,UAHIqK,EAAYrK,CAAK,KACnByjC,EAAU,KAAKzjC,CAAK,GAElBgL,EAAehL,CAAK,GAAG;AACzB,cAAM0jC,IAAmB1jC,EAAM;AAC/B,QAAAyjC,EAAU,KAAK,GAAGC,CAAgB;AAAA,MACnC;AACD,MAAA1jC,IAAQA,EAAM;IACf;AACD,WAAOyjC;AAAA,EACR;AAAA,EACD,qBAAqB;AACnB,QAAI3jC,IAAO,KAAK;AAChB,WAAOkL,EAAelL,CAAI,KAAG;AAC3B,YAAME,IAAQF,EAAK;AACnB,UAAIE,MAAU;AACZ;AAEF,MAAAF,IAAOE;AAAA,IACR;AACD,WAAOF;AAAA,EACR;AAAA,EACD,oBAAoB;AAClB,QAAIA,IAAO,KAAK;AAChB,WAAOkL,EAAelL,CAAI,KAAG;AAC3B,YAAME,IAAQF,EAAK;AACnB,UAAIE,MAAU;AACZ;AAEF,MAAAF,IAAOE;AAAA,IACR;AACD,WAAOF;AAAA,EACR;AAAA,EACD,qBAAqBmqB,GAAO;AAC1B,UAAMlpB,IAAW,KAAK,eAChBq2B,IAAiBr2B,EAAS;AAGhC,QAAIkpB,KAASmN,GAAgB;AAC3B,YAAMwD,IAAe75B,EAASq2B,IAAiB;AAC/C,aAAOpsB,EAAe4vB,CAAY,KAAKA,EAAa,kBAAmB,KAAIA,KAAgB;AAAA,IAC5F;AACD,UAAMA,IAAe75B,EAASkpB;AAC9B,WAAOjf,EAAe4vB,CAAY,KAAKA,EAAa,mBAAoB,KAAIA,KAAgB;AAAA,EAC7F;AAAA,EACD,gBAAgB;AAEd,UAAM+I,IADO,KAAK,YACI;AACtB,WAAOA,MAAa,OAAO,OAAO/yB,GAAc+yB,CAAQ;AAAA,EACzD;AAAA,EACD,uBAAuB;AACrB,UAAMxnB,IAAa,KAAK;AACxB,QAAIA,MAAe;AAEf,YAAM,MAAM,iBAAiB,KAAK,8BAA8B;AAGpE,WAAOA;AAAA,EACR;AAAA,EACD,eAAe;AAEb,UAAMoK,IADO,KAAK,YACG;AACrB,WAAOA,MAAY,OAAO,OAAO3V,GAAc2V,CAAO;AAAA,EACvD;AAAA,EACD,sBAAsB;AACpB,UAAMmH,IAAY,KAAK;AACvB,QAAIA,MAAc;AAEd,YAAM,MAAM,iBAAiB,KAAK,6BAA6B;AAGnE,WAAOA;AAAA,EACR;AAAA,EACD,gBAAgBzD,GAAO;AACrB,UAAM+B,IAAO,KAAK;AAClB,QAAIlsB,GACAC;AACJ,QAAIkqB,IAAQ+B,IAAO,GAAG;AAGpB,WAFAlsB,IAAO,KAAK,iBACZC,IAAI,GACGD,MAAS,QAAQC,KAAKkqB,KAAO;AAClC,YAAIlqB,MAAMkqB;AACR,iBAAOnqB;AAET,QAAAA,IAAOA,EAAK,kBACZC;AAAA,MACD;AACD,aAAO;AAAA,IACR;AAGD,SAFAD,IAAO,KAAK,gBACZC,IAAIisB,IAAO,GACJlsB,MAAS,QAAQC,KAAKkqB,KAAO;AAClC,UAAIlqB,MAAMkqB;AACR,eAAOnqB;AAET,MAAAA,IAAOA,EAAK,sBACZC;AAAA,IACD;AACD,WAAO;AAAA,EACR;AAAA,EACD,iBAAiB;AACf,QAAIwS,IAAc;AAClB,UAAMxR,IAAW,KAAK,eAChBq2B,IAAiBr2B,EAAS;AAChC,aAAShB,IAAI,GAAGA,IAAIq3B,GAAgBr3B,KAAK;AACvC,YAAMC,IAAQe,EAAShB;AACvB,MAAAwS,KAAevS,EAAM,kBACjBgL,EAAehL,CAAK,KAAKD,MAAMq3B,IAAiB,KAAK,CAACp3B,EAAM,eAC9DuS,KAAe3L;AAAA,IAElB;AACD,WAAO2L;AAAA,EACR;AAAA,EACD,qBAAqB;AACnB,QAAI4U,IAAkB;AACtB,UAAMpmB,IAAW,KAAK,eAChBq2B,IAAiBr2B,EAAS;AAChC,aAAShB,IAAI,GAAGA,IAAIq3B,GAAgBr3B,KAAK;AACvC,YAAMC,IAAQe,EAAShB;AACvB,MAAAonB,KAAmBnnB,EAAM,sBACrBgL,EAAehL,CAAK,KAAKD,MAAMq3B,IAAiB,KAAK,CAACp3B,EAAM,eAC9DmnB,KAAmBvgB,GAAkB;AAAA,IAExC;AACD,WAAOugB;AAAA,EACR;AAAA,EACD,eAAe;AAEb,WADa,KAAK,YACN;AAAA,EACb;AAAA,EACD,UAAU/uB,GAAM;AACd,QAAIA,MAAS,IAAI;AACf,YAAM+2B,IAAa/nB,GAAuBhP;AAC1C,cAAQ,KAAK,cAAc+2B,OAAgB;AAAA,IAC5C;AACD,WAAO;AAAA,EACR;AAAA,EAID,OAAOiB,GAAeC,GAAc;AAClC,IAAAnhB;AACA,UAAMzG,IAAYC;AAClB,QAAII,IAAesnB,GACfrnB,IAAcsnB;AAClB,UAAMuT,IAAgB,KAAK;AAC3B,QAAI,CAAC,KAAK;AACR,UAAIxT,MAAkB,KAAKC,MAAiB,GAAG;AAC7C,cAAMlU,IAAa,KAAK;AACxB,YAAI9R,EAAY8R,CAAU,KAAKnR,EAAemR,CAAU;AACtD,iBAAOA,EAAW,OAAO,GAAG,CAAC;AAAA,MAEvC,YAAkBiU,MAAkB,UAAaA,MAAkBwT,OAAmBvT,MAAiB,UAAaA,MAAiBuT,IAAgB;AAC7I,cAAMlW,IAAY,KAAK;AACvB,YAAIrjB,EAAYqjB,CAAS,KAAK1iB,EAAe0iB,CAAS;AACpD,iBAAOA,EAAU;MAEpB;AAAA;AAEH,IAAI5kB,MAAiB,WACnBA,IAAe86B,IAEb76B,MAAgB,WAClBA,IAAc66B;AAEhB,UAAMvlC,IAAM,KAAK;AACjB,QAAKgL,EAAkBZ,CAAS;AAG9B,MAAAA,EAAU,OAAO,IAAIpK,GAAKyK,GAAc,SAAS,GACjDL,EAAU,MAAM,IAAIpK,GAAK0K,GAAa,SAAS,GAC/CN,EAAU,QAAQ;AAAA;AAJlB,aAAO6nB,GAA4BjyB,GAAKyK,GAAczK,GAAK0K,GAAa,WAAW,SAAS;AAM9F,WAAON;AAAA,EACR;AAAA,EACD,cAAc;AACZ,UAAMgtB,IAAY,KAAK;AACvB,WAAOA,IAAYA,EAAU,YAAa,IAAG,KAAK,OAAM;AAAA,EACzD;AAAA,EACD,YAAY;AACV,UAAMhP,IAAW,KAAK;AACtB,WAAOA,IAAWA,EAAS,UAAW,IAAG,KAAK,OAAM;AAAA,EACrD;AAAA,EACD,QAAQ;AACN,UAAM0F,IAAe,KAAK;AAE1B,WADiB,KAAK,cACb,QAAQ,CAAAnsB,MAASA,EAAM,OAAQ,CAAA,GACjCmsB;AAAA,EACR;AAAA,EACD,UAAU0X,GAAe;AACvB,WAAO,KAAK,OAAO,KAAK,gBAAe,GAAI,GAAGA,CAAa;AAAA,EAC5D;AAAA,EACD,aAAaziB,GAAW;AACtB,UAAMrjB,IAAO,KAAK;AAClB,WAAAA,EAAK,QAAQqjB,GACNrjB;AAAA,EACR;AAAA,EACD,UAAU3F,GAAM;AACd,UAAM2F,IAAO,KAAK;AAClB,WAAAA,EAAK,WAAW3F,MAAS,KAAKgP,GAAuBhP,KAAQ,GACtD;AAAA,EACR;AAAA,EACD,SAASsxB,GAAO;AACd,UAAM3rB,IAAO,KAAK;AAClB,WAAAA,EAAK,UAAU2rB,KAAS,IACjB;AAAA,EACR;AAAA,EACD,UAAUoa,GAAa;AACrB,UAAM/lC,IAAO,KAAK;AAClB,WAAAA,EAAK,WAAW+lC,GACT;AAAA,EACR;AAAA,EACD,OAAOlP,GAAOmP,GAAa7W,GAAe;AACxC,UAAM8W,IAAsB9W,EAAc,QACpC+W,IAAU,KAAK,mBACf9X,IAAe,KAAK,eACpB+X,IAAkB/X,EAAa,OAC/BgY,IAAoB,CAAA,GACpBC,IAAoB,CAAA,GACpBC,IAAiB,KAAK,gBAAgBzP,IAAQmP,CAAW;AAC/D,QAAIO,IAAkB,MAClBC,IAAUN,IAAUF,IAAcC;AACtC,QAAIpP,MAAU;AACZ,UAAIA,MAAUqP;AACZ,QAAAK,IAAkB,KAAK;WAClB;AACL,cAAMxkC,IAAO,KAAK,gBAAgB80B,CAAK;AACvC,QAAI90B,MAAS,SACXwkC,IAAkBxkC,EAAK;MAE1B;AAEH,QAAIikC,IAAc,GAAG;AACnB,UAAIS,IAAeF,MAAoB,OAAO,KAAK,kBAAkBA,EAAgB;AACrF,eAASvkC,IAAI,GAAGA,IAAIgkC,GAAahkC,KAAK;AACpC,YAAIykC,MAAiB;AAEjB,gBAAM,MAAM,2BAA2B;AAG3C,cAAMt0B,IAAcs0B,EAAa,kBAC3BC,IAAkBD,EAAa,OAC/BE,IAAuBF,EAAa;AAC1C,QAAA30B,GAAiB60B,CAAoB,GACrCN,EAAkB,KAAKK,CAAe,GACtCD,IAAet0B;AAAA,MAChB;AAAA,IACF;AACD,QAAIoS,IAAWgiB;AACf,aAASvkC,IAAI,GAAGA,IAAIikC,GAAqBjkC,KAAK;AAC5C,YAAMmsB,IAAegB,EAAcntB;AACnC,MAAIuiB,MAAa,QAAQ4J,EAAa,GAAG5J,CAAQ,MAC/CgiB,IAAkBhiB,IAAWA,EAAS;AAExC,YAAM8J,IAAuBF,EAAa;AAC1C,MAAIE,EAAqB,aAAa8X,KACpCK,KAEF10B,GAAiBuc,CAAoB;AACrC,YAAMuY,IAAkBzY,EAAa;AACrC,UAAI5J,MAAa;AACf,QAAA6J,EAAa,UAAUwY,GACvBvY,EAAqB,SAAS;AAAA,WACzB;AACL,cAAMwY,IAAmBtiB,EAAS;AAClC,QAAAsiB,EAAiB,SAASD,GAC1BvY,EAAqB,SAASwY,EAAiB;AAAA,MAChD;AACD,UAAI1Y,EAAa,UAAUgY;AAEvB,cAAM,MAAM,mCAAmC;AAInD,MAAA9X,EAAqB,WAAW8X,GAChCC,EAAkB,KAAKQ,CAAe,GACtCriB,IAAW4J;AAAA,IACZ;AACD,QAAI0I,IAAQmP,MAAgBE;AAC1B,UAAI3hB,MAAa,MAAM;AACrB,cAAMsiB,IAAmBtiB,EAAS;AAClC,QAAAsiB,EAAiB,SAAS,MAC1BzY,EAAa,SAAS7J,EAAS;AAAA,MAChC;AAAA,eACQ+hB,MAAmB,MAAM;AAClC,YAAMQ,IAAyBR,EAAe;AAC9C,UAAI/hB,MAAa,MAAM;AACrB,cAAMsiB,IAAmBtiB,EAAS;AAClC,QAAAuiB,EAAuB,SAASviB,EAAS,OACzCsiB,EAAiB,SAASP,EAAe;AAAA,MACjD;AACQ,QAAAQ,EAAuB,SAAS;AAAA,IAEnC;AAMD,QALA1Y,EAAa,SAASoY,GAKlBH,EAAkB,QAAQ;AAE5B,YAAM37B,IAAYC;AAClB,UAAIW,EAAkBZ,CAAS,GAAG;AAChC,cAAMq8B,IAAsB,IAAI,IAAIV,CAAiB,GAC/CW,IAAsB,IAAI,IAAIZ,CAAiB,GAC/C;AAAA,UACJ,QAAAhrB;AAAA,UACA,OAAA7B;AAAA,QACD,IAAG7O;AACJ,QAAIu8B,GAAe7rB,GAAQ2rB,GAAqBC,CAAmB,KACjE/a,GAA4B7Q,GAAQA,EAAO,QAAS,GAAE,MAAMmrB,GAAiBD,CAAc,GAEzFW,GAAe1tB,GAAOwtB,GAAqBC,CAAmB,KAChE/a,GAA4B1S,GAAOA,EAAM,QAAS,GAAE,MAAMgtB,GAAiBD,CAAc,GAGvFE,MAAY,KAAK,CAAC,KAAK,WAAU,KAAM,CAAC5qB,GAAoB,IAAI,KAClE,KAAK,OAAM;AAAA,MAEd;AAAA,IACF;AACD,WAAOwS;AAAA,EACR;AAAA,EAED,aAAa;AACX,WAAO;AAAA,MACL,UAAU,CAAE;AAAA,MACZ,WAAW,KAAK,aAAc;AAAA,MAC9B,QAAQ,KAAK,cAAe;AAAA,MAC5B,QAAQ,KAAK,UAAW;AAAA,MACxB,MAAM;AAAA,MACN,SAAS;AAAA,IACf;AAAA,EACG;AAAA,EAED,eAAe1jB,GAAWohB,GAAkB;AAC1C,WAAO;AAAA,EACR;AAAA,EACD,YAAY;AACV,WAAO;AAAA,EACR;AAAA,EAMD,gBAAgBphB,GAAW;AACzB,WAAO;AAAA,EACR;AAAA,EACD,gBAAgBw8B,GAAa;AAC3B,WAAO;AAAA,EACR;AAAA,EAED,eAAejyB,GAAa;AAC1B,WAAO;AAAA,EACR;AAAA,EAED,eAAelT,GAAM;AACnB,WAAO;AAAA,EACR;AAAA,EACD,aAAa;AACX,WAAO;AAAA,EACR;AAAA,EACD,sBAAsB;AACpB,WAAO;AAAA,EACR;AAAA,EACD,qBAAqB;AACnB,WAAO;AAAA,EACR;AAAA,EACD,WAAW;AACT,WAAO;AAAA,EACR;AAAA,EAKD,eAAe;AACb,WAAO;AAAA,EACR;AAAA,EAED,aAAaA,GAAM;AACjB,WAAO;AAAA,EACR;AAAA,EACD,iBAAiBE,GAAOyI,GAAWw8B,GAAa;AAC9C,WAAO;AAAA,EACR;AAAA,EAeD,oBAAoB;AAClB,WAAO;AAAA,EACR;AACH;AACA,SAASj6B,EAAelL,GAAM;AAC5B,SAAOA,aAAgByjC;AACzB;AACA,SAASyB,GAAel4B,GAAOg4B,GAAqBC,GAAqB;AACvE,MAAIjlC,IAAOgN,EAAM;AACjB,SAAOhN,KAAM;AACX,UAAM2R,IAAU3R,EAAK;AACrB,QAAIglC,EAAoB,IAAIrzB,CAAO,KAAK,CAACszB,EAAoB,IAAItzB,CAAO;AACtE,aAAO;AAET,IAAA3R,IAAOA,EAAK;EACb;AACD,SAAO;AACT;AAeA,MAAMolC,WAAsB/a,GAAY;AAAA,EACtC,YAAY9rB,GAAK;AACf,UAAMA,CAAG;AAAA,EACV;AAAA,EAKD,SAAS8J,GAAQxK,GAAQ;AAErB,UAAM,MAAM,oCAAoC;AAAA,EAEnD;AAAA,EACD,aAAa;AACX,WAAO;AAAA,EACR;AAAA,EACD,WAAW;AACT,WAAO;AAAA,EACR;AAAA,EACD,uBAAuB;AACrB,WAAO;AAAA,EACR;AACH;AACA,SAASyM,GAAiBtK,GAAM;AAC9B,SAAOA,aAAgBolC;AACzB;AAWA,MAAMC,WAAiB5B,GAAY;AAAA,EAGjC,OAAO,UAAU;AACf,WAAO;AAAA,EACR;AAAA,EACD,OAAO,QAAQ;AACb,WAAO,IAAI4B,GAAQ;AAAA,EACpB;AAAA,EACD,cAAc;AACZ,UAAM,MAAM,GACZ,KAAK,eAAe;AAAA,EACrB;AAAA,EACD,4BAA4B;AAExB,UAAM,MAAM,kEAAkE;AAAA,EAEjF;AAAA,EACD,iBAAiB;AACf,UAAMC,IAAa,KAAK;AACxB,YAAIt0B,GAAuB,KAAMvE,KAAkB,eAAerH,OAC5DkgC,MAAe,OACVA,IAGJ,MAAM;EACd;AAAA,EACD,SAAS;AAEL,UAAM,MAAM,wCAAwC;AAAA,EAEvD;AAAA,EACD,QAAQtlC,GAAM;AAEV,UAAM,MAAM,yCAAyC;AAAA,EAExD;AAAA,EACD,aAAaosB,GAAc;AAEvB,UAAM,MAAM,8CAA8C;AAAA,EAE7D;AAAA,EACD,YAAYA,GAAc;AAEtB,UAAM,MAAM,6CAA6C;AAAA,EAE5D;AAAA,EAID,UAAU5J,GAAUha,GAAK;AACvB,WAAO;AAAA,EACR;AAAA,EAID,UAAUu7B,GAAe;AACvB,aAAS9jC,IAAI,GAAGA,IAAI8jC,EAAc,QAAQ9jC,KAAK;AAC7C,YAAMD,IAAO+jC,EAAc9jC;AAC3B,UAAI,CAACiL,EAAelL,CAAI,KAAK,CAACsK,GAAiBtK,CAAI;AAE/C,cAAM,MAAM,mFAAmF;AAAA,IAGpG;AACD,WAAO,MAAM,OAAO,GAAG+jC,CAAa;AAAA,EACrC;AAAA,EACD,OAAO,WAAW5T,GAAgB;AAEhC,UAAMnwB,IAAOuR;AACb,WAAAvR,EAAK,UAAUmwB,EAAe,MAAM,GACpCnwB,EAAK,UAAUmwB,EAAe,MAAM,GACpCnwB,EAAK,aAAamwB,EAAe,SAAS,GACnCnwB;AAAA,EACR;AAAA,EACD,aAAa;AACX,WAAO;AAAA,MACL,UAAU,CAAE;AAAA,MACZ,WAAW,KAAK,aAAc;AAAA,MAC9B,QAAQ,KAAK,cAAe;AAAA,MAC5B,QAAQ,KAAK,UAAW;AAAA,MACxB,MAAM;AAAA,MACN,SAAS;AAAA,IACf;AAAA,EACG;AAAA,EACD,kBAAkB;AAChB,WAAO;AAAA,EACR;AACH;AACA,SAASulC,KAAkB;AACzB,SAAO,IAAIF,GAAQ;AACrB;AACA,SAASrtB,GAAYhY,GAAM;AACzB,SAAOA,aAAgBqlC;AACzB;AAUA,SAAS7B,GAA6Bl0B,GAAajH,GAAQ;AACzD,QAAM84B,IAAmB94B,EAAO,eAAc,EAAG,YAC3C+4B,IAAmB9xB,EAAY;AAGrC,MAAI8xB,MAAqB;AACvB,QAAIA,EAAiB,SAAS,CAACA,EAAiB,GAAGD,CAAgB;AACjE,aAAO;AAAA,aAEAA,MAAqB;AAC9B,WAAO;AAET,SAAO;AACT;AACA,SAASiC,GAAiBjW,GAAS;AACjC,SAAO,IAAIqY,GAAY,IAAI,IAAIrY,EAAQ,QAAQ,CAAC;AAClD;AACA,SAASkT,KAAyB;AAChC,SAAO,IAAImF,GAAY,oBAAI,IAAI,CAAC,CAAC,QAAQD,GAAe,CAAE,CAAC,CAAC,CAAC;AAC/D;AACA,SAASE,GAAiBzlC,GAAM;AAC9B,QAAMmwB,IAAiBnwB,EAAK,cACtB+/B,IAAY//B,EAAK;AACvB,MAAImwB,EAAe,SAAS4P,EAAU,QAAO;AAEzC,UAAM,MAAM,qBAAqBA,EAAU,sHAAsH;AAGrK,MAAI70B,EAAelL,CAAI,GAAG;AACxB,UAAM0lC,IAAqBvV,EAAe;AAC1C,QAAI,CAAC,MAAM,QAAQuV,CAAkB;AAEjC,YAAM,MAAM,qBAAqB3F,EAAU,sEAAsE;AAGrH,UAAM9+B,IAAWjB,EAAK;AACtB,aAASC,IAAI,GAAGA,IAAIgB,EAAS,QAAQhB,KAAK;AACxC,YAAMC,IAAQe,EAAShB,IACjB0lC,IAAsBF,GAAiBvlC,CAAK;AAClD,MAAAwlC,EAAmB,KAAKC,CAAmB;AAAA,IAC5C;AAAA,EACF;AAGD,SAAOxV;AACT;AACA,MAAMqV,GAAY;AAAA,EAChB,YAAY51B,GAASjH,GAAW;AAC9B,SAAK,WAAWiH,GAChB,KAAK,aAAajH,KAAa,MAC/B,KAAK,aAAa,IAClB,KAAK,YAAY;AAAA,EAClB;AAAA,EACD,UAAU;AACR,WAAO,KAAK,SAAS,SAAS,KAAK,KAAK,eAAe;AAAA,EACxD;AAAA,EACD,KAAKo4B,GAAY4B,GAAS;AACxB,WAAO7B,GAAgB6B,KAAWA,EAAQ,UAAU,MAAM,MAAM5B,CAAU;AAAA,EAC3E;AAAA,EACD,MAAMp4B,GAAW;AACf,UAAM2G,IAAc,IAAIk2B,GAAY,KAAK,UAAU78B,MAAc,SAAY,KAAK,aAAaA,CAAS;AACxG,WAAA2G,EAAY,YAAY,IACjBA;AAAA,EACR;AAAA,EACD,SAAS;AACP,WAAOwxB,GAAgB,MAAM,MAAM,OAAO;AAAA,MACxC,MAAM2E,GAAiBl0B,IAAU;AAAA,IAClC,EAAC;AAAA,EACH;AACH;SAYA,cAAyCkyB,GAAY;AAAA,EACnD,OAAO,UAAU;AACf,WAAO;AAAA,EACR;AAAA,EACD,UAAU5lC,GAAQ;AAGhB,WADY,SAAS,cAAc,KAAK;AAAA,EAEzC;AACH;AAWA,MAAM+oB,WAAsB6c,GAAY;AAAA,EAGtC,YAAYllC,GAAK;AACf,UAAMA,CAAG,GACT,KAAK,eAAe,GACpB,KAAK,cAAc;AAAA,EACpB;AAAA,EACD,OAAO,UAAU;AACf,WAAO;AAAA,EACR;AAAA,EACD,gBAAgB;AAEd,WADa,KAAK,YACN;AAAA,EACb;AAAA,EACD,cAAcjG,GAAM;AAClB,UAAM2F,IAAO,KAAK;AAClB,WAAAA,EAAK,eAAe3F,GACb2F;AAAA,EACR;AAAA,EACD,cAAc3F,GAAM;AAClB,UAAM+2B,IAAajoB,GAAoB9O;AACvC,YAAQ,KAAK,kBAAkB+2B,OAAgB;AAAA,EAChD;AAAA,EACD,eAAe;AAEb,WADa,KAAK,YACN;AAAA,EACb;AAAA,EACD,aAAazF,GAAO;AAClB,UAAM3rB,IAAO,KAAK;AAClB,WAAAA,EAAK,cAAc2rB,GACZ3rB;AAAA,EACR;AAAA,EACD,OAAO,MAAM+B,GAAM;AACjB,WAAO,IAAI4mB,GAAc5mB,EAAK,KAAK;AAAA,EACpC;AAAA,EACD,eAAewiB,GAAU;AACvB,UAAM,eAAeA,CAAQ,GAC7B,KAAK,eAAeA,EAAS,cAC7B,KAAK,cAAcA,EAAS;AAAA,EAC7B;AAAA,EAID,UAAU3kB,GAAQ;AAChB,UAAM2K,IAAM,SAAS,cAAc,GAAG,GAChCb,IAAasO,GAAwBpY,EAAO,OAAO,WAAW;AACpE,WAAI8J,MAAe,UACIa,EAAI,UACZ,IAAI,GAAGb,CAAU,GAEzBa;AAAA,EACR;AAAA,EACD,UAAUga,GAAUha,GAAK3K,GAAQ;AAC/B,WAAO;AAAA,EACR;AAAA,EACD,OAAO,YAAY;AACjB,WAAO;AAAA,MACL,GAAG,CAAAmC,OAAS;AAAA,QACV,YAAY4lC;AAAA,QACZ,UAAU;AAAA,MAClB;AAAA,IACA;AAAA,EACG;AAAA,EACD,UAAUv9B,GAAQ;AAChB,UAAM;AAAA,MACJ,SAAAlM;AAAA,IACN,IAAQ,MAAM,UAAUkM,CAAM;AAC1B,QAAIlM,KAAW4f,GAAc5f,CAAO,GAAG;AACrC,MAAI,KAAK,aACPA,EAAQ,OAAO,SAAS,cAAc,IAAI,CAAC;AAE7C,YAAMq7B,IAAa,KAAK;AACxB,MAAAr7B,EAAQ,MAAM,YAAYq7B;AAC1B,YAAMlW,IAAY,KAAK;AACvB,MAAIA,MACFnlB,EAAQ,MAAMmlB;AAEhB,YAAM9B,IAAS,KAAK;AACpB,MAAIA,IAAS,MAGXrjB,EAAQ,MAAM,aAAa,GAAGqjB,IAAS;AAAA,IAE1C;AACD,WAAO;AAAA,MACL,SAAArjB;AAAA,IACN;AAAA,EACG;AAAA,EACD,OAAO,WAAWg0B,GAAgB;AAChC,UAAMnwB,IAAO6sB;AACb,WAAA7sB,EAAK,UAAUmwB,EAAe,MAAM,GACpCnwB,EAAK,UAAUmwB,EAAe,MAAM,GACpCnwB,EAAK,aAAamwB,EAAe,SAAS,GAC1CnwB,EAAK,cAAcmwB,EAAe,UAAU,GACrCnwB;AAAA,EACR;AAAA,EACD,aAAa;AACX,WAAO;AAAA,MACL,GAAG,MAAM,WAAY;AAAA,MACrB,YAAY,KAAK,cAAe;AAAA,MAChC,WAAW,KAAK,aAAc;AAAA,MAC9B,MAAM;AAAA,MACN,SAAS;AAAA,IACf;AAAA,EACG;AAAA,EAID,eAAe6lC,GAAgB9b,GAAkB;AAC/C,UAAMgU,IAAalR;AACnB,IAAAkR,EAAW,cAAc8H,EAAe,MAAM,GAC9C9H,EAAW,aAAa8H,EAAe,KAAK;AAC5C,UAAMvkB,IAAY,KAAK;AACvB,WAAAyc,EAAW,aAAazc,CAAS,GACjCyc,EAAW,UAAU,KAAK,cAAe,CAAA,GACzCA,EAAW,SAAS,KAAK,aAAc,CAAA,GACvC,KAAK,YAAYA,GAAYhU,CAAgB,GACtCgU;AAAA,EACR;AAAA,EACD,kBAAkB;AAChB,UAAM98B,IAAW,KAAK;AAGtB,QAAIA,EAAS,WAAW,KAAKsJ,EAAYtJ,EAAS,EAAE,KAAKA,EAAS,GAAG,eAAgB,EAAC,KAAI,MAAO,IAAI;AAEnG,UADoB,KAAK,qBACL;AAClB,oBAAK,WAAU,GACf,KAAK,OAAM,GACJ;AAGT,UADoB,KAAK,yBACL;AAClB,oBAAK,eAAc,GACnB,KAAK,OAAM,GACJ;AAAA,IAEV;AACD,WAAO;AAAA,EACR;AACH;AACA,SAAS2kC,GAAyBzpC,GAAS;AACzC,QAAM6D,IAAO6sB;AACb,MAAI1wB,EAAQ,OAAO;AACjB,IAAA6D,EAAK,UAAU7D,EAAQ,MAAM,SAAS;AACtC,UAAMqjB,IAAS,SAASrjB,EAAQ,MAAM,YAAY,EAAE,IAAI;AACxD,IAAIqjB,IAAS,KACXxf,EAAK,UAAUwf,CAAM;AAAA,EAExB;AACD,SAAO;AAAA,IACL,MAAAxf;AAAA,EACJ;AACA;AACA,SAAS6sB,KAAuB;AAC9B,SAAO7S,GAAsB,IAAI4M,GAAa,CAAE;AAClD;AACA,SAAS3F,GAAiBjhB,GAAM;AAC9B,SAAOA,aAAgB4mB;AACzB;AAgBA,MAAMkf,KAA8B,IAC9BC,KAA0B,GAC1BC,KAAuB,GACvBC,KAA0B,GAC1BC,KAAwB,GACxBC,KAA4B;AAyBlC,SAAS5E,GAAYl5B,GAAQ+9B,GAAiBC,GAAiBnpB,GAAoB;AACjF,QAAMopB,IAAaj+B,EAAO;AAC1B,EAAAi+B,EAAW,MAAK,GAChBj+B,EAAO,eAAeg4B,MACtBh4B,EAAO,sBAAsB6U,GAC7B7U,EAAO,kBAAkB,MACzBA,EAAO,aAAajD,IACpBiD,EAAO,gBAAgB,SACvBA,EAAO,eAAe,oBAAI,OAC1BA,EAAO,eAAe,SACtBA,EAAO,mBAAmB,oBAAI,OAC9BA,EAAO,cAAc,oBAAI,OACzBA,EAAO,WAAW,IAClBA,EAAO,sBAAsB;AAC7B,QAAMsB,IAAWtB,EAAO;AACxB,EAAIsB,MAAa,SACfA,EAAS,WAAU,GACnBtB,EAAO,YAAY,OAIjB+9B,MAAoB,SACtBA,EAAgB,cAAc,KAE5BC,MAAoB,SACtBA,EAAgB,cAAc,IAC9BC,EAAW,IAAI,QAAQD,CAAe;AAE1C;AACA,SAASE,GAA0BtvB,GAAOuvB,GAAuB;AAC/D,QAAMC,IAAkB,oBAAI,OACtBC,IAAqB,oBAAI,OACzBC,IAAwB,CAAAC,MAAO;AACnC,WAAO,KAAKA,CAAG,EAAE,QAAQ,CAAAroC,MAAO;AAC9B,UAAIsoC,IAAeJ,EAAgB,IAAIloC,CAAG;AAC1C,MAAIsoC,MAAiB,WACnBA,IAAe,CAAA,GACfJ,EAAgB,IAAIloC,GAAKsoC,CAAY,IAEvCA,EAAa,KAAKD,EAAIroC,EAAI;AAAA,IAChC,CAAK;AAAA,EACL;AACE,SAAA0Y,EAAM,QAAQ,CAAAjX,MAAQ;AACpB,UAAM8mC,IAAY9mC,EAAK,MAAM;AAC7B,QAAI8mC,KAAa,QAAQJ,EAAmB,IAAII,CAAS;AACvD;AAEF,IAAAJ,EAAmB,IAAII,CAAS;AAChC,UAAMF,IAAME,EAAU,KAAK9mC,EAAK,KAAK;AACrC,IAAI4mC,MAAQ,QACVD,EAAsBC,CAAG;AAAA,EAE/B,CAAG,GACGJ,KACFG,EAAsBH,CAAqB,GAEtCC;AACT;AASA,SAASM,GAAaxsB,GAAc;AAClC,QAAM1c,IAAS0c,KAAgB,IACzB6jB,IAAeW,MACfvkB,IAAQ3c,EAAO,SAAS,IACxBmpC,IAAezsB,MAAiB,SAAY6jB,IAAevgC,EAAO,gBAAgB,MAClFopC,IAAgBppC,EAAO,iBAAiB,IACxCyR,IAAc+wB,MACd6G,IAAYrpC,EAAO,cAAcmpC,MAAiB,OAAOA,EAAa,QAAQ,YAAY50B,GAAS,IACnG+0B,IAAqBtpC,EAAO,aAC5BoZ,IAAQ,CAACouB,IAAUjW,IAAU/B,IAAeuG,IAAShN,IAAewgB,IAA4B,GAAIvpC,EAAO,SAAS,CAAA,CAAG,GACvH;AAAA,IACJ,SAAAwpC;AAAA,IACA,MAAAC;AAAA,EACD,IAAGzpC,GACEyrB,IAAazrB,EAAO,aAAa,SAAYA,EAAO,WAAW;AACrE,MAAI4Y;AACJ,MAAI8D,MAAiB,UAAa6jB,MAAiB;AACjD,IAAA3nB,IAAkB2nB,EAAa;AAAA,OAC1B;AACL,IAAA3nB,IAAkB,oBAAI;AACtB,aAASxW,IAAI,GAAGA,IAAIgX,EAAM,QAAQhX,KAAK;AACrC,UAAI0W,IAAQM,EAAMhX,IACdsnC,IAAU,MACVC,IAAmB;AACvB,UAAI,OAAO7wB,KAAU,YAAY;AAC/B,cAAMgsB,IAAUhsB;AAChB,QAAAA,IAAQgsB,EAAQ,SAChB4E,IAAU5E,EAAQ,MAClB6E,IAAmB7E,EAAQ,aAAa;AAAA,MACzC;AAED;AAEE,cAAMp1B,IAAW,OAAO,UAAU,eAAe,KAAKoJ,GAAO,SAAS,KAAKA,EAAM,WAC3Etc,IAAOsc,EAAM;AACnB,YAAI6wB,KACE,EAAEA,EAAiB,qBAAqB7wB;AAC1C,gBAAM,MAAM,GAAG6wB,EAAiB,2BAA2BntC,GAAM;AAGrE,YAAIA,MAAS,cAAckT,MAAa,UAAUA,MAAa,cAAc;AAC3E,gBAAMk6B,IAAQ9wB,EAAM;AACpB,WAAC,WAAW,OAAO,EAAE,QAAQ,CAAA+wB,MAAU;AAErC,YAAK/wB,EAAM,eAAe+wB,CAAM,KAC9B,QAAQ,KAAK,GAAGrtC,4BAA+BqtC,WAAgB;AAAA,UAE7E,CAAW,GAGD,CAAC/wB,EAAM,eAAe,WAAW,KAEjCA,EAAM,eAAe,WAAW,KAC9B,QAAQ,KAAK,GAAGtc,iJAAoJ,GAElKotC,aAAiBrC,OAEdqC,EAAM,eAAe,UAAU,KAClC,QAAQ,KAAK,GAAGA,EAAM,YAAY,uCAAuC,IAK5E9wB,EAAM,eAAe,YAAY,KAChC,QAAQ,KAAK,GAAGtc,wGAA2G,GAI5HotC,EAAM,eAAe,YAAY,KAChC,QAAQ,KAAK,GAAGptC,wGAA2G;AAAA,QAE9H;AAAA,MACF;AACD,YAAM/B,IAAOqe,EAAM,WACbgxB,IAAYhxB,EAAM,aAClBixB,IAAa,oBAAI;AACvB,MAAID,MAAc,QAChBC,EAAW,IAAID,CAAS,GAE1BlxB,EAAgB,IAAIne,GAAM;AAAA,QACxB,WAAWgvC,KAAQA,EAAK,SAASA,EAAK,OAAO,IAAI3wB,CAAK,IAAI;AAAA,QAC1D,OAAAA;AAAA,QACA,SAAA4wB;AAAA,QACA,kBAAAC;AAAA,QACA,YAAAI;AAAA,MACR,CAAO;AAAA,IACF;AAAA,EACF;AACD,QAAMv/B,IAAS,IAAI+F,GAAckB,GAAa03B,GAAcvwB,GAAiB;AAAA,IAC3E,eAAAwwB;AAAA,IACA,WAAAC;AAAA,IACA,OAAA1sB;AAAA,EACD,GAAE6sB,KAAoB,QAAQ,OAAOd,GAA0B9vB,GAAiB6wB,IAAOA,EAAK,SAAS,MAAS,GAAGhe,CAAU;AAC5H,SAAI6d,MAAuB,WACzB9+B,EAAO,sBAAsB8+B,GAC7B9+B,EAAO,aAAa/C,KAEf+C;AACT;AACA,MAAM+F,GAAc;AAAA,EA8DlB,YAAYkB,GAAa03B,GAAc/vB,GAAOpZ,GAAQwpC,GAASQ,GAAiBC,GAAU;AACxF,SAAK,gBAAgBd,GAErB,KAAK,eAAe,MAEpB,KAAK,eAAe13B,GAEpB,KAAK,sBAAsB,MAE3B,KAAK,kBAAkB,MACvB,KAAK,YAAY,IAEjB,KAAK,eAAe,oBAAI,OACxB,KAAK,WAAW,IAChB,KAAK,YAAY,IAEjB,KAAK,aAAa;AAAA,MAChB,WAAW,oBAAI,IAAK;AAAA,MACpB,UAAU,oBAAI,IAAK;AAAA,MACnB,UAAU,oBAAI,IAAK;AAAA,MACnB,MAAM,oBAAI,IAAK;AAAA,MACf,aAAa,oBAAI,IAAK;AAAA,MACtB,QAAQ,oBAAI,IAAK;AAAA,IACvB,GAEI,KAAK,YAAY,oBAAI,OAErB,KAAK,UAAUzR,GAEf,KAAK,SAASoZ,GAEd,KAAK,cAAc,IACnB,KAAK,qBAAqB,MAE1B,KAAK,aAAa7R,IAClB,KAAK,kBAAkB,oBAAI,OAC3B,KAAK,eAAe,oBAAI,OACxB,KAAK,iBAAiB,oBAAI,OAC1B,KAAK,mBAAmB,oBAAI,OAC5B,KAAK,cAAc,oBAAI,OAEvB,KAAK,YAAY,MAEjB,KAAK,OAAOgN,MACZ,KAAK,WAAWi1B,GAChB,KAAK,mBAAmBQ,GACxB,KAAK,YAAYC,GACjB,KAAK,YAAYd,MAAiB,QAAQA,EAAa,WACvD,KAAK,UAAU,MACf,KAAK,sBAAsB;AAAA,EAC5B;AAAA,EAOD,cAAc;AACZ,WAAO,KAAK,mBAAmB;AAAA,EAChC;AAAA,EAQD,uBAAuB7E,GAAU;AAC/B,UAAM4F,IAAmB,KAAK,WAAW;AACzC,WAAAA,EAAiB,IAAI5F,CAAQ,GACtB,MAAM;AACX,MAAA4F,EAAiB,OAAO5F,CAAQ;AAAA,IACtC;AAAA,EACG;AAAA,EAQD,yBAAyBA,GAAU;AACjC,UAAM4F,IAAmB,KAAK,WAAW;AACzC,WAAAA,EAAiB,IAAI5F,CAAQ,GACtB,MAAM;AACX,MAAA4F,EAAiB,OAAO5F,CAAQ;AAAA,IACtC;AAAA,EACG;AAAA,EAUD,0BAA0BA,GAAU;AAClC,UAAM4F,IAAmB,KAAK,WAAW;AACzC,WAAAA,EAAiB,IAAI5F,CAAQ,GACtB,MAAM;AACX,MAAA4F,EAAiB,OAAO5F,CAAQ;AAAA,IACtC;AAAA,EACG;AAAA,EAWD,4BAA4BA,GAAU;AACpC,UAAM4F,IAAmB,KAAK,WAAW;AACzC,WAAAA,EAAiB,IAAI5F,CAAQ,GACtB,MAAM;AACX,MAAA4F,EAAiB,OAAO5F,CAAQ;AAAA,IACtC;AAAA,EACG;AAAA,EAYD,qBAAqBA,GAAU;AAC7B,UAAM4F,IAAmB,KAAK,WAAW;AACzC,WAAA5F,EAAS,KAAK,cAAc,IAAI,GAChC4F,EAAiB,IAAI5F,CAAQ,GACtB,MAAM;AACX,MAAAA,EAAS,MAAM,KAAK,YAAY,GAChC4F,EAAiB,OAAO5F,CAAQ;AAAA,IACtC;AAAA,EACG;AAAA,EAaD,gBAAgBtqB,GAASsqB,GAAU6F,GAAU;AAC3C,QAAIA,MAAa;AAEb,YAAM,MAAM,oDAAoD;AAGpE,UAAMC,IAAc,KAAK;AACzB,IAAKA,EAAY,IAAIpwB,CAAO,KAC1BowB,EAAY,IAAIpwB,GAAS,CAAC,oBAAI,IAAG,GAAI,oBAAI,IAAG,GAAI,oBAAI,IAAG,GAAI,oBAAI,IAAG,GAAI,oBAAI,IAAG,CAAE,CAAC;AAElF,UAAMqwB,IAA2BD,EAAY,IAAIpwB,CAAO;AACxD,QAAIqwB,MAA6B;AAE7B,YAAM,MAAM,4BAA4B,OAAOrwB,CAAO,4BAA4B;AAGtF,UAAMoqB,IAAYiG,EAAyBF;AAC3C,WAAA/F,EAAU,IAAIE,CAAQ,GACf,MAAM;AACX,MAAAF,EAAU,OAAOE,CAAQ,GACrB+F,EAAyB,MAAM,CAAA3F,MAAgBA,EAAa,SAAS,CAAC,KACxE0F,EAAY,OAAOpwB,CAAO;AAAA,IAElC;AAAA,EACG;AAAA,EAoBD,yBAAyBlB,GAAOwrB,GAAUQ,GAAS;AACjD,UAAMwF,IAAgB,KAAK,uCAAuC,KAAK,kBAAkBxxB,CAAK,CAAC,EAAE,OAC3FjN,IAAY,KAAK,WAAW;AAClC,IAAAA,EAAU,IAAIy4B,GAAUgG,CAAa;AACrC,UAAMC,IAAqBzF,KAAWA,EAAQ;AAC9C,YAAMyF,MAAuB,SAAYtC,KAA8BsC,MACrE,KAAK,2BAA2BjG,GAAUgG,CAAa,GAElD,MAAM;AACX,MAAAz+B,EAAU,OAAOy4B,CAAQ;AAAA,IAC/B;AAAA,EACG;AAAA,EAGD,kBAAkBxrB,GAAO;AACvB,UAAMnJ,IAAiB,KAAK,OAAO,IAAImJ,EAAM,QAAO,CAAE;AACtD,QAAInJ,MAAmB;AAEnB,YAAM,MAAM,QAAQmJ,EAAM,4EAA4E;AAG1G,WAAOnJ;AAAA,EACR;AAAA,EAGD,uCAAuCA,GAAgB;AACrD,WAAOA,EAAe;AACpB,MAAAA,IAAiB,KAAK,kBAAkBA,EAAe,gBAAgB;AAEzE,WAAOA;AAAA,EACR;AAAA,EAGD,2BAA2B20B,GAAUxrB,GAAO;AAC1C,UAAM+G,IAAkB,KAAK,cACvB9N,IAAUsH,GAAuBwG,CAAe,EAAE,IAAI/G,EAAM,QAAO,CAAE;AAC3E,QAAI,CAAC/G;AACH;AAEF,UAAMy4B,IAAkB,oBAAI;AAC5B,eAAWjzC,KAAKwa,EAAQ;AACtB,MAAAy4B,EAAgB,IAAIjzC,GAAG,SAAS;AAElC,IAAIizC,EAAgB,OAAO,KACzBlG,EAASkG,GAAiB;AAAA,MACxB,aAAa,oBAAI,IAAK;AAAA,MACtB,iBAAA3qB;AAAA,MACA,YAAY,oBAAI,IAAI,CAAC,0BAA0B,CAAC;AAAA,IACxD,CAAO;AAAA,EAEJ;AAAA,EAGD,6BAA6B/G,GAAOwrB,GAAU;AAC5C,UAAM30B,IAAiB,KAAK,kBAAkBmJ,CAAK;AACnD,WAAAnJ,EAAe,WAAW,IAAI20B,CAAQ,GAC/B30B;AAAA,EACR;AAAA,EAYD,sBAAsBmJ,GAAOwrB,GAAU;AACrC,UAAM30B,IAAiB,KAAK,6BAA6BmJ,GAAOwrB,CAAQ,GAClE1rB,IAAkB,CAACjJ,CAAc,GACjCg6B,IAAmBh6B,EAAe;AACxC,QAAIg6B,KAAoB,MAAM;AAC5B,YAAMc,IAA4B,KAAK,6BAA6Bd,GAAkBrF,CAAQ;AAC9F,MAAA1rB,EAAgB,KAAK6xB,CAAyB;AAAA,IAC/C;AACD,WAAA92B,GAAoB,MAAMmF,EAAM,QAAS,CAAA,GAClC,MAAM;AACX,MAAAF,EAAgB,QAAQ,CAAAzW,MAAQA,EAAK,WAAW,OAAOmiC,CAAQ,CAAC;AAAA,IACtE;AAAA,EACG;AAAA,EAOD,QAAQniC,GAAM;AACZ,WAAO,KAAK,OAAO,IAAIA,EAAK,QAAS,CAAA;AAAA,EACtC;AAAA,EAOD,SAASiX,GAAO;AACd,WAAOA,EAAM,MAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,EAC3C;AAAA,EASD,gBAAgB3e,GAAMa,GAAS;AAC7B,WAAOye,EAAgB,MAAMtf,GAAMa,CAAO;AAAA,EAC3C;AAAA,EAMD,gBAAgB;AACd,WAAO,KAAK;AAAA,EACb;AAAA,EAQD,iBAAiB;AACf,WAAO,KAAK;AAAA,EACb;AAAA,EAMD,SAAS;AACP,WAAO,KAAK;AAAA,EACb;AAAA,EAMD,eAAektC,GAAiB;AAC9B,UAAMD,IAAkB,KAAK;AAC7B,QAAIC,MAAoBD,GAAiB;AACvC,YAAMz+B,IAAasO,GAAwB,KAAK,QAAQ,OAAO,MAAM,GAC/DiH,IAAqB,KAAK,uBAAuB,KAAK;AAY5D,UAXA,KAAK,eAAempB,GACpB9E,GAAY,MAAM6E,GAAiBC,GAAiBnpB,CAAkB,GAClEkpB,MAAoB,SAEjB,KAAK,QAAQ,iBAChB7c,GAAwB6c,CAAe,GAErCz+B,KAAc,QAChBy+B,EAAgB,UAAU,OAAO,GAAGz+B,CAAU,IAG9C0+B,MAAoB,MAAM;AAC5B,cAAM3sB,IAAYH,GAAe8sB,CAAe,GAC1Czc,IAAQyc,EAAgB;AAC9B,QAAAzc,EAAM,aAAa,QACnBA,EAAM,aAAa,YACnBA,EAAM,YAAY,cAClByc,EAAgB,aAAa,uBAAuB,MAAM,GAC1D,KAAK,UAAU3sB,GACf,KAAK,aAAapU,IAClBsG,GAAqB,IAAI,GACzB,KAAK,YAAY,IAAI,eAAe,GACpCo1B,GAAsB,IAAI,GAGrB,KAAK,QAAQ,iBAChBhY,GAAqBqd,GAAiB,IAAI,GAExC1+B,KAAc,QAChB0+B,EAAgB,UAAU,IAAI,GAAG1+B,CAAU;AAAA,MAErD;AAGQ,aAAK,eAAeuV,GACpB,KAAK,sBAAsB,MAC3B,KAAK,UAAU;AAEjB,MAAAwkB,GAAiB,QAAQ,MAAM,IAAO2E,GAAiBD,CAAe;AAAA,IACvE;AAAA,EACF;AAAA,EAOD,gBAAgB7nC,GAAK;AACnB,WAAO,KAAK,aAAa,IAAIA,CAAG,KAAK;AAAA,EACtC;AAAA,EAMD,iBAAiB;AACf,WAAO,KAAK;AAAA,EACb;AAAA,EAOD,eAAe+Q,GAAaqzB,GAAS;AACnC,QAAIrzB,EAAY;AAEZ,YAAM,MAAM,qGAAqG;AAGrH,IAAA3D,GAAoB,IAAI;AACxB,UAAMuR,IAAqB,KAAK,qBAC1B8f,IAAO,KAAK,aACZ/jB,IAAM0pB,MAAY,SAAYA,EAAQ,MAAM;AAClD,IAAIzlB,MAAuB,QAAQ,CAACA,EAAmB,QAAO,MACxDjE,KAAO,QACT+jB,EAAK,IAAI/jB,CAAG,GAEd+nB,GAAsB,IAAI,IAE5B,KAAK,sBAAsB1xB,GAC3B,KAAK,aAAahK,IAClB,KAAK,eAAe,IAAI,QAAQ,EAAK,GACrC,KAAK,kBAAkB,MACnB2T,KAAO,QACT+jB,EAAK,IAAI/jB,CAAG,GAEd+nB,GAAsB,IAAI;AAAA,EAC3B;AAAA,EAUD,iBAAiBuH,GAA6BnI,GAAU;AACtD,UAAMD,IAAwB,OAAOoI,KAAgC,WAAW,KAAK,MAAMA,CAA2B,IAAIA;AAC1H,WAAOrI,GAAiBC,GAAuB,MAAMC,CAAQ;AAAA,EAC9D;AAAA,EAUD,KAAKW,GAAY;AACf,WAAAC,GAAsB,IAAI,GACnB,KAAK,iBAAiB,KAAKD,GAAY;AAAA,MAC5C,QAAQ;AAAA,IACd,CAAK;AAAA,EACF;AAAA,EAgBD,OAAOX,GAAUuC,GAAS;AACxB,IAAA94B,GAAa,MAAMu2B,GAAUuC,CAAO;AAAA,EACrC;AAAA,EASD,MAAM5B,GAAY4B,IAAU,IAAI;AAC9B,UAAM54B,IAAc,KAAK;AACzB,IAAIA,MAAgB,SAElBA,EAAY,aAAa,kBAAkB,KAAK,GAChDF,GAAa,MAAM,MAAM;AACvB,YAAMlB,IAAYC,MACZoN,IAAOzE;AACb,MAAI5I,MAAc,OAEhBA,EAAU,QAAQ,KACTqN,EAAK,gBAAiB,MAAK,MAChC2sB,EAAQ,qBAAqB,cAC/B3sB,EAAK,YAAW,IAEhBA,EAAK,UAAS;AAAA,IAG1B,GAAS;AAAA,MACD,UAAU,MAAM;AACd,QAAAjM,EAAY,gBAAgB,gBAAgB,GACxCg3B,KACFA;MAEH;AAAA,MACD,KAAK;AAAA,IACb,CAAO,GAGG,KAAK,wBAAwB,QAC/Bh3B,EAAY,gBAAgB,gBAAgB;AAAA,EAGjD;AAAA,EAKD,OAAO;AACL,UAAMA,IAAc,KAAK;AACzB,IAAIA,MAAgB,QAClBA,EAAY,KAAI;AAElB,UAAMjB,IAAeC,GAAgB,KAAK,OAAO;AACjD,IAAID,MAAiB,QACnBA,EAAa,gBAAe;AAAA,EAE/B;AAAA,EAKD,aAAa;AACX,WAAO,KAAK;AAAA,EACb;AAAA,EAMD,YAAYg/B,GAAU;AACpB,IAAI,KAAK,cAAcA,MACrB,KAAK,YAAYA,GACjBpG,GAAiB,YAAY,MAAM,IAAMoG,CAAQ;AAAA,EAEpD;AAAA,EAUD,SAAS;AACP,WAAO;AAAA,MACL,aAAa,KAAK,aAAa,OAAQ;AAAA,IAC7C;AAAA,EACG;AACH;AACA15B,GAAc,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACz7TxB,SAASo6B,GAAEA,GAAE;AAAC,SAAM,CAAE;AAAA;AAAC,MAAM1yC,KAAE,CAAE,GAACP,KAAE,IAAGkzC,KAAE,CAAA,GAAGxoC,KAAE,CAAE,GAACzE,KAAE,CAAA,GAAGktC,KAAE,CAAE,GAACrzC,KAAE,IAAGK,KAAE,CAAA,GAAGC,KAAE,CAAE,GAACgzC,KAAE,CAAA,GAAGzzC,KAAE,CAAE,GAAC0zC,KAAE,IAAGC,KAAE,CAAA,GAAGjzC,KAAE,CAAE,GAACkzC,KAAE,CAAA,GAAGtzC,KAAE,CAAE,GAACuzC,KAAE,CAAA,GAAGzzC,KAAE,CAAE,GAACkF,KAAE,CAAA,GAAGwuC,KAAE,CAAE,GAACC,KAAE,IAAGC,KAAE,CAAA,GAAGC,KAAE,CAAE,GAAC/zC,KAAE,CAAA,GAAGS,KAAE,CAAE,GAACuzC,KAAE,IAAGC,KAAE,CAAA,GAAGC,KAAE,CAAE,GAACC,KAAE,CAAA,GAAGC,KAAE,CAAE,GAACC,KAAE,IAAGC,KAAE,CAAA,GAAGC,KAAE,CAAE,GAACC,KAAE,CAAA,GAAGC,KAAE,CAAE,GAACC,KAAE,IAAGC,KAAE,CAAE,GAACC,KAAE,CAAA,GAAGC,KAAE,CAAE,GAACC,KAAE,IAAGC,KAAE,CAAA,GAAGC,KAAE,CAAE,GAACC,KAAE,CAAA,GAAGC,KAAE,CAAE,GAACC,KAAE,IAAG/H,KAAe,OAAO,SAApB,OAAqC,OAAO,aAAhB,UAAmC,OAAO,SAAS,kBAAzB,QAAuCgI,KAAEhI,MAAG,kBAAiB,WAAS,SAAS,eAAa,MAAK/sC,KAAE+sC,MAAG,uBAAuB,KAAK,UAAU,QAAQ,GAAEiI,KAAEjI,MAAG,mCAAmC,KAAK,UAAU,SAAS,GAAEkI,KAAE,EAAE,CAAClI,MAAG,EAAE,gBAAe,WAASgI,OAAI,qBAAoB,IAAI,OAAO,WAAW,OAAO,GAAEG,KAAEnI,MAAG,0BAA0B,KAAK,UAAU,SAAS,GAAEoI,KAAEpI,MAAG,mBAAmB,KAAK,UAAU,SAAS,KAAG,CAAC,OAAO,UAASqI,KAAErI,MAAG,UAAU,KAAK,UAAU,SAAS,GAAEsI,KAAGtI,MAAG,mBAAmB,KAAK,UAAU,SAAS,GAAEuI,KAAGvI,MAAGqI,MAAGC,IAAGE,KAAGxI,MAAG,sBAAsB,KAAK,UAAU,SAAS,KAAG,CAACsI,IAAGG,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,IAAGC,KAAG,IAAGC,KAAG,IAAGC,KAAG,KAAIC,KAAG,OAAK,IAAEN,KAAGC,MAAII,IAAGE,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG7B,MAAGC,MAAGI,KAAG,MAAI,KAAIyB,KAAG;AAAA;AAAA,GAAOC,KAAGjC,KAAE,MAAI+B,IAAGG,KAAG,aAAYC,KAAG,mCAAkCC,KAAG,IAAI,OAAO,QAAMD,KAAG,QAAMD,KAAG,GAAG,GAAEG,KAAG,IAAI,OAAO,QAAMH,KAAG,QAAMC,KAAG,GAAG,GAAEG,KAAG,EAAC,MAAK,GAAE,MAAK,IAAG,WAAUf,IAAG,QAAO,GAAE,eAAcL,IAAG,WAAU,IAAG,aAAY,IAAG,WAAUC,GAAE,GAAEoB,KAAG,EAAC,eAAc,GAAE,aAAY,EAAC,GAAEC,KAAG,EAAC,QAAOd,IAAG,KAAII,IAAG,SAAQF,IAAG,MAAKH,IAAG,OAAME,IAAG,OAAME,GAAE,GAAEY,KAAG,EAAC,CAACf,KAAI,UAAS,CAACI,KAAI,OAAM,CAACF,KAAI,WAAU,CAACH,KAAI,QAAO,CAACE,KAAI,SAAQ,CAACE,KAAI,QAAO,GAAEa,KAAG,EAAC,QAAO,GAAE,WAAU,GAAE,OAAM,EAAC,GAAEC,KAAG,EAAC,CAAC9B,KAAI,UAAS,CAACE,KAAI,aAAY,CAACD,KAAI,QAAO;AAAE,SAAS8B,GAAG7E,GAAE;AAAC,SAAOA,KAAGA,EAAE,cAAY,OAAO,UAAU,eAAe,KAAKA,GAAE,SAAS,IAAEA,EAAE,UAAQA;AAAC;AAAC,IAAI8E,IAAGD,GAAI,SAAS7E,GAAE;AAAC,QAAM,IAAE,IAAI;AAAgB,IAAE,OAAO,QAAOA,CAAC;AAAE,WAAQ,IAAE,GAAE,IAAE,UAAU,QAAO;AAAI,MAAE,OAAO,KAAI,UAAU,EAAE;AAAE,QAAM,MAAM,2BAA2BA,2CAA2C,iHAAiH;AAAC,CAAG;AAAC,SAAS+E,MAAM/E,GAAE;AAAC,QAAM,IAAE,CAAE;AAAC,aAAUjzC,KAAKizC;AAAE,QAAGjzC,KAAa,OAAOA,KAAjB;AAAmB,iBAAS,CAACizC,CAAC,KAAIjzC,EAAE,SAAS,MAAM;AAAE,UAAE,KAAKizC,CAAC;AAAE,SAAO;AAAC;AAAC,MAAMgF,KAAG;AAAI,IAAIC,KAAG,IAAGC,KAAG;AAAE,SAASC,GAAGnF,GAAE;AAAC,EAAAkF,KAAGlF,EAAE;AAAS;AAAC,SAASoF,GAAGpF,GAAE,GAAEjzC,GAAE;AAAC,SAAO,EAAE,uBAAqBizC,KAAYA,EAAE,gBAAgBjzC,EAAE,YAA7B;AAAoC;AAAC,SAASs4C,GAAGrF,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAEu4C,GAAGv4C,EAAE,OAAO;AAAE,MAAI0K,IAAE,MAAK,IAAE;AAAK,EAAO,MAAP,QAAU,EAAE,eAAauoC,MAAIvoC,IAAE,EAAE,cAAa,IAAE,EAAE;AAAa,QAAMyoC,IAAEF,EAAE;AAAU,EAAOE,MAAP,QAAUqF,GAAG,GAAErF,GAAEzoC,GAAE,GAAE,EAAE;AAAC;AAAC,SAAS+tC,GAAGxF,GAAE,GAAEjzC,GAAE;AAAC,MAAG04C,EAAGzF,CAAC,GAAE;AAAC,UAAM1yC,IAAE0yC,EAAE,OAAO,QAAO;AAAG,QAAG1yC,EAAE,GAAGP,CAAC,KAAGizC,EAAE,WAAS1yC,EAAE,UAAW;AAAC,aAAM;AAAA,EAAE;AAAC,SAAO,EAAE,aAAWo1C,MAAI31C,EAAE,WAAU;AAAE;AAAC,SAAS24C,GAAG1F,GAAE,GAAEjzC,GAAE;AAAC,EAAAk4C,KAAG;AAAG,QAAM,IAAE,YAAY,QAAMC,KAAGF;AAAG,MAAG;AAAC,IAAAW,GAAG3F,GAAG,MAAI;AAAC,YAAMvoC,IAAEmuC,GAAE,KAAI,SAAS5F,GAAE;AAAC,eAAOA,EAAE,eAAc,EAAG,KAAM,MAAI;AAAC,gBAAMA,IAAE4F,GAAE;AAAG,iBAAc5F,MAAP,OAASA,EAAE,MAAK,IAAG;AAAA,QAAI,CAAG;AAAA,MAAA,EAAEA,CAAC,GAAE,IAAE,oBAAI,OAAIE,IAAEF,EAAE,eAAgB,GAAC,IAAEA,EAAE,cAAa,IAAEA,EAAE;AAAoB,UAAI,IAAE,IAAG,IAAE;AAAG,eAAQjzC,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,cAAML,IAAE,EAAEK,IAAGqzC,IAAE1zC,EAAE,MAAK2zC,IAAE3zC,EAAE;AAAO,YAAIU,IAAEy4C,GAAGxF,GAAE,CAAC;AAAE,YAAG,EAASjzC,MAAP,QAAUizC,MAAIH,KAAG4F,GAAG14C,CAAC;AAAG,cAAqBgzC,MAAlB;AAAoB,iBAAG2F,EAAG34C,CAAC,KAAGo4C,GAAG/tC,GAAE4oC,GAAEjzC,CAAC,KAAGi4C,GAAGhF,GAAEjzC,GAAE4yC,CAAC;AAAA,mBAAwBI,MAAd,aAAgB;AAAC,gBAAE;AAAG,kBAAM9yC,IAAEZ,EAAE;AAAW,qBAAQK,IAAE,GAAEA,IAAEO,EAAE,QAAOP,KAAI;AAAC,oBAAMkzC,IAAE3yC,EAAEP,IAAG0K,IAAEuuC,GAAG/F,CAAC,GAAEjtC,IAAEitC,EAAE;AAAW,kBAASjtC,KAAN,QAASitC,MAAI,KAAUxoC,MAAP,SAAkBwoC,EAAE,aAAT,QAAmB,CAACmF,GAAGnF,GAAEjtC,GAAEgtC,CAAC,IAAG;AAAC,oBAAGiC,IAAE;AAAC,wBAAMjC,IAAEC,EAAE,aAAWA,EAAE;AAAU,kBAAAD,MAAI,KAAGA;AAAA,gBAAE;AAAC,gBAAAhtC,EAAE,YAAYitC,CAAC;AAAA,cAAC;AAAA,YAAC;AAAC,kBAAMlzC,IAAEL,EAAE,cAAauzC,IAAElzC,EAAE;AAAO,gBAAGkzC,IAAE,GAAE;AAAC,kBAAI3yC,IAAE;AAAE,uBAAQmK,IAAE,GAAEA,IAAEwoC,GAAExoC,KAAI;AAAC,sBAAMwoC,IAAElzC,EAAE0K;AAAG,iBAAQwoC,EAAE,aAAT,QAAmBmF,GAAGnF,GAAEI,GAAEL,CAAC,KAAG,MAAIC,OAAKI,EAAE,YAAYJ,CAAC,GAAE3yC;AAAA,cAAI;AAAC,cAAA2yC,MAAI3yC,MAAI+yC,MAAIH,MAAI9yC,IAAE64C,GAAG,CAAC,IAAG,EAAE,IAAI5F,GAAEjzC,CAAC;AAAA,YAAE;AAAA,UAAC;AAAA;AAAA,MAAC;AAAC,UAAG,EAAE,OAAK;AAAE,mBAAS,CAACE,GAAEP,CAAC,KAAI;AAAE,cAAGm5C,EAAGn5C,CAAC,GAAE;AAAC,kBAAMkzC,IAAElzC,EAAE,gBAAiB;AAAC,gBAAI0K,IAAEnK,EAAE;AAAW,qBAAQP,IAAE,GAAEA,IAAEkzC,EAAE,QAAOlzC,KAAI;AAAC,oBAAMiG,IAAEitC,EAAElzC,IAAGmzC,IAAEF,EAAE,gBAAgBhtC,CAAC;AAAE,cAAOktC,MAAP,SAAiBzoC,KAAN,QAASnK,EAAE,YAAY4yC,CAAC,GAAEzoC,IAAEyoC,KAAGzoC,MAAIyoC,KAAG5yC,EAAE,aAAa4yC,GAAEzoC,CAAC,GAAEA,IAAEA,EAAE;AAAA,YAAY;AAAA,UAAC;AAAM,YAAAsuC,EAAGh5C,CAAC,KAAGA,EAAE,UAAW;AAAC,YAAML,IAAEK,EAAE,YAAa;AAAC,UAAGL,EAAE,SAAO,GAAE;AAAC,iBAAQY,IAAE,GAAEA,IAAEZ,EAAE,QAAOY,KAAI;AAAC,gBAAMP,IAAEL,EAAEY,IAAG2yC,IAAElzC,EAAE,YAAW0K,IAAE1K,EAAE;AAAO,mBAAQO,IAAE,GAAEA,IAAE2yC,EAAE,QAAO3yC,KAAI;AAAC,kBAAMP,IAAEkzC,EAAE3yC,IAAG0F,IAAEjG,EAAE;AAAW,YAAMiG,KAAN,QAAgBjG,EAAE,aAAT,QAAmBq4C,GAAGr4C,GAAE0K,GAAEuoC,CAAC,KAAGhtC,EAAE,YAAYjG,CAAC;AAAA,UAAC;AAAA,QAAC;AAAC,QAAAA,EAAE;MAAa;AAAC,MAAO0K,MAAP,SAAW,MAAIA,EAAE,QAAM,IAAG0uC,GAAG1uC,CAAC,IAAGwqC,MAAGmE,GAAGpG,CAAC,KAAGvoC,EAAE,cAAc,CAAC;AAAA,IAAE;EAAG,UAAC;AAAQ,IAAAwtC,KAAG;AAAA,EAAE;AAAC;AAAC,SAASoB,GAAGrG,GAAE;AAAC,QAAM,IAAEA,EAAE;AAAU,EAAU,MAAP,QAAU0F,GAAG1F,GAAE,EAAE,eAAc,CAAC;AAAE;AAAC,SAASsG,GAAGtG,GAAE;AAAC,GAAC,SAASA,GAAE;AAAC,IAAIkF,OAAJ,KAAQqB,GAAGvG,CAAC,EAAE,iBAAiB,aAAYmF,IAAG,EAAE;AAAA,EAAC,GAAEnF,CAAC,GAAEA,EAAE,YAAU,IAAI,iBAAkB,CAAC,GAAEjzC,MAAI;AAAC,IAAA24C,GAAG1F,GAAE,GAAEjzC,CAAC;AAAA,EAAC,CAAG;AAAA;AAAC,SAASy5C,GAAGxG,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE,QAAO,IAAEA,EAAE,UAASvoC,IAAEuoC,EAAE,SAAQ,IAAE,EAAE,QAAOE,IAAE,EAAE,UAAS,IAAE,EAAE;AAAQ,SAAM,EAASnzC,MAAP,QAAUA,MAAI,KAAU,MAAP,QAAU,MAAImzC,KAAUzoC,MAAP,QAAUA,MAAI;AAAE;AAAC,SAASgvC,GAAGzG,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE,iBAAiB,CAAC,GAAE,IAAE0G,GAAE,EAAG;AAAiB,SAAO,EAAE,IAAI1G,EAAE,KAAK,GAAE,EAAE,IAAI,EAAE,KAAK,GAAEjzC;AAAC;AAAC,SAAS45C,GAAG3G,GAAE;AAAC,MAAI,GAAEjzC,GAAE,IAAEizC;AAAE,MAAQ,EAAE,WAAP,MAAe,CAAC,EAAE,aAAY,KAAI,EAAE,cAAa,GAAG;AAAC,YAAa,IAAE,EAAE,0BAAZ,QAAmC+F,EAAG,CAAC,KAAG,EAAE,aAAc,KAAE,CAAC,EAAE,cAAa,KAAI;AAAC,UAAQ,EAAE,WAAP,IAAc;AAAC,YAAGS,GAAG,GAAE,CAAC,GAAE;AAAC,cAAEC,GAAG,GAAE,CAAC;AAAE;AAAA,QAAK;AAAC;AAAA,MAAK;AAAC,QAAE;IAAQ;AAAC,YAAa15C,IAAE,EAAE,eAAc,OAA1B,QAA+Bg5C,EAAGh5C,CAAC,KAAGA,EAAE,aAAc,KAAE,CAACA,EAAE,cAAa,KAAI;AAAC,UAAQA,EAAE,WAAP,IAAc;AAAC,YAAGy5C,GAAG,GAAEz5C,CAAC,GAAE;AAAC,cAAE05C,GAAG,GAAE15C,CAAC;AAAE;AAAA,QAAK;AAAC;AAAA,MAAK;AAAC,MAAAA,EAAE;IAAQ;AAAA,EAAC;AAAM,MAAE,OAAM;AAAE;AAAC,SAAS65C,GAAG5G,GAAE;AAAC,SAAO6G,GAAG7G,EAAE,MAAM,GAAE6G,GAAG7G,EAAE,KAAK,GAAEA;AAAC;AAAC,SAAS6G,GAAG7G,GAAE;AAAC,SAAiBA,EAAE,SAAd,aAAoB;AAAC,UAAM,IAAEA,EAAE,QAAS,GAACjzC,IAAEizC,EAAE;AAAO,QAAI,GAAEvoC;AAAE,QAAG1K,MAAI,EAAE,qBAAmB,IAAE,EAAE,gBAAgBA,IAAE,CAAC,GAAE0K,IAAE,OAAK,IAAE,EAAE,gBAAgB1K,CAAC,GAAE0K,IAAE,KAAIsuC,EAAG,CAAC,GAAE;AAAC,MAAA/F,EAAE,IAAI,EAAE,OAAMvoC,IAAE,EAAE,mBAAoB,IAAC,GAAE,MAAM;AAAE;AAAA,IAAK;AAAC,QAAG,CAACyuC,EAAG,CAAC;AAAE;AAAM,IAAAlG,EAAE,IAAI,EAAE,OAAMvoC,IAAE,EAAE,oBAAkB,GAAE,SAAS;AAAA,EAAC;AAAC;AAAC,IAAIqvC,KAAG;AAAE,SAASC,KAAI;AAACD,EAAAA,KAAG;AAAC;AAAC,MAAME,KAAe,OAAO,kBAAnB,aAAkC,iBAAe,CAAAhH,MAAG;AAAC,UAAQ,QAAS,EAAC,KAAKA,CAAC;AAAC;AAAE,SAASiH,GAAGjH,GAAE;AAAC,QAAM,IAAE,SAAS;AAAc,MAAU,MAAP;AAAS,WAAM;AAAG,QAAMjzC,IAAE,EAAE;AAAS,SAAO+4C,GAAGD,GAAG7F,CAAC,CAAC,MAAcjzC,MAAV,WAA0BA,MAAb,cAAyB,EAAE,oBAAX,UAAkCm6C,GAAG,CAAC,KAAV;AAAY;AAAC,SAASC,GAAGnH,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAEizC,EAAE,eAAc;AAAG,MAAG;AAAC,WAAc,MAAP,QAAU,EAAE,SAAS,CAAC,KAAG,EAAE,SAASjzC,CAAC,KAAU,MAAP,QAAU,CAACk6C,GAAG,CAAC,KAAGG,GAAG,CAAC,MAAIpH;AAAA,EAAC,QAAC;AAAS,WAAM;AAAA,EAAE;AAAC;AAAC,SAASqH,GAAGrH,GAAE;AAAC,SAAOA,aAAasH;AAAE;AAAC,SAASF,GAAGpH,GAAE;AAAC,MAAI,IAAEA;AAAE,SAAW,KAAN,QAAS;AAAC,UAAM,IAAEkH,GAAG,CAAC;AAAE,QAAGG,GAAG,CAAC;AAAE,aAAO;AAAE,QAAEE,GAAG,CAAC;AAAA,EAAC;AAAC,SAAO;AAAI;AAAC,SAASL,GAAGlH,GAAE;AAAC,SAAOA,IAAEA,EAAE,kBAAgB;AAAI;AAAC,SAASwH,GAAGxH,GAAE;AAAC,SAAOA,EAAE,QAAS,KAAEA,EAAE,YAAa;AAAA;AAAC,SAASyH,GAAGzH,GAAE;AAAC,SAAOA,EAAE,aAAW0C;AAAE;AAAC,SAASgF,GAAG1H,GAAE;AAAC,MAAI,IAAEA;AAAE,SAAW,KAAN,QAAS;AAAC,QAAGyH,GAAG,CAAC;AAAE,aAAO;AAAE,QAAE,EAAE;AAAA,EAAU;AAAC,SAAO;AAAI;AAAC,SAASE,GAAG3H,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAEw3C,GAAG;AAAG,MAAUx3C,MAAP,SAAWizC,IAAE,OAAKjzC,IAAE;AAAG,WAAOizC;AAAE,MAAIvoC,IAAEuoC,IAAE;AAAE,SAAoB,MAAd,cAAgBvoC,KAAG,CAAC8sC,GAAG,cAA4B,MAAhB,kBAAoB9sC,KAAG,CAAC8sC,GAAG,YAAW9sC;AAAC;AAAC,SAASmwC,GAAG5H,GAAE;AAAC,SAAO+F,EAAG/F,CAAC,KAAG6H,GAAG7H,CAAC,KAAG8F,GAAG9F,CAAC;AAAC;AAAC,SAAS8H,GAAG9H,GAAE,GAAE;AAAC,MAAS,KAAN;AAAQ,WAAO,MAAKA,EAAE,QAAM;AAAG,EAAA+H,GAAE,GAAGC;AAAK,QAAMj7C,IAAE25C,GAAI,GAAC,IAAEuB,GAAI,GAACxwC,IAAE,KAAGqvC;AAAK,IAAE,SAAS,IAAIrvC,GAAEuoC,CAAC,GAAEkG,EAAGlG,CAAC,IAAEjzC,EAAE,eAAe,IAAI0K,GAAE,EAAE,IAAE1K,EAAE,aAAa,IAAI0K,CAAC,GAAE1K,EAAE,gBAAgB,IAAI0K,CAAC,GAAE1K,EAAE,aAAW61C,IAAG5C,EAAE,QAAMvoC;AAAC;AAAC,SAASywC,GAAGlI,GAAE;AAAC,QAAM,IAAEA,EAAE,UAAS;AAAG,MAAU,MAAP,MAAS;AAAC,UAAMjzC,IAAEizC,EAAE,YAAW,GAAG,IAAE,EAAE,YAAW,GAAGvoC,IAAEuoC,EAAE,mBAAoB,GAAC,IAAEA,EAAE,eAAgB;AAAC,QAAUvoC,MAAP;AAAS,UAAU,MAAP,MAAS;AAAC,cAAMuoC,IAAE,EAAE,YAAW;AAAG,UAAE,UAAQ,EAAE,OAAMA,EAAE,SAAO;AAAA,MAAI;AAAM,UAAE,UAAQ;AAAA,SAAS;AAAC,YAAMA,IAAEvoC,EAAE;AAAc,UAAU,MAAP,MAAS;AAAC,cAAMnK,IAAE,EAAE,YAAa;AAAC,QAAAA,EAAE,SAAO0yC,EAAE,OAAMA,EAAE,SAAO1yC,EAAE;AAAA,MAAK;AAAM,QAAA0yC,EAAE,SAAO;AAAK,MAAAjzC,EAAE,SAAO;AAAA,IAAI;AAAC,QAAU,MAAP;AAAS,UAAU0K,MAAP,MAAS;AAAC,cAAMuoC,IAAEvoC,EAAE,YAAa;AAAC,UAAE,SAAOA,EAAE,OAAMuoC,EAAE,SAAO;AAAA,MAAI;AAAM,UAAE,SAAO;AAAA,SAAS;AAAC,YAAMA,IAAE,EAAE,YAAa;AAAC,UAAUvoC,MAAP,MAAS;AAAC,cAAMnK,IAAEmK,EAAE,YAAW;AAAG,QAAAnK,EAAE,SAAO0yC,EAAE,OAAMA,EAAE,SAAO1yC,EAAE;AAAA,MAAK;AAAM,QAAA0yC,EAAE,SAAO;AAAK,MAAAjzC,EAAE,SAAO;AAAA,IAAI;AAAC,MAAE,UAASA,EAAE,WAAS;AAAA,EAAI;AAAC;AAAC,SAASo7C,GAAGnI,GAAE;AAAC,EAAAgI,GAAE;AAAG,QAAM,IAAEhI,EAAE,UAAS,GAAGjzC,IAAE,EAAE,UAAS,IAAEk7C,MAAKxwC,IAAEivC,MAAK,IAAE,EAAE,UAASxG,IAAEzoC,EAAE;AAAe,EAAO1K,MAAP,QAAU,SAASizC,GAAE1yC,GAAEP,GAAE;AAAC,QAAIkzC,IAAED;AAAE,WAAYC,MAAP,QAAU;AAAC,UAAGlzC,EAAE,IAAIkzC,CAAC;AAAE;AAAO,YAAMD,IAAE1yC,EAAE,IAAI2yC,CAAC;AAAE,UAAYD,MAAT;AAAW;AAAM,MAAAjzC,EAAE,IAAIkzC,GAAE,EAAE,GAAEA,IAAED,EAAE;AAAA,IAAQ;AAAA,EAAC,EAAEjzC,GAAE,GAAEmzC,CAAC;AAAE,QAAM,IAAE,EAAE;AAAM,EAAAzoC,EAAE,aAAWmrC,IAAGsD,EAAGlG,CAAC,IAAEE,EAAE,IAAI,GAAE,EAAE,IAAEzoC,EAAE,aAAa,IAAI,CAAC;AAAC;AAAC,SAAS2wC,GAAGpI,GAAE;AAAC,EAAA+H,GAAI;AAAC,QAAM,IAAErB,GAAE,GAAG35C,IAAE,EAAE;AAAgB,MAAGizC,MAAIjzC,GAAE;AAAC,QAAG,EAAE,kBAAgBizC,GAASjzC,MAAP,MAAS;AAAC,YAAMizC,IAAEqI,GAAGt7C,CAAC;AAAE,MAAOizC,MAAP,QAAUA,EAAE,YAAW;AAAA,IAAE;AAAC,QAAUA,MAAP,MAAS;AAAC,YAAM1yC,IAAE+6C,GAAGrI,CAAC;AAAE,MAAO1yC,MAAP,QAAUA,EAAE,YAAW;AAAA,IAAE;AAAA,EAAC;AAAC;AAAC,SAASg7C,KAAI;AAAC,SAAGC,GAAE,IAAU,OAAY7B,GAAI,EAAC;AAAe;AAAC,SAAS2B,GAAGrI,GAAE,GAAE;AAAC,QAAMjzC,KAAG,KAAGk7C,GAAE,GAAI,SAAS,IAAIjI,CAAC;AAAE,SAAgBjzC,MAAT,SAAW,OAAKA;AAAC;AAAC,SAASi5C,GAAGhG,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE,gBAAgB0G,KAAK;AAAQ,SAAgB35C,MAAT,SAAWs7C,GAAGt7C,GAAE,CAAC,IAAE;AAAI;AAAC,SAAS84C,GAAG7F,GAAE,GAAE;AAAC,MAAIjzC,IAAEizC;AAAE,SAAWjzC,KAAN,QAAS;AAAC,UAAMizC,IAAEgG,GAAGj5C,GAAE,CAAC;AAAE,QAAUizC,MAAP;AAAS,aAAOA;AAAE,IAAAjzC,IAAEw6C,GAAGx6C,CAAC;AAAA,EAAC;AAAC,SAAO;AAAI;AAAC,SAASy7C,GAAGxI,GAAE;AAAC,QAAM,IAAEA,EAAE,aAAYjzC,IAAE,OAAO,OAAO,CAAA,GAAG,CAAC;AAAE,SAAOizC,EAAE,qBAAmBjzC,GAAEA;AAAC;AAAC,SAAS07C,GAAGzI,GAAE;AAAC,SAAOA,EAAE,KAAM,MAAI0I,GAAI,EAAC,eAAgB,CAAA;AAAE;AAAC,SAASA,KAAI;AAAC,SAAOzC,GAAGgC,GAAE,CAAE;AAAC;AAAC,SAAShC,GAAGjG,GAAE;AAAC,SAAOA,EAAE,SAAS,IAAI,MAAM;AAAC;AAAC,SAASmG,GAAGnG,GAAE;AAAC,EAAA+H,GAAI;AAAC,QAAM,IAAEE,GAAE;AAAG,EAAOjI,MAAP,SAAWA,EAAE,QAAM,IAAGA,EAAE,eAAe,IAAI,IAAG,EAAE,aAAWA;AAAC;AAAC,SAAS2I,GAAG3I,GAAE;AAAC,QAAM,IAAE0G,MAAK35C,IAAE,SAASizC,GAAE1yC,GAAE;AAAC,QAAIP,IAAEizC;AAAE,WAAWjzC,KAAN,QAAS;AAAC,YAAMizC,IAAEjzC,EAAE,gBAAgBO,EAAE;AAAQ,UAAY0yC,MAAT;AAAW,eAAOA;AAAE,MAAAjzC,IAAEw6C,GAAGx6C,CAAC;AAAA,IAAC;AAAC,WAAO;AAAA,EAAI,EAAEizC,GAAE,CAAC;AAAE,SAAUjzC,MAAP,OAAiBizC,MAAI,EAAE,eAAc,IAAGqI,GAAG,MAAM,IAAE,OAAYA,GAAGt7C,CAAC;AAAC;AAAC,SAAS67C,GAAG5I,GAAE,GAAE;AAAC,SAAO,IAAEA,EAAE,uBAAqB;AAAC;AAAC,SAAS6I,GAAG7I,GAAE;AAAC,SAAM,kCAAkC,KAAKA,CAAC;AAAC;AAAC,SAAS8I,GAAG9I,GAAE;AAAC,QAAM,IAAE,CAAA;AAAG,MAAIjzC,IAAEizC;AAAE,SAAYjzC,MAAP;AAAU,MAAE,KAAKA,CAAC,GAAEA,IAAEA,EAAE;AAAc,SAAO;AAAC;AAAC,SAASg8C,KAAI;AAAC,SAAO,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,QAAQ,YAAW,EAAE,EAAE,OAAO,GAAE,CAAC;AAAC;AAAC,SAASC,GAAGhJ,GAAE;AAAC,SAAOA,EAAE,aAAW0C,KAAG1C,EAAE,YAAU;AAAI;AAAC,SAASiJ,GAAGjJ,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAEu4C,GAAG,EAAE,OAAO;AAAE,MAAU,MAAP;AAAS;AAAO,QAAM7tC,IAAE,EAAE;AAAW,MAAG,EAAC,cAAa,GAAE,aAAYyoC,EAAC,IAAE;AAAE,MAAUzoC,MAAP,MAAS;AAAC,QAAInK,IAAE07C,GAAGvxC,CAAC;AAAE,UAAMwoC,IAAE4F,GAAGpuC,CAAC;AAAE,QAAUnK,MAAP,QAAUy4C,EAAG9F,CAAC,GAAE;AAAC,UAAG3yC,MAAI02C,MAAIj3C,GAAE;AAAC,cAAMizC,IAAEjzC,EAAE;AAAO,QAAAO,IAAEP,GAAE,IAAEizC,GAAEE,IAAEF;AAAA,MAAC;AAAC,MAAO1yC,MAAP,QAAUi4C,GAAGtF,GAAE3yC,GAAE,GAAE4yC,GAAEF,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC;AAAC,SAASuF,GAAGvF,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE;AAAC,MAAI,IAAEuoC;AAAE,MAAG,EAAE,WAAU,MAAKvoC,KAAG,CAAC,EAAE,YAAW;AAAC,UAAMyoC,IAAE,EAAE,YAAW;AAAG,QAAI,IAAE;AAAE,KAACA,KAAGzoC,MAAI,EAAE,EAAE,SAAO,OAAKusC,OAAK,IAAE,EAAE,MAAM,GAAE,EAAE;AAAG,UAAM,IAAE,EAAE;AAAiB,QAAGvsC,KAAG,MAAI,GAAE;AAAC,UAAQ,MAAL,IAAO;AAAC,YAAG2wC,GAAG,IAAI,GAAEjG,MAAGC,MAAGI;AAAG,YAAE,OAAQ;AAAA,aAAK;AAAC,gBAAMxC,IAAE0G,GAAE;AAAG,qBAAY,MAAI;AAAC,YAAA1G,EAAE,OAAQ,MAAI;AAAC,gBAAE,WAAU,KAAI,EAAE,OAAM;AAAA,YAAE,CAAG;AAAA,UAAA,GAAG,EAAE;AAAA,QAAC;AAAC;AAAA,MAAM;AAAC,YAAM1yC,IAAE,EAAE,UAAS,GAAGmK,IAAEyxC,GAAE,GAAGh8C,IAAE,EAAE,mBAAoB,GAACC,IAAEm7C,GAAI,GAACnI,IAAE,EAAE,OAAQ;AAAC,UAAG,EAAE,QAAO,KAAWhzC,MAAP,QAAUgzC,MAAIhzC,KAAG,CAAC+yC,KAAGuF,EAAGhuC,CAAC,MAAWnK,MAAP,QAAU,CAACA,EAAE,yBAA2BmK,EAAE,OAAO,WAAb,KAAqBA,EAAE,OAAO,QAAMuoC,EAAE,SAAWvoC,EAAE,OAAO,WAAb,KAAqB,CAAC,EAAE,oBAAqB,KAAE,CAACyoC,KAAGzoC,EAAE,MAAM,QAAMuoC,EAAE,SAAOvoC,EAAE,MAAM,WAASvK,KAAG,CAAC,EAAE,mBAAoB,KAAE,CAACgzC;AAAG,eAAO,KAAK,EAAE,UAAS;AAAG,YAAMxzC,IAAEk5C;AAAK,UAAG,CAACH,EAAG/4C,CAAC,KAAUK,MAAP,QAAiB,MAAP;AAAS,eAAO,KAAK,EAAE,eAAe,CAAC;AAAE,UAAGL,EAAE,iBAAiB,GAAEK,GAAE,GAAE,CAAC,GAAE,EAAE,YAAW,GAAG;AAAC,cAAMizC,IAAEmJ,GAAG,EAAE,eAAgB,CAAA;AAAE,UAAE,QAAQnJ,CAAC,GAAE,IAAEA;AAAA,MAAC;AAAC,QAAE,eAAe,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC;AAAC,SAASoJ,GAAGpJ,GAAE,GAAE;AAAC,MAAG,EAAE,YAAW;AAAG,WAAM;AAAG,MAAG,CAACA,EAAE,YAAa;AAAC,WAAM;AAAG,QAAMjzC,IAAEizC,EAAE,OAAO,QAAO,IAAE,EAAE,iBAAgB,GAAGvoC,IAAE,EAAE,QAAO;AAAG,SAAW1K,MAAJ,IAAM,CAAC,EAAE,yBAAuB,CAAC,EAAE,oBAAqB,KAAE,CAAC,EAAE,YAAW,KAAI0K,KAAG,SAASuoC,GAAE;AAAC,UAAM1yC,IAAE0yC,EAAE,mBAAoB;AAAC,YAAO+F,EAAGz4C,CAAC,KAAG44C,EAAG54C,CAAC,KAAGA,EAAE,SAAU,MAAG,CAACA,EAAE,mBAAkB;AAAA,EAAE,EAAE,CAAC,IAAEP,MAAI,EAAE,mBAAkB,MAAK,CAAC,EAAE,wBAAsB,CAAC,EAAE,mBAAoB,KAAE,CAAC,EAAE,YAAW,KAAI0K;AAAE;AAAC,SAAS4xC,GAAGrJ,GAAE;AAAC,SAAoBA,MAAd;AAAe;AAAC,SAASsJ,GAAGtJ,GAAE;AAAC,SAAqBA,MAAf;AAAgB;AAAC,SAASuJ,GAAGvJ,GAAE,GAAE;AAAC,SAAO/yC,KAAE+yC,IAAE;AAAC;AAAC,SAASwJ,GAAGxJ,GAAE;AAAC,SAAgBA,MAAV;AAAW;AAAC,SAASyJ,GAAGzJ,GAAE;AAAC,SAAoBA,MAAd;AAAe;AAAC,SAAS0J,GAAG1J,GAAE;AAAC,SAAiBA,MAAX;AAAY;AAAC,SAAS2J,GAAG3J,GAAE,GAAEjzC,GAAE;AAAC,SAAYizC,EAAE,YAAa,MAArB,OAAuBuJ,GAAG,GAAEx8C,CAAC;AAAC;AAAC,SAAS68C,KAAI;AAAC,QAAM5J,IAAE0I,GAAI;AAAC,EAAAvC,GAAGS,GAAG5G,EAAE,OAAO,GAAEA,EAAE,gBAAiB,CAAA,CAAC,CAAC;AAAC;AAAC,SAAS6J,GAAG7J,GAAE,GAAE;AAAC,EAASA,EAAE,4BAAX,WAAqCA,EAAE,0BAAwB,CAAE;AAAE,QAAMjzC,IAAEizC,EAAE,yBAAwB,IAAEjzC,EAAE;AAAG,MAAY,MAAT;AAAW,WAAO;AAAE,QAAM0K,IAAEuoC,EAAE;AAAG,MAAa,OAAOvoC,KAAjB,UAAmB;AAAC,UAAMuoC,IAAE+E,GAAGttC,CAAC;AAAE,WAAO1K,EAAE,KAAGizC,GAAEA;AAAA,EAAC;AAAC,SAAOvoC;AAAC;AAAC,SAASqyC,GAAG9J,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE;AAAC,MAAO1K,EAAE,SAAN;AAAW;AAAO,QAAM,IAAE,EAAE,QAAOmzC,IAAE,EAAE,OAAM,IAAE,EAAE,IAAI,CAAC;AAAE,EAAS,MAAT,UAAY4E,EAAG,IAAG,CAAC;AAAE,QAAM,IAAE,EAAE;AAAM,MAAI,IAAE9E,EAAE,IAAI,CAAC;AAAE,EAAS,MAAT,WAAa,IAAE,oBAAI,OAAIA,EAAE,IAAI,GAAE,CAAC;AAAG,QAAM,IAAE,EAAE,IAAIE,CAAC,GAAExzC,IAAgB,MAAd,eAA6B+K,MAAZ;AAAc,GAAU,MAAT,UAAY/K,MAAI,EAAE,IAAIwzC,GAAExzC,IAAE,YAAU+K,CAAC;AAAC;AAAC,SAASsyC,GAAG/J,GAAE;AAAC,QAAM,IAAEA,EAAE,QAAS,GAACjzC,IAAEk7C,GAAI;AAAC,MAAGl7C,EAAE,WAAU;AAAC,UAAMizC,IAAEgK,GAAGj9C,CAAC,EAAE,IAAI,CAAC;AAAE,WAAOizC,IAAE,MAAM,KAAKA,EAAE,OAAQ,CAAA,IAAE,CAAA;AAAA,EAAE;AAAC,QAAM,IAAEjzC,EAAE,UAAS0K,IAAE;AAAG,aAAS,CAAA,EAAE1K,CAAC,KAAI;AAAE,IAAAA,aAAaizC,KAAGjzC,EAAE,WAAS,KAAGA,EAAE,WAAY,KAAE0K,EAAE,KAAK1K,CAAC;AAAE,SAAO0K;AAAC;AAAC,SAASwyC,GAAGjK,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAEizC,EAAE,UAAW;AAAC,MAAIvoC,IAAE1K,GAAE,IAAEizC;AAAE,SAAc,MAAP,SAAW,KAAOjzC,MAAJ,KAAO0K,IAAE,EAAE,qBAAoB,GAAG,IAAE,KAAG,KAAG1K,MAAI,EAAE,sBAAoB0K,IAAE,EAAE,qBAAoB,IAAG,GAAE,IAAE,KAAI,EAAE,gBAAgB,IAAEA,IAAE,IAAEA,CAAC;AAAC;AAAC,SAASyyC,GAAGlK,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE;AAAO,MAAeA,EAAE,SAAd;AAAoB,WAAOiK,GAAGjK,EAAE,QAAO,GAAG,GAAEjzC,CAAC;AAAE;AAAC,UAAM,IAAEizC,EAAE,QAAS;AAAC,QAAG,KAAOjzC,MAAJ,KAAO,CAAC,KAAGA,MAAI,EAAE,mBAAoB,GAAC;AAAC,YAAMizC,IAAE,IAAE,EAAE,mBAAkB,IAAG,EAAE,eAAc;AAAG,aAAcA,MAAP,OAASiK,GAAG,EAAE,iBAAkB,GAAC,GAAE,EAAE,qBAAsB,KAAE,IAAE,IAAE,EAAE,IAAEjK;AAAA,IAAC;AAAA,EAAC;AAAC,SAAO;AAAI;AAAC,SAASoG,GAAGpG,GAAE;AAAC,QAAM,IAAEuG,GAAGvG,CAAC,EAAE,OAAMjzC,IAAE,KAAG,EAAE;AAAU,SAA0BA,MAApB,qBAAsDA,MAA/B;AAAgC;AAAC,SAASo9C,EAAGnK,GAAE,GAAEjzC,GAAE;AAAC,SAAOq9C,GAAGpK,GAAE,GAAEjzC,CAAC;AAAC;AAAC,SAASs9C,GAAGrK,GAAE;AAAC,SAAM,CAACsK,GAAGtK,CAAC,KAAG,CAACA,EAAE,YAAW,KAAI,CAACA,EAAE,SAAQ;AAAE;AAAC,SAASuK,GAAGvK,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE,aAAa,IAAI,CAAC;AAAE,SAAgBjzC,MAAT,UAAY+3C,EAAG,IAAG,CAAC,GAAE/3C;AAAC;AAAC,SAASw6C,GAAGvH,GAAE;AAAC,QAAM,IAAEA,EAAE,gBAAcA,EAAE;AAAc,SAAc,MAAP,QAAe,EAAE,aAAP,KAAgB,EAAE,OAAK;AAAC;AAAC,SAASwK,GAAGxK,GAAE;AAAC,SAAO0G,KAAK,YAAY,IAAI1G,CAAC;AAAC;AAAC,SAASyK,GAAGzK,GAAE;AAAC,EAAA+H,GAAI,GAACrB,GAAE,EAAG,YAAY,IAAI1G,CAAC;AAAC;AAAC,SAAS0K,GAAG1K,GAAE,GAAE;AAAC,MAAIjzC,IAAEizC,EAAE,UAAW;AAAC,SAAYjzC,MAAP,QAAU;AAAC,QAAGA,EAAE,GAAG,CAAC;AAAE,aAAM;AAAG,IAAAA,IAAEA,EAAE,UAAW;AAAA,EAAA;AAAC,SAAM;AAAE;AAAC,SAASw5C,GAAGvG,GAAE;AAAC,QAAM,IAAEA,EAAE;AAAQ,SAAc,MAAP,QAAU8E,EAAG,EAAE,GAAE;AAAC;AAAC,SAAS6F,GAAG3K,GAAE;AAAC,SAAOkG,EAAGlG,CAAC,KAAGA,EAAE,SAAU,KAAE8F,GAAG9F,CAAC,KAAGA,EAAE,SAAU;AAAA;AAAC,SAAS4K,GAAG5K,GAAE;AAAC,MAAI,IAAEA,EAAE;AAAmB,SAAY,MAAP,QAAU;AAAC,QAAG6K,GAAG,CAAC;AAAE,aAAO;AAAE,QAAE,EAAE,iBAAgB;AAAA,EAAE;AAAC,SAAO;AAAC;AAAC,SAASA,GAAG7K,GAAE;AAAC,SAAOsK,GAAGtK,CAAC,KAAGkG,EAAGlG,CAAC,KAAGA,EAAE,aAAc;AAAA;AAAC,SAAS8K,GAAG9K,GAAE;AAAC,QAAM,IAAEA,EAAE,YAAY,MAAMA,CAAC;AAAE,SAAO8H,GAAG,GAAE,IAAI,GAAE;AAAC;AAAC,SAASx1C,GAAG0tC,GAAE;AAAC,QAAM,IAAE0G,GAAI,GAAC35C,IAAEizC,EAAE,YAAY,WAAU,IAAE,EAAE,OAAO,IAAIjzC,CAAC;AAAE,EAAS,MAAT,UAAY+3C,EAAG,EAAE;AAAE,QAAMrtC,IAAE,EAAE;AAAQ,MAAUA,MAAP,MAAS;AAAC,UAAMnK,IAAEmK,EAAEuoC,CAAC;AAAE,WAAO1yC,aAAa0yC,EAAE,eAAa8E,EAAG,EAAE,GAAEx3C;AAAA,EAAC;AAAC,SAAO0yC;AAAC;AAAC,SAAS+K,GAAG/K,GAAE,GAAE;AAAC,GAACsK,GAAGtK,EAAE,UAAS,CAAE,KAAGkG,EAAG,CAAC,KAAGJ,GAAG,CAAC,KAAGhB,EAAG,EAAE;AAAC;AAAC,SAASkG,GAAGhL,GAAE;AAAC,QAAM,IAAEqI,GAAGrI,CAAC;AAAE,SAAc,MAAP,QAAU8E,EAAG,IAAG9E,CAAC,GAAE;AAAC;AAAC,SAASiL,GAAGjL,GAAE;AAAC,UAAO8F,GAAG9F,CAAC,KAAGkG,EAAGlG,CAAC,KAAG,CAACA,EAAE,iBAAe,CAACA,EAAE,SAAU;AAAA;AAAC,SAASkL,GAAGlL,GAAE,GAAEjzC,GAAE;AAAC,EAAAA,EAAE,MAAM,eAAe,aAAa,GAAE,EAAE,sBAAoB;AAAK,QAAM,IAAEizC,EAAE;AAAc,EAAO,MAAP,QAAU,EAAE,YAAYA,CAAC;AAAC;AAAC,SAASmL,GAAGnL,GAAE,GAAEjzC,GAAE;AAAC,MAAI,IAAEizC,EAAE;AAAoB,MAAGyF,EAAG14C,CAAC,KAAGA,EAAE,YAAa,KAAcA,EAAE,OAAO,SAArB,aAA2B,EAAE,SAAS,SAAS,aAAa,GAAE;AAAC,UAAM0K,IAAE1K,EAAE,QAAO,IAAE0K,EAAE,WAAUyoC,IAAEzoC,EAAE;AAAO,QAAI,IAAE,IAAG,IAAE;AAAK,QAAGyoC,MAAI,EAAE,gBAAiB;AAAE,MAAA+K,GAAG,EAAE,gBAAgB/K,IAAE,CAAC,CAAC,MAAI,IAAE;AAAA,SAAQ;AAAC,YAAM5yC,IAAE,EAAE,gBAAgB4yC,CAAC;AAAE,UAAG+K,GAAG39C,CAAC,GAAE;AAAC,cAAMP,IAAEO,EAAE,mBAAkB;AAAG,SAAQP,MAAP,QAAUk+C,GAAGl+C,CAAC,OAAK,IAAE,IAAG,IAAEizC,EAAE,gBAAgB1yC,EAAE,KAAK;AAAA,MAAE;AAAA,IAAC;AAAC,QAAG,GAAE;AAAC,YAAMP,IAAEizC,EAAE,gBAAgB,EAAE,KAAK;AAAE,aAAc,MAAP,SAAWA,EAAE,sBAAoB,IAAE,SAASA,GAAE;AAAC,cAAM1yC,IAAE0yC,EAAE,OAAMjzC,IAAE,SAAS,cAAc,KAAK;AAAE,QAAAA,EAAE,kBAAgB,SAAQA,EAAE,aAAa,uBAAsB,MAAM;AAAE,YAAIkzC,IAAE3yC,EAAE;AAAY,YAAY2yC,MAAT,QAAW;AAAC,cAAa,OAAOA,KAAjB,UAAmB;AAAC,kBAAMD,IAAE+E,GAAG9E,CAAC;AAAE,YAAAA,IAAE3yC,EAAE,cAAY0yC;AAAA,UAAC;AAAC,UAASC,MAAT,UAAYlzC,EAAE,UAAU,IAAI,GAAGkzC,CAAC;AAAA,QAAC;AAAC,eAAOlzC;AAAA,MAAC,EAAEizC,EAAE,OAAO,IAAG,EAAE,MAAM,aAAW,eAAc,MAAY,MAAP,OAASjzC,EAAE,YAAY,CAAC,IAAEA,EAAE,aAAa,GAAE,CAAC;AAAA,IAAE;AAAA,EAAC;AAAC,EAAO,MAAP,QAAUm+C,GAAG,GAAElL,GAAE,CAAC;AAAC;AAAC,SAASsF,GAAGtF,GAAE;AAAC,SAAOhG,MAAGgG,KAAG,QAAQ,aAAc,IAAC;AAAI;AAAC,SAASoL,GAAGpL,GAAE,GAAE;AAAC,MAAIjzC,IAAEizC,EAAE,gBAAgB,CAAC;AAAE,EAAMjzC,KAAN,SAAUA,IAAEizC,IAAG6K,GAAG7K,CAAC,KAAG8E,EAAG,GAAG;AAAE,QAAM,IAAE,CAAA9E,MAAG;AAAC,UAAM1yC,IAAE0yC,EAAE,iBAAkB,GAACvoC,IAAEozC,GAAGv9C,CAAC,GAAE0F,IAAEgtC,MAAIjzC,KAAG0K,IAAEqzC,GAAG9K,CAAC,IAAEA;AAAE,QAAGvoC;AAAE,aAAOyuC,EAAGlG,CAAC,KAAGkG,EAAGlzC,CAAC,KAAG8xC,EAAG,GAAG,GAAE9E,EAAE,YAAYhtC,CAAC,GAAE,CAACgtC,GAAEhtC,GAAEA,CAAC;AAAE;AAAC,YAAK,CAACjG,GAAE0K,GAAEyoC,CAAC,IAAE,EAAE5yC,CAAC,GAAET,IAAEmzC,EAAE;AAAkB,aAAOE,EAAE,OAAOltC,GAAE,GAAGnG,CAAC,GAAE,CAACE,GAAE0K,GAAEzE,CAAC;AAAA,IAAC;AAAA,EAAC,GAAE,CAACyE,GAAE,CAAC,IAAE,EAAE1K,CAAC;AAAE,SAAM,CAAC0K,GAAE,CAAC;AAAC;AAAC,SAAS4zC,GAAGrL,GAAE;AAAC,SAAOsL,GAAGtL,CAAC,KAASA,EAAE,YAAR;AAAe;AAAC,SAASsL,GAAGtL,GAAE;AAAC,SAAWA,EAAE,aAAN;AAAc;AAAC,SAASuL,GAAGvL,GAAE;AAAC,QAAM,IAAE,IAAI,OAAO,sHAAqH,GAAG;AAAE,SAAcA,EAAE,SAAS,MAAM,CAAC,MAAzB;AAA0B;AAAC,SAASwL,GAAGxL,GAAE;AAAC,QAAM,IAAE,IAAI,OAAO,6LAA4L,GAAG;AAAE,SAAcA,EAAE,SAAS,MAAM,CAAC,MAAzB;AAA0B;AAAC,SAASyL,GAAGzL,GAAE;AAAC,MAAGsK,GAAGtK,CAAC,KAAG8F,GAAG9F,CAAC,KAAG,CAACA,EAAE,SAAQ;AAAG,WAAM;AAAG,MAAG,CAACkG,EAAGlG,CAAC,KAAG6K,GAAG7K,CAAC;AAAE,WAAM;AAAG,QAAM,IAAEA,EAAE,cAAe,GAACjzC,IAAS,MAAP,QAAU86C,GAAG,CAAC,KAAG9B,EAAG,CAAC,KAAG,EAAE,SAAQ;AAAG,SAAM,CAAC/F,EAAE,SAAQ,KAASA,EAAE,WAAU,MAAjB,MAAqBjzC;AAAC;AAAC,SAAS2+C,GAAG1L,GAAE,GAAE;AAAC,MAAIjzC,IAAEizC;AAAE,SAAYjzC,MAAP,QAAiBA,EAAE,UAAW,MAApB,QAAsB,CAAC,EAAEA,CAAC;AAAG,IAAAA,IAAEA,EAAE,iBAAkB;AAAC,SAAO,EAAEA,CAAC,IAAEA,IAAE;AAAI;AAAC,SAAS4+C,KAAI;AAAC,SAAOjF,GAAE;AAAE;AAAC,MAAMkF,KAAG,oBAAI,WAAQC,KAAG,oBAAI;AAAI,SAAS7B,GAAGhK,GAAE;AAAC,MAAG,CAACA,EAAE,aAAWA,EAAE,QAAS;AAAC,WAAO6L;AAAG,EAAA7L,EAAE,aAAW8E,EAAG,GAAG;AAAE,MAAI,IAAE8G,GAAG,IAAI5L,CAAC;AAAE,MAAG,CAAC,GAAE;AAAC,QAAE,oBAAI,OAAI4L,GAAG,IAAI5L,GAAE,CAAC;AAAE,eAAS,CAACjzC,GAAE,CAAC,KAAIizC,EAAE,UAAS;AAAC,YAAMA,IAAE,EAAE;AAAO,UAAIvoC,IAAE,EAAE,IAAIuoC,CAAC;AAAE,MAAAvoC,MAAIA,IAAE,oBAAI,OAAI,EAAE,IAAIuoC,GAAEvoC,CAAC,IAAGA,EAAE,IAAI1K,GAAE,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC,SAAO;AAAC;AAAC,SAAS++C,GAAG9L,GAAE;AAAC,QAAM,IAAEA,EAAE,YAAY,MAAMA,CAAC;AAAE,SAAO,EAAE,eAAeA,CAAC,GAAE;AAAC;AAAC,SAAS+L,GAAG/L,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE,GAAE;AAAC,MAAIyoC,IAAEF,EAAE,cAAe;AAAC,SAAYE,MAAP,QAAU;AAAC,UAAMF,IAAEE,EAAE;AAAM,IAAAA,EAAE,aAAW,MAAIgG,EAAGhG,CAAC,KAAG6L,GAAG7L,GAAEF,GAAEjzC,GAAE,GAAE0K,GAAE,CAAC,GAAE1K,EAAE,IAAIizC,CAAC,KAAG,EAAE,OAAOA,CAAC,GAAEvoC,EAAE,KAAKuoC,CAAC,IAAGE,IAAEA,EAAE,eAAgB;AAAA,EAAA;AAAC;AAAC,IAAI8L,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,KAAG,IAAGC,KAAG,IAAGC,KAAG,MAAKC,KAAG,IAAGC,KAAG,IAAGC,KAAG,IAAGC,KAAG,IAAGC,KAAG;AAAK,SAASC,GAAGlN,GAAE,GAAE;AAAC,QAAMjzC,IAAEu/C,GAAG,IAAItM,CAAC;AAAE,MAAU,MAAP,MAAS;AAAC,UAAMjzC,IAAEogD,GAAGnN,CAAC;AAAE,IAAAjzC,EAAE,eAAa,KAAG,EAAE,YAAYA,CAAC;AAAA,EAAC;AAAC,MAAGw/C,GAAG,IAAIvM,CAAC,KAAGiM,GAAG,aAAa,OAAOjM,CAAC,GAAEkG,EAAGn5C,CAAC,GAAE;AAAC,UAAMizC,IAAEoN,GAAGrgD,GAAEu/C,EAAE;AAAE,IAAAe,GAAGrN,GAAE,GAAEA,EAAE,SAAO,GAAE,IAAI;AAAA,EAAC;AAAC,EAASjzC,MAAT,UAAY+8C,GAAG2C,IAAGP,IAAGC,IAAGp/C,GAAE,WAAW;AAAC;AAAC,SAASsgD,GAAGrN,GAAE,GAAEjzC,GAAE,GAAE;AAAC,MAAI0K,IAAE;AAAE,SAAKA,KAAG1K,GAAE,EAAE0K,GAAE;AAAC,UAAMnK,IAAE0yC,EAAEvoC;AAAG,IAASnK,MAAT,UAAY4/C,GAAG5/C,GAAE,CAAC;AAAA,EAAC;AAAC;AAAC,SAASggD,GAAGtN,GAAE,GAAE;AAAC,EAAAA,EAAE,YAAY,cAAa,CAAC;AAAC;AAAC,MAAMuN,KAAG;AAAO,SAASC,GAAGxN,GAAE,GAAE;AAAC,QAAMjzC,IAAEi/C,GAAG,MAAM;AAAO,MAAa,OAAOj/C,KAAjB,UAAmB;AAAC,UAAMkzC,IAAED,EAAE,UAAU,SAASjzC,CAAC;AAAE,QAAE,KAAG,CAACkzC,IAAED,EAAE,UAAU,IAAIjzC,CAAC,IAAE,IAAE,KAAGkzC,KAAGD,EAAE,UAAU,OAAOjzC,CAAC;AAAA,EAAC;AAAC,QAAM,IAAE,iBAAiBizC,CAAC,EAAE,iBAAiB,6BAA6B,KAAGuN;AAAG,EAAAvN,EAAE,MAAM,YAAY,wBAA2B,MAAJ,IAAM,KAAG,QAAQ,OAAO,IAAI;AAAC;AAAC,SAASyN,GAAGzN,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE;AAAM,EAAI,MAAJ,IAAMsN,GAAGvgD,GAAE,EAAE,IAAE,MAAI22C,KAAG4J,GAAGvgD,GAAE,MAAM,IAAE,MAAI42C,KAAG2J,GAAGvgD,GAAE,QAAQ,IAAE,MAAI62C,KAAG0J,GAAGvgD,GAAE,OAAO,IAAE,MAAI82C,KAAGyJ,GAAGvgD,GAAE,SAAS,IAAE,MAAI+2C,KAAGwJ,GAAGvgD,GAAE,OAAO,IAAE,MAAIg3C,MAAIuJ,GAAGvgD,GAAE,KAAK;AAAC;AAAC,SAAS2gD,GAAG1N,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAEw/C,GAAG,IAAIvM,CAAC;AAAE,EAAS,MAAT,UAAY8E,EAAG,EAAE;AAAE,QAAMrtC,IAAE,EAAE,UAAUu0C,IAAGC,EAAE;AAAE,MAAG,SAASjM,GAAE1yC,GAAEP,GAAE;AAAC,UAAMkzC,IAAElzC,EAAE;AAAa,IAAAO,EAAE,kBAAgBP,EAAE,QAAMizC,GAAEC,EAAE,IAAID,GAAE1yC,CAAC;AAAA,EAAC,EAAE0yC,GAAEvoC,GAAEw0C,EAAE,GAAElG,EAAG,CAAC,IAAEtuC,EAAE,aAAa,qBAAoB,MAAM,IAAEquC,GAAG,CAAC,KAAGruC,EAAE,aAAa,0BAAyB,MAAM,GAAEyuC,EAAG,CAAC,GAAE;AAAC,UAAMlG,IAAE,EAAE,UAAS1yC,IAAE,EAAE;AAAO,QAAO0yC,MAAJ,KAAOwN,GAAG/1C,GAAEuoC,CAAC,GAAM1yC,MAAJ,GAAM;AAAC,YAAM0yC,IAAE1yC,IAAE;AAAE,OAAC,SAAS0yC,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,cAAMxoC,IAAEk1C;AAAG,QAAAA,KAAG,IAAGgB,GAAG3N,GAAEjzC,GAAE,GAAEO,GAAE2yC,GAAE,IAAI,GAAE2N,GAAG7gD,GAAEkzC,CAAC,GAAE0M,KAAGl1C;AAAA,MAAC,GAAE21C,GAAG,GAAEb,EAAE,GAAEvM,GAAE,GAAEvoC,CAAC;AAAA,IAAC;AAAC,UAAM1K,IAAE,EAAE;AAAS,IAAIA,MAAJ,KAAO0gD,GAAGh2C,GAAE1K,CAAC,GAAE,EAAE,cAAY8gD,GAAG,MAAK,GAAEp2C,CAAC,GAAE4yC,GAAG,CAAC,MAAIqC,MAAIzI,IAAG6I,MAAI7I;AAAA,EAAG,OAAK;AAAC,UAAM32C,IAAE,EAAE,eAAc;AAAG,QAAGw4C,GAAG,CAAC,GAAE;AAAC,YAAMx4C,IAAE,EAAE,SAAS2+C,IAAGD,EAAE;AAAE,MAAO1+C,MAAP,QAAUwgD,GAAG9N,GAAE1yC,CAAC,GAAEmK,EAAE,kBAAgB;AAAA,IAAO;AAAM,MAAAsuC,EAAG,CAAC,MAAI,EAAE,gBAAe,MAAK4G,MAAIr/C;AAAI,IAAAo/C,MAAIp/C,GAAEw/C,MAAIx/C;AAAA,EAAC;AAAC,MAAU,MAAP;AAAS,QAASP,KAAN;AAAQ,QAAE,aAAa0K,GAAE1K,CAAC;AAAA,SAAM;AAAC,YAAMizC,IAAE,EAAE;AAAmB,MAAMA,KAAN,OAAQ,EAAE,aAAavoC,GAAEuoC,CAAC,IAAE,EAAE,YAAYvoC,CAAC;AAAA,IAAC;AAAC,SAAOqyC,GAAG2C,IAAGP,IAAGC,IAAG,GAAE,SAAS,GAAE10C;AAAC;AAAC,SAASk2C,GAAG3N,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE,GAAE;AAAC,QAAMyoC,IAAEwM;AAAG,EAAAA,KAAG;AAAG,MAAI,IAAE3/C;AAAE,SAAK,KAAG,GAAE,EAAE,GAAE;AAAC,IAAA2gD,GAAG1N,EAAE,IAAGvoC,GAAE,CAAC;AAAE,UAAMnK,IAAEi/C,GAAG,IAAIvM,EAAE,EAAE;AAAE,IAAO1yC,MAAP,QAAUy4C,EAAGz4C,CAAC,MAAWs/C,OAAP,SAAYA,KAAGt/C,EAAE,UAAW,IAAOu/C,OAAL,OAAUA,KAAGv/C,EAAE;EAAY;AAAC,EAAA+8C,GAAG,CAAC,MAAIqC,MAAIzI,KAAIxsC,EAAE,uBAAqBi1C,IAAGA,KAAGxM,IAAEwM;AAAE;AAAC,SAASqB,GAAG/N,GAAE,GAAE;AAAC,QAAMjzC,IAAE,EAAE,IAAIizC,CAAC;AAAE,SAAO6H,GAAG96C,CAAC,KAAG+4C,GAAG/4C,CAAC,KAAGA,EAAE,SAAQ;AAAE;AAAC,SAAS8gD,GAAG7N,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAASizC,MAAP,SAAeA,EAAE,WAAN,KAAc+N,GAAG/N,EAAE,QAAOsM,EAAE,IAAG70C,IAAM,EAAE,WAAN,KAAcs2C,GAAG,EAAE,QAAOxB,EAAE;AAAE,MAAG;AAAG,QAAG,CAAC90C,GAAE;AAAC,YAAMuoC,IAAEjzC,EAAE;AAAmB,UAASizC,KAAN;AAAQ,YAAG;AAAC,UAAAjzC,EAAE,YAAYizC,CAAC;AAAA,QAAC,SAAO1yC,GAAN;AAAS,cAAa,OAAOA,KAAjB,YAA0BA,KAAN,MAAQ;AAAC,kBAAM2yC,IAAE,GAAG3yC,EAAE,sBAAsBP,EAAE,mBAAmBizC,EAAE;AAAW,kBAAM,IAAI,MAAMC,CAAC;AAAA,UAAC;AAAC,gBAAM3yC;AAAA,QAAC;AAAC,MAAAP,EAAE,qBAAmB;AAAA,IAAI;AAAA,aAAU0K,GAAE;AAAC,UAAMuoC,IAAE,SAAS,cAAc,IAAI;AAAE,IAAAjzC,EAAE,qBAAmBizC,GAAEjzC,EAAE,YAAYizC,CAAC;AAAA,EAAC;AAAC;AAAC,SAAS4N,GAAG5N,GAAE,GAAE;AAAC,QAAMjzC,IAAE,EAAE,yBAAwB,IAAE,EAAE;AAAa,MAAGA,MAAI4/C,MAAI,MAAIM,IAAG;AAAC,UAAMlgD,IAAO4/C,OAAL,IAAQ35C,IAAEjG,IAAEkgD,MAAIx1C,IAAEk1C,IAAGtI,GAAG,KAAK5sC,CAAC,IAAE,QAAM6sC,GAAG,KAAK7sC,CAAC,IAAE,QAAM;AAAM,QAAGzE,MAAI,GAAE;AAAC,YAAMyE,IAAE,EAAE,WAAUyoC,IAAE8L,GAAG;AAAM,UAAIn/C,IAAS,MAAP,OAASqzC,EAAE,KAAG,QAAOhzC,IAAS8F,MAAP,OAASktC,EAAEltC,KAAG;AAAO,UAAYnG,MAAT,QAAW;AAAC,YAAa,OAAOA,KAAjB,UAAmB;AAAC,gBAAMmzC,IAAE+E,GAAGl4C,CAAC;AAAE,UAAAA,IAAEqzC,EAAE,KAAGF;AAAA,QAAC;AAAC,QAAAvoC,EAAE,OAAO,GAAG5K,CAAC;AAAA,MAAC;AAAC,UAAUmG,MAAP,QAAUjG,KAAWiG,MAAR;AAAU,UAAE,gBAAgB,KAAK;AAAA,WAAM;AAAC,YAAY9F,MAAT,QAAW;AAAC,cAAa,OAAOA,KAAjB,UAAmB;AAAC,kBAAM8yC,IAAE+E,GAAG73C,CAAC;AAAE,YAAAA,IAAEgzC,EAAEltC,KAAGgtC;AAAA,UAAC;AAAC,UAAS9yC,MAAT,UAAYuK,EAAE,IAAI,GAAGvK,CAAC;AAAA,QAAC;AAAC,UAAE,MAAI8F;AAAA,MAAC;AAAC,MAAIg6C,OAAIhN,EAAE,YAAW,EAAG,QAAMhtC;AAAA,IAAE;AAAC,IAAAi6C,KAAGj6C,GAAE,EAAE,0BAAwB25C,IAAG,EAAE,eAAa35C;AAAA,EAAC;AAAC,MAAIyE;AAAC;AAAC,SAASu2C,GAAGhO,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAE4/C;AAAG,MAAIl1C;AAAE,EAAAk1C,KAAG,IAAGC,KAAG,MAAKC,KAAG,IAAG,SAAS7M,GAAE1yC,GAAEP,GAAE;AAAC,UAAMkzC,IAAEyM,IAAGj1C,IAAEuoC,EAAE,QAAOhtC,IAAE1F,EAAE;AAAO,QAAGo/C,KAAG,IAAOj1C,MAAJ,KAAWzE,MAAJ,GAAM;AAAC,YAAMitC,IAAED,EAAE,SAAQvoC,IAAEnK,EAAE;AAAQ,UAAG2yC,MAAIxoC;AAAE,QAAAw2C,GAAGhO,GAAElzC,CAAC;AAAA,WAAM;AAAC,cAAMizC,IAAEmN,GAAGlN,CAAC,GAAE3yC,IAAEogD,GAAGj2C,GAAE,MAAK,IAAI;AAAE,YAAG;AAAC,UAAA1K,EAAE,aAAaO,GAAE0yC,CAAC;AAAA,QAAC,SAAOhtC,GAAN;AAAS,cAAa,OAAOA,KAAjB,YAA0BA,KAAN,MAAQ;AAAC,kBAAMktC,IAAE,GAAGltC,EAAE,SAAQ,aAAcjG,EAAE,6BAA6BO,EAAE,gBAAgBmK,wBAAwBuoC,EAAE,iBAAiBC;AAAM,kBAAM,IAAI,MAAMC,CAAC;AAAA,UAAC;AAAC,gBAAMltC;AAAA,QAAC;AAAC,QAAAk6C,GAAGjN,GAAE,IAAI;AAAA,MAAC;AAAC,YAAMjtC,IAAEu5C,GAAG,IAAI90C,CAAC;AAAE,MAAAsuC,EAAG/yC,CAAC,MAAW45C,OAAP,SAAYA,KAAG55C,EAAE,cAAkB65C,OAAL,OAAUA,KAAG75C,EAAE,SAAQ;AAAA,IAAI,OAAK;AAAC,YAAMitC,IAAEmN,GAAGpN,GAAEsM,EAAE,GAAEpM,IAAEkN,GAAG9/C,GAAEi/C,EAAE;AAAE,UAAO90C,MAAJ;AAAM,QAAIzE,MAAJ,KAAO26C,GAAGzN,GAAE5yC,GAAE,GAAE0F,IAAE,GAAEjG,GAAE,IAAI;AAAA,eAAciG,MAAJ;AAAO,YAAOyE,MAAJ,GAAM;AAAC,gBAAMuoC,IAAQjzC,EAAE,sBAAR;AAA2B,UAAAsgD,GAAGpN,GAAE,GAAExoC,IAAE,GAAEuoC,IAAE,OAAKjzC,CAAC,GAAEizC,MAAIjzC,EAAE,cAAY;AAAA,QAAG;AAAA;AAAM,SAAC,SAASizC,GAAE1yC,GAAEP,GAAEkzC,GAAExoC,GAAEzE,GAAE;AAAC,gBAAMktC,IAAED,IAAE,GAAEpzC,IAAE4K,IAAE;AAAE,cAAIvK,GAAEC,GAAEgzC,KAAGE,IAAErtC,GAAEqtC,EAAE,aAAY3zC,IAAE,GAAE0zC,IAAE;AAAQ,mBAAFC,GAAO3zC,KAAGwzC,KAAGE,KAAGvzC,KAAG;AAAC,kBAAMmzC,IAAE1yC,EAAEZ,IAAGuzC,IAAElzC,EAAEqzC;AAAG,gBAAGJ,MAAIC;AAAE,cAAAE,IAAE+N,GAAGD,GAAGhO,GAAEjtC,CAAC,CAAC,GAAEtG,KAAI0zC;AAAA,iBAAQ;AAAC,cAASlzC,MAAT,WAAaA,IAAE,IAAI,IAAII,CAAC,IAAYH,MAAT,WAAaA,IAAE,IAAI,IAAIJ,CAAC;AAAG,oBAAM0K,KAAEtK,EAAE,IAAI6yC,CAAC,GAAEE,IAAEhzC,EAAE,IAAI+yC,CAAC;AAAE,kBAAGxoC;AAAE,oBAAGyoC,GAAE;AAAC,wBAAMF,KAAEuK,GAAG0B,IAAGhM,CAAC;AAAE,kBAAAD,OAAIG,IAAEA,IAAE+N,GAAGD,GAAGhO,GAAEjtC,CAAC,CAAC,KAASmtC,KAAN,OAAQntC,EAAE,aAAagtC,IAAEG,CAAC,IAAEntC,EAAE,YAAYgtC,EAAC,GAAEiO,GAAGhO,GAAEjtC,CAAC,IAAGtG,KAAI0zC;AAAA,gBAAG;AAAM,kBAAAsN,GAAGzN,GAAEjtC,GAAEmtC,CAAC,GAAEC;AAAA;AAAS,gBAAAD,IAAE+N,GAAGf,GAAGnN,CAAC,CAAC,GAAEkN,GAAGlN,GAAEhtC,CAAC,GAAEtG;AAAA,YAAG;AAAC,kBAAM+K,KAAE80C,GAAG,IAAItM,CAAC;AAAE,YAAOxoC,OAAP,QAAUsuC,EAAGtuC,EAAC,MAAWm1C,OAAP,SAAYA,KAAGn1C,GAAE,UAAS,IAASo1C,OAAL,OAAUA,KAAGp1C,GAAE,SAAQ;AAAA,UAAI;AAAC,gBAAMrK,IAAEV,IAAEwzC,GAAEI,IAAEF,IAAEvzC;AAAE,cAAGO,KAAG,CAACkzC,GAAE;AAAC,kBAAMhzC,IAAEP,EAAEF,IAAE;AAAG,YAAA8gD,GAAG5gD,GAAEizC,GAAEI,GAAEvzC,GAAEmG,GAAW1F,MAAT,SAAW,OAAK2+C,GAAG,gBAAgB3+C,CAAC,CAAC;AAAA,UAAC;AAAM,YAAAgzC,KAAG,CAAClzC,KAAGigD,GAAG//C,GAAEZ,GAAEwzC,GAAEltC,CAAC;AAAA,QAAC,GAAE1F,GAAE2yC,GAAEC,GAAEzoC,GAAEzE,GAAEjG,CAAC;AAAA,IAAC;AAAC,IAAAs9C,GAAG/8C,CAAC,MAAIo/C,MAAIzI,KAAIl3C,EAAE,uBAAqB2/C,IAAGA,KAAGzM,IAAEyM;AAAA,EAAE,EAAE1M,GAAE,GAAEjzC,CAAC,GAAE6gD,GAAG,GAAE7gD,CAAC,GAAEohD,GAAG12C,IAAE,CAAC,KAASm1C,MAAN,QAAUA,OAAKn1C,EAAE,gBAAc,CAACu1C,OAAKv1C,EAAE,cAAcm1C,EAAE,GAAEn1C,EAAE,aAAao1C,EAAE,IAAG,SAAS7M,GAAE;AAAC,IAAAmO,GAAGnO,CAAC,KAAQ6M,OAAL,MAASA,OAAK7M,EAAE,eAAa,CAACgN,MAAIhN,EAAE,aAAa6M,EAAE;AAAA,EAAC,EAAE,CAAC,GAAEF,KAAG;AAAC;AAAC,SAASS,GAAGpN,GAAE,GAAE;AAAC,QAAMjzC,IAAE,CAAA;AAAG,MAAI,IAAEizC,EAAE;AAAQ,SAAY,MAAP,QAAU;AAAC,UAAMA,IAAE,EAAE,IAAI,CAAC;AAAE,IAASA,MAAT,UAAY8E,EAAG,GAAG,GAAE/3C,EAAE,KAAK,CAAC,GAAE,IAAEizC,EAAE;AAAA,EAAM;AAAC,SAAOjzC;AAAC;AAAC,SAASkhD,GAAGjO,GAAE,GAAE;AAAC,QAAMjzC,IAAEu/C,GAAG,IAAItM,CAAC;AAAE,MAAI,IAAEuM,GAAG,IAAIvM,CAAC;AAAE,EAASjzC,MAAT,UAAqB,MAAT,UAAY+3C,EAAG,EAAE;AAAE,QAAMrtC,IAAEs1C,MAAIV,GAAG,IAAIrM,CAAC,KAAGoM,GAAG,IAAIpM,CAAC,GAAE,IAAEuK,GAAG0B,IAAGjM,CAAC;AAAE,MAAGjzC,MAAI,KAAG,CAAC0K,GAAE;AAAC,QAAGyuC,EAAGn5C,CAAC,GAAE;AAAC,YAAMizC,IAAE,EAAE;AAAqB,MAASA,MAAT,WAAa0M,MAAI1M,GAAE8M,MAAI9M;AAAG,YAAM1yC,IAAE,EAAE;AAAwB,MAASA,MAAT,WAAaq/C,MAAIr/C;AAAA,IAAE,OAAK;AAAC,YAAM0yC,IAAEjzC,EAAE,eAAgB;AAAC,MAAAg5C,EAAGh5C,CAAC,KAAG,CAACA,EAAE,gBAAe,MAAK4/C,MAAI3M,IAAG8M,MAAI9M,GAAE0M,MAAI1M;AAAA,IAAC;AAAC,WAAO;AAAA,EAAC;AAAC,MAAGjzC,MAAI,KAAG0K,KAAGqyC,GAAG2C,IAAGP,IAAGC,IAAG,GAAE,SAAS,GAAE,EAAE,UAAUp/C,GAAE,GAAEi/C,EAAE,GAAE;AAAC,UAAMj/C,IAAE2gD,GAAG1N,GAAE,MAAK,IAAI;AAAE,WAAc,MAAP,QAAU8E,EAAG,EAAE,GAAE,EAAE,aAAa/3C,GAAE,CAAC,GAAEmgD,GAAGlN,GAAE,IAAI,GAAEjzC;AAAA,EAAC;AAAC,MAAGm5C,EAAGn5C,CAAC,KAAGm5C,EAAG,CAAC,GAAE;AAAC,UAAMlG,IAAE,EAAE;AAAS,IAAAA,MAAIjzC,EAAE,YAAUygD,GAAG,GAAExN,CAAC;AAAE,UAAM1yC,IAAE,EAAE;AAAS,IAAAA,MAAIP,EAAE,YAAU0gD,GAAG,GAAEngD,CAAC,GAAEmK,MAAIu2C,GAAGjhD,GAAE,GAAE,CAAC,GAAEu9C,GAAG,CAAC,KAAG,EAAE,SAAQ,KAAIuD,GAAG9gD,GAAE,GAAE,CAAC,IAAGs9C,GAAG,CAAC,MAAIqC,MAAIzI,IAAG6I,MAAI7I;AAAA,EAAG,OAAK;AAAC,UAAM32C,IAAE,EAAE;AAAiB,QAAGw4C,GAAG,CAAC,GAAE;AAAC,YAAMx4C,IAAE,EAAE,SAAS2+C,IAAGD,EAAE;AAAE,MAAO1+C,MAAP,QAAUwgD,GAAG9N,GAAE1yC,CAAC;AAAA,IAAC;AAAM,MAAAy4C,EAAG,CAAC,KAAG,CAAC,EAAE,gBAAe,MAAK4G,MAAIr/C;AAAG,IAAAo/C,MAAIp/C,GAAEw/C,MAAIx/C;AAAA,EAAC;AAAC,MAAG,CAAC0/C,MAAI1C,GAAG,CAAC,KAAG,EAAE,iBAAewC,IAAG;AAAC,UAAM9M,IAAE,EAAE,YAAa;AAAC,IAAAA,EAAE,eAAa8M,IAAG,IAAE9M;AAAA,EAAC;AAAC,SAAO;AAAC;AAAC,SAAS8N,GAAG9N,GAAE,GAAE;AAAC,MAAIjzC,IAAEk/C,GAAG;AAAmB,QAAM,IAAEA,GAAG;AAAY,MAAUl/C,MAAP,MAAS;AAAC,QAAG,EAAEizC,OAAK;AAAE;AAAO,IAAAjzC,IAAEy7C,GAAGyD,EAAE;AAAA,EAAC;AAAC,EAAAl/C,EAAEizC,KAAG;AAAC;AAAC,SAASkO,GAAGlO,GAAE;AAAC,MAAI,IAAEA,EAAE;AAAY,SAAc,MAAP,QAAU,MAAIiM,GAAG,wBAAsB,IAAE,EAAE,cAAa;AAAC;AAAC,SAASmC,GAAGpO,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE,GAAE;AAAC,EAAAi1C,KAAG,IAAGI,KAAG,IAAGH,KAAG,IAAGI,KAAG,MAAIlK,IAAGoK,KAAG,MAAKhB,KAAGl/C,GAAEi/C,KAAGj/C,EAAE,SAAQm/C,KAAGn/C,EAAE,QAAOo/C,KAAGF,GAAG,WAAW,UAASG,KAAG30C,GAAE40C,KAAG,GAAEC,KAAGtM,EAAE,UAASuM,KAAG,EAAE,UAASS,KAAG,EAAE,WAAUR,KAAG,IAAI,IAAIz/C,EAAE,YAAY;AAAE,QAAMmzC,IAAE,oBAAI;AAAI,SAAOuM,KAAGvM,GAAE+N,GAAG,QAAO,IAAI,GAAEhC,KAAG,QAAOC,KAAG,QAAOE,KAAG,QAAOC,KAAG,QAAOC,KAAG,QAAOC,KAAG,QAAOP,KAAG,QAAOQ,KAAG,QAAOC,KAAG,QAAOvM;AAAC;AAAC,SAASiN,GAAGnN,GAAE;AAAC,QAAM,IAAEwM,GAAG,IAAIxM,CAAC;AAAE,SAAgB,MAAT,UAAY8E,EAAG,IAAG9E,CAAC,GAAE;AAAC;AAAC,MAAMqO,KAAG,OAAO,OAAO,CAAE,CAAA,GAAEC,KAAG,IAAGC,KAAG,CAAC,CAAC,WAAU,SAASvO,GAAE,GAAE;AAAC,MAAGwO,KAAGxO,EAAE,WAAUyO,KAAGzO,EAAE,KAAI,EAAE,YAAW;AAAG;AAAO,QAAK,EAAC,KAAIjzC,GAAE,UAAS,GAAE,SAAQ,GAAE,SAAQF,GAAE,QAAOK,EAAC,IAAE8yC;AAAE,EAAGmK,EAAG,GAAE7J,IAAEN,CAAC,KAAkBjzC,KAAN,SAAkB,SAASizC,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAOqJ,GAAGtJ,CAAC,KAAG,CAAC1yC,KAAG,CAAC2yC,KAAG,CAAClzC;AAAA,EAAC,EAAEA,GAAE,GAAEG,GAAEL,CAAC,IAAEs9C,EAAG,GAAEn9C,IAAEgzC,CAAC,IAAU,SAASA,GAAE1yC,GAAEP,GAAEkzC,GAAExoC,GAAE;AAAC,WAAO6xC,GAAGtJ,CAAC,KAAG,CAACC,KAAG,CAAClzC,MAAIO,KAAGmK;AAAA,EAAE,EAAE1K,GAAE,GAAE,GAAEG,GAAEL,CAAC,IAAEs9C,EAAG,GAAE5J,IAAEP,CAAC,IAAU,SAASA,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAOoJ,GAAGrJ,CAAC,KAAG,CAAC1yC,KAAG,CAAC2yC,KAAG,CAAClzC;AAAA,EAAC,EAAEA,GAAE,GAAEG,GAAEL,CAAC,IAAEs9C,EAAG,GAAEr9C,IAAEkzC,CAAC,IAAU,SAASA,GAAE1yC,GAAEP,GAAEkzC,GAAExoC,GAAE;AAAC,WAAO4xC,GAAGrJ,CAAC,KAAG,CAACC,KAAG,CAAClzC,MAAIO,KAAGmK;AAAA,EAAE,EAAE1K,GAAE,GAAE,GAAEG,GAAEL,CAAC,IAAEs9C,EAAG,GAAEn4C,IAAEguC,CAAC,IAAU,SAASA,GAAE1yC,GAAEP,GAAE;AAAC,WAAO,SAASizC,GAAE;AAAC,aAAkBA,MAAZ;AAAA,IAAa,EAAEA,CAAC,KAAG,CAAC1yC,KAAG,CAACP;AAAA,EAAC,EAAEA,GAAE,GAAEF,CAAC,IAAEs9C,EAAG,GAAE3J,IAAER,CAAC,IAAU,SAASA,GAAE1yC,GAAEP,GAAE;AAAC,WAAO,SAASizC,GAAE;AAAC,aAAoBA,MAAd;AAAA,IAAe,EAAEA,CAAC,KAAG,CAAC1yC,KAAG,CAACP;AAAA,EAAC,EAAEA,GAAE,GAAEF,CAAC,IAAEs9C,EAAG,GAAE1J,IAAET,CAAC,IAAU,SAASA,GAAE1yC,GAAE;AAAC,WAAOk8C,GAAGxJ,CAAC,KAAG1yC;AAAA,EAAC,EAAEP,GAAE,CAAC,KAAE2hD,KAAG,IAAGvE,EAAG,GAAEzJ,IAAEV,CAAC,KAAU,SAASA,GAAE;AAAC,WAAYA,MAAN;AAAA,EAAO,EAAEjzC,CAAC,IAAEo9C,EAAG,GAAExJ,IAAEX,CAAC,IAAU,SAASA,GAAE1yC,GAAE;AAAC,WAAOL,MAAGK,KAAS0yC,EAAE,YAAa,MAArB;AAAA,EAAqB,EAAEjzC,GAAE,CAAC,KAAEizC,EAAE,eAAc,GAAG0O,KAAG,IAAGvE,EAAG,GAAEn3C,IAAE,EAAE,KAAU,SAASgtC,GAAE1yC,GAAE;AAAC,WAAOk8C,GAAGxJ,CAAC,KAAG,CAAC1yC;AAAA,EAAC,EAAEP,GAAE,CAAC,KAAE2hD,KAAG,IAAGvE,EAAG,GAAEzJ,IAAEV,CAAC,KAAU,SAASA,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAOhzC,KAAE,CAACK,KAAG,CAACP,MAAI08C,GAAGzJ,CAAC,KAASA,EAAE,YAAW,MAAnB,OAAuBC,KAAG,EAAEA,KAAG3yC,KAAGP,MAAI08C,GAAGzJ,CAAC;AAAA,EAAC,EAAEjzC,GAAEG,GAAEL,GAAE,CAAC,IAAE48C,GAAG18C,CAAC,IAAEo9C,EAAG,GAAEv9C,IAAEozC,CAAC,KAAGA,EAAE,eAAc,GAAGmK,EAAG,GAAE1yC,IAAE,EAAE,KAAW,SAASuoC,GAAE;AAAC,WAAiBA,MAAX;AAAA,EAAY,EAAEjzC,CAAC,IAAEo9C,EAAG,GAAE98C,IAAE2yC,CAAC,IAAU,SAASA,GAAE1yC,GAAEP,GAAEkzC,GAAExoC,GAAE;AAAC,WAAOxK,KAAE,EAAEF,KAAGkzC,KAAGxoC,OAAKiyC,GAAG1J,CAAC,KAASA,EAAE,YAAW,MAAnB,OAAuB1yC,KAAG,EAAEA,KAAG2yC,KAAGxoC,MAAIiyC,GAAG1J,CAAC;AAAA,EAAC,EAAEjzC,GAAE,GAAE,GAAEG,GAAEL,CAAC,IAAE68C,GAAG38C,CAAC,IAAEo9C,EAAG,GAAEvJ,IAAEZ,CAAC,KAAGA,EAAE,eAAgB,GAACmK,EAAG,GAAE1yC,IAAE,EAAE,KAAW,SAASuoC,GAAE1yC,GAAEP,GAAE;AAAC,WAAO08C,GAAGzJ,CAAC,MAAI/yC,KAAEK,IAAEP;AAAA,EAAE,EAAEA,GAAEG,GAAE,CAAC,KAAE8yC,EAAE,kBAAiBmK,EAAG,GAAEhK,IAAE,EAAE,KAAU,SAASH,GAAE1yC,GAAEP,GAAE;AAAC,WAAO28C,GAAG1J,CAAC,MAAI/yC,KAAEK,IAAEP;AAAA,EAAE,EAAEA,GAAEG,GAAE,CAAC,KAAE8yC,EAAE,eAAc,GAAGmK,EAAG,GAAEhK,IAAE,EAAE,KAAU,SAASH,GAAE1yC,GAAE;AAAC,WAAOL,MAAGK,KAAGm8C,GAAGzJ,CAAC;AAAA,EAAC,EAAEjzC,GAAEF,CAAC,KAAEmzC,EAAE,kBAAiBmK,EAAG,GAAEz9C,IAAE,EAAE,KAAU,SAASszC,GAAE1yC,GAAE;AAAC,WAAOL,MAAGK,KAAGo8C,GAAG1J,CAAC;AAAA,EAAC,EAAEjzC,GAAEF,CAAC,KAAEmzC,EAAE,eAAgB,GAACmK,EAAG,GAAEz9C,IAAE,EAAE,KAAU,SAASszC,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAYD,EAAE,YAAa,MAArB,OAAuB,CAAC1yC,KAAGi8C,GAAGx8C,GAAEkzC,CAAC;AAAA,EAAC,EAAElzC,GAAEG,GAAEL,GAAE,CAAC,KAAEmzC,EAAE,kBAAiBmK,EAAG,GAAE/J,IAAE,MAAM,KAAU,SAASJ,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAYD,EAAE,YAAW,MAAnB,OAAuB,CAAC1yC,KAAGi8C,GAAGx8C,GAAEkzC,CAAC;AAAA,EAAC,EAAElzC,GAAEG,GAAEL,GAAE,CAAC,KAAEmzC,EAAE,eAAc,GAAGmK,EAAG,GAAE/J,IAAE,WAAW,KAAU,SAASJ,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAYD,EAAE,YAAW,MAAnB,OAAuB,CAAC1yC,KAAGi8C,GAAGx8C,GAAEkzC,CAAC;AAAA,EAAC,EAAElzC,GAAEG,GAAEL,GAAE,CAAC,KAAEmzC,EAAE,eAAc,GAAGmK,EAAG,GAAE/J,IAAE,QAAQ,KAAU,SAASJ,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAcD,MAAR,SAAW,CAAC1yC,KAAG,CAACP,KAAG,CAACkzC;AAAA,EAAC,EAAElzC,GAAEG,GAAE,GAAEL,CAAC,IAAEs9C,EAAG,GAAEtJ,IAAEb,CAAC,IAAU,SAASA,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAYD,EAAE,kBAAR,OAAuB,CAAC1yC,KAAGi8C,GAAGx8C,GAAEkzC,CAAC;AAAA,EAAC,EAAElzC,GAAE,GAAEF,GAAE,CAAC,KAAEmzC,EAAE,eAAc,GAAGmK,EAAG,GAAE9J,IAAE,MAAM,KAAU,SAASL,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAOhzC,KAAQ+yC,EAAE,kBAAR,OAAuBjzC,KAAGO,IAAQ0yC,EAAE,YAAa,MAArB,OAAuBC,KAASD,EAAE,kBAAR,OAAuBC,KAAG3yC;AAAA,EAAC,EAAEP,GAAE,GAAEF,GAAE,CAAC,KAAEmzC,EAAE,eAAc,GAAGmK,EAAG,GAAE/8C,IAAE,MAAM,KAAOuhD,GAAG,EAAE,aAAa,UAAU,IAAG,SAAS3O,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAM,CAAC3yC,KAAS0yC,EAAE,YAAa,MAArB,QAAwB/yC,KAAEF,IAAEkzC;AAAA,EAAE,EAAElzC,GAAE,GAAEF,GAAE,CAAC,KAAkJmzC,EAAE,kBAAiBmK,EAAG,GAAE7I,IAAEtB,CAAC,KAA1K,SAASA,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAM,CAAC3yC,KAAS0yC,EAAE,kBAAR,QAAwB/yC,KAAEF,IAAEkzC;AAAA,EAAE,EAAElzC,GAAE,GAAEF,GAAE,CAAC,KAA6CmzC,EAAE,kBAAiBmK,EAAG,GAAE5I,IAAEvB,CAAC,KAAtE2J,GAAG58C,GAAEF,GAAE,CAAC,MAAImzC,EAAE,eAAgB,GAACmK,EAAG,GAAE3I,IAAExB,CAAC,KAAiE,CAACiC,MAAG0H,GAAG58C,GAAEF,GAAE,CAAC,MAAImzC,EAAE,eAAc,GAAGmK,EAAG,GAAE3I,IAAExB,CAAC,IAAI,SAASA,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,WAAOD,KAAG1yC,KAAGP,KAAGkzC;AAAA,EAAC,EAAG,GAAE,GAAE/yC,GAAEL,CAAC,KAAGs9C,EAAG,GAAEpI,IAAE/B,CAAC;AAAC,CAAC,GAAE,CAAC,eAAc,SAASA,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE,QAAO,IAAEA,EAAE;AAAY,EAAAjzC,aAAa,QAAgB,MAAV,WAAa44C,GAAG,GAAG,MAAI;AAAC,IAAAG,GAAGD,GAAG94C,CAAC,CAAC,MAAI6hD,KAAG;AAAA,EAAG,CAAG;AAAA,CAAC,GAAE,CAAC,oBAAmB,SAAS5O,GAAE,GAAE;AAAC,EAAA2F,GAAG,GAAG,MAAI;AAAC,UAAM54C,IAAE64C;AAAK,QAAGH,EAAG14C,CAAC,KAAG,CAAC,EAAE,YAAW,GAAG;AAAC,YAAM,IAAEA,EAAE,QAAO0K,IAAE1K,EAAE,OAAO,QAAO;AAAG,MAAAq7C,GAAG,EAAE,GAAG,IAAGpI,EAAE,YAAUwO,KAAGF,MAAgB,EAAE,SAAd,aAAoB,CAACvhD,EAAE,YAAW,KAAI0K,EAAE,UAAS,MAAK1K,EAAE,UAAQg5C,EAAGtuC,CAAC,KAAGA,EAAE,eAAa1K,EAAE,UAAQo9C,EAAG,GAAEt9C,IAAEq3C,EAAE;AAAA,IAAC;AAAA,EAAC,CAAG;AAAA,CAAC,GAAE,CAAC,kBAAiB,SAASlE,GAAE,GAAE;AAACiC,EAAAA,KAAE4M,KAAG,KAAGlJ,GAAG,GAAG,MAAI;AAAC,IAAAmJ,GAAG,GAAE9O,EAAE,IAAI;AAAA,EAAC,CAAG;AAAA,CAAC,GAAE,CAAC,SAAQ,SAASA,GAAE,GAAE;AAAC,EAAAA,EAAE,gBAAe,GAAG2F,GAAG,GAAG,MAAI;AAAC,UAAM54C,IAAE64C,GAAI,GAAC,IAAE5F,EAAE,MAAKvoC,IAAEs3C,GAAG/O,CAAC;AAAE,QAAS,KAAN,QAASyF,EAAG14C,CAAC,KAAGiiD,GAAGjiD,GAAE0K,GAAE,GAAEuoC,EAAE,WAAU,EAAE,GAAE;AAAC,MAAA6O,OAAKC,GAAG,GAAE,CAAC,GAAED,KAAG;AAAI,YAAMp3C,IAAE1K,EAAE,OAAO,QAAS,GAACiG,IAAEsyC,GAAG,EAAE,OAAO;AAAE,UAAUtyC,MAAP;AAAS;AAAO,YAAMktC,IAAEnzC,EAAE,cAAa,IAAEmzC,IAAEnzC,EAAE,OAAO,SAAOA,EAAE,MAAM,QAAO,IAAEmzC,IAAEnzC,EAAE,MAAM,SAAOA,EAAE,OAAO;AAAOm1C,MAAAA,MAAG,CAACn1C,EAAE,YAAW,KAAIg5C,EAAGtuC,CAAC,KAAUzE,EAAE,eAAT,QAAqByE,EAAE,iBAAiB,MAAM,GAAE,CAAC,IAAE,IAAEA,EAAE,eAAgB,EAAC,MAAM,IAAE,CAAC,MAAIuxC,GAAGh2C,EAAE,UAAU,KAAGm3C,EAAG,GAAEt9C,IAAE,CAAC;AAAE,YAAM,IAAE,EAAE;AAAOo1C,MAAAA,MAAG,IAAE,KAA6BjC,EAAE,cAA5B,2BAAuC,CAAC,EAAE,YAAa,MAAGjzC,EAAE,OAAO,UAAQ,IAAGo1C,MAAGC,MAAGI,MAAI,CAAC,EAAE,YAAW,MAAKgM,KAAG,GAAEpG,GAAG,IAAI;AAAA,IAAE;AAAM,MAAAa,GAAG,IAAG,GAAS,MAAP,OAAS,IAAE,MAAM,GAAE4F,OAAKC,GAAG,GAAE,KAAG,MAAM,GAAED,KAAG;AAAI,IAAA9G,MAAK1B,GAAGK,IAAI;AAAA,EAAC,CAAG,GAACuI,KAAG;AAAI,CAAC,GAAE,CAAC,SAAQ,SAASjP,GAAE,GAAE;AAAC,EAAA2F,GAAG,GAAG,MAAI;AAAC,UAAM54C,IAAE64C,MAAKnuC,IAAE6tC,GAAG,EAAE,OAAO,GAAEtyC,IAAEk2C,GAAI;AAAC,QAAGzxC;AAAE,UAAGguC,EAAG14C,CAAC,GAAE;AAAC,cAAMO,IAAEP,EAAE,QAAOkzC,IAAE3yC,EAAE,QAAO;AAAG,QAAeA,EAAE,SAAd,aAAwBA,EAAE,WAAN,KAAcP,EAAE,iBAAe,CAACu9C,GAAGrK,CAAC,KAAOyI,GAAI,EAAC,gBAAe,MAAxB,KAA4BzI,EAAE,0BAAyB,EAAG,QAAO,KAAWjtC,MAAP,QAAUjG,EAAE,GAAGiG,CAAC,KAAEyE,EAAE,gBAAe,GAAG1K,EAAE,QAAM,MAAeizC,EAAE,WAAN,KAAc,CAACjzC,EAAE,YAAa,KAAEkzC,MAAIlzC,EAAE,MAAM,cAAYm5C,EAAGjG,CAAC,IAAEA,EAAE,OAAO,CAAC,IAAEA,EAAE,iBAAgB,EAAG,OAAO,CAAC;AAAA,MAAG,WAAmBD,EAAE,gBAAZ,SAAwB;AAAC,cAAMjzC,IAAE0K,EAAE;AAAW,YAAU1K,MAAP,MAAS;AAAC,gBAAMkzC,IAAElzC,EAAE;AAAS,WAAGkzC,MAAIwC,MAAIxC,MAAIyC,OAAIyD,GAAG+I,GAAGl8C,GAAEyE,GAAE,GAAEuoC,CAAC,CAAC;AAAA,QAAE;AAAA,MAAC;AAAA;AAAC,IAAAmK,EAAG,GAAElK,IAAED,CAAC;AAAA,EAAC,CAAG;AAAA,CAAC,GAAE,CAAC,OAAMqO,EAAE,GAAE,CAAC,QAAOA,EAAE,GAAE,CAAC,aAAYA,EAAE,GAAE,CAAC,YAAWA,EAAE,GAAE,CAAC,WAAUA,EAAE,GAAE,CAAC,SAAQA,EAAE,GAAE,CAAC,SAAQA,EAAE,GAAE,CAAC,QAAOA,EAAE,GAAE,CAAC,QAAOA,EAAE,CAAC;AAAEnM,MAAGqM,GAAG,KAAK,CAAC,eAAc,CAACvO,GAAE,MAAI,SAAS,GAAE1yC,GAAE;AAAC,QAAMP,IAAE,EAAE,WAAUkzC,IAAE8O,GAAG,CAAC;AAAE,EAA6BhiD,MAA1B,2BAA6Bk1C,MAAGmE,GAAG94C,CAAC,KAAsCP,MAA1B,2BAAmC44C,GAAGr4C,GAAG,MAAI;AAAC,UAAMgzC,IAAEsF,GAAI;AAAC,QAA6B74C,MAA1B,yBAA4B;AAAC,UAAUuzC,MAAP,MAAS;AAAC,cAAMN,IAAEkJ,GAAE;AAAG,YAAG,CAACzD,EAAGzF,CAAC;AAAE;AAAO,QAAAmG,GAAGnG,EAAE,MAAK,CAAE;AAAA,MAAC;AAAC,UAAGyF,EAAGnF,CAAC,GAAE;AAAC,cAAMvzC,IAAEuzC,EAAE,OAAO,QAAMA,EAAE,MAAM;AAAI,YAAGtzC,IAAE,EAAE,WAAwByhD,OAAd,eAAkBzhD,IAAEwhD,KAAGF,MAAIhhD,EAAE,YAAa,KAAEP;AAAG,cAAGq7C,GAAG,IAAI,GAAEoG,KAAG,GAAE,WAAY,MAAI;AAAC,YAAA7I,GAAGr4C,GAAG,MAAI;AAAC,cAAA86C,GAAG,IAAI;AAAA,YAAC,CAAG;AAAA,UAAA,GAAGkG,EAAE,GAAE7I,EAAGnF,CAAC,GAAE;AAAC,kBAAMN,IAAEM,EAAE,OAAO,QAAO;AAAG,YAAAN,EAAE,UAAS,GAAGM,EAAE,SAAON,EAAE,UAAW,GAAC+F,EAAG/F,CAAC,KAAG8E,EAAG,GAAG,GAAExE,EAAE,QAAMN,EAAE,SAAQ;AAAA,UAAE;AAAA,eAAM;AAAC,UAAAoI,GAAG,IAAI,GAAE,EAAE,eAAc;AAAG,gBAAMnI,IAAEK,EAAE,OAAO,QAAO,EAAG,kBAAiBttC,IAAMstC,EAAE,OAAO,WAAb,KAAqBA,EAAE,MAAM,WAASL,EAAE;AAAO,UAAAsC,MAAIx1C,KAAG,CAACiG,KAAGm3C,EAAG78C,GAAEmK,IAAE,EAAE;AAAA,QAAC;AAAC;AAAA,MAAM;AAAA,IAAC;AAAC,QAAIzK;AAAE,QAAG,CAACy4C,EAAGnF,CAAC;AAAE;AAAO,UAAMC,IAAE,EAAE;AAAK,IAAO0O,OAAP,QAAWhG,GAAG,IAAG37C,GAAE2hD,EAAE,GAAE3O,EAAE,SAAc2O,OAAP,QAAW,CAAC3O,EAAE,iBAAegK,GAAGhK,EAAE,OAAO,QAAS,CAAA,KAAUL,MAAP,QAAUK,EAAE,cAAcL,CAAC,GAAEgP,KAAG;AAAK,UAAMniD,IAAEwzC,EAAE,QAAOtuC,IAAEsuC,EAAE,OAAME,IAAE1zC,EAAE,QAAS,GAAC2zC,IAAEzuC,EAAE;AAAU,QAAkBjF,MAAf,gBAAsCA,MAApB;AAAsB,cAAO,EAAE,kBAAiBA,GAAG;AAAA,QAAA,KAAI;AAAA,QAAiB,KAAI;AAAA,QAAiB,KAAI;AAAwB,UAAAo9C,EAAG78C,GAAET,IAAE,CAAC;AAAE;AAAA,QAAM,KAAI;AAAwB,UAAAu7C,GAAG,IAAI,GAAE+B,EAAG78C,GAAET,IAAE,CAAC;AAAE;AAAA,QAAM,KAAI;AAAkB,UAAAu7C,GAAG,IAAI,GAAE+B,EAAG78C,GAAE0F,IAAE,EAAE;AAAE;AAAA,QAAM,KAAI;AAAkB,UAAAo1C,GAAG,IAAI,GAAEsG,MAAI,CAACtM,MAAGsM,KAAG,IAAGvE,EAAG78C,GAAE0F,IAAE,EAAE,KAAGm3C,EAAG78C,GAAE4yC,IAAE,MAAM;AAAE;AAAA,QAAM,KAAI;AAAA,QAAkB,KAAI;AAA6B,UAAAiK,EAAG78C,GAAEJ,IAAE,CAAC;AAAE;AAAA,QAAM,KAAI;AAAsB,WAAC,SAAS8yC,GAAE1yC,GAAE;AAAC,mBAAO0yC,MAAI1yC,KAAG44C,EAAGlG,CAAC,KAAGkG,EAAG54C,CAAC,KAAG,CAAC0yC,EAAE,QAAS,KAAE,CAAC1yC,EAAE,QAAO;AAAA,UAAE,GAAGkzC,GAAEC,CAAC,KAAG0J,EAAG78C,GAAEH,IAAE,CAAC;AAAE;AAAA,QAAM,KAAI;AAAA,QAAe,KAAI;AAAc,UAAAg9C,EAAG78C,GAAEH,IAAE,CAAC;AAAE;AAAA,QAAM,KAAI;AAAgB,UAAAg9C,EAAG78C,GAAEmK,IAAE,EAAE;AAAE;AAAA,QAAM,KAAI;AAAqB,UAAA0yC,EAAG78C,GAAE6yC,IAAE,EAAE;AAAE;AAAA,QAAM,KAAI;AAAoB,UAAAgK,EAAG78C,GAAE6yC,IAAE,EAAE;AAAE;AAAA,QAAM,KAAI;AAAA,QAAyB,KAAI;AAAyB,UAAAgK,EAAG78C,GAAEZ,IAAE,EAAE;AAAE;AAAA,QAAM,KAAI;AAAA,QAAuB,KAAI;AAAA,QAAwB,KAAI;AAAwB,UAAAy9C,EAAG78C,GAAEZ,IAAE,EAAE;AAAE;AAAA,QAAM,KAAI;AAAsB,UAAAy9C,EAAG78C,GAAE8yC,IAAE,eAAe;AAAE;AAAA,QAAM,KAAI;AAAa,UAAA+J,EAAG78C,GAAE8yC,IAAE,MAAM;AAAE;AAAA,QAAM,KAAI;AAAe,UAAA+J,EAAG78C,GAAE8yC,IAAE,QAAQ;AAAE;AAAA,QAAM,KAAI;AAAkB,UAAA+J,EAAG78C,GAAE8yC,IAAE,WAAW;AAAE;AAAA,QAAM,KAAI;AAAc,UAAA+J,EAAG78C,GAAE+yC,IAAE,MAAM;AAAE;AAAA,QAAM,KAAI;AAAc,UAAA8J,EAAG78C,GAAEF,IAAE,MAAM;AAAA,MAAC;AAAA,SAAK;AAAC,UAAUmzC,MAAP;AAAA;AAAS,UAAE,eAAc,GAAG4J,EAAG78C,GAAE0F,IAAE,EAAE;AAAA,eAAUutC,MAAI0D;AAAG,UAAE,eAAgB,GAACkG,EAAG78C,GAAE4yC,IAAE,MAAM;AAAA,eAAgBK,KAAN,QAAS,EAAE,cAAa;AAAC,cAAMjzC,IAAE,EAAE,aAAa,QAAQ,YAAY;AAAE,UAAE,kBAAiBgzC,EAAE,cAAchzC,CAAC;AAAA,MAAC;AAAM,QAAMizC,KAAN,QAASyO,GAAG1O,GAAEL,GAAEM,GAAE,EAAE,WAAU,EAAE,KAAG,EAAE,eAAc,GAAG4J,EAAG78C,GAAET,IAAE0zC,CAAC,KAAG0O,KAAG1O;AAAE,MAAA4O,KAAG,EAAE;AAAA,IAAS;AAAA,EAAC,CAAG;AAAA,EAAEnP,GAAE,CAAC,CAAC,CAAC;AAAE,IAAIwO,KAAG,GAAEC,KAAG,MAAKU,KAAG,GAAEF,KAAG;AAAK,MAAMG,KAAG,oBAAI;AAAQ,IAAIC,KAAG,IAAGT,KAAG,IAAGF,KAAG,IAAGG,KAAG,IAAGS,KAAG,CAAC,GAAE,IAAG,GAAE,QAAO,CAAC;AAAE,SAASN,GAAGhP,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE;AAAC,QAAM,IAAEuoC,EAAE,QAAOE,IAAEF,EAAE,OAAM,IAAE,EAAE,QAAO,GAAG,IAAE0G,GAAE,GAAG,IAAEpB,GAAG,EAAE,OAAO,GAAE,IAAS,MAAP,OAAS,EAAE,aAAW,MAAK54C,IAAE,EAAE,KAAI0zC,IAAE,EAAE,gBAAgB1zC,CAAC,GAAE,IAAEK,EAAE;AAAO,SAAOL,MAAIwzC,EAAE,OAAK,CAAC6F,EAAG,CAAC,MAAI,CAACtuC,MAAI,CAACyqC,MAAGiN,KAAG,IAAE,OAAK,EAAE,QAAO,KAAI,IAAE,KAAGtG,GAAG97C,CAAC,MAAI,EAAE,WAASmzC,EAAE,UAAQ,CAAC,EAAE,YAAW,KAAIsH,GAAG,CAAC,KAAG,EAAE,QAAO,KAAI,IAAE,MAAI/vC,KAAG,CAACyqC,OAAW9B,MAAP,QAAU,CAAC,EAAE,YAAW,KAAI,MAAIsH,GAAGtH,CAAC,KAAU,MAAP,QAAiB,MAAP,SAAW,CAAC,EAAE,aAAW,EAAE,mBAAiB,EAAE,cAAY,EAAE,gBAAc,EAAE,iBAAe,EAAE,UAAW,MAAGJ,EAAE,UAAQ,EAAE,SAAQ,MAAKA,EAAE,SAAOoJ,GAAGpJ,GAAE,CAAC;AAAC;AAAC,SAASuP,GAAGvP,GAAE,GAAE;AAAC,SAAcA,MAAP,QAAiBA,EAAE,cAAT,QAAoBA,EAAE,aAAW0C,MAAQ,MAAJ,KAAO,MAAI1C,EAAE,UAAU;AAAM;AAAC,SAASwP,GAAGxP,GAAEjzC,GAAEkzC,GAAE;AAAC,QAAK,EAAC,YAAWxoC,GAAE,cAAazE,GAAE,WAAUktC,GAAE,aAAYrzC,EAAC,IAAEmzC;AAAE,EAAAqP,OAAKA,KAAG,IAAGE,GAAG93C,GAAEzE,CAAC,KAAGu8C,GAAGrP,GAAErzC,CAAC,MAAI84C,GAAG54C,GAAG,MAAI;AAAC,QAAG,CAACkzC;AAAE,aAAO,KAAKkG,GAAG,IAAI;AAAE,QAAG,CAACgB,GAAGp6C,GAAE0K,GAAEyoC,CAAC;AAAE;AAAO,UAAMhzC,IAAE04C;AAAK,QAAGH,EAAGv4C,CAAC,GAAE;AAAC,YAAMI,IAAEJ,EAAE,QAAO+yC,IAAE3yC,EAAE,QAAS;AAAC,UAAGJ,EAAE,YAAW,GAAG;AAAC,QAAU8yC,EAAE,SAAZ,WAAkBA,EAAE,eAAaA,EAAE,cAAY9yC,EAAE,QAAM;AAAI,cAAMuK,IAAE8uC,GAAGx5C,CAAC,EAAE,OAAMiG,IAAEyE,IAAEA,EAAE,YAAU,YAAY,IAAG,GAAG,CAACyoC,GAAErzC,GAAEM,GAAEgzC,GAAEzzC,CAAC,IAAE4iD,IAAGlP,IAAEsI,GAAI,GAACrI,IAAOtzC,EAAE,YAAa,MAApB,MAA2BqzC,EAAE,eAAgB,MAAvB;AAAwB,YAAGptC,IAAEtG,IAAE,OAAKY,EAAE,WAASH,KAAGG,EAAE,QAAM6yC;AAAE,UAAAjzC,EAAE,SAAOgzC,GAAEhzC,EAAE,QAAML;AAAA,iBAAmBS,EAAE,SAAX;AAAgB,UAAAy4C,EAAG9F,CAAC,KAAG6E,EAAG,GAAG,GAAE53C,EAAE,SAAO+yC,EAAE,aAAY/yC,EAAE,QAAM+yC,EAAE,SAAQ;AAAA,iBAAuB3yC,EAAE,SAAd,aAAoB,CAAC+yC,GAAE;AAAC,gBAAML,IAAE1yC,EAAE,QAAS;AAAC,UAAAJ,EAAE,QAAM,IAAG8yC,aAAayP,MAAQzP,EAAE,sBAAN,KAAyB9yC,EAAE,SAAO8yC,EAAE,cAAa,GAAG9yC,EAAE,QAAM8yC,EAAE,kBAAgB9yC,EAAE,SAAO;AAAA,QAAC;AAAA,MAAC,OAAK;AAAC,cAAM8yC,IAAE1yC,EAAE,KAAIP,IAAEG,EAAE,MAAM,KAAI+yC,IAAE/yC,EAAE,SAAU,GAACuK,IAAEwoC,EAAE,QAAOC,IAAEhzC,EAAE,WAAY,GAACC,IAAE+yC,IAAErzC,IAAEmG,GAAEmtC,IAAED,IAAEltC,IAAEnG,GAAEH,IAAEwzC,IAAEnzC,IAAEizC,GAAEI,IAAEF,IAAEF,IAAEjzC;AAAE,YAAIszC,IAAEoD,IAAGr2C,IAAE;AAAG,iBAAQ4yC,IAAE,GAAEA,IAAEvoC,GAAEuoC,KAAI;AAAC,gBAAM1yC,IAAE2yC,EAAED,IAAGjzC,IAAEO,EAAE,mBAAoB;AAAC,cAAGy4C,EAAGz4C,CAAC,KAAOP,MAAJ,KAAO,EAAMizC,MAAJ,KAAO1yC,EAAE,UAAQZ,KAAGS,MAAIJ,KAAGizC,MAAIvoC,IAAE,KAAGnK,EAAE,UAAQ8yC,KAAOD,MAAJ,OAAS/yC,IAAE,IAAGizC,KAAG/yC,EAAE,UAAS,GAAO+yC,MAAJ;AAAO;AAAA,QAAK;AAAC,QAAAnzC,EAAE,SAAOE,IAAEizC,IAAE;AAAA,MAAC;AAAA,IAAC;AAAC,IAAA8J,EAAGp9C,GAAEO,IAAE,MAAM;AAAA,EAAC,CAAC;AAAE;AAAC,SAASyhD,GAAG/O,GAAE;AAAC,MAAG,CAACA,EAAE;AAAgB,WAAO;AAAK,QAAM,IAAEA,EAAE,gBAAe;AAAG,SAAW,EAAE,WAAN,IAAa,OAAK,EAAE;AAAE;AAAC,SAAS8O,GAAG9O,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE;AAAgB,MAAGoI,GAAG,IAAI,GAASr7C,MAAP,QAAgB,KAAN,MAAQ;AAAC,QAAQ,MAAL,IAAO;AAAC,YAAMO,IAAE+6C,GAAGt7C,CAAC,GAAEkzC,IAAEyH,GAAG1H,EAAE,gBAAgBjzC,CAAC,CAAC;AAAE,aAAO,MAAYkzC,MAAP,QAAiBA,EAAE,cAAT,QAAoB8F,EAAGz4C,CAAC,KAAGi4C,GAAGj4C,GAAE2yC,EAAE,WAAU,MAAK,MAAK,EAAE;AAAA,IAAE;AAAC,QAAU,EAAE,EAAE,SAAO,OAAlB;AAAA,GAAqB;AAAC,YAAM3yC,IAAEs4C,GAAE;AAAG,UAAGH,EAAGn4C,CAAC,GAAE;AAAC,cAAMP,IAAEO,EAAE;AAAM,eAAOA,EAAE,OAAO,IAAIP,EAAE,KAAIA,EAAE,QAAOA,EAAE,IAAI,GAAE,KAAKo9C,EAAGnK,GAAEU,IAAE,IAAI;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;AAAC,EAAAuI,GAAG,IAAGjJ,GAAE,CAAC;AAAC;AAAC,SAAS0P,GAAG1P,GAAE;AAAC,MAAI,IAAEA,EAAE;AAAsB,SAAgB,MAAT,WAAa,IAAE,IAAGA,EAAE,wBAAsB,IAAG;AAAC;AAAC,MAAM2P,KAAG,oBAAI;AAAI,SAASC,GAAG5P,GAAE;AAAC,QAAM,IAAEA,EAAE,QAAOjzC,IAAEu4C,GAAS,KAAN,OAAQ,OAAS,EAAE,aAAN,IAAe,EAAE,cAAY,EAAE,cAAc,WAAW;AAAE,MAAUv4C,MAAP;AAAS;AAAO,QAAM,IAAEq6C,GAAGr6C,EAAE,UAAU;AAAE,MAAU,MAAP;AAAS;AAAO,EAAA6hD,OAAKA,KAAG,IAAGjJ,GAAG,GAAG,MAAI;AAAC,UAAMr4C,IAAE47C,MAAKzxC,IAAE1K,EAAE;AAAW,QAAU0K,MAAP;AAAS;AAAO,UAAMzE,IAAEyE,EAAE;AAAS,IAAGzE,MAAIyvC,MAAIzvC,MAAI0vC,MAAUyD,GAAG+I,GAAG5hD,GAAEP,GAAE,GAAEizC,CAAC,CAAC;AAAA,EAAC;AAAK,QAAMvoC,IAAEqxC,GAAG,CAAC,GAAE,IAAErxC,EAAEA,EAAE,SAAO,IAAGyoC,IAAE,EAAE,MAAK,IAAEyP,GAAG,IAAIzP,CAAC,GAAE,IAAE,KAAG;AAAE,QAAI,KAAGsP,GAAGziD,GAAE,GAAE,EAAE,GAAEyiD,GAAGziD,GAAE,GAAE,EAAE,GAAE,MAAI,IAAE4iD,GAAG,IAAIzP,GAAE,CAAC,IAAE,KAAGyP,GAAG,OAAOzP,CAAC;AAAC;AAAC,SAAS2P,GAAG7P,GAAE;AAAC,EAAAA,EAAE,kBAAgB;AAAE;AAAC,SAAS8P,GAAG9P,GAAE;AAAC,SAAWA,EAAE,oBAAP;AAAsB;AAAC,SAAS+P,GAAG/P,GAAE;AAAC,QAAM,IAAEA,EAAE,eAAcjzC,IAAEqiD,GAAG,IAAI,CAAC;AAAE,EAASriD,MAAT,UAAY+3C,EAAG,GAAG;AAAE,QAAM,IAAE/3C,IAAE;AAAE,OAAG,KAAG+3C,EAAG,GAAG,GAAEsK,GAAG,IAAI,GAAE,CAAC,GAAM,MAAJ,KAAO,EAAE,oBAAoB,mBAAkBQ,EAAE;AAAE,QAAMn4C,IAAEyvC,GAAGlH,CAAC;AAAE,EAAAqH,GAAG5vC,CAAC,KAAI,SAASuoC,GAAE;AAAC,QAAUA,EAAE,kBAAT,MAAuB;AAAC,YAAM1yC,IAAEw7C,GAAG9I,CAAC,GAAEjzC,IAAEO,EAAEA,EAAE,SAAO,GAAG;AAAK,MAAAqiD,GAAG,IAAI5iD,CAAC,MAAIizC,KAAG2P,GAAG,OAAO5iD,CAAC;AAAA,IAAC;AAAM,MAAA4iD,GAAG,OAAO3P,EAAE,IAAI;AAAA,EAAC,EAAEvoC,CAAC,GAAEuoC,EAAE,kBAAgB,QAAMvoC,KAAGqtC,EAAG,GAAG;AAAE,QAAM,IAAE4K,GAAG1P,CAAC;AAAE,WAAQA,IAAE,GAAEA,IAAE,EAAE,QAAOA;AAAI,MAAEA,GAAE;AAAG,EAAAA,EAAE,wBAAsB,CAAE;AAAA;AAAC,SAASgQ,GAAGhQ,GAAE,GAAEjzC,GAAE;AAAC,EAAAg7C,GAAI;AAAC,QAAM,IAAE/H,EAAE,OAAMvoC,IAAEuoC,EAAE,UAAS;AAAG,MAAUvoC,MAAP;AAAS;AAAO,QAAM,IAAE,SAASuoC,GAAE;AAAC,UAAM1yC,IAAEs4C,GAAI;AAAC,QAAG,CAACH,EAAGn4C,CAAC,KAAG,CAAC44C,EAAGlG,CAAC;AAAE,aAAO1yC;AAAE,UAAK,EAAC,QAAOP,GAAE,OAAMkzC,EAAC,IAAE3yC,GAAEmK,IAAE1K,EAAE,QAAS,GAACiG,IAAEitC,EAAE;AAAU,WAAOyK,GAAGjzC,GAAEuoC,CAAC,KAAGjzC,EAAE,IAAIizC,EAAE,OAAM,GAAE,SAAS,GAAE0K,GAAG13C,GAAEgtC,CAAC,KAAGC,EAAE,IAAID,EAAE,OAAM,GAAE,SAAS,GAAE1yC;AAAA,EAAC,EAAE0yC,CAAC;AAAE,MAAIE,IAAE;AAAG,MAAGuF,EAAG,CAAC,KAAG,GAAE;AAAC,UAAMn4C,IAAE,EAAE,QAAOP,IAAE,EAAE;AAAM,IAAAO,EAAE,QAAM,MAAI2iD,GAAG3iD,GAAE0yC,GAAEvoC,GAAEuoC,EAAE,sBAAqBA,EAAE,eAAc,CAAE,GAAEE,IAAE,KAAInzC,EAAE,QAAM,MAAIkjD,GAAGljD,GAAEizC,GAAEvoC,GAAEuoC,EAAE,mBAAoB,GAACA,EAAE,eAAgB,CAAA,GAAEE,IAAE;AAAA,EAAG;AAAM,IAAAyO,GAAG,CAAC,KAAG,KAAG3O,EAAE,WAAY,KAAEA,EAAE,eAAgB;AAAC,MAAGyF,EAAG,CAAC,KAAG,KAAG,CAACvF,GAAE;AAAC,UAAM5yC,IAAE0yC,EAAE;AAAuB,IAAAkI,GAAGlI,CAAC,GAAEkQ,GAAG,GAAEz4C,GAAEnK,GAAE,EAAE;AAAA,EAAC;AAAM,IAAA46C,GAAGlI,CAAC;AAAE,EAAAjzC,KAAG89C,GAAGpzC,CAAC,KAAGA,EAAE,WAAU,KAAI,CAACA,EAAE,QAAS,KAAEu4C,GAAGv4C,GAAE,CAAC,GAAE,KAAG6yC,GAAG7yC,CAAC,KAAGA,EAAE,QAAO,KAAIA,EAAE,UAAS;AAAE;AAAC,MAAM04C,GAAE;AAAA,EAAC,OAAO,UAAS;AAAC,IAAArL,EAAG,IAAG,KAAK,IAAI;AAAA,EAAC;AAAA,EAAC,OAAO,MAAM9E,GAAE;AAAC,IAAA8E,EAAG,IAAG,KAAK,IAAI;AAAA,EAAC;AAAA,EAAC,eAAe9E,GAAE;AAAC,SAAK,WAASA,EAAE,UAAS,KAAK,SAAOA,EAAE,QAAO,KAAK,SAAOA,EAAE;AAAA,EAAM;AAAA,EAAC,YAAYA,GAAE;AAAC,SAAK,SAAO,KAAK,YAAY,QAAS,GAAC,KAAK,WAAS,MAAK,KAAK,SAAO,MAAK,KAAK,SAAO,MAAK8H,GAAG,MAAK9H,CAAC;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,WAAO,KAAK;AAAA,EAAM;AAAA,EAAC,WAAU;AAAC,IAAA8E,EAAG,KAAI,KAAK,YAAY,IAAI;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,QAAI9E,IAAE,KAAK;AAAM,WAAYA,MAAP,QAAU;AAAC,UAAYA,MAAT;AAAW,eAAM;AAAG,YAAM1yC,IAAE+6C,GAAGrI,CAAC;AAAE,UAAU1yC,MAAP;AAAS;AAAM,MAAA0yC,IAAE1yC,EAAE;AAAA,IAAQ;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,WAAW0yC,GAAE;AAAC,UAAM1yC,IAAE0yC,KAAG4F,GAAI;AAAC,QAASt4C,KAAN;AAAQ,aAAM;AAAG,UAAMP,IAAEO,EAAE,WAAW,KAAM,CAAA0yC,MAAGA,EAAE,UAAQ,KAAK,KAAO;AAAC,QAAG+F,EAAG,IAAI;AAAE,aAAOh5C;AAAE,QAAG04C,EAAGn4C,CAAC,KAAeA,EAAE,OAAO,SAArB,aAAuCA,EAAE,MAAM,SAApB,WAAyB;AAAC,UAAGA,EAAE;AAAc,eAAM;AAAG,YAAM0yC,IAAE,KAAK,UAAW;AAAC,UAAG8F,GAAG,IAAI,KAAG,KAAK,SAAQ,KAAI9F,GAAE;AAAC,cAAMjzC,IAAEO,EAAE,WAAY,IAACA,EAAE,QAAMA,EAAE,QAAO2yC,IAAElzC,EAAE,QAAS;AAAC,YAAGA,EAAE,WAASkzC,EAAE,gBAAiB,KAAEA,EAAE,GAAGD,CAAC,KAAGC,EAAE,sBAAsB,GAAG,IAAI;AAAE,iBAAM;AAAA,MAAE;AAAA,IAAC;AAAC,WAAOlzC;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAO,KAAK;AAAA,EAAK;AAAA,EAAC,uBAAsB;AAAC,UAAMizC,IAAE,KAAK,UAAW;AAAC,QAAUA,MAAP;AAAS,aAAM;AAAG,QAAI1yC,IAAE0yC,EAAE,cAAe,GAACjzC,IAAE;AAAE,WAAYO,MAAP,QAAU;AAAC,UAAG,KAAK,GAAGA,CAAC;AAAE,eAAOP;AAAE,MAAAA,KAAIO,IAAEA,EAAE,eAAgB;AAAA,IAAA;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,YAAW;AAAC,UAAM0yC,IAAE,KAAK,UAAW,EAAC;AAAS,WAAcA,MAAP,OAAS,OAAKqI,GAAGrI,CAAC;AAAA,EAAC;AAAA,EAAC,mBAAkB;AAAC,UAAMA,IAAE,KAAK,UAAS;AAAG,WAAcA,MAAP,QAAU8E,EAAG,IAAG,KAAK,KAAK,GAAE9E;AAAA,EAAC;AAAA,EAAC,qBAAoB;AAAC,QAAIA,IAAE;AAAK,WAAYA,MAAP,QAAU;AAAC,YAAM1yC,IAAE0yC,EAAE;AAAY,UAAG6K,GAAGv9C,CAAC;AAAE,eAAO44C,EAAGlG,CAAC,KAAGA,MAAI,QAAM8F,GAAG9F,CAAC,KAAG8E,EAAG,GAAG,GAAE9E;AAAE,MAAAA,IAAE1yC;AAAA,IAAC;AAAC,WAAO;AAAA,EAAI;AAAA,EAAC,4BAA2B;AAAC,UAAM0yC,IAAE,KAAK;AAAqB,WAAcA,MAAP,QAAU8E,EAAG,IAAG,KAAK,KAAK,GAAE9E;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,UAAMA,IAAE,CAAA;AAAG,QAAI1yC,IAAE,KAAK,UAAS;AAAG,WAAYA,MAAP;AAAU,MAAA0yC,EAAE,KAAK1yC,CAAC,GAAEA,IAAEA,EAAE,UAAW;AAAC,WAAO0yC;AAAA,EAAC;AAAA,EAAC,gBAAe;AAAC,UAAMA,IAAE,CAAE;AAAC,QAAI1yC,IAAE,KAAK,UAAS;AAAG,WAAYA,MAAP;AAAU,MAAA0yC,EAAE,KAAK1yC,EAAE,KAAK,GAAEA,IAAEA,EAAE;AAAY,WAAO0yC;AAAA,EAAC;AAAA,EAAC,qBAAoB;AAAC,UAAMA,IAAE,KAAK,UAAS,EAAG;AAAO,WAAcA,MAAP,OAAS,OAAKqI,GAAGrI,CAAC;AAAA,EAAC;AAAA,EAAC,sBAAqB;AAAC,UAAMA,IAAE,CAAE,GAAC1yC,IAAE,KAAK,UAAW;AAAC,QAAUA,MAAP;AAAS,aAAO0yC;AAAE,QAAIjzC,IAAEO,EAAE,cAAe;AAAC,WAAYP,MAAP,QAAU,CAACA,EAAE,GAAG,IAAI;AAAG,MAAAizC,EAAE,KAAKjzC,CAAC,GAAEA,IAAEA,EAAE;AAAiB,WAAOizC;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,UAAMA,IAAE,KAAK,UAAW,EAAC;AAAO,WAAcA,MAAP,OAAS,OAAKqI,GAAGrI,CAAC;AAAA,EAAC;AAAA,EAAC,kBAAiB;AAAC,UAAMA,IAAE;AAAG,QAAI1yC,IAAE,KAAK;AAAiB,WAAYA,MAAP;AAAU,MAAA0yC,EAAE,KAAK1yC,CAAC,GAAEA,IAAEA,EAAE,eAAgB;AAAC,WAAO0yC;AAAA,EAAC;AAAA,EAAC,kBAAkBA,GAAE;AAAC,UAAM1yC,IAAE,KAAK,WAAU,GAAGP,IAAEizC,EAAE,WAAU;AAAG,IAAAkG,EAAG,IAAI,KAAG54C,EAAE,QAAQ,IAAI,GAAE44C,EAAGlG,CAAC,KAAGjzC,EAAE,QAAQizC,CAAC;AAAE,UAAMC,IAAE3yC,EAAE,QAAOmK,IAAE1K,EAAE;AAAO,QAAOkzC,MAAJ,KAAWxoC,MAAJ,KAAOnK,EAAE2yC,IAAE,OAAKlzC,EAAE0K,IAAE;AAAG,aAAO;AAAK,UAAMzE,IAAE,IAAI,IAAIjG,CAAC;AAAE,aAAQizC,IAAE,GAAEA,IAAEC,GAAED,KAAI;AAAC,YAAMjzC,IAAEO,EAAE0yC;AAAG,UAAGhtC,EAAE,IAAIjG,CAAC;AAAE,eAAOA;AAAA,IAAC;AAAC,WAAO;AAAA,EAAI;AAAA,EAAC,GAAGizC,GAAE;AAAC,WAAaA,KAAN,QAAS,KAAK,UAAQA,EAAE;AAAA,EAAK;AAAA,EAAC,SAASA,GAAE;AAAC,QAAG,SAAOA;AAAE,aAAM;AAAG,QAAGA,EAAE,WAAW,IAAI;AAAE,aAAM;AAAG,QAAG,KAAK,WAAWA,CAAC;AAAE,aAAM;AAAG,UAAM1yC,IAAE,KAAK,kBAAkB0yC,CAAC;AAAE,QAAIjzC,IAAE,GAAEkzC,IAAE,GAAExoC,IAAE;AAAK,eAAO;AAAC,YAAMuoC,IAAEvoC,EAAE,iBAAkB;AAAC,UAAGuoC,MAAI1yC,GAAE;AAAC,QAAAP,IAAE0K,EAAE;AAAuB;AAAA,MAAK;AAAC,MAAAA,IAAEuoC;AAAA,IAAC;AAAC,SAAIvoC,IAAEuoC,OAAI;AAAC,YAAMA,IAAEvoC,EAAE;AAAmB,UAAGuoC,MAAI1yC,GAAE;AAAC,QAAA2yC,IAAExoC,EAAE;AAAuB;AAAA,MAAK;AAAC,MAAAA,IAAEuoC;AAAA,IAAC;AAAC,WAAOjzC,IAAEkzC;AAAA,EAAC;AAAA,EAAC,WAAWD,GAAE;AAAC,UAAM1yC,IAAE,KAAK;AAAM,QAAGA,MAAI0yC,EAAE;AAAM,aAAM;AAAG,QAAIjzC,IAAEizC;AAAE,WAAYjzC,MAAP,QAAU;AAAC,UAAGA,EAAE,UAAQO;AAAE,eAAM;AAAG,MAAAP,IAAEA,EAAE,UAAS;AAAA,IAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,gBAAgBizC,GAAE;AAAC,UAAM1yC,IAAE,KAAK,SAAS0yC,CAAC,GAAEjzC,IAAE,CAAA,GAAGkzC,IAAE,oBAAI;AAAI,QAAIxoC,IAAE;AAAK,WAAYA,MAAP,QAAU;AAAC,YAAMzE,IAAEyE,EAAE;AAAM,UAAGwoC,EAAE,IAAIjtC,CAAC,MAAIitC,EAAE,IAAIjtC,CAAC,GAAEjG,EAAE,KAAK0K,CAAC,IAAGA,MAAIuoC;AAAE;AAAM,YAAME,IAAEgG,EAAGzuC,CAAC,IAAEnK,IAAEmK,EAAE,cAAa,IAAGA,EAAE,aAAY,IAAG;AAAK,UAAUyoC,MAAP,MAAS;AAAC,QAAAzoC,IAAEyoC;AAAE;AAAA,MAAQ;AAAC,YAAMrzC,IAAES,IAAEmK,EAAE,eAAgB,IAACA,EAAE,mBAAoB;AAAC,UAAU5K,MAAP,MAAS;AAAC,QAAA4K,IAAE5K;AAAE;AAAA,MAAQ;AAAC,YAAMK,IAAEuK,EAAE;AAAmB,UAAGwoC,EAAE,IAAI/yC,EAAE,KAAK,KAAGH,EAAE,KAAKG,CAAC,GAAEA,MAAI8yC;AAAE;AAAM,UAAI7yC,IAAE,MAAKgzC,IAAEjzC;AAAE,SAAE;AAAC,YAAUizC,MAAP,QAAU2E,EAAG,EAAE,GAAE33C,IAAEG,IAAE6yC,EAAE,eAAc,IAAGA,EAAE,mBAAkB,GAAGA,IAAEA,EAAE,UAAS,GAAUA,MAAP;AAAS;AAAM,QAAOhzC,MAAP,QAAU8yC,EAAE,IAAIE,EAAE,KAAK,KAAGpzC,EAAE,KAAKozC,CAAC;AAAA,MAAC,SAAchzC,MAAP;AAAU,MAAAsK,IAAEtK;AAAA,IAAC;AAAC,WAAOG,KAAGP,EAAE,WAAUA;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,UAAMizC,IAAE0G,GAAI,EAAC;AAAa,WAAc1G,MAAP,QAAUA,EAAE,IAAI,KAAK,KAAK;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,UAAMA,IAAEqI,GAAG,KAAK,KAAK;AAAE,WAAcrI,MAAP,QAAU8E,EAAG,GAAG,GAAE9E;AAAA,EAAC;AAAA,EAAC,cAAa;AAAC,IAAA+H,GAAI;AAAC,UAAM/H,IAAEiI,GAAE,GAAG36C,IAAEo5C,GAAE,GAAG35C,IAAEizC,EAAE,UAASC,IAAE,KAAK,OAAMxoC,IAAE,KAAK,UAAW,GAACzE,IAAE1F,EAAE,iBAAgB4yC,IAAE0F,GAAE;AAAG,QAAU1F,MAAP,QAAUA,EAAE,eAAe,IAAI,GAAEltC,EAAE,IAAIitC,CAAC;AAAE,aAAOkI,GAAG1wC,CAAC,GAAEA;AAAE,UAAM5K,IAAEi/C,GAAGr0C,CAAC;AAAE,WAAOzE,EAAE,IAAIitC,CAAC,GAAEkI,GAAGt7C,CAAC,GAAEE,EAAE,IAAIkzC,GAAEpzC,CAAC,GAAEA;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,qBAAoB;AAAC,WAAO,KAAK,iBAAiB;AAAA,EAAM;AAAA,EAAC,UAAUmzC,GAAE1yC,GAAE;AAAC,IAAAw3C,EAAG,EAAE;AAAA,EAAC;AAAA,EAAC,UAAU9E,GAAE1yC,GAAEP,GAAE;AAAC,IAAA+3C,EAAG,EAAE;AAAA,EAAC;AAAA,EAAC,UAAU9E,GAAE;AAAC,WAAM,EAAC,SAAQ,KAAK,UAAUA,EAAE,SAAQA,CAAC,EAAC;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,IAAA8E,EAAG,EAAE;AAAA,EAAC;AAAA,EAAC,OAAO,WAAW9E,GAAE;AAAC,IAAA8E,EAAG,IAAG,KAAK,IAAI;AAAA,EAAC;AAAA,EAAC,OAAO,YAAW;AAAC,WAAO;AAAA,EAAI;AAAA,EAAC,OAAO9E,GAAE;AAAC,IAAAgQ,GAAG,MAAK,IAAGhQ,CAAC;AAAA,EAAC;AAAA,EAAC,QAAQA,GAAE1yC,GAAE;AAAC,IAAAy6C,GAAI;AAAC,QAAIh7C,IAAE64C,GAAE;AAAG,IAAO74C,MAAP,SAAWA,IAAEA,EAAE,UAASg+C,GAAG,MAAK/K,CAAC;AAAE,UAAMC,IAAE,KAAK,aAAYxoC,IAAE,KAAK,OAAMzE,IAAEgtC,EAAE,OAAME,IAAEF,EAAE,YAAW,GAAGnzC,IAAE,KAAK,iBAAkB,EAAC,YAAa,GAACK,IAAEL,EAAE;AAAO,IAAAq7C,GAAGhI,CAAC;AAAE,UAAM/yC,IAAE8yC,EAAE,mBAAkB,GAAGE,IAAEF,EAAE,eAAc,GAAG,IAAEA,EAAE,QAAOG,IAAEH,EAAE,QAAOI,IAAEJ,EAAE;AAA2I,QAA/H+P,GAAG/P,GAAE,IAAG,EAAE,GAAS9yC,MAAP,OAASN,EAAE,UAAQmG,IAAO7F,EAAE,cAAc,SAAO6F,GAAKktC,EAAE,SAAO,GAASC,MAAP,OAAStzC,EAAE,SAAOmG,IAAOmtC,EAAE,YAAa,EAAC,SAAOntC,GAAKktC,EAAE,SAAOE,GAAEF,EAAE,WAASG,GAAExzC,EAAE,SAAOK,GAAEI,MAAI44C,EAAG,IAAI,KAAGA,EAAGhG,CAAC,KAAG4E,EAAG,GAAG,GAAE,KAAK,YAAW,EAAG,QAAS,CAAA9E,MAAG;AAAC,MAAAE,EAAE,OAAOF,CAAC;AAAA,IAAC,CAAG,IAAEyF,EAAG14C,CAAC,GAAE;AAAC,MAAAo5C,GAAGp5C,CAAC;AAAE,YAAMizC,IAAEjzC,EAAE,QAAOO,IAAEP,EAAE;AAAM,MAAAizC,EAAE,QAAMvoC,KAAG24C,GAAGpQ,GAAEE,CAAC,GAAE5yC,EAAE,QAAMmK,KAAG24C,GAAG9iD,GAAE4yC,CAAC;AAAA,IAAC;AAAC,WAAOoI,SAAO7wC,KAAG2wC,GAAGp1C,CAAC,GAAEktC;AAAA,EAAC;AAAA,EAAC,YAAYF,GAAE1yC,IAAE,IAAG;AAAC,IAAAy6C,GAAE,GAAGgD,GAAG,MAAK/K,CAAC;AAAE,UAAMjzC,IAAE,KAAK,YAAW,GAAGkzC,IAAED,EAAE,YAAW,GAAGvoC,IAAEwoC,EAAE,UAAW,GAACjtC,IAAE4yC,GAAI;AAAC,QAAI1F,IAAE,IAAGrzC,IAAE;AAAG,QAAU4K,MAAP,MAAS;AAAC,YAAMnK,IAAE0yC,EAAE;AAAuB,UAAGkI,GAAGjI,CAAC,GAAEwF,EAAGzyC,CAAC,GAAE;AAAC,cAAMgtC,IAAEvoC,EAAE,OAAM1K,IAAEiG,EAAE,QAAOitC,IAAEjtC,EAAE;AAAM,QAAAktC,IAAcnzC,EAAE,SAAd,aAAoBA,EAAE,QAAMizC,KAAGjzC,EAAE,WAASO,IAAE,GAAET,IAAcozC,EAAE,SAAd,aAAoBA,EAAE,QAAMD,KAAGC,EAAE,WAAS3yC,IAAE;AAAA,MAAC;AAAA,IAAC;AAAC,UAAMJ,IAAE,KAAK,eAAc,GAAGC,IAAE,KAAK,iBAAgB,EAAG,YAAW,GAAGgzC,IAAEF,EAAE,OAAM,IAAElzC,EAAE;AAA4D,QAA3CG,MAAP,OAASC,EAAE,SAAOgzC,IAAOjzC,EAAE,YAAW,EAAG,SAAOizC,GAAKhzC,EAAE,UAASJ,EAAE,SAAOozC,GAAEF,EAAE,SAAO,GAAEA,EAAE,SAAOlzC,EAAE,OAAMkzC,EAAE,WAASlzC,EAAE,UAASO,KAAGm4C,EAAGzyC,CAAC,GAAE;AAAC,YAAMgtC,IAAE,KAAK;AAAuB,MAAAkQ,GAAGl9C,GAAE7F,GAAE6yC,IAAE,CAAC;AAAE,YAAM1yC,IAAEH,EAAE;AAAM,MAAA+yC,KAAGltC,EAAE,OAAO,IAAI1F,GAAE0yC,IAAE,GAAE,SAAS,GAAEnzC,KAAGmG,EAAE,MAAM,IAAI1F,GAAE0yC,IAAE,GAAE,SAAS;AAAA,IAAC;AAAC,WAAOA;AAAA,EAAC;AAAA,EAAC,aAAaA,GAAE1yC,IAAE,IAAG;AAAC,IAAAy6C,GAAI,GAACgD,GAAG,MAAK/K,CAAC;AAAE,UAAMjzC,IAAE,KAAK,YAAa,GAACkzC,IAAED,EAAE,YAAa,GAACvoC,IAAEwoC,EAAE;AAAM,IAAAiI,GAAGjI,CAAC;AAAE,UAAMjtC,IAAE,KAAK,mBAAkB,GAAGktC,IAAE,KAAK,iBAAgB,EAAG,YAAW,GAAGrzC,IAAEE,EAAE,QAAOG,IAAE,KAAK;AAAuB,IAAU8F,MAAP,OAASktC,EAAE,UAAQzoC,IAAOzE,EAAE,YAAW,EAAG,SAAOyE,GAAEyoC,EAAE,UAASnzC,EAAE,SAAO0K,GAAEwoC,EAAE,SAAOpzC,GAAEozC,EAAE,SAAOlzC,EAAE,OAAMkzC,EAAE,WAASlzC,EAAE;AAAS,UAAMI,IAAEy4C,GAAE;AAAG,WAAGt4C,KAAGm4C,EAAGt4C,CAAC,KAAG+iD,GAAG/iD,GAAE,KAAK,iBAAgB,GAAGD,CAAC,GAAS8yC;AAAA,EAAC;AAAA,EAAC,mBAAkB;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,0BAAyB;AAAC,WAAOqQ,GAAI;AAAA,EAAA;AAAA,EAAC,cAAa;AAAC,WAAO,KAAK;EAAgB;AAAA,EAAC,YAAW;AAAC,WAAO,KAAK,WAAW,GAAE,CAAC;AAAA,EAAC;AAAA,EAAC,eAAerQ,GAAE1yC,GAAE;AAAC,IAAAy6C,GAAI;AAAC,UAAMh7C,IAAE,KAAK,mBAAoB,GAACkzC,IAAE,KAAK,iBAAkB;AAAC,QAAUlzC,MAAP;AAAS,aAAOkzC,EAAE,OAAO,GAAE,CAAC;AAAE,QAAGiG,EAAGn5C,CAAC;AAAE,aAAOA,EAAE,OAAM;AAAG,QAAG,CAACg5C,EAAGh5C,CAAC,GAAE;AAAC,YAAMizC,IAAEjzC,EAAE,yBAAuB;AAAE,aAAOkzC,EAAE,OAAOD,GAAEA,CAAC;AAAA,IAAC;AAAC,WAAOjzC,EAAE,OAAOizC,GAAE1yC,CAAC;AAAA,EAAC;AAAA,EAAC,WAAW0yC,GAAE1yC,GAAE;AAAC,IAAAy6C,GAAE;AAAG,UAAMh7C,IAAE,KAAK,kBAAiBkzC,IAAE,KAAK,iBAAgB;AAAG,QAAUlzC,MAAP;AAAS,aAAOkzC,EAAE;AAAS,QAAGiG,EAAGn5C,CAAC;AAAE,aAAOA,EAAE,OAAO,GAAE,CAAC;AAAE,QAAG,CAACg5C,EAAGh5C,CAAC,GAAE;AAAC,YAAMizC,IAAEjzC,EAAE,qBAAoB;AAAG,aAAOkzC,EAAE,OAAOD,GAAEA,CAAC;AAAA,IAAC;AAAC,WAAOjzC,EAAE,OAAOizC,GAAE1yC,CAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,SAAK,YAAW;AAAA,EAAE;AAAC;AAAC,MAAMgjD,WAAWH,GAAE;AAAA,EAAC,OAAO,UAAS;AAAC,WAAM;AAAA,EAAW;AAAA,EAAC,OAAO,MAAMnQ,GAAE;AAAC,WAAO,IAAIsQ,GAAGtQ,EAAE,KAAK;AAAA,EAAC;AAAA,EAAC,YAAYA,GAAE;AAAC,UAAMA,CAAC;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,WAAM;AAAA;AAAA,EAAI;AAAA,EAAC,YAAW;AAAC,WAAO,SAAS,cAAc,IAAI;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,OAAO,YAAW;AAAC,WAAM,EAAC,IAAG,CAAAA,MAAG,SAAS,GAAE;AAAC,YAAM1yC,IAAE,EAAE;AAAc,UAAUA,MAAP,QAAUk+C,GAAGl+C,CAAC,GAAE;AAAC,cAAMP,IAAEO,EAAE;AAAW,YAAGP,MAAI,KAAGA,EAAE,gBAAc,KAAGwjD,GAAGxjD,CAAC,GAAE;AAAC,gBAAMA,IAAEO,EAAE;AAAU,cAAGP,MAAI,KAAGA,EAAE,oBAAkB,KAAGwjD,GAAGxjD,CAAC;AAAE,mBAAM;AAAA,QAAE;AAAA,MAAC;AAAC,aAAM;AAAA,IAAE,EAAEizC,CAAC,KAAG,SAAS,GAAE;AAAC,YAAM1yC,IAAE,EAAE;AAAc,UAAUA,MAAP,QAAUk+C,GAAGl+C,CAAC,GAAE;AAAC,cAAMP,IAAEO,EAAE;AAAW,YAAGP,MAAI,KAAGA,EAAE,gBAAc,KAAGwjD,GAAGxjD,CAAC;AAAE,iBAAM;AAAG,cAAMkzC,IAAE3yC,EAAE;AAAU,YAAG2yC,MAAI,KAAGA,EAAE,oBAAkB,KAAGsQ,GAAGtQ,CAAC;AAAE,iBAAM;AAAA,MAAE;AAAC,aAAM;AAAA,IAAE,EAAED,CAAC,IAAE,OAAK,EAAC,YAAWwQ,IAAG,UAAS,EAAC,EAAC;AAAA,EAAC;AAAA,EAAC,OAAO,WAAWxQ,GAAE;AAAC,WAAOyQ,GAAI;AAAA,EAAA;AAAA,EAAC,aAAY;AAAC,WAAM,EAAC,MAAK,aAAY,SAAQ,EAAC;AAAA,EAAC;AAAC;AAAC,SAASD,GAAGxQ,GAAE;AAAC,SAAM,EAAC,MAAKyQ,KAAI;AAAC;AAAC,SAASA,KAAI;AAAC,SAAOn+C,GAAG,IAAIg+C,IAAE;AAAC;AAAC,SAASzI,GAAG7H,GAAE;AAAC,SAAOA,aAAasQ;AAAE;AAAC,SAASC,GAAGvQ,GAAE;AAAC,SAAOA,EAAE,aAAW0C,MAAI,kBAAkB,KAAK1C,EAAE,eAAa,EAAE;AAAC;AAAC,SAAS0Q,GAAG1Q,GAAE,GAAE;AAAC,SAAO,KAAG,IAAE,SAAO,IAAEwD,KAAG,SAAO,KAAG,IAAE,QAAM,KAAG,IAAE,QAAM;AAAI;AAAC,SAASmN,GAAG3Q,GAAE,GAAE;AAAC,SAAO,IAAE,IAAE,WAAS,IAAE,IAAE,OAAK;AAAM;AAAC,SAAS4Q,GAAG5Q,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE;AAAC,QAAM,IAAE,EAAE;AAAU,MAAIyoC,IAAE2J,GAAGpyC,GAAE,MAAM;AAAE,EAASyoC,MAAT,UAAY,EAAE,IAAI,GAAGA,CAAC,GAAEA,IAAE2J,GAAGpyC,GAAE,wBAAwB;AAAE,MAAI,IAAE;AAAG,QAAM,IAAE,IAAE2rC,MAAI,IAAED;AAAG,EAASjD,MAAT,WAAanzC,IAAEq2C,MAAIr2C,IAAEo2C,MAAI,IAAE,IAAG,KAAG,EAAE,IAAI,GAAGjD,CAAC,KAAG,KAAG,EAAE,OAAO,GAAGA,CAAC;AAAG,aAAUF,KAAKuE,IAAG;AAAC,UAAMtE,IAAEsE,GAAGvE;AAAG,QAAGE,IAAE2J,GAAGpyC,GAAEuoC,CAAC,GAAWE,MAAT;AAAW,UAAGnzC,IAAEkzC,GAAE;AAAC,YAAG,MAAkBD,MAAd,eAAmCA,MAAlB,kBAAqB;AAAC,cAAEC,KAAG,EAAE,OAAO,GAAGC,CAAC;AAAE;AAAA,QAAQ;AAAC,YAAED,MAAI,CAAC,KAAiBD,MAAd,gBAAoCA,MAAlB,mBAAqB,EAAE,IAAI,GAAGE,CAAC;AAAA,MAAC;AAAM,YAAED,KAAG,EAAE,OAAO,GAAGC,CAAC;AAAA,EAAC;AAAC;AAAC,SAAS2Q,GAAG7Q,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAE,EAAE,YAAW0K,IAAE1K,EAAE,YAAW,GAAG,IAAEizC,KAAGvoC,IAAEusC,KAAG;AAAI,MAAS,KAAN;AAAQ,MAAE,cAAY;AAAA,OAAM;AAAC,UAAMhE,IAAE,EAAE;AAAU,QAAGA,MAAI;AAAE,UAAGvoC,KAAGwqC,IAAE;AAAC,cAAK,CAAC30C,GAAEP,GAAE0K,CAAC,IAAE,SAASuoC,GAAE1yC,GAAE;AAAC,gBAAMP,IAAEizC,EAAE,QAAOC,IAAE3yC,EAAE;AAAO,cAAImK,IAAE,GAAEzE,IAAE;AAAE,iBAAKyE,IAAE1K,KAAG0K,IAAEwoC,KAAGD,EAAEvoC,OAAKnK,EAAEmK;AAAI,YAAAA;AAAI,iBAAKzE,IAAEyE,IAAE1K,KAAGiG,IAAEyE,IAAEwoC,KAAGD,EAAEjzC,IAAEiG,IAAE,OAAK1F,EAAE2yC,IAAEjtC,IAAE;AAAI,YAAAA;AAAI,iBAAM,CAACyE,GAAE1K,IAAE0K,IAAEzE,GAAE1F,EAAE,MAAMmK,GAAEwoC,IAAEjtC,CAAC,CAAC;AAAA,QAAC,EAAEgtC,GAAE,CAAC;AAAE,QAAIjzC,MAAJ,KAAO,EAAE,WAAWO,GAAEP,CAAC,GAAE,EAAE,WAAWO,GAAEmK,CAAC;AAAA,MAAC;AAAM,UAAE,YAAU;AAAA,EAAC;AAAC;AAAC,SAASq5C,GAAG9Q,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE,GAAE;AAAC,EAAAo5C,GAAGp5C,GAAEuoC,GAAE,CAAC;AAAE,QAAME,IAAE,EAAE,MAAM;AAAK,EAASA,MAAT,UAAY0Q,GAAG,GAAE,GAAE,GAAE5Q,GAAEE,CAAC;AAAC;AAAC,SAAS6Q,GAAG/Q,GAAE,GAAE;AAAC,QAAMjzC,IAAE,SAAS,cAAc,CAAC;AAAE,SAAOA,EAAE,YAAYizC,CAAC,GAAEjzC;AAAC;AAAC,MAAMikD,WAAWb,GAAE;AAAA,EAAC,OAAO,UAAS;AAAC,WAAM;AAAA,EAAM;AAAA,EAAC,OAAO,MAAMnQ,GAAE;AAAC,WAAO,IAAIgR,GAAGhR,EAAE,QAAOA,EAAE,KAAK;AAAA,EAAC;AAAA,EAAC,eAAeA,GAAE;AAAC,UAAM,eAAeA,CAAC,GAAE,KAAK,WAASA,EAAE,UAAS,KAAK,UAAQA,EAAE,SAAQ,KAAK,SAAOA,EAAE,QAAO,KAAK,WAASA,EAAE;AAAA,EAAQ;AAAA,EAAC,YAAYA,GAAE1yC,GAAE;AAAC,UAAMA,CAAC,GAAE,KAAK,SAAO0yC,GAAE,KAAK,WAAS,GAAE,KAAK,UAAQ,IAAG,KAAK,SAAO,GAAE,KAAK,WAAS;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,WAAO,KAAK,UAAW,EAAC;AAAA,EAAQ;AAAA,EAAC,YAAW;AAAC,WAAO,KAAK,UAAS,EAAG;AAAA,EAAQ;AAAA,EAAC,UAAS;AAAC,UAAMA,IAAE,KAAK,UAAS;AAAG,WAAO4E,GAAG5E,EAAE;AAAA,EAAO;AAAA,EAAC,WAAU;AAAC,WAAO,KAAK,UAAW,EAAC;AAAA,EAAO;AAAA,EAAC,UAAS;AAAC,WAAW,KAAK,UAAW,EAAC,WAArB;AAAA,EAA2B;AAAA,EAAC,cAAa;AAAC,WAAO,KAAK,UAAQsI,GAAI;AAAA,EAAA;AAAA,EAAC,cAAa;AAAC,WAAW,KAAK,UAAS,EAAG,WAArB;AAAA,EAA2B;AAAA,EAAC,kBAAiB;AAAC,WAAM,CAAC,EAAE,IAAE,KAAK,UAAS,EAAG;AAAA,EAAS;AAAA,EAAC,gBAAe;AAAC,WAAM,CAAC,EAAE,IAAE,KAAK,UAAW,EAAC;AAAA,EAAS;AAAA,EAAC,UAAUtI,GAAE;AAAC,UAAM1yC,IAAEi3C,GAAGvE;AAAG,WAAM,CAAC,EAAE,KAAK,UAAS,IAAG1yC;AAAA,EAAE;AAAA,EAAC,eAAc;AAAC,WAAe,KAAK,WAAd,UAA0B,KAAK,WAAT;AAAA,EAAe;AAAA,EAAC,iBAAgB;AAAC,WAAO,KAAK,UAAS,EAAG;AAAA,EAAM;AAAA,EAAC,eAAe0yC,GAAE1yC,GAAE;AAAC,WAAOq6C,GAAG,KAAK,UAAW,EAAC,UAAS3H,GAAE1yC,CAAC;AAAA,EAAC;AAAA,EAAC,gBAAe;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,UAAU0yC,GAAE1yC,GAAE;AAAC,UAAMP,IAAE,KAAK,UAASkzC,IAAEyQ,GAAG,GAAE3jD,CAAC,GAAE0K,IAAEk5C,GAAG,GAAE5jD,CAAC,GAAEiG,IAASitC,MAAP,OAASxoC,IAAEwoC,GAAEC,IAAE,SAAS,cAAcltC,CAAC;AAAE,QAAInG,IAAEqzC;AAAE,SAAK,UAAU,MAAM,KAAGA,EAAE,aAAa,cAAa,OAAO,GAASD,MAAP,SAAWpzC,IAAE,SAAS,cAAc4K,CAAC,GAAEyoC,EAAE,YAAYrzC,CAAC,IAAGikD,GAAGjkD,GAAE,MAAK,GAAEE,GAAE,KAAK,QAAOizC,CAAC;AAAE,UAAM9yC,IAAE,KAAK;AAAQ,WAAWA,MAAL,OAASgzC,EAAE,MAAM,UAAQhzC,IAAGgzC;AAAA,EAAC;AAAA,EAAC,UAAUF,GAAE1yC,GAAEP,GAAE;AAAC,UAAMkzC,IAAE,KAAK,QAAOxoC,IAAEuoC,EAAE,UAAShtC,IAAE,KAAK,UAASktC,IAAEwQ,GAAG,GAAEj5C,CAAC,GAAE5K,IAAE6jD,GAAG,GAAE19C,CAAC,GAAE9F,IAAEyjD,GAAG,GAAEl5C,CAAC,GAAEtK,IAAEwjD,GAAG,GAAE39C,CAAC;AAAE,SAAWktC,MAAP,OAAShzC,IAAEgzC,QAAarzC,MAAP,OAASM,IAAEN;AAAG,aAAM;AAAG,QAAGqzC,MAAIrzC,KAAGK,MAAIC,GAAE;AAAC,YAAM6yC,IAAE1yC,EAAE;AAAW,MAAM0yC,KAAN,QAAS8E,EAAG,EAAE;AAAE,YAAMrtC,IAAE,SAAS,cAActK,CAAC;AAAE,aAAO2jD,GAAGr5C,GAAE,MAAK,GAAEzE,GAAEitC,GAAElzC,CAAC,GAAEO,EAAE,aAAamK,GAAEuoC,CAAC,GAAE;AAAA,IAAE;AAAC,QAAIG,IAAE7yC;AAAE,IAAOT,MAAP,QAAiBqzC,MAAP,SAAWC,IAAE7yC,EAAE,YAAiB6yC,KAAN,QAAS2E,EAAG,EAAE,IAAG+L,GAAG5Q,GAAEE,GAAE,IAAI;AAAE,UAAM,IAAEpzC,EAAE,MAAM;AAAK,IAAS,MAAT,UAAY0K,MAAIzE,KAAG49C,GAAG,GAAEn5C,GAAEzE,GAAEmtC,GAAE,CAAC;AAAE,UAAMC,IAAEJ,EAAE,SAAQK,IAAE,KAAK;AAAQ,WAAOD,MAAIC,MAAI/yC,EAAE,MAAM,UAAQ+yC,IAAG;AAAA,EAAE;AAAA,EAAC,OAAO,YAAW;AAAC,WAAM,EAAC,SAAQ,OAAK,EAAC,YAAW4Q,IAAG,UAAS,EAAC,IAAG,GAAE,OAAK,EAAC,YAAWC,IAAG,UAAS,EAAC,IAAG,MAAK,OAAK,EAAC,YAAWC,IAAG,UAAS,EAAC,IAAG,IAAG,OAAK,EAAC,YAAWA,IAAG,UAAS,EAAC,IAAG,GAAE,OAAK,EAAC,YAAWA,IAAG,UAAS,EAAC,IAAG,GAAE,OAAK,EAAC,YAAWA,IAAG,UAAS,EAAC,IAAG,MAAK,OAAK,EAAC,YAAWC,IAAG,UAAS,EAAC,IAAG,QAAO,OAAK,EAAC,YAAWD,IAAG,UAAS,EAAC,IAAG,KAAI,OAAK,EAAC,YAAWA,IAAG,UAAS,EAAC,IAAG,KAAI,OAAK,EAAC,YAAWA,IAAG,UAAS,EAAC,IAAG,GAAE,OAAK,EAAC,YAAWA,IAAG,UAAS,EAAC,GAAE;AAAA,EAAC;AAAA,EAAC,OAAO,WAAWnR,GAAE;AAAC,UAAM1yC,IAAE67C,GAAGnJ,EAAE,IAAI;AAAE,WAAO1yC,EAAE,UAAU0yC,EAAE,MAAM,GAAE1yC,EAAE,UAAU0yC,EAAE,MAAM,GAAE1yC,EAAE,QAAQ0yC,EAAE,IAAI,GAAE1yC,EAAE,SAAS0yC,EAAE,KAAK,GAAE1yC;AAAA,EAAC;AAAA,EAAC,UAAU0yC,GAAE;AAAC,QAAG,EAAC,SAAQ1yC,EAAC,IAAE,MAAM,UAAU0yC,CAAC;AAAE,WAAc1yC,MAAP,QAAUg+C,GAAGh+C,CAAC,KAAGw3C,EAAG,GAAG,GAAEx3C,EAAE,MAAM,aAAW,YAAW,KAAK,UAAU,MAAM,MAAIA,IAAEyjD,GAAGzjD,GAAE,GAAG,IAAG,KAAK,UAAU,QAAQ,MAAIA,IAAEyjD,GAAGzjD,GAAE,GAAG,IAAG,KAAK,UAAU,eAAe,MAAIA,IAAEyjD,GAAGzjD,GAAE,GAAG,IAAG,KAAK,UAAU,WAAW,MAAIA,IAAEyjD,GAAGzjD,GAAE,GAAG,IAAG,EAAC,SAAQA,EAAC;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,WAAM,EAAC,QAAO,KAAK,aAAY,QAAO,KAAK,UAAS,GAAG,MAAK,KAAK,QAAO,GAAG,OAAM,KAAK,SAAU,GAAC,MAAK,KAAK,kBAAiB,MAAK,QAAO,SAAQ,EAAC;AAAA,EAAC;AAAA,EAAC,mBAAmB0yC,GAAE1yC,GAAE;AAAA,EAAA;AAAA,EAAE,UAAU0yC,GAAE;AAAC,UAAM1yC,IAAE,KAAK,YAAa;AAAC,WAAOA,EAAE,WAAmB,OAAO0yC,KAAjB,WAAmBuE,GAAGvE,KAAGA,GAAE1yC;AAAA,EAAC;AAAA,EAAC,UAAU0yC,GAAE;AAAC,UAAM1yC,IAAE,KAAK,YAAW;AAAG,WAAOA,EAAE,WAAmB,OAAO0yC,KAAjB,WAAmBwE,GAAGxE,KAAGA,GAAE1yC;AAAA,EAAC;AAAA,EAAC,SAAS0yC,GAAE;AAAC,UAAM1yC,IAAE,KAAK,YAAa;AAAC,WAAOA,EAAE,UAAQ0yC,GAAE1yC;AAAA,EAAC;AAAA,EAAC,aAAa0yC,GAAE;AAAC,UAAM1yC,IAAEq6C,GAAG,KAAK,UAAS,GAAG3H,GAAE,IAAI;AAAE,WAAO,KAAK,UAAU1yC,CAAC;AAAA,EAAC;AAAA,EAAC,sBAAqB;AAAC,UAAM0yC,IAAE,KAAK,YAAa;AAAC,WAAOA,EAAE,YAAU,GAAEA;AAAA,EAAC;AAAA,EAAC,oBAAmB;AAAC,UAAMA,IAAE,KAAK,YAAa;AAAC,WAAOA,EAAE,YAAU,GAAEA;AAAA,EAAC;AAAA,EAAC,QAAQA,GAAE;AAAC,UAAM1yC,IAAEq3C,GAAG3E;AAAG,QAAG,KAAK,WAAS1yC;AAAE,aAAO;AAAK,UAAMP,IAAE,KAAK;AAAc,WAAOA,EAAE,SAAOO,GAAEP;AAAA,EAAC;AAAA,EAAC,eAAeizC,GAAE;AAAC,QAAG,KAAK,WAASA;AAAE,aAAO;AAAK,UAAM1yC,IAAE,KAAK,YAAa;AAAC,WAAOA,EAAE,SAAO0yC,GAAE1yC;AAAA,EAAC;AAAA,EAAC,OAAO0yC,GAAE1yC,GAAE;AAAC,IAAAy6C,GAAE;AAAG,QAAIh7C,IAAEizC,GAAEC,IAAE3yC;AAAE,UAAMmK,IAAEmuC,GAAE,GAAG5yC,IAAE,KAAK,eAAgB,GAACktC,IAAE,KAAK;AAAM,QAAa,OAAOltC,KAAjB,UAAmB;AAAC,YAAMgtC,IAAEhtC,EAAE;AAAO,MAASjG,MAAT,WAAaA,IAAEizC,IAAYC,MAAT,WAAaA,IAAED;AAAA,IAAE;AAAM,MAAAjzC,IAAE,GAAEkzC,IAAE;AAAE,QAAG,CAACwF,EAAGhuC,CAAC;AAAE,aAAO45C,GAAGnR,GAAEnzC,GAAEmzC,GAAED,GAAE,QAAO,MAAM;AAAE;AAAC,YAAMD,IAAEsI,GAAE;AAAG,MAAAtI,MAAIvoC,EAAE,OAAO,OAAKuoC,MAAIvoC,EAAE,MAAM,OAAK2wC,GAAGlI,CAAC,GAAEzoC,EAAE,iBAAiB,MAAK1K,GAAE,MAAKkzC,CAAC;AAAA,IAAC;AAAC,WAAOxoC;AAAA,EAAC;AAAA,EAAC,cAAa;AAAC,WAAO,KAAK,OAAO,GAAE,CAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,UAAMuoC,IAAE,KAAK,mBAAoB;AAAC,WAAO,KAAK,OAAOA,GAAEA,CAAC;AAAA,EAAC;AAAA,EAAC,WAAWA,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,UAAMxoC,IAAE,KAAK,YAAW,GAAGzE,IAAEyE,EAAE,QAAOyoC,IAAEnzC,EAAE;AAAO,QAAIF,IAAEmzC;AAAE,IAAAnzC,IAAE,MAAIA,IAAEqzC,IAAErzC,GAAEA,IAAE,MAAIA,IAAE;AAAI,UAAMK,IAAE04C;AAAK,QAAG3F,KAAGwF,EAAGv4C,CAAC,GAAE;AAAC,YAAMI,IAAE0yC,IAAEE;AAAE,MAAAhzC,EAAE,iBAAiBuK,GAAEnK,GAAEmK,GAAEnK,CAAC;AAAA,IAAC;AAAC,UAAMH,IAAE6F,EAAE,MAAM,GAAEnG,CAAC,IAAEE,IAAEiG,EAAE,MAAMnG,IAAES,CAAC;AAAE,WAAOmK,EAAE,SAAOtK,GAAEsK;AAAA,EAAC;AAAA,EAAC,sBAAqB;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,qBAAoB;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,aAAauoC,GAAE;AAAC,IAAA+H;AAAK,UAAMz6C,IAAE,KAAK,aAAYP,IAAEO,EAAE,eAAc,GAAG2yC,IAAE3yC,EAAE,OAAMmK,IAAE6wC,GAAI,GAACt1C,IAAE,IAAI,IAAIgtC,CAAC,GAAEE,IAAE,IAAGrzC,IAAEE,EAAE;AAAO,QAAIG,IAAE;AAAG,aAAQ8yC,IAAE,GAAEA,IAAEnzC,GAAEmzC;AAAI,MAAK9yC,MAAL,MAAQ8F,EAAE,IAAIgtC,CAAC,MAAIE,EAAE,KAAKhzC,CAAC,GAAEA,IAAE,KAAIA,KAAGH,EAAEizC;AAAG,IAAK9yC,MAAL,MAAQgzC,EAAE,KAAKhzC,CAAC;AAAE,UAAMC,IAAE+yC,EAAE;AAAO,QAAO/yC,MAAJ;AAAM,aAAM,CAAA;AAAG,QAAG+yC,EAAE,OAAKnzC;AAAE,aAAM,CAACO,CAAC;AAAE,UAAM6yC,IAAED,EAAE,IAAG,IAAE5yC,EAAE,UAAW;AAAC,QAAI8yC;AAAE,UAAMC,IAAE/yC,EAAE,UAAS,GAAGF,IAAEE,EAAE,SAAU,GAAC,IAAEA,EAAE;AAAS,QAAIN,IAAE;AAAG,IAAAM,EAAE,iBAAe8yC,IAAE+I,GAAGhJ,CAAC,GAAEC,EAAE,WAASC,GAAED,EAAE,UAAQhzC,GAAEgzC,EAAE,WAAS,GAAEpzC,IAAE,OAAKozC,IAAE9yC,EAAE,YAAW,GAAG8yC,EAAE,SAAOD;AAAG,UAAMI,IAAEqF,MAAK94C,IAAE,CAACszC,CAAC;AAAE,QAAIpuC,IAAEmuC,EAAE;AAAO,aAAQH,IAAE,GAAEA,IAAE7yC,GAAE6yC,KAAI;AAAC,YAAM1yC,IAAE4yC,EAAEF,IAAGjzC,IAAEO,EAAE,QAAO0F,IAAEm2C,GAAG77C,CAAC,EAAE;AAAc,MAAA0F,EAAE,WAASqtC,GAAErtC,EAAE,UAAQ5F,GAAE4F,EAAE,WAAS;AAAE,YAAMnG,IAAEmG,EAAE,OAAM9F,IAAE8E,IAAEjF;AAAE,UAAG04C,EAAGlF,CAAC,GAAE;AAAC,cAAMP,IAAEO,EAAE,QAAOjzC,IAAEizC,EAAE;AAAM,QAAAP,EAAE,QAAMC,KAAYD,EAAE,SAAX,UAAiBA,EAAE,SAAOhuC,KAAGguC,EAAE,UAAQ9yC,MAAI8yC,EAAE,MAAInzC,GAAEmzC,EAAE,UAAQhuC,GAAEuuC,EAAE,QAAM,KAAIjzC,EAAE,QAAM2yC,KAAY3yC,EAAE,SAAX,UAAiBA,EAAE,SAAO0E,KAAG1E,EAAE,UAAQJ,MAAII,EAAE,MAAIT,GAAES,EAAE,UAAQ0E,GAAEuuC,EAAE,QAAM;AAAA,MAAG;AAAC,MAAA9oC,MAAIwoC,KAAGmI,GAAGv7C,CAAC,GAAEmF,IAAE9E,GAAEJ,EAAE,KAAKkG,CAAC;AAAA,IAAC;AAAC,QAAU,MAAP,MAAS;AAAC,OAAC,SAASgtC,GAAE;AAAC,cAAM1yC,IAAE0yC,EAAE,mBAAkB,GAAGjzC,IAAEizC,EAAE,eAAgB;AAAC,QAAO1yC,MAAP,QAAU66C,GAAG76C,CAAC,GAASP,MAAP,QAAUo7C,GAAGp7C,CAAC;AAAA,MAAC,GAAE,IAAI;AAAE,YAAMizC,IAAE,EAAE,eAAc1yC,IAAE,KAAK,qBAAoB;AAAG,MAAAN,KAAGgzC,EAAE,OAAO1yC,GAAE,GAAER,CAAC,GAAE,KAAK,YAAUkzC,EAAE,OAAO1yC,GAAE,GAAER,CAAC,GAAE24C,EAAGlF,CAAC,KAAG2P,GAAG3P,GAAE,GAAEjzC,GAAEH,IAAE,CAAC;AAAA,IAAC;AAAC,WAAOL;AAAA,EAAC;AAAA,EAAC,iBAAiBkzC,GAAE;AAAC,UAAM1yC,IAAE0yC,MAAI,KAAK,mBAAkB;AAAG,IAAA1yC,KAAG0yC,MAAI,KAAK,oBAAkB8E,EAAG,EAAE;AAAE,UAAM/3C,IAAE,KAAK,OAAMkzC,IAAED,EAAE,OAAMvoC,IAAE,KAAK,QAAOzE,IAAEyE,EAAE;AAAO,IAAA6wC,GAAI,MAAGrI,KAAGmI,GAAGr7C,CAAC;AAAE,UAAMmzC,IAAE0F,GAAI;AAAC,QAAGH,EAAGvF,CAAC,GAAE;AAAC,YAAMzoC,IAAEyoC,EAAE,QAAOrzC,IAAEqzC,EAAE;AAAM,MAAOzoC,MAAP,QAAUA,EAAE,QAAMwoC,MAAIqR,GAAG75C,GAAEnK,GAAEP,GAAEizC,GAAEhtC,CAAC,GAAEktC,EAAE,QAAM,KAAWrzC,MAAP,QAAUA,EAAE,QAAMozC,MAAIqR,GAAGzkD,GAAES,GAAEP,GAAEizC,GAAEhtC,CAAC,GAAEktC,EAAE,QAAM;AAAA,IAAG;AAAC,UAAMrzC,IAAEmzC,EAAE,QAAO9yC,IAAEI,IAAET,IAAE4K,IAAEA,IAAE5K;AAAE,SAAK,eAAeK,CAAC;AAAE,UAAMC,IAAE,KAAK;AAAc,WAAO6yC,EAAE,OAAQ,GAAC7yC;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,WAAM;AAAA,EAAE;AAAC;AAAC,SAASikD,GAAGpR,GAAE;AAAC,SAAM,EAAC,UAASuR,GAAGvR,EAAE,KAAK,GAAE,MAAK,KAAI;AAAC;AAAC,SAASkR,GAAGlR,GAAE;AAAC,QAAM,IAAEA,GAAEjzC,IAAa,EAAE,MAAM,eAAnB;AAA8B,SAAM,EAAC,UAASwkD,GAAG,EAAE,OAAMxkD,IAAE,SAAO,MAAM,GAAE,MAAK,KAAI;AAAC;AAAC,MAAMykD,KAAG,oBAAI;AAAQ,SAASC,GAAGzR,GAAE;AAAC,SAAcA,EAAE,aAAV,SAAoBA,EAAE,aAAWyC,MAAazC,EAAE,UAAX,UAA2BA,EAAE,MAAM,eAAjB,UAA6BA,EAAE,MAAM,WAAW,WAAW,KAAK;AAAC;AAAC,SAASiR,GAAGjR,GAAE;AAAC,QAAM,IAAEA;AAAE,EAAOA,EAAE,kBAAT,QAAwB8E,EAAG,GAAG;AAAE,MAAI/3C,IAAE,EAAE,eAAa;AAAG,MAAU,SAASizC,GAAE;AAAC,QAAI1yC,GAAEP,IAAEizC,EAAE;AAAW,UAAMC,IAAE,CAACD,CAAC;AAAE,WAAYjzC,MAAP,SAAoBO,IAAEkkD,GAAG,IAAIzkD,CAAC,OAApB,UAAwB,CAAC0kD,GAAG1kD,CAAC;AAAG,MAAAkzC,EAAE,KAAKlzC,CAAC,GAAEA,IAAEA,EAAE;AAAW,UAAM0K,IAAWnK,MAAT,SAAWP,IAAEO;AAAE,aAAQ0yC,IAAE,GAAEA,IAAEC,EAAE,QAAOD;AAAI,MAAAwR,GAAG,IAAIvR,EAAED,IAAGvoC,CAAC;AAAE,WAAOA;AAAA,EAAC,EAAE,CAAC,MAAxM,MAA0M;AAAC,UAAMuoC,IAAEjzC,EAAE,MAAM,YAAY,GAAEO,IAAE,CAAE,GAAC2yC,IAAED,EAAE;AAAO,aAAQjzC,IAAE,GAAEA,IAAEkzC,GAAElzC,KAAI;AAAC,YAAMkzC,IAAED,EAAEjzC;AAAG,MAAOkzC,MAAP;AAAA,KAAmBA,MAAT;AAAA,IAAW3yC,EAAE,KAAKmjD,GAAI,CAAA,IAASxQ,MAAP,MAAS3yC,EAAE,KAAKokD,IAAI,IAAOzR,MAAL,MAAQ3yC,EAAE,KAAK67C,GAAGlJ,CAAC,CAAC;AAAA,IAAC;AAAC,WAAM,EAAC,MAAK3yC,EAAC;AAAA,EAAC;AAAC,MAAGP,IAAEA,EAAE,QAAQ,OAAM,EAAE,EAAE,QAAQ,aAAY,GAAG,GAAOA,MAAL;AAAO,WAAM,EAAC,MAAK,KAAI;AAAE,MAASA,EAAE,OAAR,KAAW;AAAC,QAAIizC,IAAE,GAAEC,IAAE;AAAG,WAAYD,MAAP,SAAkBA,IAAE2R,GAAG3R,GAAE,EAAE,OAAjB,QAAqB;AAAC,YAAM1yC,IAAE0yC,EAAE,eAAa;AAAG,UAAG1yC,EAAE,SAAO,GAAE;AAAC,mBAAW,KAAKA,CAAC,MAAIP,IAAEA,EAAE,MAAM,CAAC,IAAGkzC,IAAE;AAAG;AAAA,MAAK;AAAA,IAAC;AAAC,IAAAA,MAAIlzC,IAAEA,EAAE,MAAM,CAAC;AAAA,EAAE;AAAC,MAASA,EAAEA,EAAE,SAAO,OAAjB,KAAoB;AAAC,QAAIizC,IAAE,GAAEC,IAAE;AAAG,WAAYD,MAAP,SAAkBA,IAAE2R,GAAG3R,GAAE,EAAE,OAAjB;AAAsB,WAAIA,EAAE,eAAa,IAAI,QAAQ,kBAAiB,EAAE,EAAE,SAAO,GAAE;AAAC,QAAAC,IAAE;AAAG;AAAA,MAAK;AAAE,IAAAA,MAAIlzC,IAAEA,EAAE,MAAM,GAAEA,EAAE,SAAO,CAAC;AAAA,EAAE;AAAC,SAAWA,MAAL,KAAO,EAAC,MAAK,KAAI,IAAE,EAAC,MAAKo8C,GAAGp8C,CAAC,EAAC;AAAC;AAAC,SAAS4kD,GAAG3R,GAAE,GAAE;AAAC,MAAIjzC,IAAEizC;AAAE,aAAO;AAAC,QAAIA;AAAE,YAAaA,IAAE,IAAEjzC,EAAE,cAAYA,EAAE,qBAA5B,QAA8C;AAAC,YAAMizC,IAAEjzC,EAAE;AAAc,UAAUizC,MAAP;AAAS,eAAO;AAAK,MAAAjzC,IAAEizC;AAAA,IAAC;AAAC,QAAGjzC,IAAEizC,GAAEjzC,EAAE,aAAW01C,IAAG;AAAC,YAAMzC,IAAEjzC,EAAE,MAAM;AAAQ,UAAQizC,MAAL,MAAQ,CAACuL,GAAGx+C,CAAC,KAAQizC,MAAL,MAAQ,CAACA,EAAE,WAAW,QAAQ;AAAE,eAAO;AAAA,IAAI;AAAC,QAAIC,IAAElzC;AAAE,YAAakzC,IAAE,IAAElzC,EAAE,aAAWA,EAAE,eAA3B;AAAuC,MAAAA,IAAEkzC;AAAE,QAAGlzC,EAAE,aAAW21C;AAAG,aAAO31C;AAAE,QAAUA,EAAE,aAAT;AAAkB,aAAO;AAAA,EAAI;AAAC;AAAC,MAAM6kD,KAAG,EAAC,MAAK,QAAO,IAAG,UAAS,GAAE,UAAS,GAAE,iBAAgB,QAAO,QAAO,KAAI,aAAY,KAAI,eAAc,GAAE,YAAW;AAAE,SAAST,GAAGnR,GAAE;AAAC,QAAM,IAAE4R,GAAG5R,EAAE,SAAS,YAAW;AAAI,SAAgB,MAAT,SAAW,EAAC,MAAK,KAAI,IAAE,EAAC,UAASuR,GAAGvR,EAAE,OAAM,CAAC,GAAE,MAAK,KAAI;AAAC;AAAC,SAASmJ,GAAGnJ,IAAE,IAAG;AAAC,SAAO1tC,GAAG,IAAI0+C,GAAGhR,CAAC,CAAC;AAAC;AAAC,SAAS+F,EAAG/F,GAAE;AAAC,SAAOA,aAAagR;AAAE;AAAC,SAASO,GAAGvR,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE,YAAW,IAAEA,EAAE,eAAe,MAAM,GAAG,GAAEvoC,IAAU1K,MAAR,SAAoBA,MAAT,QAAW,IAAE,EAAE,SAAS,cAAc,GAAEmzC,IAAaF,EAAE,cAAb,UAAuB,IAAE,EAAE,SAAS,WAAW,GAAE,IAAEA,EAAE;AAAc,SAAO,CAAAA,OAAG+F,EAAG/F,CAAC,MAAGvoC,KAAG,CAACuoC,EAAE,UAAU,MAAM,KAAGA,EAAE,aAAa,MAAM,GAAE,KAAG,CAACA,EAAE,UAAU,eAAe,KAAGA,EAAE,aAAa,eAAe,GAAEE,KAAG,CAACF,EAAE,UAAU,QAAQ,KAAGA,EAAE,aAAa,QAAQ,GAAE,KAAG,CAACA,EAAE,UAAU,WAAW,KAAGA,EAAE,aAAa,WAAW,GAAU,MAAR,SAAWA,EAAE,UAAU,WAAW,KAAGA,EAAE,aAAa,WAAW,GAAY,MAAV,WAAaA,EAAE,UAAU,aAAa,KAAGA,EAAE,aAAa,aAAa,GAAE,KAAG,CAACA,EAAE,UAAU,CAAC,KAAGA,EAAE,aAAa,CAAC,IAAEA;AAAI;AAAC,MAAM6R,WAAWb,GAAE;AAAA,EAAC,OAAO,UAAS;AAAC,WAAM;AAAA,EAAK;AAAA,EAAC,OAAO,MAAMhR,GAAE;AAAC,WAAO,IAAI6R,GAAG7R,EAAE,KAAK;AAAA,EAAC;AAAA,EAAC,eAAeA,GAAE;AAAC,UAAM,eAAeA,CAAC,GAAE,KAAK,SAAOA,EAAE;AAAA,EAAM;AAAA,EAAC,YAAYA,GAAE;AAAC,UAAM,KAAKA,CAAC,GAAE,KAAK,WAAS;AAAA,EAAC;AAAA,EAAC,OAAO,YAAW;AAAC,WAAO;AAAA,EAAI;AAAA,EAAC,OAAO,WAAWA,GAAE;AAAC,UAAM1yC,IAAEokD;AAAK,WAAOpkD,EAAE,UAAU0yC,EAAE,MAAM,GAAE1yC,EAAE,SAAS0yC,EAAE,KAAK,GAAE1yC;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,WAAM,EAAC,GAAG,MAAM,WAAU,GAAG,MAAK,OAAM,SAAQ,EAAC;AAAA,EAAC;AAAA,EAAC,eAAe0yC,GAAE;AAAC,IAAA8E,EAAG,GAAG;AAAA,EAAC;AAAA,EAAC,UAAU9E,GAAE;AAAC,IAAA8E,EAAG,GAAG;AAAA,EAAC;AAAA,EAAC,QAAQ9E,GAAE;AAAC,IAAA8E,EAAG,GAAG;AAAA,EAAC;AAAA,EAAC,sBAAqB;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,qBAAoB;AAAC,WAAM;AAAA,EAAE;AAAC;AAAC,SAAS4M,KAAI;AAAC,SAAOp/C,GAAG,IAAIu/C,IAAE;AAAC;AAAC,SAASC,GAAG9R,GAAE;AAAC,SAAOA,aAAa6R;AAAE;AAAC,MAAME,GAAE;AAAA,EAAC,YAAY/R,GAAE1yC,GAAEP,GAAE;AAAC,SAAK,aAAW,MAAK,KAAK,MAAIizC,GAAE,KAAK,SAAO1yC,GAAE,KAAK,OAAKP;AAAA,EAAC;AAAA,EAAC,GAAGizC,GAAE;AAAC,WAAO,KAAK,QAAMA,EAAE,OAAK,KAAK,WAASA,EAAE,UAAQ,KAAK,SAAOA,EAAE;AAAA,EAAI;AAAA,EAAC,SAASA,GAAE;AAAC,QAAI1yC,IAAE,KAAK,WAAUP,IAAEizC,EAAE,QAAO;AAAG,UAAMC,IAAE,KAAK,QAAOxoC,IAAEuoC,EAAE;AAAO,QAAGkG,EAAG54C,CAAC,GAAE;AAAC,YAAM0yC,IAAE1yC,EAAE,qBAAqB2yC,CAAC;AAAE,MAAA3yC,IAAQ0yC,KAAI1yC;AAAA,IAAC;AAAC,QAAG44C,EAAGn5C,CAAC,GAAE;AAAC,YAAMizC,IAAEjzC,EAAE,qBAAqB0K,CAAC;AAAE,MAAA1K,IAAQizC,KAAIjzC;AAAA,IAAC;AAAC,WAAOO,MAAIP,IAAEkzC,IAAExoC,IAAEnK,EAAE,SAASP,CAAC;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,UAAMizC,IAAEqI,GAAG,KAAK,GAAG;AAAE,WAAcrI,MAAP,QAAU8E,EAAG,EAAE,GAAE9E;AAAA,EAAC;AAAA,EAAC,IAAIA,GAAE1yC,GAAEP,GAAE;AAAC,UAAMkzC,IAAE,KAAK,YAAWxoC,IAAE,KAAK;AAAI,SAAK,MAAIuoC,GAAE,KAAK,SAAO1yC,GAAE,KAAK,OAAKP,GAAEw7C,SAAOD,GAAI,MAAG7wC,KAAG2wC,GAAGpI,CAAC,GAASC,MAAP,SAAWA,EAAE,eAAe,IAAI,GAAEA,EAAE,QAAM;AAAA,EAAI;AAAC;AAAC,SAAS+R,GAAGhS,GAAE,GAAEjzC,GAAE;AAAC,SAAO,IAAIglD,GAAG/R,GAAE,GAAEjzC,CAAC;AAAC;AAAC,SAASklD,GAAGjS,GAAE,GAAE;AAAC,MAAIjzC,IAAE,EAAE,OAAM,IAAEizC,EAAE,QAAOvoC,IAAE;AAAU,MAAGsuC,EAAG,CAAC,GAAE;AAAC,IAAAtuC,IAAE;AAAO,UAAMuoC,IAAE,EAAE,mBAAkB;AAAG,QAAEA,MAAI,IAAEA;AAAA,EAAE,WAAS,CAACkG,EAAG,CAAC,GAAE;AAAC,UAAMlG,IAAE,EAAE;AAAiB,QAAG+F,EAAG/F,CAAC;AAAE,MAAAjzC,IAAEizC,EAAE,OAAM,IAAE,GAAEvoC,IAAE;AAAA,SAAW;AAAC,YAAMuoC,IAAE,EAAE,UAAS;AAAG,MAAAA,MAAIjzC,IAAEizC,EAAE,OAAM,IAAE,EAAE,qBAAoB,IAAG;AAAA,IAAE;AAAA,EAAC;AAAC,EAAAA,EAAE,IAAIjzC,GAAE,GAAE0K,CAAC;AAAC;AAAC,SAAS24C,GAAGpQ,GAAE,GAAE;AAAC,MAAGkG,EAAG,CAAC,GAAE;AAAC,UAAMn5C,IAAE,EAAE,kBAAmB;AAAC,IAAAm5C,EAAGn5C,CAAC,KAAGg5C,EAAGh5C,CAAC,IAAEklD,GAAGjS,GAAEjzC,CAAC,IAAEklD,GAAGjS,GAAE,CAAC;AAAA,EAAC;AAAM,IAAAiS,GAAGjS,GAAE,CAAC;AAAC;AAAC,SAASkS,GAAGlS,GAAE,GAAEjzC,GAAE,GAAE;AAAC,EAAAizC,EAAE,MAAI,GAAEA,EAAE,SAAOjzC,GAAEizC,EAAE,OAAK;AAAC;AAAC,MAAMmS,GAAE;AAAA,EAAC,YAAYnS,GAAE;AAAC,SAAK,eAAa,MAAK,KAAK,SAAOA,GAAE,KAAK,QAAM;AAAA,EAAE;AAAA,EAAC,iBAAgB;AAAC,WAAO,KAAK;AAAA,EAAY;AAAA,EAAC,eAAeA,GAAE;AAAC,SAAK,eAAaA;AAAA,EAAC;AAAA,EAAC,GAAGA,GAAE;AAAC,QAAG,CAAC2O,GAAG3O,CAAC;AAAE,aAAM;AAAG,UAAM1yC,IAAE,KAAK,QAAOP,IAAEizC,EAAE;AAAO,WAAO1yC,EAAE,SAAOP,EAAE,QAAM,MAAM,KAAKO,CAAC,EAAE,MAAO,CAAA0yC,MAAGjzC,EAAE,IAAIizC,CAAC,CAAC;AAAA,EAAE;AAAA,EAAC,cAAa;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,aAAY;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,oBAAmB;AAAC,WAAO;AAAA,EAAI;AAAA,EAAC,IAAIA,GAAE;AAAC,SAAK,QAAM,IAAG,KAAK,OAAO,IAAIA,CAAC,GAAE,KAAK,eAAa;AAAA,EAAI;AAAA,EAAC,OAAOA,GAAE;AAAC,SAAK,QAAM,IAAG,KAAK,OAAO,OAAOA,CAAC,GAAE,KAAK,eAAa;AAAA,EAAI;AAAA,EAAC,QAAO;AAAC,SAAK,QAAM,IAAG,KAAK,OAAO,MAAO,GAAC,KAAK,eAAa;AAAA,EAAI;AAAA,EAAC,IAAIA,GAAE;AAAC,WAAO,KAAK,OAAO,IAAIA,CAAC;AAAA,EAAC;AAAA,EAAC,QAAO;AAAC,WAAO,IAAImS,GAAG,IAAI,IAAI,KAAK,MAAM,CAAC;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,WAAO,KAAK,SAAU;AAAA,EAAA;AAAA,EAAC,cAAcnS,GAAE;AAAA,EAAA;AAAA,EAAE,aAAY;AAAA,EAAA;AAAA,EAAE,YAAYA,GAAE;AAAC,UAAM1yC,IAAE,KAAK,SAAQ,GAAGP,IAAEO,EAAE,QAAO2yC,IAAE3yC,EAAEP,IAAE;AAAG,QAAI0K;AAAE,QAAGsuC,EAAG9F,CAAC;AAAE,MAAAxoC,IAAEwoC,EAAE,OAAM;AAAA,SAAO;AAAC,YAAMD,IAAEC,EAAE,qBAAoB,IAAG;AAAE,MAAAxoC,IAAEwoC,EAAE,iBAAkB,EAAC,OAAOD,GAAEA,CAAC;AAAA,IAAC;AAAC,IAAAvoC,EAAE,YAAYuoC,CAAC;AAAE,aAAQA,IAAE,GAAEA,IAAEjzC,GAAEizC;AAAI,MAAA1yC,EAAE0yC,GAAG,OAAQ;AAAA,EAAA;AAAA,EAAC,WAAU;AAAC,UAAMA,IAAE,KAAK;AAAa,QAAUA,MAAP;AAAS,aAAOA;AAAE,UAAM1yC,IAAE,KAAK,QAAOP,IAAE,CAAE;AAAC,eAAUizC,KAAK1yC,GAAE;AAAC,YAAMA,IAAE+6C,GAAGrI,CAAC;AAAE,MAAO1yC,MAAP,QAAUP,EAAE,KAAKO,CAAC;AAAA,IAAC;AAAC,WAAOi7C,SAAO,KAAK,eAAax7C,IAAGA;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,UAAMizC,IAAE,KAAK;AAAW,QAAI1yC,IAAE;AAAG,aAAQP,IAAE,GAAEA,IAAEizC,EAAE,QAAOjzC;AAAI,MAAAO,KAAG0yC,EAAEjzC,GAAG,eAAc;AAAG,WAAOO;AAAA,EAAC;AAAC;AAAC,SAASm4C,EAAGzF,GAAE;AAAC,SAAOA,aAAaoS;AAAE;AAAC,MAAMA,GAAE;AAAA,EAAC,YAAYpS,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,SAAK,SAAOD,GAAE,KAAK,QAAM1yC,GAAE0yC,EAAE,aAAW,MAAK1yC,EAAE,aAAW,MAAK,KAAK,eAAa,MAAK,KAAK,SAAOP,GAAE,KAAK,QAAMkzC,GAAE,KAAK,QAAM;AAAA,EAAE;AAAA,EAAC,iBAAgB;AAAC,WAAO,KAAK;AAAA,EAAY;AAAA,EAAC,eAAeD,GAAE;AAAC,SAAK,eAAaA;AAAA,EAAC;AAAA,EAAC,GAAGA,GAAE;AAAC,WAAM,CAAC,CAACyF,EAAGzF,CAAC,KAAI,KAAK,OAAO,GAAGA,EAAE,MAAM,KAAG,KAAK,MAAM,GAAGA,EAAE,KAAK,KAAG,KAAK,WAASA,EAAE,UAAQ,KAAK,UAAQA,EAAE;AAAA,EAAM;AAAA,EAAC,cAAa;AAAC,WAAO,KAAK,OAAO,GAAG,KAAK,KAAK;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,UAAMA,IAAE,KAAK;AAAa,QAAUA,MAAP;AAAS,aAAOA;AAAE,UAAM1yC,IAAE,KAAK,QAAOP,IAAE,KAAK,OAAMkzC,IAAE3yC,EAAE,SAASP,CAAC,GAAE0K,IAAEwoC,IAAE3yC,IAAEP,GAAEiG,IAAEitC,IAAElzC,IAAEO;AAAE,QAAI4yC,IAAEzoC,EAAE,QAAS,GAAC5K,IAAEmG,EAAE;AAAU,UAAM9F,IAAEuK,EAAE,QAAOtK,IAAE6F,EAAE;AAAO,QAAGkzC,EAAGhG,CAAC,GAAE;AAAC,YAAMF,IAAEE,EAAE,qBAAqBhzC,CAAC;AAAE,MAAAgzC,IAAQF,KAAIE;AAAA,IAAC;AAAC,QAAGgG,EAAGr5C,CAAC,GAAE;AAAC,UAAImzC,IAAEnzC,EAAE,qBAAqBM,CAAC;AAAE,MAAO6yC,MAAP,QAAUA,MAAIE,KAAGrzC,EAAE,gBAAgBM,CAAC,MAAI6yC,MAAIA,IAAEA,EAAE,uBAAsBnzC,IAAQmzC,KAAInzC;AAAA,IAAC;AAAC,QAAIszC;AAAE,WAAOA,IAAED,EAAE,GAAGrzC,CAAC,IAAEq5C,EAAGhG,CAAC,KAAGA,EAAE,gBAAe,IAAG,IAAE,CAAE,IAAC,CAACA,CAAC,IAAEA,EAAE,gBAAgBrzC,CAAC,GAAE07C,GAAE,MAAK,KAAK,eAAapI,IAAGA;AAAA,EAAC;AAAA,EAAC,iBAAiBH,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,IAAAiS,GAAG,KAAK,QAAOlS,EAAE,OAAM1yC,GAAE,MAAM,GAAE4kD,GAAG,KAAK,OAAMnlD,EAAE,OAAMkzC,GAAE,MAAM,GAAE,KAAK,eAAa,MAAK,KAAK,QAAM;AAAA,EAAE;AAAA,EAAC,iBAAgB;AAAC,UAAMD,IAAE,KAAK,SAAQ;AAAG,QAAOA,EAAE,WAAN;AAAa,aAAM;AAAG,UAAM1yC,IAAE0yC,EAAE,IAAGjzC,IAAEizC,EAAEA,EAAE,SAAO,IAAGC,IAAE,KAAK,QAAOxoC,IAAE,KAAK,OAAMzE,IAAEitC,EAAE,SAASxoC,CAAC,GAAE,CAACyoC,GAAErzC,CAAC,IAAEwlD,GAAG,IAAI;AAAE,QAAInlD,IAAE,IAAGC,IAAE;AAAG,aAAQgzC,IAAE,GAAEA,IAAEH,EAAE,QAAOG,KAAI;AAAC,YAAM,IAAEH,EAAEG;AAAG,UAAG+F,EAAG,CAAC,KAAG,CAAC,EAAE;AAAW,QAAA/4C,MAAID,KAAG;AAAA,IAAMC,IAAE,CAAC,EAAE,QAAO;AAAA,eAAWA,IAAE,IAAG44C,EAAG,CAAC,GAAE;AAAC,YAAI/F,IAAE,EAAE;AAAiB,cAAI1yC,IAAE,MAAIP,IAAckzC,EAAE,SAAd,aAAgCxoC,EAAE,SAAd,aAAoBA,EAAE,WAASwoC,EAAE,WAASD,IAAEE,IAAErzC,IAAEmzC,EAAE,MAAME,GAAErzC,CAAC,IAAEmzC,EAAE,MAAMnzC,GAAEqzC,CAAC,KAAGF,IAAEhtC,IAAEgtC,EAAE,MAAME,CAAC,IAAEF,EAAE,MAAMnzC,CAAC,IAAE,MAAIE,MAAIizC,IAAEhtC,IAAEgtC,EAAE,MAAM,GAAEnzC,CAAC,IAAEmzC,EAAE,MAAM,GAAEE,CAAC,IAAGhzC,KAAG8yC;AAAA,MAAC;AAAK,SAAC8F,GAAG,CAAC,KAAG,CAAC+B,GAAG,CAAC,KAAG,MAAI96C,KAAG,KAAK,YAAW,MAAKG,KAAG,EAAE,eAAgB;AAAA,IAAC;AAAC,WAAOA;AAAA,EAAC;AAAA,EAAC,cAAc8yC,GAAE;AAAC,UAAM1yC,IAAEo5C,GAAI,GAAC35C,IAAEO,EAAE,iBAAiB,YAAW2yC,IAAEqS,GAAGtS,EAAE,gBAAeA,EAAE,aAAYA,EAAE,cAAaA,EAAE,WAAU1yC,GAAEP,CAAC;AAAE,QAAUkzC,MAAP;AAAS;AAAO,UAAK,CAACxoC,GAAEzE,CAAC,IAAEitC;AAAE,IAAAiS,GAAG,KAAK,QAAOz6C,EAAE,KAAIA,EAAE,QAAOA,EAAE,IAAI,GAAEy6C,GAAG,KAAK,OAAMl/C,EAAE,KAAIA,EAAE,QAAOA,EAAE,IAAI,GAAE,KAAK,eAAa;AAAA,EAAI;AAAA,EAAC,QAAO;AAAC,UAAMgtC,IAAE,KAAK,QAAO1yC,IAAE,KAAK;AAAM,WAAO,IAAI8kD,GAAGJ,GAAGhS,EAAE,KAAIA,EAAE,QAAOA,EAAE,IAAI,GAAEgS,GAAG1kD,EAAE,KAAIA,EAAE,QAAOA,EAAE,IAAI,GAAE,KAAK,QAAO,KAAK,KAAK;AAAA,EAAC;AAAA,EAAC,aAAa0yC,GAAE;AAAC,SAAK,SAAO2H,GAAG,KAAK,QAAO3H,GAAE,IAAI,GAAE,KAAK,QAAM;AAAA,EAAE;AAAA,EAAC,SAASA,GAAE;AAAC,SAAK,QAAMA,GAAE,KAAK,QAAM;AAAA,EAAE;AAAA,EAAC,UAAUA,GAAE;AAAC,UAAM1yC,IAAEi3C,GAAGvE;AAAG,WAAM,CAAC,EAAE,KAAK,SAAO1yC;AAAA,EAAE;AAAA,EAAC,cAAc0yC,GAAE;AAAC,UAAM1yC,IAAE0yC,EAAE,MAAM,YAAY,GAAEjzC,IAAE,CAAE,GAACkzC,IAAE3yC,EAAE;AAAO,aAAQ0yC,IAAE,GAAEA,IAAEC,GAAED,KAAI;AAAC,YAAMC,IAAE3yC,EAAE0yC;AAAG,MAAOC,MAAP;AAAA,KAAmBA,MAAT;AAAA,IAAWlzC,EAAE,KAAK0jD,GAAI,CAAA,IAASxQ,MAAP,MAASlzC,EAAE,KAAK2kD,GAAI,CAAA,IAAE3kD,EAAE,KAAKo8C,GAAGlJ,CAAC,CAAC;AAAA,IAAC;AAAC,SAAK,YAAYlzC,CAAC;AAAA,EAAC;AAAA,EAAC,WAAWizC,GAAE;AAAC,UAAM1yC,IAAE,KAAK,QAAOP,IAAE,KAAK,OAAMkzC,IAAE,KAAK,QAAOxoC,IAAE,KAAK;AAAM,QAAIzE,IAAE1F,GAAE4yC,IAAEnzC;AAAE,KAAC,KAAK,YAAW,KAAIA,EAAE,SAASO,CAAC,MAAI0F,IAAEjG,GAAEmzC,IAAE5yC,IAAe0F,EAAE,SAAd,aAAoB,SAASgtC,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,YAAMxoC,IAAEuoC,EAAE,QAAS,GAAChtC,IAAEyE,EAAE,gBAAgBuoC,EAAE,MAAM,GAAEE,IAAEiJ,GAAE,GAAGt8C,IAAEy9C,GAAG7yC,CAAC,IAAE44C,GAAE,EAAG,OAAOnQ,CAAC,IAAEA;AAAE,MAAAA,EAAE,UAAUnzC,CAAC,GAAEmzC,EAAE,SAASD,CAAC,GAASjtC,MAAP,OAASyE,EAAE,OAAO5K,CAAC,IAAEmG,EAAE,aAAanG,CAAC,GAAEmzC,EAAE,GAAG1yC,CAAC,KAAGA,EAAE,IAAI4yC,EAAE,OAAM,GAAE,MAAM,GAAEF,EAAE,IAAIE,EAAE,OAAM,GAAE,MAAM;AAAA,IAAC,EAAEltC,GAAEktC,GAAED,GAAExoC,CAAC;AAAE,UAAM5K,IAAEmG,EAAE;AAAO,QAAI9F,IAAEgzC,EAAE;AAAO,UAAM/yC,IAAE,KAAK,SAAQ,GAAGgzC,IAAEhzC,EAAE;AAAO,QAAI,IAAEA,EAAE;AAAG,IAAA44C,EAAG,CAAC,KAAGjB,EAAG,EAAE;AAAE,UAAM1E,IAAE,EAAE,eAAgB,EAAC,QAAOC,IAAE,EAAE,iBAAgB;AAAG,QAAIjzC,IAAED,EAAEgzC,IAAE;AAAG,QAAOA,MAAJ,KAAmBD,EAAE,SAAd,cAAqBhzC,IAAEkzC,GAAEF,EAAE,IAAIltC,EAAE,KAAI9F,GAAE,MAAM,IAAG,KAAK,YAAa,KAAEL,MAAIuzC,MAAI,EAAE,iBAAe,EAAE,aAAW,CAAC,EAAE,mBAAoB,KAAE,CAACC,EAAE,mBAAoB,KAAS,EAAE,eAAgB,MAAzB,OAA2B;AAAC,UAAI/yC,IAAE,EAAE,eAAgB;AAAC,UAAGy4C,EAAGz4C,CAAC,KAAGA,EAAE,oBAAmB,KAAI,CAACk6C,GAAGl6C,CAAC,MAAIA,IAAE67C,GAAE,GAAG77C,EAAE,UAAU2yC,CAAC,GAAE3yC,EAAE,SAASmK,CAAC,GAAE4oC,EAAE,mBAAoB,IAAC,EAAE,YAAY/yC,CAAC,IAAE+yC,EAAE,YAAY/yC,CAAC,IAAGA,EAAE,OAAO,GAAE,CAAC,GAAE,IAAEA,GAAO0yC,MAAL;AAAO,eAAO,KAAK,KAAK,WAAWA,CAAC;AAAA,IAAC,WAAS,KAAK,iBAAmBnzC,MAAJ,MAAQ,EAAE,YAAW,KAAI,EAAE,QAAO,KAAI,CAAC,EAAE,yBAAuB,CAACwzC,EAAE,oBAAqB,KAAS,EAAE,mBAAoB,MAA7B,OAA+B;AAAC,UAAI/yC,IAAE,EAAE,mBAAoB;AAAC,UAAGy4C,EAAGz4C,CAAC,KAAG,CAACk6C,GAAGl6C,CAAC,MAAIA,IAAE67C,GAAE,GAAG77C,EAAE,UAAU2yC,CAAC,GAAEI,EAAE,oBAAqB,IAAC,EAAE,aAAa/yC,CAAC,IAAE+yC,EAAE,aAAa/yC,CAAC,IAAGA,EAAE,OAAQ,GAAC,IAAEA,GAAO0yC,MAAL;AAAO,eAAO,KAAK,KAAK,WAAWA,CAAC;AAAA,IAAC,WAAS,EAAE,iBAAenzC,MAAIuzC,GAAE;AAAC,YAAMJ,IAAEmJ,GAAG,EAAE,gBAAgB;AAAE,MAAAnJ,EAAE,UAAUC,CAAC,GAAE,EAAE,QAAQD,CAAC,GAAE,IAAEA;AAAA,IAAC,WAAS,CAAC,KAAK,YAAa,KAAOA,MAAL,IAAO;AAAC,YAAM1yC,IAAEF,EAAE,UAAS;AAAG,UAAG,CAACizC,EAAE,oBAAqB,KAAE,CAACA,EAAE,mBAAkB,KAAI6F,EAAG54C,CAAC,MAAI,CAACA,EAAE,oBAAqB,KAAE,CAACA,EAAE,mBAAkB;AAAI,eAAO,KAAK,WAAW,EAAE,GAAEilD,GAAG,KAAK,QAAO,KAAK,OAAM,IAAI,GAAE,KAAK,KAAK,WAAWvS,CAAC;AAAA,IAAC;AAAC,QAAOG,MAAJ,GAAM;AAAC,UAAG,EAAE,WAAU;AAAC,cAAM7yC,IAAE67C,GAAGnJ,CAAC;AAAE,eAAO1yC,EAAE,OAAM,GAAG,KAAK,EAAE,QAAQA,CAAC;AAAA,MAAC;AAAC,YAAMA,IAAE,EAAE,aAAYP,IAAE,EAAE,SAAQ;AAAG,UAAGF,MAAIK,KAAGI,MAAI2yC,KAAGlzC,MAAI0K;AAAG,YAAGq6C,GAAG,CAAC,GAAE;AAAC,gBAAMxkD,IAAE67C,GAAGnJ,CAAC;AAAE,iBAAO1yC,EAAE,UAAU2yC,CAAC,GAAE3yC,EAAE,SAASmK,CAAC,GAAEnK,EAAE,UAAS,KAAK,EAAE,QAAQA,CAAC;AAAA,QAAC;AAAA,aAAM;AAAC,YAAQ,EAAE,eAAc,MAArB,IAAwB;AAAC,gBAAMA,IAAE67C,GAAGnJ,CAAC;AAAE,cAAG1yC,EAAE,UAAU2yC,CAAC,GAAE3yC,EAAE,SAASmK,CAAC,GAAEnK,EAAE,UAAaT,MAAJ;AAAM,cAAE,aAAaS,GAAE,EAAE;AAAA,eAAM;AAAC,kBAAK,CAAC0yC,CAAC,IAAE,EAAE,UAAUnzC,CAAC;AAAE,YAAAmzC,EAAE,YAAY1yC,GAAE,EAAE;AAAA,UAAC;AAAC,iBAAO,MAAKA,EAAE,YAAa,KAAW,KAAK,OAAO,SAArB,WAA4B,KAAK,OAAO,UAAQ0yC,EAAE;AAAA,QAAQ;AAAC,UAAE,UAAUC,CAAC,GAAE,EAAE,SAASxoC,CAAC;AAAA,MAAC;AAAC,YAAMzE,IAAE9F,IAAEL;AAAE,UAAE,EAAE,WAAWA,GAAEmG,GAAEgtC,GAAE,EAAE,GAAO,EAAE,eAAc,MAArB,KAAwB,EAAE,OAAM,IAAY,KAAK,OAAO,SAArB,WAA4B,EAAE,YAAW,IAAG,KAAK,OAAO,UAAQA,EAAE,UAAQ,KAAK,SAAO1yC,GAAE,KAAK,QAAMP;AAAA,IAAG,OAAK;AAAC,YAAMO,IAAE,oBAAI,IAAI,CAAC,GAAG,EAAE,iBAAgB,GAAGF,EAAE,cAAe,CAAA,CAAC,GAAEL,IAAEm5C,EAAG,CAAC,IAAE,IAAE,EAAE,iBAAgB;AAAG,UAAIjG,IAAEiG,EAAG94C,CAAC,IAAEA,IAAEA,EAAE,iBAAgB,GAAGqK,IAAErK;AAAE,UAAG,CAACL,EAAE,GAAGkzC,CAAC,KAAGA,EAAE,SAAQ;AAAG;AAAG,UAAAxoC,IAAEwoC,GAAEA,IAAEA,EAAE,iBAAgB;AAAA,eAASA,EAAE,SAAU;AAAE,UAAYC,EAAE,SAAX,WAAsBhzC,MAAJ,KAAYE,EAAE,qBAAP,OAAsC8yC,EAAE,SAAd,aAAoB9yC,EAAE,qBAAoB,IAAGF;AAAE,YAAG64C,EAAG34C,CAAC,KAAG,CAACA,EAAE,QAAS,KAAEF,MAAIE,EAAE,mBAAoB,GAAC;AAAC,cAAGA,EAAE,eAAc;AAAC,kBAAM4yC,IAAEmJ,GAAG/7C,EAAE,eAAgB,CAAA;AAAE,YAAAA,EAAE,QAAQ4yC,CAAC,GAAE5yC,IAAE4yC;AAAA,UAAC;AAAC,UAAAsK,GAAGpK,EAAE,QAAO,CAAE,KAAYA,EAAE,SAAX,WAAkB9yC,IAAEA,EAAE,WAAW,GAAEF,GAAE,EAAE,IAAGI,EAAE,IAAIF,EAAE,KAAK;AAAA,QAAC,OAAK;AAAC,gBAAM4yC,IAAE5yC,EAAE,iBAAgB;AAAG,UAAA4yC,EAAE,WAAU,KAAQA,EAAE,gBAAiB,MAAvB,IAAwB5yC,EAAE,OAAQ,IAAC4yC,EAAE,OAAQ;AAAA,QAAA;AAAA;AAAM,QAAA1yC,EAAE,IAAIF,EAAE,KAAK;AAAE,YAAM4F,IAAEitC,EAAE,YAAa,GAACI,IAAE,IAAI,IAAIlzC,CAAC,GAAEmzC,IAAEvzC,EAAE,GAAGkzC,CAAC,GAAEjzC,IAAED,EAAE,SAAQ,KAAW,EAAE,eAAc,MAAvB,OAA0BA,IAAE;AAAE,eAAQizC,IAAEhtC,EAAE,SAAO,GAAEgtC,KAAG,GAAEA,KAAI;AAAC,cAAM1yC,IAAE0F,EAAEgtC;AAAG,YAAG1yC,EAAE,GAAG,CAAC,KAAG44C,EAAG54C,CAAC,KAAGA,EAAE,WAAW,CAAC;AAAE;AAAM,QAAAA,EAAE,WAAU,MAAK,CAAC+yC,EAAE,IAAI/yC,CAAC,KAAGA,EAAE,GAAGmK,CAAC,IAAE6oC,KAAGtzC,EAAE,YAAYM,GAAE,EAAE,IAAEA,EAAE,OAAQ;AAAA,MAAC;AAAC,UAAG,CAACgzC,GAAE;AAAC,YAAIN,IAAEC,GAAElzC,IAAE;AAAK,eAAYizC,MAAP,QAAU;AAAC,gBAAMC,IAAED,EAAE,YAAW,GAAGvoC,IAAEwoC,EAAE;AAAO,WAAKxoC,MAAJ,KAAOwoC,EAAExoC,IAAE,GAAG,GAAG1K,CAAC,OAAKO,EAAE,OAAO0yC,EAAE,KAAK,GAAEjzC,IAAEizC,IAAGA,IAAEA,EAAE,UAAS;AAAA,QAAE;AAAA,MAAC;AAAC,UAAG,EAAE,QAAO;AAAG,YAAGnzC,MAAIuzC;AAAE,YAAE,OAAM;AAAA,aAAO;AAAC,gBAAM9yC,IAAE67C,GAAGnJ,CAAC;AAAE,UAAA1yC,EAAE,OAAM,GAAG,EAAE,QAAQA,CAAC;AAAA,QAAC;AAAA;AAAM,YAAE,EAAE,WAAWT,GAAEuzC,IAAEvzC,GAAEmzC,GAAE,EAAE,GAAO,EAAE,eAAgB,MAAvB,KAAwB,EAAE,OAAQ,IAAC,EAAE,YAAa,KAAW,KAAK,OAAO,SAArB,WAA4B,KAAK,OAAO,UAAQA,EAAE;AAAQ,eAAQA,IAAE,GAAEA,IAAEG,GAAEH,KAAI;AAAC,cAAMjzC,IAAEI,EAAE6yC,IAAGC,IAAElzC,EAAE;AAAM,QAAAO,EAAE,IAAI2yC,CAAC,KAAGlzC,EAAE,OAAQ;AAAA,MAAA;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,SAAK,WAAW,EAAE;AAAA,EAAC;AAAA,EAAC,WAAWizC,GAAE;AAAC,QAAG,KAAK,YAAa;AAAC,aAAO,KAAK,aAAaA,CAAC,GAAE,KAAKoI,GAAG,IAAI;AAAE,UAAM96C,IAAE,KAAK,SAAU,GAACP,IAAE,CAAA;AAAG,eAAUizC,KAAK1yC;AAAE,MAAAy4C,EAAG/F,CAAC,KAAGjzC,EAAE,KAAKizC,CAAC;AAAE,UAAMC,IAAElzC,EAAE;AAAO,QAAOkzC,MAAJ;AAAM,aAAO,KAAK,aAAaD,CAAC,GAAE,KAAKoI,GAAG,IAAI;AAAE,UAAM3wC,IAAE,KAAK,QAAOzE,IAAE,KAAK,OAAMktC,IAAE,KAAK,cAAarzC,IAAEqzC,IAAEltC,IAAEyE,GAAEvK,IAAEgzC,IAAEzoC,IAAEzE;AAAE,QAAI7F,IAAE,GAAEgzC,IAAEpzC,EAAE,IAAG,IAAcF,EAAE,SAAd,YAAmB,IAAEA,EAAE;AAAO,QAAYA,EAAE,SAAX,UAAiB,MAAIszC,EAAE,mBAAkB,MAAKhzC,IAAE,GAAEgzC,IAAEpzC,EAAE,IAAG,IAAE,IAASozC,KAAN;AAAQ;AAAO,UAAMC,IAAED,EAAE,eAAeH,GAAE,IAAI,GAAEK,IAAEJ,IAAE;AAAE,QAAI7yC,IAAEL,EAAEszC;AAAG,UAAM,IAAWnzC,EAAE,SAAX,SAAgBA,EAAE,SAAOE,EAAE,mBAAkB;AAAG,QAAG+yC,EAAE,GAAG/yC,CAAC,GAAE;AAAC,UAAG,MAAI;AAAE;AAAO,UAAGo6C,GAAGrH,CAAC,KAAO,MAAJ,KAAO,MAAIA,EAAE;AAAqB,QAAAA,EAAE,UAAUC,CAAC;AAAA,WAAM;AAAC,cAAMJ,IAAEG,EAAE,UAAU,GAAE,CAAC,GAAE7yC,IAAM,MAAJ,IAAM0yC,EAAE,KAAGA,EAAE;AAAG,QAAA1yC,EAAE,UAAU8yC,CAAC,GAAWvzC,EAAE,SAAX,UAAiBA,EAAE,IAAIS,EAAE,OAAM,GAAE,MAAM,GAAWJ,EAAE,SAAX,UAAiBA,EAAE,IAAII,EAAE,OAAM,IAAE,GAAE,MAAM;AAAA,MAAC;AAAC,aAAO,MAAK,KAAK,SAAO8yC;AAAA,IAAE;AAAC,IAAI,MAAJ,KAAOoH,GAAGrH,CAAC,MAAI,CAAE,EAAAA,CAAC,IAAEA,EAAE,UAAU,CAAC,GAAE,IAAE,IAAGA,EAAE,UAAUC,CAAC;AAAE,UAAMpzC,IAAEI,EAAE,eAAe4yC,GAAEI,CAAC;AAAE,QAAE,MAAI,MAAIhzC,EAAE,mBAAoB,KAAEo6C,GAAGp6C,CAAC,MAAI,CAACA,CAAC,IAAEA,EAAE,UAAU,CAAC,IAAGA,EAAE,UAAUJ,CAAC;AAAG,aAAQM,IAAEH,IAAE,GAAEG,IAAE+yC,GAAE/yC,KAAI;AAAC,YAAM2yC,IAAElzC,EAAEO,IAAGmK,IAAEwoC,EAAE,eAAeD,GAAEhzC,CAAC;AAAE,MAAAizC,EAAE,UAAUxoC,CAAC;AAAA,IAAC;AAAC,IAAS5K,EAAE,SAAX,UAAiBA,EAAE,IAAIszC,EAAE,OAAM,GAAE,MAAM,GAAWjzC,EAAE,SAAX,UAAiBA,EAAE,IAAIE,EAAE,OAAM,GAAE,MAAM,GAAE,KAAK,SAAOgzC,IAAEpzC;AAAA,EAAC;AAAA,EAAC,YAAYgzC,GAAE;AAAC,QAAOA,EAAE,WAAN;AAAa;AAAO,QAAY,KAAK,OAAO,QAArB,QAAyB;AAAC,WAAK;AAAkB,YAAM1yC,IAAEs4C,GAAI;AAAC,aAAOH,EAAGn4C,CAAC,KAAGw3C,EAAG,GAAG,GAAEx3C,EAAE,YAAY0yC,CAAC;AAAA,IAAC;AAAC,UAAM1yC,IAAEo+C,IAAI,KAAK,WAAU,IAAG,KAAK,QAAM,KAAK,QAAQ,WAAUD,EAAE,GAAE1+C,IAAEizC,EAAEA,EAAE,SAAO;AAAG,QAAG,gBAAe1yC,KAAG44C,EAAG54C,CAAC,GAAE;AAAC,UAAG,gBAAe0yC,EAAE;AAAG,aAAK,WAAWA,EAAE,GAAG,eAAc,CAAE;AAAA,WAAM;AAAC,cAAMC,IAAEuS,GAAG,IAAI;AAAE,QAAAllD,EAAE,OAAO2yC,GAAE,GAAED,CAAC,GAAEjzC,EAAE;MAAW;AAAC;AAAA,IAAM;AAAC,QAAG,CAACizC,EAAE,KAAM,CAAAA,OAAIkG,EAAGlG,CAAC,KAAG8F,GAAG9F,CAAC,MAAI,CAACA,EAAE,SAAQ,CAAI,GAAC;AAAC,MAAAkG,EAAG54C,CAAC,KAAGw3C,EAAG,GAAG;AAAE,YAAM7E,IAAEuS,GAAG,IAAI;AAAE,aAAOllD,EAAE,OAAO2yC,GAAE,GAAED,CAAC,GAAE,KAAKjzC,EAAE,UAAS;AAAA,IAAE;AAAC,UAAMkzC,IAAE,SAASD,GAAE;AAAC,YAAM1yC,IAAE+iD,GAAE;AAAG,UAAItjD,IAAE;AAAK,eAAQkzC,IAAE,GAAEA,IAAED,EAAE,QAAOC,KAAI;AAAC,cAAMxoC,IAAEuoC,EAAEC,IAAGjtC,IAAE60C,GAAGpwC,CAAC;AAAE,YAAGzE,KAAG8yC,GAAGruC,CAAC,KAAGA,EAAE,cAAYyuC,EAAGzuC,CAAC,KAAGA,EAAE,cAAYsuC,EAAGtuC,CAAC,KAAGA,EAAE,iBAAgB,GAAG;AAAC,cAAU1K,MAAP,SAAWA,IAAE0K,EAAE,wBAAuB,GAAGnK,EAAE,OAAOP,CAAC,GAAEiG;AAAG;AAAS,UAAOjG,MAAP,QAAUA,EAAE,OAAO0K,CAAC;AAAA,QAAC;AAAM,UAAAnK,EAAE,OAAOmK,CAAC,GAAE1K,IAAE;AAAA,MAAI;AAAC,aAAOO;AAAA,IAAC,EAAE0yC,CAAC,GAAEvoC,IAAEwoC,EAAE,qBAAoBjtC,IAAEitC,EAAE,YAAW,GAAGC,IAAE,CAACgG,EAAG54C,CAAC,KAAG,CAACA,EAAE,YAAU,KAAK,oBAAkB,MAAKT,IAAEmG,EAAEA,EAAE,SAAO;AAAG,QAAI9F,IAAE8F,EAAE;AAAG,QAAI7F;AAAE,IAAA+4C,EAAG/4C,IAAED,CAAC,KAAGu+C,GAAGt+C,CAAC,KAAG,CAACA,EAAE,QAAO,KAAI+4C,EAAG54C,CAAC,MAAI,CAACA,EAAE,QAAS,KAAEA,EAAE,kBAAmB,OAAI44C,EAAG54C,CAAC,KAAGw3C,EAAG,GAAG,GAAEx3C,EAAE,OAAO,GAAGJ,EAAE,YAAa,CAAA,GAAEA,IAAE8F,EAAE,KAAI9F,KAAG,SAAS8yC,GAAE1yC,GAAEP,GAAE;AAAC,YAAMkzC,IAAE3yC,EAAE,mBAAmB,aAAc;AAAC,UAAImK,IAAEnK;AAAE,YAAM0F,IAAE,CAAC1F,CAAC;AAAE,aAAKmK,MAAIwoC;AAAG,QAAAxoC,EAAE,oBAAkBqtC,EAAG,GAAG,GAAErtC,IAAEA,EAAE,eAAc,GAAGzE,EAAE,KAAKyE,CAAC;AAAE,UAAIyoC,IAAEF;AAAE,iBAAUA,KAAKhtC;AAAE,QAAAktC,IAAEA,EAAE,YAAYF,CAAC;AAAA,IAAC,EAAE1yC,GAAEJ,CAAC;AAAE,UAAMizC,IAAEuL,GAAGj0C,GAAEg0C,EAAE;AAAE,IAAAvL,KAAGgG,EAAG/F,CAAC,MAAID,EAAE,uBAAqBuL,GAAG5+C,CAAC,OAAKszC,EAAE,OAAO,GAAGD,EAAE,YAAa,CAAA,GAAEA,EAAE,OAAM,IAAIgG,EAAG54C,CAAC,KAAGA,EAAE,aAAWA,EAAE,OAAM,GAAGmK,EAAE,UAAS;AAAG,UAAM,IAAEyuC,EAAG54C,CAAC,IAAEA,EAAE,iBAAe;AAAK,IAAAu6C,GAAG,CAAC,KAAG1H,MAAI7yC,KAAG,EAAE,OAAQ;AAAA,EAAA;AAAA,EAAC,kBAAiB;AAAC,QAAY,KAAK,OAAO,QAArB,QAAyB;AAAC,YAAM0yC,IAAEqQ;AAAK,aAAO3H,GAAE,EAAG,OAAO,KAAK,OAAO,QAAO,GAAE,CAAC1I,CAAC,CAAC,GAAEA,EAAE,OAAQ,GAACA;AAAA,IAAC;AAAC,UAAMA,IAAEwS,GAAG,IAAI,GAAEllD,IAAEo+C,GAAG,KAAK,OAAO,QAAO,GAAGD,EAAE;AAAE,IAAAvF,EAAG54C,CAAC,KAAGw3C,EAAG,GAAG;AAAE,UAAM/3C,IAAEO,EAAE,gBAAgB0yC,CAAC,GAAEC,IAAElzC,IAAE,CAACA,GAAE,GAAGA,EAAE,iBAAiB,IAAE,CAAE,GAAC0K,IAAEnK,EAAE,eAAe,MAAK,EAAE;AAAE,WAAOmK,KAAGA,EAAE,OAAO,GAAGwoC,CAAC,GAAExoC,EAAE,eAAcA,KAAG;AAAA,EAAI;AAAA,EAAC,gBAAgBuoC,GAAE;AAAC,UAAM1yC,IAAEmjD;AAAK,QAAG,KAAK,YAAY,CAACnjD,CAAC,CAAC,GAAE0yC,GAAE;AAAC,YAAMA,IAAE1yC,EAAE,iBAAkB,GAACP,IAAEO,EAAE,qBAAsB;AAAC,MAAA0yC,EAAE,OAAOjzC,GAAEA,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,UAAMizC,IAAE,KAAK,SAAQ,GAAG1yC,IAAE0yC,EAAE,QAAOjzC,IAAEO,IAAE,GAAE2yC,IAAE,KAAK,QAAOxoC,IAAE,KAAK;AAAM,QAAIzE,IAAEgtC,EAAE,IAAGE,IAAEF,EAAEjzC;AAAG,UAAK,CAACF,GAAEK,CAAC,IAAEmlD,GAAG,IAAI;AAAE,QAAO/kD,MAAJ;AAAM,aAAM,CAAE;AAAC,QAAOA,MAAJ,GAAM;AAAC,UAAGy4C,EAAG/yC,CAAC,KAAG,CAAC,KAAK,YAAW,GAAG;AAAC,cAAMgtC,IAAEnzC,IAAEK,IAAEA,IAAEL,GAAES,IAAET,IAAEK,IAAEL,IAAEK,GAAEH,IAAEiG,EAAE,UAAUgtC,GAAE1yC,CAAC,GAAE2yC,IAAMD,MAAJ,IAAMjzC,EAAE,KAAGA,EAAE;AAAG,eAAakzC,KAAN,OAAQ,CAACA,CAAC,IAAE,CAAE;AAAA,MAAA;AAAC,aAAM,CAACjtC,CAAC;AAAA,IAAC;AAAC,UAAM7F,IAAE8yC,EAAE,SAASxoC,CAAC;AAAE,QAAGsuC,EAAG/yC,CAAC,GAAE;AAAC,YAAM1F,IAAEH,IAAEN,IAAEK;AAAE,MAAAI,MAAI0F,EAAE,uBAAqBgtC,EAAE,UAAY1yC,MAAJ,MAAQ,CAAE,EAAA0F,CAAC,IAAEA,EAAE,UAAU1F,CAAC,GAAE0yC,EAAE,KAAGhtC;AAAA,IAAE;AAAC,QAAG+yC,EAAG7F,CAAC,GAAE;AAAC,YAAM5yC,IAAE4yC,EAAE,eAAgB,EAAC,QAAOD,IAAE9yC,IAAED,IAAEL;AAAE,MAAIozC,MAAJ,IAAMD,EAAE,IAAG,IAAGC,MAAI3yC,MAAI,CAAC4yC,CAAC,IAAEA,EAAE,UAAUD,CAAC,GAAED,EAAEjzC,KAAGmzC;AAAA,IAAE;AAAC,WAAOF;AAAA,EAAC;AAAA,EAAC,OAAOA,GAAE1yC,GAAEP,GAAE;AAAC,UAAMkzC,IAAE,KAAK,OAAMxoC,IAAE,KAAK,QAAOzE,IAAWgtC,MAAT,QAAWE,IAAEgK,GAAGjK,GAAE3yC,CAAC;AAAE,QAAGw4C,GAAG5F,CAAC,KAAG,CAACA,EAAE,WAAY,GAAC;AAAC,UAAGltC,KAAGktC,EAAE,wBAAuB;AAAC,cAAMF,IAAEyS,GAAE;AAAG,eAAOzS,EAAE,IAAIE,EAAE,KAAK,GAAE,KAAKiG,GAAGnG,CAAC;AAAA,MAAC;AAAC,YAAMA,IAAE1yC,IAAE4yC,EAAE,mBAAkB,IAAGA,EAAE,eAAc;AAAG,UAAG6F,EAAG/F,CAAC,GAAE;AAAC,cAAMjzC,IAAEizC,EAAE,OAAME,IAAE5yC,IAAE0yC,EAAE,eAAc,EAAG,SAAO;AAAE,eAAOC,EAAE,IAAIlzC,GAAEmzC,GAAE,MAAM,GAAE,MAAKltC,KAAGyE,EAAE,IAAI1K,GAAEmzC,GAAE,MAAM;AAAA,MAAE;AAAC;AAAC,cAAMnzC,IAAEmzC,EAAE,iBAAkB;AAAC,YAAIrzC,GAAEK;AAAE,eAAOg5C,EAAGlG,CAAC,KAAG9yC,IAAE8yC,EAAE,OAAMnzC,IAAES,IAAE0yC,EAAE,gBAAe,IAAG,MAAInzC,IAAEqzC,EAAE,qBAAsB,GAAChzC,IAAEH,EAAE,OAAMO,KAAGT,MAAKozC,EAAE,IAAI/yC,GAAEL,GAAE,SAAS,GAAE,MAAKmG,KAAGyE,EAAE,IAAIvK,GAAEL,GAAE,SAAS;AAAA,MAAE;AAAA,IAAC;AAAC,UAAMA,IAAE65C,GAAE,GAAGx5C,IAAEo4C,GAAGz4C,EAAE,OAAO;AAAE,QAAG,CAACK;AAAE;AAAO,UAAMC,IAAEN,EAAE,qBAAoBszC,IAAEtzC,EAAE;AAAa,QAAUszC,MAAP,QAAiBhzC,MAAP,QAAU,CAAC+4C,EAAGhG,CAAC,KAAGA,EAAE,SAAU,KAAEA,EAAE,WAAY,KAAEgL,GAAG/9C,GAAEN,GAAEszC,CAAC,GAAE,SAASH,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,MAAAD,EAAE,OAAO1yC,GAAEP,GAAEkzC,CAAC;AAAA,IAAC,EAAE/yC,GAAE8yC,GAAE1yC,IAAE,aAAW,WAAUP,CAAC,GAAEG,EAAE,aAAW,GAAE;AAAC,YAAM8yC,IAAE9yC,EAAE,WAAW,CAAC,GAAEH,IAAE,KAAK,OAAO,QAAO,GAAGkzC,IAAEqK,GAAGv9C,CAAC,IAAEA,IAAE69C,GAAG79C,CAAC;AAAE,UAAG,KAAK,cAAcizC,CAAC,GAAE,KAAK,QAAM,IAAG,CAAChtC,GAAE;AAAC,cAAMjG,IAAE,KAAK,SAAQ,GAAG0K,IAAE,CAAE;AAAC,YAAIzE,IAAE;AAAG,iBAAQgtC,IAAE,GAAEA,IAAEjzC,EAAE,QAAOizC,KAAI;AAAC,gBAAM1yC,IAAEP,EAAEizC;AAAG,UAAA0K,GAAGp9C,GAAE2yC,CAAC,IAAExoC,EAAE,KAAKnK,CAAC,IAAE0F,IAAE;AAAA,QAAE;AAAC,YAAGA,KAAGyE,EAAE,SAAO;AAAE,cAAGnK,GAAE;AAAC,kBAAM0yC,IAAEvoC,EAAE;AAAG,YAAAyuC,EAAGlG,CAAC,IAAEA,EAAE,YAAW,IAAGA,EAAE,iBAAgB,EAAG,YAAW;AAAA,UAAE,OAAK;AAAC,kBAAMA,IAAEvoC,EAAEA,EAAE,SAAO;AAAG,YAAAyuC,EAAGlG,CAAC,IAAEA,EAAE,UAAW,IAACA,EAAE,iBAAkB,EAAC,UAAS;AAAA,UAAE;AAAC,QAAA9yC,EAAE,eAAa8yC,EAAE,kBAAgB9yC,EAAE,iBAAe8yC,EAAE,eAAa,SAASA,GAAE;AAAC,gBAAM1yC,IAAE0yC,EAAE,OAAMjzC,IAAEizC,EAAE,QAAOC,IAAElzC,EAAE,KAAI0K,IAAE1K,EAAE,QAAOiG,IAAEjG,EAAE;AAAK,UAAAmlD,GAAGnlD,GAAEO,EAAE,KAAIA,EAAE,QAAOA,EAAE,IAAI,GAAE4kD,GAAG5kD,GAAE2yC,GAAExoC,GAAEzE,CAAC,GAAEgtC,EAAE,eAAa;AAAA,QAAI,EAAE,IAAI;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,gBAAgBA,GAAE1yC,GAAEP,GAAE;AAAC,QAAG,CAACA,MAAgBizC,EAAE,SAAd,aAAoBkG,EAAG54C,CAAC,KAAG0yC,EAAE,WAAS1yC,EAAE,gBAAiB,KAAW0yC,EAAE,SAAX,UAAiBA,EAAE,WAAS1yC,EAAE,mBAAoB,IAAE;AAAC,YAAM0yC,IAAE1yC,EAAE,UAAW,GAACP,IAAEO,EAAE,eAAgB,MAAU0yC,MAAP,OAAS,OAAKA,EAAE,eAAc;AAAI,UAAGkG,EAAGn5C,CAAC,KAAGA,EAAE,aAAc;AAAC,eAAM;AAAA,IAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,gBAAgBizC,GAAE;AAAC,UAAMjzC,IAAE,KAAK,YAAa;AAAC,QAAG,KAAK,YAAW,GAAG;AAAC,YAAMA,IAAE,KAAK;AAAO,UAAIkzC,IAAElzC,EAAE,QAAS;AAAC,UAAG,KAAK,gBAAgBA,GAAEkzC,GAAED,CAAC;AAAE;AAAO,YAAMvoC,IAAE,KAAK,OAAMzE,IAAEk3C,GAAGzyC,GAAEuoC,CAAC;AAAE,UAAG8F,GAAG9yC,CAAC,KAAG,CAACA,EAAE,WAAY,GAAC;AAAC,YAAGA,EAAE,0BAAwBkzC,EAAGjG,CAAC,KAAOA,EAAE,gBAAiB,MAAvB,GAAwB;AAAC,UAAAA,EAAE,OAAM;AAAG,gBAAMD,IAAEyS,GAAI;AAAC,UAAAzS,EAAE,IAAIhtC,EAAE,KAAK,GAAEmzC,GAAGnG,CAAC;AAAA,QAAC;AAAM,UAAAhtC,EAAE,OAAM,GAAG0zC,GAAE,EAAG,gBAAgBp5C,IAAE,MAAM;AAAE;AAAA,MAAM;AAAC,UAAG,CAAC0yC,KAAGkG,EAAGlzC,CAAC,KAAGkzC,EAAGjG,CAAC,KAAGA,EAAE,QAAS;AAAC,eAAOA,EAAE,OAAM,GAAG,KAAKjtC,EAAE;AAAc,UAAG,KAAK,OAAO,UAASgtC,GAAE,WAAW,GAAE,KAAK,YAAW;AAAI,YAAGA,KAAOjzC,EAAE,WAAN,MAA8BA,EAAE,SAAd,YAAmBA,EAAE,YAAUA,EAAE,QAAO,EAAG,oBAAoB,gBAAgB,IAAI;AAAE;AAAA,aAAY;AAAC,cAAMO,IAAWmK,EAAE,SAAX,SAAgBA,EAAE,QAAO,IAAG;AAAK,YAAGwoC,IAAWlzC,EAAE,SAAX,SAAgBA,EAAE,QAAO,IAAG,MAAYO,MAAP,QAAUA,EAAE,eAAc;AAAC,gBAAMP,IAAE0K,EAAE,QAAOzE,IAAE1F,EAAE;AAAqB,cAAGA,EAAE,GAAG2yC,CAAC,KAAGD,KAAGjzC,MAAIiG,KAAG,CAACgtC,KAAOjzC,MAAJ;AAAM,mBAAO,KAAK2lD,GAAGplD,GAAE0yC,GAAEjzC,CAAC;AAAA,QAAC,WAAgBkzC,MAAP,QAAUA,EAAE,YAAa,GAAC;AAAC,gBAAMxoC,IAAE1K,EAAE,QAAOiG,IAAEitC,EAAE,mBAAkB;AAAG,cAAGA,EAAE,GAAG3yC,CAAC,KAAG0yC,KAAOvoC,MAAJ,KAAO,CAACuoC,KAAGvoC,MAAIzE;AAAE,mBAAO,KAAK0/C,GAAGzS,GAAED,GAAEvoC,CAAC;AAAA,QAAC;AAAC,SAAC,SAASuoC,GAAE1yC,GAAE;AAAC,gBAAMP,IAAEizC,EAAE,QAAOC,IAAED,EAAE,OAAMvoC,IAAE1K,EAAE,WAAUiG,IAAEitC,EAAE,QAAO;AAAG,cAAGxoC,MAAIzE,KAAYjG,EAAE,SAAX,UAA0BkzC,EAAE,SAAX,QAAgB;AAAC,kBAAMD,IAAEjzC,EAAE,QAAOiG,IAAEitC,EAAE,QAAOC,IAAEF,IAAEhtC,GAAEnG,IAAEqzC,IAAEF,IAAEhtC,GAAE9F,IAAEgzC,IAAEltC,IAAEgtC,GAAE7yC,IAAED,IAAE;AAAE,YAAGL,MAAIM,MAAG07C,GAAGpxC,EAAE,eAAgB,EAAC,MAAM5K,GAAEK,CAAC,CAAC,MAAII,IAAE2yC,EAAE,SAAO9yC,IAAEJ,EAAE,SAAOI;AAAA,UAAG;AAAA,QAAC,GAAE,MAAK6yC,CAAC;AAAA,MAAC;AAAA,IAAC;AAAC,QAAG,KAAK,cAAaA,KAAG,CAACjzC,KAAG,KAAK,iBAA2B,KAAK,OAAO,SAAxB,aAAkC,KAAK,OAAO,WAAhB,GAAuB;AAAC,YAAMizC,IAAE,KAAK,OAAO,QAAO;AAAG,MAAAA,EAAE,QAAO,KAAIsK,GAAGtK,EAAE,UAAS,CAAE,KAAOA,EAAE,qBAAoB,MAA1B,KAA8BA,EAAE,gBAAgB,IAAI;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,WAAWA,GAAE;AAAC,QAAG,KAAK,eAAc;AAAC,YAAM1yC,IAAc,KAAK,OAAO,SAAxB;AAA4F,UAA/DA,KAAG,KAAK,WAAW,GAAG,GAAE,KAAK,OAAO,UAAS0yC,GAAE,cAAc,IAAUA,IAAE,KAAK,QAAM,KAAK,QAAQ,WAA/B,KAAuC,KAAK,OAAO,UAASA,GAAE,WAAW,GAAE1yC,GAAE;AAAC,cAAMA,IAAE0yC,IAAE,KAAK,SAAO,KAAK;AAAM,QAAA1yC,EAAE,IAAIA,EAAE,KAAIA,EAAE,SAAO,GAAEA,EAAE,IAAI;AAAA,MAAC;AAAA,IAAC;AAAC,SAAK,WAAU;AAAA,EAAE;AAAA,EAAC,WAAW0yC,GAAE;AAAC,QAAG,KAAK,YAAW,GAAG;AAAC,YAAM1yC,IAAE,KAAK,QAAOP,IAAEO,EAAE,QAAO;AAAG,UAAG,KAAK,gBAAgBA,GAAEP,GAAEizC,CAAC;AAAE;AAAO,WAAK,OAAO,UAASA,GAAE,MAAM;AAAA,IAAC;AAAC,SAAK,WAAU;AAAA,EAAE;AAAA,EAAC,aAAY;AAAC,WAAO,KAAK,MAAM,SAAS,KAAK,MAAM;AAAA,EAAC;AAAA,EAAC,oBAAmB;AAAC,WAAM,CAAC,KAAK,QAAO,KAAK,KAAK;AAAA,EAAC;AAAC;AAAC,SAAS2O,GAAG3O,GAAE;AAAC,SAAOA,aAAamS;AAAE;AAAC,SAASQ,GAAG3S,GAAE;AAAC,QAAM,IAAEA,EAAE;AAAO,MAAYA,EAAE,SAAX;AAAgB,WAAO;AAAE,QAAMjzC,IAAEizC,EAAE,QAAS;AAAC,SAAO,MAAIjzC,EAAE,gBAAiB,IAACA,EAAE,eAAgB,EAAC,SAAO;AAAC;AAAC,SAASslD,GAAGrS,GAAE;AAAC,QAAM,IAAEA,EAAE,kBAAiB;AAAG,MAAU,MAAP;AAAS,WAAM,CAAC,GAAE,CAAC;AAAE,QAAK,CAACjzC,GAAE,CAAC,IAAE;AAAE,SAAkBA,EAAE,SAAd,aAAgC,EAAE,SAAd,aAAoBA,EAAE,QAAM,EAAE,OAAKA,EAAE,WAAS,EAAE,SAAO,CAAC,GAAE,CAAC,IAAE,CAAC4lD,GAAG5lD,CAAC,GAAE4lD,GAAG,CAAC,CAAC;AAAC;AAAC,SAASD,GAAG1S,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAEizC,GAAEvoC,IAAE,EAAE,eAAc,EAAG,MAAM,SAAS,GAAE,IAAEA,EAAE;AAAO,MAAIyoC,IAAE,GAAE,IAAE;AAAE,WAAQF,IAAE,GAAEA,IAAE,GAAEA,KAAI;AAAC,UAAMC,IAAED,MAAI,IAAE;AAAE,QAAG,IAAEE,GAAEA,KAAGzoC,EAAEuoC,GAAG,QAAO,KAAGE,MAAInzC,KAAGmzC,IAAEnzC,KAAGkzC,GAAE;AAAC,MAAAxoC,EAAE,OAAOuoC,GAAE,CAAC,GAAEC,MAAI,IAAE;AAAQ;AAAA,IAAK;AAAA,EAAC;AAAC,QAAM,IAAExoC,EAAE,KAAK,EAAE,EAAE,KAAM;AAAC,EAAK,MAAL,KAAO,EAAE,OAAM,KAAI,EAAE,eAAe,CAAC,GAAE,EAAE,OAAO,GAAE,CAAC;AAAE;AAAC,SAASm7C,GAAG5S,GAAE,GAAEjzC,GAAE,GAAE;AAAC,MAAI0K,GAAE,IAAE;AAAE,MAAGuoC,EAAE,aAAWyC,IAAG;AAAC,QAAIvC,IAAE;AAAG,UAAM,IAAEF,EAAE,YAAW,IAAE,EAAE,QAAO,IAAE,EAAE;AAAoB,UAAI,MAAIE,IAAE,IAAG,IAAE,IAAE;AAAG,QAAI,IAAE,EAAE,IAAGxzC,IAAE;AAAG,QAAG,MAAI;AAAE,UAAE,EAAE,IAAE,IAAGA,IAAE;AAAA,aAAkB,MAAP,MAAS;AAAC,YAAMK,IAAE,EAAE;AAAW,MAAGizC,MAAIjzC,KAAG,IAAE,MAAM,UAAU,QAAQ,KAAKA,EAAE,UAAS,CAAC,KAAG;AAAA,IAAI;AAAC,QAAG0K,IAAEkxC,GAAG,CAAC,GAAE5C,EAAGtuC,CAAC;AAAE,UAAEmxC,GAAGnxC,GAAEyoC,CAAC;AAAA,SAAM;AAAC,UAAID,IAAE0I,GAAG3I,CAAC;AAAE,UAAUC,MAAP;AAAS,eAAO;AAAK,UAAGiG,EAAGjG,CAAC,GAAE;AAAC,YAAE,KAAK,IAAIA,EAAE,mBAAkB,CAAC;AAAE,YAAID,IAAEC,EAAE,gBAAgB,CAAC;AAAE,YAAGiG,EAAGlG,CAAC,KAAG,SAASA,GAAE1yC,GAAEP,GAAE;AAAC,gBAAMkzC,IAAED,EAAE;AAAY,iBAAcjzC,MAAP,QAAiBkzC,MAAP,QAAU,CAACA,EAAE,WAAU,KAAIA,MAAIlzC,EAAE,QAAS;AAAA,QAAA,EAAEizC,GAAE,GAAEjzC,CAAC,GAAE;AAAC,gBAAMO,IAAE4yC,IAAEF,EAAE,sBAAoBA,EAAE,mBAAkB;AAAG,UAAO1yC,MAAP,OAAS2yC,IAAED,KAAGA,IAAE1yC,GAAE2yC,IAAEiG,EAAGlG,CAAC,IAAEA,IAAEA,EAAE,qBAAoB,IAAE;AAAA,QAAC;AAAC,QAAA+F,EAAG/F,CAAC,KAAGvoC,IAAEuoC,GAAEC,IAAE,MAAK,IAAE2I,GAAG5I,GAAEE,CAAC,KAAGF,MAAIC,KAAGC,KAAG,CAACxzC,KAAG;AAAA,MAAG,OAAK;AAAC,cAAMK,IAAEkzC,EAAE,qBAAsB;AAAC,YAAM,MAAJ,KAAO6F,GAAG7F,CAAC,KAAG0I,GAAG3I,CAAC,MAAIC,IAAElzC,IAAEA,IAAE,GAAEkzC,IAAEA,EAAE,iBAAgB;AAAA,MAAE;AAAC,UAAGiG,EAAGjG,CAAC;AAAE,eAAO+R,GAAG/R,EAAE,OAAM,GAAE,SAAS;AAAA,IAAC;AAAA,EAAC;AAAM,IAAAxoC,IAAEkxC,GAAG3I,CAAC;AAAE,SAAO+F,EAAGtuC,CAAC,IAAEu6C,GAAGv6C,EAAE,OAAM,GAAE,MAAM,IAAE;AAAI;AAAC,SAASo7C,GAAG7S,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAEizC,EAAE,QAAOvoC,IAAEuoC,EAAE,QAAO;AAAG,MAAO,MAAJ,GAAM;AAAC,UAAMC,IAAExoC,EAAE,mBAAoB,GAACzE,IAAEyE,EAAE,UAAW;AAAC,QAAG;AAAG,WAAI1K,KAAG,CAAC,MAAWkzC,MAAP,QAAUiG,EAAGlzC,CAAC,KAAGA,EAAE,SAAQ,GAAG;AAAC,cAAM1F,IAAE0F,EAAE,mBAAoB;AAAC,QAAA+yC,EAAGz4C,CAAC,MAAI0yC,EAAE,MAAI1yC,EAAE,OAAM0yC,EAAE,SAAO1yC,EAAE,eAAgB,EAAC;AAAA,MAAO;AAAA;AAAO,MAAA44C,EAAGjG,CAAC,KAAG,CAAClzC,KAAGkzC,EAAE,SAAU,KAAED,EAAE,MAAIC,EAAE,OAAMD,EAAE,SAAOC,EAAE,gBAAe,GAAGD,EAAE,OAAK,aAAW+F,EAAG9F,CAAC,MAAID,EAAE,MAAIC,EAAE,OAAMD,EAAE,SAAOC,EAAE,iBAAiB;AAAA,EAAO,WAAS,MAAIxoC,EAAE,eAAgB,EAAC,QAAO;AAAC,UAAMwoC,IAAExoC,EAAE,eAAc,GAAGzE,IAAEyE,EAAE,UAAS;AAAG,QAAG,KAAGyuC,EAAGjG,CAAC,KAAGA,EAAE,SAAQ;AAAG,MAAAD,EAAE,MAAIC,EAAE,OAAMD,EAAE,SAAO,GAAEA,EAAE,OAAK;AAAA,cAAmBjzC,KAAG,MAAWkzC,MAAP,QAAUiG,EAAGlzC,CAAC,KAAGA,EAAE,SAAQ,KAAI,CAACA,EAAE,mBAAoB,GAAC;AAAC,YAAM1F,IAAE0F,EAAE,eAAc;AAAG,MAAA+yC,EAAGz4C,CAAC,MAAI0yC,EAAE,MAAI1yC,EAAE,OAAM0yC,EAAE,SAAO;AAAA,IAAE;AAAA,EAAC;AAAC;AAAC,SAASuS,GAAGvS,GAAE,GAAEjzC,GAAE;AAAC,MAAYizC,EAAE,SAAX,UAA0B,EAAE,SAAX,QAAgB;AAAC,UAAM,IAAEA,EAAE,SAAS,CAAC,GAAEvoC,IAAEuoC,EAAE,GAAG,CAAC;AAAE,IAAA6S,GAAG7S,GAAE,GAAEvoC,CAAC,GAAEo7C,GAAG,GAAE,CAAC,GAAEp7C,CAAC,GAAEA,MAAI,EAAE,MAAIuoC,EAAE,KAAI,EAAE,SAAOA,EAAE,QAAO,EAAE,OAAKA,EAAE;AAAM,UAAM,IAAE0G,GAAE;AAAG,QAAG,EAAE,YAAa,KAAE,EAAE,oBAAkB1G,EAAE,OAAKyF,EAAG14C,CAAC,GAAE;AAAC,YAAMkzC,IAAElzC,EAAE,QAAO0K,IAAE1K,EAAE;AAAM,MAAAmlD,GAAGlS,GAAEC,EAAE,KAAIA,EAAE,QAAOA,EAAE,IAAI,GAAEiS,GAAG,GAAEz6C,EAAE,KAAIA,EAAE,QAAOA,EAAE,IAAI;AAAA,IAAC;AAAA,EAAC;AAAC;AAAC,SAAS66C,GAAGtS,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE,GAAE;AAAC,MAAUuoC,MAAP,QAAiBjzC,MAAP,QAAU,CAACo6C,GAAG1vC,GAAEuoC,GAAEjzC,CAAC;AAAE,WAAO;AAAK,QAAMmzC,IAAE0S,GAAG5S,GAAE,GAAEyF,EAAG,CAAC,IAAE,EAAE,SAAO,MAAKhuC,CAAC;AAAE,MAAUyoC,MAAP;AAAS,WAAO;AAAK,QAAM,IAAE0S,GAAG7lD,GAAE,GAAE04C,EAAG,CAAC,IAAE,EAAE,QAAM,MAAKhuC,CAAC;AAAE,MAAU,MAAP;AAAS,WAAO;AAAK,MAAeyoC,EAAE,SAAd,aAAgC,EAAE,SAAd,WAAmB;AAAC,UAAM5yC,IAAEq7C,GAAG3I,CAAC,GAAEC,IAAE0I,GAAG57C,CAAC;AAAE,QAAG+4C,GAAGx4C,CAAC,KAAGw4C,GAAG7F,CAAC;AAAE,aAAO;AAAA,EAAI;AAAC,SAAOsS,GAAGrS,GAAE,GAAE,CAAC,GAAE,CAACA,GAAE,CAAC;AAAC;AAAC,SAAS4S,GAAG9S,GAAE;AAAC,SAAOkG,EAAGlG,CAAC,KAAG,CAACA,EAAE,SAAQ;AAAE;AAAC,SAASqR,GAAGrR,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE,GAAE;AAAC,QAAMyoC,IAAE+H,GAAI,GAAC,IAAE,IAAImK,GAAGJ,GAAGhS,GAAE,GAAEvoC,CAAC,GAAEu6C,GAAGjlD,GAAE,GAAE,CAAC,GAAE,GAAE,EAAE;AAAE,SAAO,EAAE,QAAM,IAAGmzC,EAAE,aAAW,GAAE;AAAC;AAAC,SAAS6S,KAAI;AAAC,QAAM/S,IAAEgS,GAAG,QAAO,GAAE,SAAS,GAAE,IAAEA,GAAG,QAAO,GAAE,SAAS;AAAE,SAAO,IAAII,GAAGpS,GAAE,GAAE,GAAE,EAAE;AAAC;AAAC,SAASyS,KAAI;AAAC,SAAO,IAAIN,GAAG,oBAAI,KAAG;AAAC;AAAC,SAASa,GAAGhT,GAAE,GAAE;AAAC,SAAOkP,GAAG,MAAKlP,GAAE,GAAE,IAAI;AAAC;AAAC,SAASkP,GAAGlP,GAAE,GAAEjzC,GAAE,GAAE;AAAC,QAAM0K,IAAE1K,EAAE;AAAQ,MAAU0K,MAAP;AAAS,WAAO;AAAK,QAAM,IAAE,KAAGA,EAAE,OAAMyoC,IAAE,IAAE,EAAE,OAAK,QAAO,IAAsBA,MAApB,mBAAsB,IAAE,CAAC+E,OAAK,KAAmB/E,MAAhB,iBAAwCA,MAArB,sBAA2CA,MAAnB,oBAAgCA,MAAV,WAAa,KAAO,EAAE,WAAN,KAAuBA,MAAT,UAAqBA,MAAT;AAAY,MAAI,GAAE,GAAExzC,GAAE0zC;AAAE,MAAGqF,EAAGzF,CAAC,KAAG,CAAC;AAAE,WAAOA,EAAE;AAAQ,MAAU,MAAP;AAAS,WAAO;AAAK,MAAG,IAAE,EAAE,YAAW,IAAE,EAAE,WAAUtzC,IAAE,EAAE,cAAa0zC,IAAE,EAAE,aAAY,KAAGqF,EAAGzF,CAAC,KAAG,CAACmH,GAAGp6C,GAAE,GAAE,CAAC;AAAE,WAAOizC,EAAE,MAAO;AAAC,QAAM,IAAEsS,GAAG,GAAE5lD,GAAE,GAAE0zC,GAAErzC,GAAEizC,CAAC;AAAE,MAAU,MAAP;AAAS,WAAO;AAAK,QAAK,CAAC,GAAEM,CAAC,IAAE;AAAE,SAAO,IAAI8R,GAAG,GAAE9R,GAAEmF,EAAGzF,CAAC,IAAEA,EAAE,SAAO,GAAEyF,EAAGzF,CAAC,IAAEA,EAAE,QAAM,EAAE;AAAC;AAAC,SAAS4F,KAAI;AAAC,SAAOqC,GAAE,EAAG;AAAU;AAAC,SAASiB,KAAI;AAAC,SAAOxC,GAAE,EAAG,aAAa;AAAU;AAAC,SAASwJ,GAAGlQ,GAAE,GAAEjzC,GAAE,IAAE,GAAE;AAAC,QAAM0K,IAAEuoC,EAAE,QAAO,IAAEA,EAAE,OAAME,IAAEzoC,EAAE,QAAS,GAAC,IAAE,EAAE,QAAS;AAAC,MAAG,CAAC,EAAE,GAAGyoC,CAAC,KAAG,CAAC,EAAE,GAAG,CAAC;AAAE;AAAO,QAAM,IAAE,EAAE;AAAM,MAAGF,EAAE,YAAW,GAAG;AAAC,UAAM1yC,IAAEmK,EAAE;AAAO,QAAG1K,KAAGO,KAAG,IAAE,KAAGP,IAAEO,KAAG,IAAE,GAAE;AAAC,YAAMP,IAAE,KAAK,IAAI,GAAEO,IAAE,CAAC;AAAE,MAAAmK,EAAE,IAAI,GAAE1K,GAAE,SAAS,GAAE,EAAE,IAAI,GAAEA,GAAE,SAAS,GAAEkmD,GAAGjT,CAAC;AAAA,IAAC;AAAA,EAAC,OAAK;AAAC,UAAME,IAAEF,EAAE,cAAanzC,IAAEqzC,IAAE,IAAEzoC,GAAEtK,IAAEN,EAAE,QAAO,GAAGszC,IAAED,IAAEzoC,IAAE,GAAE/K,IAAEyzC,EAAE,QAAO;AAAG,QAAG,EAAE,GAAGhzC,CAAC,GAAE;AAAC,YAAM6yC,IAAEnzC,EAAE;AAAO,OAACE,KAAGizC,KAAG,IAAE,KAAGjzC,IAAEizC,KAAG,IAAE,MAAInzC,EAAE,IAAI,GAAE,KAAK,IAAI,GAAEmzC,IAAE,CAAC,GAAE,SAAS;AAAA,IAAC;AAAC,QAAG,EAAE,GAAGtzC,CAAC,GAAE;AAAC,YAAMszC,IAAEG,EAAE;AAAO,OAACpzC,KAAGizC,KAAG,IAAE,KAAGjzC,IAAEizC,KAAG,IAAE,MAAIG,EAAE,IAAI,GAAE,KAAK,IAAI,GAAEH,IAAE,CAAC,GAAE,SAAS;AAAA,IAAC;AAAA,EAAC;AAAC,EAAAiT,GAAGjT,CAAC;AAAC;AAAC,SAASiT,GAAGjT,GAAE;AAAC,QAAM,IAAEA,EAAE,QAAOjzC,IAAE,EAAE,QAAO,IAAEizC,EAAE,OAAMvoC,IAAE,EAAE,QAAO,IAAE,EAAE,QAAS,GAACyoC,IAAE,EAAE,QAAS;AAAC,MAAGF,EAAE,YAAW,GAAG;AAAC,QAAG,CAACkG,EAAG,CAAC;AAAE;AAAO,UAAMlG,IAAE,EAAE,gBAAiB,GAACvoC,IAAE1K,KAAGizC,GAAEE,IAAEzoC,IAAE,EAAE,gBAAgBuoC,IAAE,CAAC,IAAE,EAAE,gBAAgBjzC,CAAC;AAAE,QAAGg5C,EAAG7F,CAAC,GAAE;AAAC,UAAIF,IAAE;AAAE,MAAAvoC,MAAIuoC,IAAEE,EAAE,uBAAsB,EAAE,IAAIA,EAAE,OAAMF,GAAE,MAAM,GAAE,EAAE,IAAIE,EAAE,OAAMF,GAAE,MAAM;AAAA,IAAC;AAAA,EAAC,OAAK;AAAC,QAAGkG,EAAG,CAAC,GAAE;AAAC,YAAMlG,IAAE,EAAE,gBAAiB,GAACC,IAAElzC,KAAGizC,GAAEvoC,IAAEwoC,IAAE,EAAE,gBAAgBD,IAAE,CAAC,IAAE,EAAE,gBAAgBjzC,CAAC;AAAE,UAAGg5C,EAAGtuC,CAAC,GAAE;AAAC,YAAIuoC,IAAE;AAAE,QAAAC,MAAID,IAAEvoC,EAAE,mBAAkB,IAAI,EAAE,IAAIA,EAAE,OAAMuoC,GAAE,MAAM;AAAA,MAAC;AAAA,IAAC;AAAC,QAAGkG,EAAGhG,CAAC,GAAE;AAAC,YAAMF,IAAEE,EAAE,gBAAe,GAAG5yC,IAAEmK,KAAGuoC,GAAEjzC,IAAEO,IAAE4yC,EAAE,gBAAgBF,IAAE,CAAC,IAAEE,EAAE,gBAAgBzoC,CAAC;AAAE,UAAGsuC,EAAGh5C,CAAC,GAAE;AAAC,YAAIizC,IAAE;AAAE,QAAA1yC,MAAI0yC,IAAEjzC,EAAE,mBAAoB,IAAE,EAAE,IAAIA,EAAE,OAAMizC,GAAE,MAAM;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;AAAC;AAAC,SAASiQ,GAAGjQ,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE;AAAC,MAAI,IAAE,MAAKyoC,IAAE,GAAE,IAAE;AAAK,EAAO,MAAP,QAAU,IAAE,EAAE,OAAM6F,EAAG,CAAC,KAAG7F,IAAE,EAAE,mBAAkB,GAAG,IAAE,UAAQgG,EAAG,CAAC,MAAIhG,IAAE,EAAE,gBAAe,GAAG,IAAE,cAAmBzoC,MAAP,SAAW,IAAEA,EAAE,OAAMsuC,EAAGtuC,CAAC,IAAE,IAAE,SAAOyuC,EAAGzuC,CAAC,MAAI,IAAE,aAAmB,MAAP,QAAiB,MAAP,OAASuoC,EAAE,IAAI,GAAEE,GAAE,CAAC,KAAGA,IAAE,EAAE,wBAA4BA,MAAL,OAASA,IAAEnzC,EAAE,gBAAe,IAAIizC,EAAE,IAAIjzC,EAAE,OAAMmzC,GAAE,SAAS;AAAE;AAAC,SAASoR,GAAGtR,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE;AAAC,EAASuoC,EAAE,SAAX,UAAiBA,EAAE,MAAIjzC,GAAE,MAAIizC,EAAE,UAAQvoC,MAAIuoC,EAAE,SAAO,EAAE,qBAAoB,MAAKA,EAAE,UAAQ;AAAE;AAAC,SAASkT,GAAGlT,GAAE,GAAEjzC,GAAE,GAAE0K,GAAE,GAAEyoC,GAAE;AAAC,QAAM,IAAE,EAAE,YAAW,IAAE,EAAE,WAAU,IAAE,EAAE,cAAa,IAAE,EAAE,aAAYxzC,IAAE,SAAS;AAAc,MAAG+K,EAAE,IAAI,eAAe,KAAG/K,MAAI,KAAUA,MAAP,QAAUu6C,GAAGv6C,CAAC;AAAE;AAAO,MAAG,CAAC+4C,EAAG,CAAC;AAAE,WAAO,MAAYzF,MAAP,QAAUmH,GAAGp6C,GAAE,GAAE,CAAC,KAAG,EAAE;AAAmB,QAAMqzC,IAAE,EAAE,QAAO,IAAE,EAAE,OAAM,IAAEA,EAAE,KAAIE,IAAE,EAAE,KAAItzC,IAAEu9C,GAAGx9C,GAAE,CAAC,GAAE,IAAEw9C,GAAGx9C,GAAEuzC,CAAC,GAAE,IAAEF,EAAE,QAAO,IAAE,EAAE,QAAOI,IAAE,EAAE,QAAOC,IAAE,EAAE,OAAMC,IAAE,EAAE,YAAa;AAAC,MAAIC,IAAE3zC,GAAEJ,IAAE,GAAES,IAAE;AAAG,MAAY+yC,EAAE,SAAX,QAAgB;AAAC,IAAAO,IAAE+G,GAAG16C,CAAC;AAAE,UAAMgzC,KAAEI,EAAE,QAAO;AAAG,IAAA/yC,IAAE2yC,GAAE,UAAS,MAAKQ,KAAGR,GAAE,SAAU,MAAGS;AAAA,EAAC;AAAM,IAAAgF,EAAGzF,CAAC,KAAYA,EAAE,OAAO,SAAlB,WAAyB3yC,IAAE;AAAI,MAAIuzC,GAAEC,GAAEC,GAAEC,GAAEC;AAAE,MAAa,EAAE,SAAX,WAAkBp0C,IAAE86C,GAAG,CAAC,IAAU/G,MAAP,QAAiB/zC,MAAP,SAAY8zC,MAAWV,MAAP,QAAU3yC,KAAGo4C,EAAGzF,CAAC,MAAIA,EAAE,WAASQ,KAAGR,EAAE,UAAQS,QAAMG,IAAEJ,GAAEK,IAAEJ,GAAEK,IAAE,GAAEC,IAAE,GAAEC,IAAE,YAAY,IAAK,GAACsO,KAAG,CAAC1O,GAAEC,GAAEC,GAAEC,GAAEC,CAAC,IAAG,MAAI,KAAG,MAAI,KAAG,MAAIL,KAAG,MAAI/zC,KAAa,EAAE,SAAZ,WAAkB8zC,MAAWh0C,MAAP,QAAU,EAAE,SAASA,CAAC,KAAG,EAAE,MAAM,EAAC,eAAc,GAAE,CAAC,GAAc0zC,EAAE,SAAd,aAAqB;AAAC,QAAG;AAAC,QAAE,iBAAiBO,GAAE,GAAE/zC,GAAE,CAAC;AAAA,IAAC,QAAC;AAAA,IAAU;AAAA,QAAG,CAAC6K,EAAE,IAAI,uBAAuB,KAAG,EAAE,YAAa,KAAS,MAAP,QAAU,MAAI,SAAS,eAAc;AAAC,YAAMuoC,KAAE,aAAaoS,MAAgB,EAAE,OAAO,SAArB,YAA0BzR,EAAE,WAAW,MAAI,OAAK,EAAE,aAAW,IAAE,EAAE,WAAW,CAAC,IAAE;AAAK,UAAUX,OAAP,MAAS;AAAC,YAAI1yC;AAAE,YAAG0yC,cAAa,MAAK;AAAC,gBAAMjzC,IAAE,SAAS;AAAc,UAAAA,EAAE,WAAWizC,EAAC,GAAE1yC,KAAEP,EAAE,sBAAqB;AAAA,QAAE;AAAM,UAAAO,KAAE0yC,GAAE,sBAAqB;AAAG,SAAC,SAASA,GAAE1yC,IAAEP,IAAE;AAAC,gBAAMkzC,KAAElzC,GAAE,eAAc0K,KAAEwoC,GAAE;AAAY,cAAUxoC,OAAP;AAAS;AAAO,cAAG,EAAC,KAAIzE,IAAE,QAAOktC,GAAC,IAAE5yC,IAAET,KAAE,GAAEK,KAAE,GAAEC,KAAEJ;AAAE,iBAAYI,OAAP,QAAU;AAAC,kBAAMG,KAAEH,OAAI8yC,GAAE;AAAK,gBAAG3yC;AAAE,cAAAT,KAAE,GAAEK,KAAEq5C,GAAGvG,CAAC,EAAE;AAAA,iBAAgB;AAAC,oBAAMA,KAAE7yC,GAAE;AAAwB,cAAAN,KAAEmzC,GAAE,KAAI9yC,KAAE8yC,GAAE;AAAA,YAAM;AAAC,gBAAIjzC,KAAE;AAAE,gBAAGiG,KAAEnG,KAAEE,KAAE,EAAEF,KAAEmG,MAAGktC,KAAEhzC,OAAIH,KAAEmzC,KAAEhzC,KAAOH,OAAJ;AAAM,kBAAGO;AAAE,gBAAAmK,GAAE,SAAS,GAAE1K,EAAC;AAAA,mBAAM;AAAC,sBAAMizC,KAAE7yC,GAAE;AAAU,gBAAAA,GAAE,aAAWJ;AAAE,sBAAMO,KAAEH,GAAE,YAAU6yC;AAAE,gBAAAhtC,MAAG1F,IAAE4yC,MAAG5yC;AAAA,cAAC;AAAC,gBAAGA;AAAE;AAAM,YAAAH,KAAEo6C,GAAGp6C,EAAC;AAAA,UAAC;AAAA,QAAC,GAAEJ,GAAEO,IAAE,CAAC;AAAA,MAAC;AAAA,IAAC;AAAC,IAAA+hD,KAAG;AAAA,EAAE;AAAC;AAAC,SAAS8D,GAAGnT,GAAE;AAAC,MAAI,IAAE4F,QAAMsD,GAAI;AAAC,EAAO,MAAP,SAAW,IAAER,GAAE,EAAG,cAAa,EAAE,YAAY1I,CAAC;AAAC;AAAC,SAASoT,KAAI;AAAC,QAAMpT,IAAE4F,GAAI;AAAC,SAAc5F,MAAP,OAAS,KAAGA,EAAE;AAAgB;AAAC,SAASwS,GAAGxS,GAAE;AAAC,MAAI,IAAEA;AAAE,EAAAA,EAAE,YAAa,KAAE,EAAE,WAAY;AAAC,QAAMjzC,IAAE64C,GAAE;AAAG,EAAAH,EAAG14C,CAAC,MAAI,IAAEA,IAAG04C,EAAG,CAAC,KAAGX,EAAG,GAAG;AAAE,QAAM,IAAE,EAAE;AAAO,MAAIrtC,IAAE,EAAE,QAAS,GAAC,IAAE,EAAE;AAAO,SAAK,CAACg0C,GAAGh0C,CAAC;AAAG,KAACA,GAAE,CAAC,IAAE47C,GAAG57C,GAAE,CAAC;AAAE,SAAO;AAAC;AAAC,SAAS47C,GAAGrT,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE,UAAW;AAAC,MAAG,CAACjzC,GAAE;AAAC,UAAMizC,IAAEqQ,GAAI;AAAC,WAAO3H,KAAK,OAAO1I,CAAC,GAAEA,EAAE,UAAS,CAAC0I,GAAE,GAAG,CAAC;AAAA,EAAC;AAAC,MAAG3C,EAAG/F,CAAC,GAAE;AAAC,UAAMC,IAAED,EAAE,UAAU,CAAC;AAAE,QAAOC,EAAE,WAAN;AAAa,aAAM,CAAClzC,GAAEizC,EAAE,qBAAoB,CAAE;AAAE,UAAMvoC,IAAM,MAAJ,IAAM,IAAE;AAAE,WAAM,CAAC1K,GAAEkzC,EAAE,GAAG,yBAAuBxoC,CAAC;AAAA,EAAC;AAAC,MAAG,CAACyuC,EAAGlG,CAAC,KAAO,MAAJ;AAAM,WAAM,CAACjzC,GAAEizC,EAAE,sBAAsB;AAAE,QAAM,IAAEA,EAAE,gBAAgB,CAAC;AAAE,MAAG,GAAE;AAAC,UAAMjzC,IAAE,IAAIqlD,GAAGJ,GAAGhS,EAAE,OAAM,GAAE,SAAS,GAAEgS,GAAGhS,EAAE,OAAM,GAAE,SAAS,GAAE,GAAE,EAAE,GAAEvoC,IAAEuoC,EAAE,eAAejzC,CAAC;AAAE,IAAA0K,KAAGA,EAAE,OAAO,GAAE,GAAG,EAAE,iBAAiB;AAAA,EAAC;AAAC,SAAM,CAAC1K,GAAEizC,EAAE,yBAAuB,CAAC;AAAC;AAAC,IAAIsT,KAAG,MAAKC,KAAG,MAAKC,KAAG,IAAGC,KAAG,IAAGC,KAAG;AAAE,MAAMC,KAAG,EAAC,eAAc,IAAG,WAAU,IAAG,SAAQ,GAAE;AAAE,SAASpL,KAAI;AAAC,SAAOiL,MAAWF,OAAP,QAAWA,GAAG;AAAS;AAAC,SAASvL,KAAI;AAAC,EAAAyL,MAAI1O,EAAG,EAAE;AAAC;AAAC,SAASkD,KAAI;AAAC,EAAA0L,KAAG,MAAI5O,EAAG,EAAE;AAAC;AAAC,SAASmD,KAAI;AAAC,SAAcqL,OAAP,QAAWxO,EAAG,KAAI8O,IAAI,GAAEN;AAAE;AAAC,SAAS5M,KAAI;AAAC,SAAc6M,OAAP,QAAWzO,EAAG,KAAI8O,GAAE,CAAE,GAAEL;AAAE;AAAC,SAASK,KAAI;AAAC,MAAI5T,IAAE;AAAE,QAAM,IAAE,oBAAI,OAAIjzC,IAAEu6C,GAAG;AAAQ,MAAgB,OAAO,SAApB;AAA2B,eAAUrH,KAAK,SAAS,iBAAiB,mBAAmB,GAAE;AAAC,YAAMxoC,IAAEyvC,GAAGjH,CAAC;AAAE,UAAGoH,GAAG5vC,CAAC;AAAE,QAAAuoC;AAAA,eAAYvoC,GAAE;AAAC,YAAIuoC,IAAE,OAAOvoC,EAAE,YAAY,WAAS,SAAS;AAAE,QAAAuoC,MAAIjzC,MAAIizC,KAAG,8DAA6D,EAAE,IAAIA,CAAC;AAAA,MAAC;AAAA,IAAC;AAAC,MAAI,IAAE,0BAA0BA,uCAAuCjzC;AAAI,SAAO,EAAE,SAAO,KAAG,2CAA2C,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,MAAK;AAAC;AAAC,SAAS8mD,KAAI;AAAC,SAAON;AAAE;AAAC,SAASO,GAAG9T,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAE,EAAE,QAAO0K,IAAE,SAASuoC,GAAE1yC,GAAE;AAAC,UAAMP,IAAEizC,EAAE,OAAO,IAAI1yC,CAAC;AAAE,WAAgBP,MAAT,UAAY+3C,EAAG,IAAGx3C,CAAC,GAAEP;AAAA,EAAC,EAAEizC,GAAE,CAAC;AAAE,MAAI,IAAEjzC,EAAE,IAAI,CAAC;AAAE,EAAS,MAAT,WAAa,IAAE,MAAM,KAAK0K,EAAE,UAAU,GAAE1K,EAAE,IAAI,GAAE,CAAC;AAAG,QAAMmzC,IAAE,EAAE;AAAO,WAAQF,IAAE,GAAEA,IAAEE,MAAI,EAAEF,GAAG,CAAC,GAAE,EAAE,eAAcA;AAAI;AAAC;AAAC,SAAS+T,GAAG/T,GAAE,GAAE;AAAC,SAAgBA,MAAT,UAAYA,EAAE,UAAQ,KAAGA,EAAE,WAAY;AAAA;AAAC,SAASgU,GAAGhU,GAAE;AAAC,SAAOiU,GAAGjU,GAAE0G,KAAK,MAAM;AAAC;AAAC,SAASuN,GAAGjU,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE,MAAK,IAAE,EAAE,IAAIjzC,CAAC;AAAE,EAAS,MAAT,UAAY+3C,EAAG,IAAG/3C,CAAC;AAAE,QAAM0K,IAAE,EAAE;AAAM,EAAAuoC,EAAE,SAAOvoC,EAAE,QAAO,KAAIqtC,EAAG,IAAGrtC,EAAE,IAAI;AAAE,QAAM,IAAEA,EAAE,WAAWuoC,CAAC,GAAEE,IAAEF,EAAE;AAAS,MAAGkG,EAAG,CAAC,KAAG,MAAM,QAAQhG,CAAC;AAAE,aAAQF,IAAE,GAAEA,IAAEE,EAAE,QAAOF,KAAI;AAAC,YAAMjzC,IAAEknD,GAAG/T,EAAEF,IAAG,CAAC;AAAE,QAAE,OAAOjzC,CAAC;AAAA,IAAC;AAAC,SAAO;AAAC;AAAC,SAASmnD,GAAGlU,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAEumD,IAAG77C,IAAE+7C,IAAG,IAAED;AAAG,EAAAD,KAAG,GAAEE,KAAG,IAAGD,KAAGvT;AAAE,MAAG;AAAC,WAAOjzC,EAAG;AAAA,EAAA,UAAC;AAAQ,IAAAumD,KAAG,GAAEE,KAAG/7C,GAAE87C,KAAG;AAAA,EAAC;AAAC;AAAC,SAASY,GAAGnU,GAAEjzC,GAAE;AAAC,QAAMkzC,IAAED,EAAE,qBAAoBvoC,IAAEuoC,EAAE,cAAahtC,IAAEgtC,EAAE,aAAkBvoC,MAAP;AAAS,MAAUwoC,MAAP;AAAS;AAAO,QAAMC,IAAEF,EAAE,cAAanzC,IAAEqzC,EAAE,YAAWhzC,IAAE+yC,EAAE,YAAW9yC,IAAE6yC,EAAE,eAAa2C,IAAGxC,IAAEmT,IAAG5mD,IAAE8mD,IAAG,IAAED,IAAGlT,IAAEL,EAAE,WAAU5yC,IAAE4yC,EAAE;AAAU,MAAIM,IAAE;AAAK,MAAGN,EAAE,sBAAoB,MAAKA,EAAE,eAAaC,GAAE,CAACjtC,KAAG7F,KAAUC,MAAP,MAAS;AAAC,IAAAmmD,KAAGvT,GAAEsT,KAAGrT,GAAEuT,KAAG,IAAGxT,EAAE,YAAU;AAAG,QAAG;AAAC,YAAM1yC,IAAE0yC,EAAE,YAAWjzC,IAAEizC,EAAE,gBAAevoC,IAAEuoC,EAAE;AAAa,MAAA5yC,EAAE,WAAY,GAACkzC,IAAE8N,GAAGlO,GAAED,GAAED,GAAE1yC,GAAEP,GAAE0K,CAAC;AAAA,IAAC,SAAOnK,GAAN;AAAS,UAAGA,aAAa,SAAO0yC,EAAE,SAAS1yC,CAAC,GAAEmmD;AAAG,cAAMnmD;AAAE,aAAO8mD,GAAGpU,GAAE,MAAKvoC,GAAEwoC,CAAC,GAAEqG,GAAGtG,CAAC,GAAEA,EAAE,aAAW6C,IAAG4Q,KAAG,IAAGU,GAAGnU,GAAEE,CAAC,GAAE,MAAKuT,KAAG;AAAA,IAAG,UAAC;AAAQ,MAAArmD,EAAE,QAAQqK,GAAEk8C,EAAE,GAAE3T,EAAE,YAAUK,GAAEiT,KAAGnT,GAAEqT,KAAG9mD,GAAE6mD,KAAG;AAAA,IAAC;AAAA,EAAC;AAAC,EAAAtT,EAAE,cAAYA,EAAE,YAAU;AAAI,QAAM,IAAED,EAAE,cAAaO,IAAEP,EAAE,gBAAelzC,IAAEkzC,EAAE,kBAAiBhuC,IAAEguC,EAAE,aAAYQ,IAAER,EAAE;AAAU,EAAA7yC,MAAI6yC,EAAE,aAAW2C,IAAG3C,EAAE,gBAAgB,MAAO,GAACA,EAAE,eAAa,oBAAI,OAAIA,EAAE,iBAAe,oBAAI,OAAIA,EAAE,mBAAiB,oBAAI,OAAIA,EAAE,cAAY,oBAAI,QAAK,SAASA,GAAE1yC,GAAE;AAAC,UAAMP,IAAEizC,EAAE;AAAY,QAAIC,IAAED,EAAE,sBAAoBjzC;AAAE,UAAM0K,IAAEnK,EAAE;AAAS,QAAI0F;AAAE,SAAIA,KAAKitC;AAAE,MAAAxoC,EAAE,IAAIzE,CAAC,MAAIitC,MAAIlzC,MAAIkzC,IAAEuI,GAAGxI,CAAC,IAAG,OAAOC,EAAEjtC;AAAA,EAAG,EAAEgtC,GAAEC,CAAC;AAAE,QAAMQ,IAAEztC,IAAE,OAAKsyC,GAAGtF,EAAE,OAAO;AAAE,MAAGA,EAAE,aAAkBS,MAAP,SAAWtzC,KAAUD,MAAP,QAAUA,EAAE,QAAO;AAAC,IAAAqmD,KAAGvT,GAAEsT,KAAGrT;AAAE,QAAG;AAAC,UAAU7yC,MAAP,QAAUA,EAAE,WAAY,GAACD,KAAUD,MAAP,QAAUA,EAAE,OAAM;AAAC,cAAMI,IAAE0yC,EAAE;AAAoB,QAAO1yC,MAAP,QAAU49C,GAAG59C,GAAE0yC,GAAEvoC,CAAC,GAAEy7C,GAAGrmD,GAAEK,GAAE8yC,GAAES,GAAEzuC,GAAEyF,CAAC;AAAA,MAAC;AAAC,MAAA0zC,GAAGnL,GAAEvoC,GAAEvK,CAAC,GAASE,MAAP,QAAUA,EAAE,QAAQqK,GAAEk8C,EAAE;AAAA,IAAC,UAAC;AAAQ,MAAAJ,KAAG,GAAED,KAAGnT;AAAA,IAAC;AAAA,EAAC;AAAC,EAAOG,MAAP,QAAU,SAASN,GAAE1yC,GAAEP,GAAEkzC,GAAExoC,GAAE;AAAC,UAAMzE,IAAE,MAAM,KAAKgtC,EAAE,WAAW,QAAQ,GAAEE,IAAEltC,EAAE;AAAO,aAAQgtC,IAAE,GAAEA,IAAEE,GAAEF,KAAI;AAAC,YAAK,CAACE,GAAErzC,EAAC,IAAEmG,EAAEgtC,IAAG9yC,KAAEI,EAAE,IAAIT,EAAC;AAAE,MAASK,OAAT,UAAYgzC,EAAEhzC,IAAE,EAAC,aAAY+yC,GAAE,iBAAgBxoC,GAAE,YAAW1K,EAAC,CAAC;AAAA,IAAC;AAAA,EAAC,EAAEizC,GAAEM,GAAEtuC,GAAE,GAAEkuC,CAAC,GAAEuF,EAAGv4C,CAAC,KAAUA,MAAP,QAAiBL,MAAP,QAAUA,EAAE,GAAGK,CAAC,KAAG8yC,EAAE,gBAAgB1yC,IAAE,MAAM;AAAE,QAAMozC,IAAEV,EAAE;AAAmB,EAAOU,MAAP,SAAWV,EAAE,cAAYU,GAAEV,EAAE,qBAAmB,MAAKqU,GAAG,aAAYrU,GAAE,IAAGU,CAAC,IAAG,SAASV,GAAE1yC,GAAEP,GAAE;AAAC,UAAMkzC,IAAEwI,GAAGn7C,CAAC,GAAEmK,IAAEgxC,GAAG17C,CAAC;AAAE,IAAAkzC,MAAIxoC,KAAG48C,GAAG,eAAcrU,GAAE,IAAGvoC,CAAC;AAAA,EAAC,EAAEuoC,GAAEjzC,KAAGmzC,GAAED,CAAC,GAAEoU,GAAG,UAASrU,GAAE,IAAG,EAAC,eAAcO,GAAE,aAAY,GAAE,aAAYN,GAAE,iBAAgBnzC,GAAE,iBAAgBC,KAAGmzC,GAAE,MAAKluC,EAAC,CAAC,GAAE,SAASguC,GAAE1yC,GAAE;AAAC,QAAG0yC,EAAE,YAAU,CAAE,GAAK1yC,EAAE,WAAN,GAAa;AAAC,YAAMP,IAAEizC,EAAE;AAAU,MAAAA,EAAE,YAAU;AAAG,UAAG;AAAC,iBAAQA,IAAE,GAAEA,IAAE1yC,EAAE,QAAO0yC;AAAI,UAAA1yC,EAAE0yC,GAAI;AAAA,MAAA,UAAC;AAAQ,QAAAA,EAAE,YAAUjzC;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC,EAAEizC,GAAEQ,CAAC,GAAE,SAASR,GAAE;AAAC,UAAM1yC,IAAE0yC,EAAE;AAAS,QAAO1yC,EAAE,WAAN,GAAa;AAAC,YAAMP,IAAEO,EAAE,MAAO;AAAC,UAAGP,GAAE;AAAC,cAAK,CAACO,GAAE2yC,CAAC,IAAElzC;AAAE,QAAAunD,GAAGtU,GAAE1yC,GAAE2yC,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC,EAAED,CAAC;AAAC;AAAC,SAASqU,GAAGrU,GAAE,GAAEjzC,MAAK,GAAE;AAAC,QAAM0K,IAAE,EAAE;AAAU,IAAE,YAAU1K;AAAE,MAAG;AAAC,UAAMA,IAAE,MAAM,KAAK,EAAE,WAAWizC,EAAE;AAAE,aAAQA,IAAE,GAAEA,IAAEjzC,EAAE,QAAOizC;AAAI,MAAAjzC,EAAEizC,GAAG,MAAM,MAAK,CAAC;AAAA,EAAC,UAAC;AAAQ,MAAE,YAAUvoC;AAAA,EAAC;AAAC;AAAC,SAAS2yC,GAAGpK,GAAE,GAAEjzC,GAAE;AAAC,MAAQizC,EAAE,cAAP,MAAkBuT,OAAKvT,GAAE;AAAC,QAAIC,IAAE;AAAG,WAAOD,EAAE,OAAQ,MAAI;AAAC,MAAAC,IAAEmK,GAAGpK,GAAE,GAAEjzC,CAAC;AAAA,IAAC,CAAG,GAACkzC;AAAA,EAAC;AAAC,QAAM,IAAE6I,GAAG9I,CAAC;AAAE,WAAQvoC,IAAE,GAAEA,KAAG,GAAEA;AAAI,aAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,KAAI;AAAC,YAAMyoC,IAAE,EAAE,GAAG,UAAU,IAAI,CAAC;AAAE,UAAYA,MAAT,QAAW;AAAC,cAAM5yC,IAAE4yC,EAAEzoC;AAAG,YAAYnK,MAAT,QAAW;AAAC,gBAAM2yC,IAAE,MAAM,KAAK3yC,CAAC,GAAEmK,IAAEwoC,EAAE;AAAO,mBAAQ3yC,IAAE,GAAEA,IAAEmK,GAAEnK;AAAI,gBAAQ2yC,EAAE3yC,GAAGP,GAAEizC,CAAC,MAAb;AAAe,qBAAM;AAAA,QAAE;AAAA,MAAC;AAAA,IAAC;AAAC,SAAM;AAAE;AAAC,SAASuU,GAAGvU,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE;AAAS,MAAI,IAAE,KAAG;AAAG,SAASjzC,EAAE,WAAN,KAAc;AAAC,UAAMO,IAAEP,EAAE,MAAO;AAAC,QAAGO,GAAE;AAAC,YAAK,CAACP,GAAE,CAAC,IAAEO;AAAE,UAAI0F,GAAEktC;AAAE,UAAY,MAAT,QAAW;AAAC,YAAGltC,IAAE,EAAE,UAASktC,IAAE,EAAE,KAAI,EAAE,mBAAiB,IAAE,KAAI,EAAE,UAAS;AAAC,gBAAM5yC,IAAE0yC,EAAE;AAAoB,UAAO1yC,MAAP,QAAUw3C,EAAG,GAAG,GAAEx3C,EAAE,aAAW;AAAA,QAAE;AAAC,QAAA0F,KAAGgtC,EAAE,UAAU,KAAKhtC,CAAC,GAAEktC,KAAGF,EAAE,YAAY,IAAIE,CAAC;AAAA,MAAC;AAAC,MAAAnzC,EAAG;AAAA,IAAA;AAAA,EAAC;AAAC,SAAO;AAAC;AAAC,SAASunD,GAAGtU,GAAE,GAAEjzC,GAAE;AAAC,QAAM,IAAEizC,EAAE;AAAY,MAAIvoC,GAAE,GAAEyoC,IAAE,IAAG,IAAE;AAAG,EAASnzC,MAAT,WAAa0K,IAAE1K,EAAE,UAAS,IAAEA,EAAE,KAAU,KAAN,QAAS,EAAE,IAAI,CAAC,GAAEmzC,IAAEnzC,EAAE,kBAAgB,IAAG,IAAEA,EAAE,YAAU,KAAI0K,KAAGuoC,EAAE,UAAU,KAAKvoC,CAAC;AAAE,QAAM,IAAEuoC,EAAE;AAAa,MAAI,IAAEA,EAAE,qBAAoB,IAAE;AAAG,GAAQ,MAAP,QAAU,EAAE,eAAa,IAAEA,EAAE,sBAAoB,IAAIwU,GAAG,IAAI,KAAK,KAAG,GAAG,QAAQ,CAAC,GAAE,IAAE,KAAI,EAAE,aAAW;AAAE,QAAM9nD,IAAE4mD,IAAGlT,IAAEoT,IAAG,IAAED,IAAG,IAAEvT,EAAE;AAAU,EAAAsT,KAAG,GAAEE,KAAG,IAAGxT,EAAE,YAAU,IAAGuT,KAAGvT;AAAE,MAAG;AAAC,UAAIA,EAAE,YAAiB,EAAE,eAAT,SAAsB,EAAE,aAAW,EAAE,WAAW,MAAO,KAAE,EAAE,aAAW,SAASA,GAAE;AAAC,YAAM1yC,IAAE0yC,EAAE,eAAgB,EAAC,YAAWjzC,IAAEu4C,GAAGtF,EAAE,OAAO;AAAE,aAAOyF,EAAGn4C,CAAC,KAASA,KAAN,OAAQ4hD,GAAG5hD,GAAEP,GAAEizC,GAAE,IAAI,IAAE1yC,EAAE;IAAO,EAAE0yC,CAAC;AAAG,UAAMjzC,IAAEizC,EAAE;AAAgB,MAAC,GAAGE,IAAEqU,GAAGvU,GAAEE,CAAC,GAAE,SAASF,GAAE1yC,GAAE;AAAC,YAAMP,IAAEO,EAAE,eAAc,EAAG,YAAW2yC,IAAED,EAAE;AAAW,UAAGyF,EAAGxF,CAAC,GAAE;AAAC,cAAMD,IAAEC,EAAE,QAAO3yC,IAAE2yC,EAAE;AAAM,YAAIxoC;AAAE,YAAYuoC,EAAE,SAAX,WAAkBvoC,IAAEuoC,EAAE,QAAO,GAAGvoC,EAAE,mBAAmB1K,GAAEkzC,CAAC,IAAY3yC,EAAE,SAAX,QAAgB;AAAC,gBAAM0yC,IAAE1yC,EAAE,QAAS;AAAC,UAAAmK,MAAIuoC,KAAGA,EAAE,mBAAmBjzC,GAAEkzC,CAAC;AAAA,QAAC;AAAA,MAAC;AAAA,IAAC,EAAE,GAAED,CAAC,GAAEA,EAAE,eAAa2C,OAAKzC,IAAE,SAASF,GAAE1yC,GAAE;AAAC,YAAMP,IAAEO,EAAE,cAAa2yC,IAAED,EAAE;AAAS,iBAAUA,KAAKjzC,GAAE;AAAC,cAAMO,IAAE2yC,EAAE,IAAID,CAAC;AAAE,QAAA+F,EAAGz4C,CAAC,KAAGA,EAAE,gBAAcA,EAAE,kBAAgB,CAACA,EAAE,cAAe,KAAEq5C,GAAGr5C,CAAC;AAAA,MAAC;AAAA,IAAC,EAAE,GAAE0yC,CAAC,IAAE,SAASA,GAAE1yC,GAAE;AAAC,YAAMP,IAAEO,EAAE,cAAa2yC,IAAE3yC,EAAE,gBAAemK,IAAEuoC,EAAE,UAAShtC,IAAEs1C,GAAE,GAAGpI,IAAE,oBAAI;AAAI,UAAIrzC,IAAEE,GAAEG,IAAEL,EAAE,MAAKM,IAAE8yC,GAAEE,IAAEhzC,EAAE;AAAK,aAAKD,IAAE,KAAGizC,IAAE,KAAG;AAAC,YAAGjzC,IAAE,GAAE;AAAC,UAAAI,EAAE,eAAa,oBAAI;AAAI,qBAAU0yC,KAAKnzC,GAAE;AAAC,kBAAMozC,IAAExoC,EAAE,IAAIuoC,CAAC;AAAE,YAAA+F,EAAG9F,CAAC,KAAGA,EAAE,WAAU,KAAIA,EAAE,aAAY,KAAI,CAACA,EAAE,cAAe,KAAE0G,GAAG1G,CAAC,GAAWA,MAAT,UAAY8T,GAAG9T,GAAEjtC,CAAC,KAAG8gD,GAAGxmD,GAAE2yC,GAAEC,CAAC,GAAEnzC,EAAE,IAAIizC,CAAC;AAAA,UAAC;AAAC,cAAGnzC,IAAES,EAAE,cAAaJ,IAAEL,EAAE,MAAKK,IAAE,GAAE;AAAC,YAAAwmD;AAAK;AAAA,UAAQ;AAAA,QAAC;AAAC,QAAApmD,EAAE,eAAa,oBAAI,OAAIA,EAAE,iBAAe,oBAAI;AAAI,mBAAU0yC,KAAK7yC,GAAE;AAAC,gBAAMJ,IAAEizC,EAAE,IAAGnzC,KAAEmzC,EAAE;AAAG,cAAYjzC,MAAT,UAAY,CAACF;AAAE;AAAS,gBAAMK,KAAEuK,EAAE,IAAI1K,CAAC;AAAE,UAASG,OAAT,UAAY6mD,GAAG7mD,IAAE8F,CAAC,KAAG8gD,GAAGxmD,GAAEJ,IAAEgzC,CAAC,GAAED,EAAE,IAAIlzC,GAAEF,EAAC;AAAA,QAAC;AAAC,QAAAA,IAAES,EAAE,cAAaJ,IAAEL,EAAE,MAAKM,IAAEG,EAAE,gBAAe6yC,IAAEhzC,EAAE,MAAKumD;AAAA,MAAI;AAAC,MAAApmD,EAAE,eAAaP,GAAEO,EAAE,iBAAe2yC;AAAA,IAAC,EAAE,GAAED,CAAC,GAAEuU,GAAGvU,CAAC,GAAE,SAASA,GAAE1yC,GAAEP,GAAEkzC,GAAE;AAAC,YAAMxoC,IAAEuoC,EAAE,UAAShtC,IAAE1F,EAAE,UAAS4yC,IAAE,CAAE;AAAC,iBAAS,CAACF,CAAC,KAAIC,GAAE;AAAC,cAAM3yC,IAAE0F,EAAE,IAAIgtC,CAAC;AAAE,QAAS1yC,MAAT,WAAaA,EAAE,WAAU,MAAK44C,EAAG54C,CAAC,KAAGy+C,GAAGz+C,GAAE0yC,GAAEvoC,GAAEzE,GAAEktC,GAAED,CAAC,GAAExoC,EAAE,IAAIuoC,CAAC,KAAGC,EAAE,OAAOD,CAAC,GAAEE,EAAE,KAAKF,CAAC;AAAA,MAAG;AAAC,iBAAUA,KAAKE;AAAE,QAAAltC,EAAE,OAAOgtC,CAAC;AAAE,iBAAUA,KAAKjzC,GAAE;AAAC,cAAMO,IAAE0F,EAAE,IAAIgtC,CAAC;AAAE,QAAS1yC,MAAT,UAAYA,EAAE,WAAU,MAAKmK,EAAE,IAAIuoC,CAAC,KAAGjzC,EAAE,OAAOizC,CAAC,GAAEhtC,EAAE,OAAOgtC,CAAC;AAAA,MAAE;AAAA,IAAC,EAAE,GAAE,GAAEA,EAAE,cAAaA,EAAE,cAAc,IAAGjzC,MAAIizC,EAAE,oBAAkB,EAAE,aAAW;AAAI,UAAMC,IAAE,EAAE;AAAW,QAAGwF,EAAGxF,CAAC,GAAE;AAAC,YAAMD,IAAE,EAAE,UAAS1yC,IAAE2yC,EAAE,OAAO,KAAIlzC,IAAEkzC,EAAE,MAAM;AAAI,MAASD,EAAE,IAAI1yC,CAAC,MAAhB,UAA4B0yC,EAAE,IAAIjzC,CAAC,MAAhB,UAAmB+3C,EAAG,EAAE;AAAA,IAAC;AAAM,MAAA6J,GAAG1O,CAAC,KAAOA,EAAE,OAAO,SAAb,MAAoB,EAAE,aAAW;AAAA,EAAK,SAAO3yC,GAAN;AAAS,WAAOA,aAAa,SAAO0yC,EAAE,SAAS1yC,CAAC,GAAE0yC,EAAE,sBAAoB,GAAEA,EAAE,aAAW6C,IAAG7C,EAAE,gBAAgB,MAAO,GAACA,EAAE,eAAa,oBAAI,OAAIA,EAAE,eAAe,MAAK,GAAG,KAAKmU,GAAGnU,CAAC;AAAA,EAAC,UAAC;AAAQ,IAAAsT,KAAG5mD,GAAE8mD,KAAGpT,GAAEmT,KAAG,GAAEvT,EAAE,YAAU,GAAE0T,KAAG;AAAA,EAAC;AAAmL,EAA1K1T,EAAE,eAAa2C,MAAI,SAAS3C,GAAE1yC,GAAE;AAAC,UAAMP,IAAEO,EAAE,eAAgB,EAAC,YAAW2yC,IAAED,EAAE;AAAW,QAAUC,MAAP;AAAU,UAAGA,EAAE,SAAO,CAACA,EAAE,GAAGlzC,CAAC;AAAE,eAAM;AAAA,eAAkBA,MAAP;AAAS,aAAM;AAAG,WAAM;AAAA,EAAE,EAAE,GAAEizC,CAAC,IAAI,EAAE,cAAY,EAAE,aAAW,IAAGmU,GAAGnU,CAAC,KAAG,KAAGgH,GAAI,MAAI;AAAC,IAAAmN,GAAGnU,CAAC;AAAA,EAAC,CAAC,KAAI,EAAE,aAAW,IAAG,MAAI,EAAE,MAAO,GAACA,EAAE,YAAU,CAAE,GAACA,EAAE,sBAAoB;AAAM;AAAC,SAAS2F,GAAG3F,GAAE,GAAEjzC,GAAE;AAAC,EAAAizC,EAAE,YAAUA,EAAE,SAAS,KAAK,CAAC,GAAEjzC,CAAC,CAAC,IAAEunD,GAAGtU,GAAE,GAAEjzC,CAAC;AAAC;AAAC,MAAM0nD,WAAWtE,GAAE;AAAA,EAAC,YAAYnQ,GAAE;AAAC,UAAMA,CAAC,GAAE,KAAK,UAAQ,MAAK,KAAK,SAAO,MAAK,KAAK,SAAO,GAAE,KAAK,WAAS,GAAE,KAAK,UAAQ,IAAG,KAAK,WAAS,GAAE,KAAK,QAAM;AAAA,EAAI;AAAA,EAAC,eAAeA,GAAE;AAAC,UAAM,eAAeA,CAAC,GAAE,KAAK,UAAQA,EAAE,SAAQ,KAAK,SAAOA,EAAE,QAAO,KAAK,SAAOA,EAAE,QAAO,KAAK,WAASA,EAAE,UAAS,KAAK,WAASA,EAAE,UAAS,KAAK,UAAQA,EAAE,SAAQ,KAAK,QAAMA,EAAE;AAAA,EAAK;AAAA,EAAC,YAAW;AAAC,WAAO,KAAK,UAAS,EAAG;AAAA,EAAQ;AAAA,EAAC,gBAAe;AAAC,UAAMA,IAAE,KAAK;AAAY,WAAO0E,GAAG1E,MAAI;AAAA,EAAE;AAAA,EAAC,WAAU;AAAC,WAAO,KAAK,UAAW,EAAC;AAAA,EAAO;AAAA,EAAC,YAAW;AAAC,WAAO,KAAK,UAAS,EAAG;AAAA,EAAQ;AAAA,EAAC,cAAa;AAAC,UAAMA,IAAE,CAAA;AAAG,QAAI1yC,IAAE,KAAK;AAAgB,WAAYA,MAAP;AAAU,MAAA0yC,EAAE,KAAK1yC,CAAC,GAAEA,IAAEA,EAAE,eAAgB;AAAC,WAAO0yC;AAAA,EAAC;AAAA,EAAC,kBAAiB;AAAC,UAAMA,IAAE,CAAA;AAAG,QAAI1yC,IAAE,KAAK,cAAa;AAAG,WAAYA,MAAP;AAAU,MAAA0yC,EAAE,KAAK1yC,EAAE,KAAK,GAAEA,IAAEA,EAAE,eAAgB;AAAC,WAAO0yC;AAAA,EAAC;AAAA,EAAC,kBAAiB;AAAC,WAAO,KAAK,YAAY;AAAA,EAAM;AAAA,EAAC,UAAS;AAAC,WAAW,KAAK,sBAAT;AAAA,EAA0B;AAAA,EAAC,UAAS;AAAC,UAAMA,IAAE0G,GAAI,EAAC;AAAe,WAAc1G,MAAP,QAAUA,EAAE,IAAI,KAAK,KAAK;AAAA,EAAC;AAAA,EAAC,cAAa;AAAC,UAAMA,IAAE,KAAK,UAAW,GAAC1yC,IAAE,KAAK,iBAAgB,EAAG,aAAY;AAAG,WAAcA,MAAP,QAAUA,EAAE,GAAG0yC,CAAC;AAAA,EAAC;AAAA,EAAC,kBAAiB;AAAC,UAAMA,IAAE,CAAA;AAAG,QAAI1yC,IAAE,KAAK;AAAgB,WAAYA,MAAP,QAAU;AAAC,UAAGy4C,EAAGz4C,CAAC,KAAG0yC,EAAE,KAAK1yC,CAAC,GAAE44C,EAAG54C,CAAC,GAAE;AAAC,cAAMP,IAAEO,EAAE,gBAAe;AAAG,QAAA0yC,EAAE,KAAK,GAAGjzC,CAAC;AAAA,MAAC;AAAC,MAAAO,IAAEA,EAAE,eAAc;AAAA,IAAE;AAAC,WAAO0yC;AAAA,EAAC;AAAA,EAAC,qBAAoB;AAAC,QAAIA,IAAE,KAAK,cAAe;AAAC,WAAKkG,EAAGlG,CAAC,KAAG;AAAC,YAAM1yC,IAAE0yC,EAAE,cAAe;AAAC,UAAU1yC,MAAP;AAAS;AAAM,MAAA0yC,IAAE1yC;AAAA,IAAC;AAAC,WAAO0yC;AAAA,EAAC;AAAA,EAAC,oBAAmB;AAAC,QAAIA,IAAE,KAAK,aAAY;AAAG,WAAKkG,EAAGlG,CAAC,KAAG;AAAC,YAAM1yC,IAAE0yC,EAAE,aAAY;AAAG,UAAU1yC,MAAP;AAAS;AAAM,MAAA0yC,IAAE1yC;AAAA,IAAC;AAAC,WAAO0yC;AAAA,EAAC;AAAA,EAAC,qBAAqBA,GAAE;AAAC,UAAM1yC,IAAE,KAAK,YAAW,GAAGP,IAAEO,EAAE;AAAO,QAAG0yC,KAAGjzC,GAAE;AAAC,YAAMizC,IAAE1yC,EAAEP,IAAE;AAAG,aAAOm5C,EAAGlG,CAAC,KAAGA,EAAE,kBAAmB,KAAEA,KAAG;AAAA,IAAI;AAAC,UAAMC,IAAE3yC,EAAE0yC;AAAG,WAAOkG,EAAGjG,CAAC,KAAGA,EAAE,mBAAkB,KAAIA,KAAG;AAAA,EAAI;AAAA,EAAC,gBAAe;AAAC,UAAMD,IAAE,KAAK,UAAS,EAAG;AAAQ,WAAcA,MAAP,OAAS,OAAKqI,GAAGrI,CAAC;AAAA,EAAC;AAAA,EAAC,uBAAsB;AAAC,UAAMA,IAAE,KAAK,cAAa;AAAG,WAAcA,MAAP,QAAU8E,EAAG,IAAG,KAAK,KAAK,GAAE9E;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,UAAMA,IAAE,KAAK,YAAY;AAAO,WAAcA,MAAP,OAAS,OAAKqI,GAAGrI,CAAC;AAAA,EAAC;AAAA,EAAC,sBAAqB;AAAC,UAAMA,IAAE,KAAK;AAAe,WAAcA,MAAP,QAAU8E,EAAG,IAAG,KAAK,KAAK,GAAE9E;AAAA,EAAC;AAAA,EAAC,gBAAgBA,GAAE;AAAC,UAAM1yC,IAAE,KAAK,gBAAe;AAAG,QAAIP,GAAEkzC;AAAE,QAAGD,IAAE1yC,IAAE,GAAE;AAAC,WAAIP,IAAE,KAAK,cAAa,GAAGkzC,IAAE,GAASlzC,MAAP,QAAUkzC,KAAGD,KAAG;AAAC,YAAGC,MAAID;AAAE,iBAAOjzC;AAAE,QAAAA,IAAEA,EAAE,eAAc,GAAGkzC;AAAA,MAAG;AAAC,aAAO;AAAA,IAAI;AAAC,SAAIlzC,IAAE,KAAK,aAAc,GAACkzC,IAAE3yC,IAAE,GAASP,MAAP,QAAUkzC,KAAGD,KAAG;AAAC,UAAGC,MAAID;AAAE,eAAOjzC;AAAE,MAAAA,IAAEA,EAAE,mBAAoB,GAACkzC;AAAA,IAAG;AAAC,WAAO;AAAA,EAAI;AAAA,EAAC,iBAAgB;AAAC,QAAID,IAAE;AAAG,UAAM1yC,IAAE,KAAK,YAAW,GAAGP,IAAEO,EAAE;AAAO,aAAQ2yC,IAAE,GAAEA,IAAElzC,GAAEkzC,KAAI;AAAC,YAAMxoC,IAAEnK,EAAE2yC;AAAG,MAAAD,KAAGvoC,EAAE,eAAgB,GAACyuC,EAAGzuC,CAAC,KAAGwoC,MAAIlzC,IAAE,KAAG,CAAC0K,EAAE,SAAU,MAAGuoC,KAAGiE;AAAA,IAAG;AAAC,WAAOjE;AAAA,EAAC;AAAA,EAAC,qBAAoB;AAAC,QAAIA,IAAE;AAAE,UAAM1yC,IAAE,KAAK,YAAa,GAACP,IAAEO,EAAE;AAAO,aAAQ2yC,IAAE,GAAEA,IAAElzC,GAAEkzC,KAAI;AAAC,YAAMxoC,IAAEnK,EAAE2yC;AAAG,MAAAD,KAAGvoC,EAAE,mBAAoB,GAACyuC,EAAGzuC,CAAC,KAAGwoC,MAAIlzC,IAAE,KAAG,CAAC0K,EAAE,SAAU,MAAGuoC,KAAGiE,GAAG;AAAA,IAAO;AAAC,WAAOjE;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,WAAO,KAAK,UAAW,EAAC;AAAA,EAAK;AAAA,EAAC,UAAUA,GAAE;AAAC,QAAQA,MAAL,IAAO;AAAC,YAAM1yC,IAAEm3C,GAAGzE;AAAG,aAAM,CAAC,EAAE,KAAK,cAAY1yC;AAAA,IAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,OAAO0yC,GAAE1yC,GAAE;AAAC,IAAAy6C,GAAI;AAAC,UAAMh7C,IAAE64C,GAAE;AAAG,QAAI3F,IAAED,GAAEvoC,IAAEnK;AAAE,UAAM0F,IAAE,KAAK,gBAAe;AAAG,QAAG,CAAC,KAAK,WAAY;AAAC,UAAOgtC,MAAJ,KAAW1yC,MAAJ,GAAM;AAAC,cAAM0yC,IAAE,KAAK,cAAe;AAAC,YAAG+F,EAAG/F,CAAC,KAAGkG,EAAGlG,CAAC;AAAE,iBAAOA,EAAE,OAAO,GAAE,CAAC;AAAA,MAAC,WAAS,EAAWA,MAAT,UAAYA,MAAIhtC,KAAY1F,MAAT,UAAYA,MAAI0F,IAAG;AAAC,cAAMgtC,IAAE,KAAK;AAAe,YAAG+F,EAAG/F,CAAC,KAAGkG,EAAGlG,CAAC;AAAE,iBAAOA,EAAE,OAAQ;AAAA,MAAA;AAAA;AAAC,IAASC,MAAT,WAAaA,IAAEjtC,IAAYyE,MAAT,WAAaA,IAAEzE;AAAG,UAAMktC,IAAE,KAAK;AAAM,WAAOuF,EAAG14C,CAAC,KAAGA,EAAE,OAAO,IAAImzC,GAAED,GAAE,SAAS,GAAElzC,EAAE,MAAM,IAAImzC,GAAEzoC,GAAE,SAAS,GAAE1K,EAAE,QAAM,IAAGA,KAAGskD,GAAGnR,GAAED,GAAEC,GAAEzoC,GAAE,WAAU,SAAS;AAAA,EAAC;AAAA,EAAC,cAAa;AAAC,UAAMuoC,IAAE,KAAK,mBAAoB;AAAC,WAAOA,IAAEA,EAAE,YAAa,IAAC,KAAK,OAAQ;AAAA,EAAA;AAAA,EAAC,YAAW;AAAC,UAAMA,IAAE,KAAK,kBAAiB;AAAG,WAAOA,IAAEA,EAAE,cAAY,KAAK;EAAQ;AAAA,EAAC,QAAO;AAAC,UAAMA,IAAE,KAAK,YAAa;AAAC,WAAO,KAAK,YAAW,EAAG,QAAS,OAAG,EAAE,OAAQ,CAAA,GAAGA;AAAA,EAAC;AAAA,EAAC,UAAUA,GAAE;AAAC,WAAO,KAAK,OAAO,KAAK,gBAAe,GAAG,GAAEA,CAAC;AAAA,EAAC;AAAA,EAAC,aAAaA,GAAE;AAAC,UAAM1yC,IAAE,KAAK,YAAW;AAAG,WAAOA,EAAE,QAAM0yC,GAAE1yC;AAAA,EAAC;AAAA,EAAC,UAAU0yC,GAAE;AAAC,WAAO,KAAK,YAAW,EAAG,WAAcA,MAAL,KAAOyE,GAAGzE,KAAG,GAAE;AAAA,EAAI;AAAA,EAAC,SAASA,GAAE;AAAC,WAAO,KAAK,cAAc,UAAQA,KAAG,IAAG;AAAA,EAAI;AAAA,EAAC,UAAUA,GAAE;AAAC,WAAO,KAAK,YAAa,EAAC,WAASA,GAAE;AAAA,EAAI;AAAA,EAAC,OAAOA,GAAE1yC,GAAEP,GAAE;AAAC,UAAMkzC,IAAElzC,EAAE,QAAO0K,IAAE,KAAK,mBAAkBzE,IAAE,KAAK,YAAW,GAAGktC,IAAEltC,EAAE,OAAMnG,IAAE,CAAA,GAAGK,IAAE,CAAE,GAACC,IAAE,KAAK,gBAAgB6yC,IAAE1yC,CAAC;AAAE,QAAI6yC,IAAE,MAAK,IAAE1oC,IAAEnK,IAAE2yC;AAAE,QAAOD,MAAJ;AAAM,UAAGA,MAAIvoC;AAAE,QAAA0oC,IAAE,KAAK,aAAc;AAAA,WAAK;AAAC,cAAM7yC,IAAE,KAAK,gBAAgB0yC,CAAC;AAAE,QAAO1yC,MAAP,SAAW6yC,IAAE7yC,EAAE,mBAAoB;AAAA,MAAC;AAAC,QAAGA,IAAE,GAAE;AAAC,UAAI0yC,IAASG,MAAP,OAAS,KAAK,cAAa,IAAGA,EAAE,eAAc;AAAG,eAAQpzC,IAAE,GAAEA,IAAEO,GAAEP,KAAI;AAAC,QAAOizC,MAAP,QAAU8E,EAAG,GAAG;AAAE,cAAMx3C,IAAE0yC,EAAE,eAAc,GAAGjzC,IAAEizC,EAAE;AAAM,QAAAkI,GAAGlI,EAAE,aAAa,GAAE9yC,EAAE,KAAKH,CAAC,GAAEizC,IAAE1yC;AAAA,MAAC;AAAA,IAAC;AAAC,QAAI8yC,IAAED;AAAE,aAAQH,IAAE,GAAEA,IAAEC,GAAED,KAAI;AAAC,YAAM1yC,IAAEP,EAAEizC;AAAG,MAAOI,MAAP,QAAU9yC,EAAE,GAAG8yC,CAAC,MAAID,IAAEC,IAAEA,EAAE,mBAAkB;AAAI,YAAMH,IAAE3yC,EAAE,YAAa;AAAC,MAAA2yC,EAAE,aAAWC,KAAG,KAAIgI,GAAGjI,CAAC;AAAE,YAAMxoC,IAAEnK,EAAE;AAAM,UAAU8yC,MAAP;AAAS,QAAAptC,EAAE,UAAQyE,GAAEwoC,EAAE,SAAO;AAAA,WAAS;AAAC,cAAMD,IAAEI,EAAE,YAAa;AAAC,QAAAJ,EAAE,SAAOvoC,GAAEwoC,EAAE,SAAOD,EAAE;AAAA,MAAK;AAAC,MAAA1yC,EAAE,UAAQ4yC,KAAG4E,EAAG,EAAE,GAAE7E,EAAE,WAASC,GAAErzC,EAAE,KAAK4K,CAAC,GAAE2oC,IAAE9yC;AAAA,IAAC;AAAC,QAAG0yC,IAAE1yC,MAAImK;AAAG,MAAU2oC,MAAP,SAAUA,EAAE,YAAa,EAAC,SAAO,MAAKptC,EAAE,SAAOotC,EAAE;AAAA,aAAsBjzC,MAAP,MAAS;AAAC,YAAM6yC,IAAE7yC,EAAE,YAAa;AAAC,UAAUizC,MAAP,MAAS;AAAC,cAAM9yC,IAAE8yC,EAAE,YAAW;AAAG,QAAAJ,EAAE,SAAOI,EAAE,OAAM9yC,EAAE,SAAOH,EAAE;AAAA,MAAK;AAAM,QAAA6yC,EAAE,SAAO;AAAA,IAAI;AAAC,QAAGhtC,EAAE,SAAO,GAAE9F,EAAE,QAAO;AAAC,YAAM8yC,IAAE4F,GAAE;AAAG,UAAGH,EAAGzF,CAAC,GAAE;AAAC,cAAM1yC,IAAE,IAAI,IAAIJ,CAAC,GAAEH,IAAE,IAAI,IAAIF,CAAC,GAAE,EAAC,QAAOozC,GAAE,OAAMxoC,EAAC,IAAEuoC;AAAE,QAAA0U,GAAGzU,GAAE3yC,GAAEP,CAAC,KAAGkjD,GAAGhQ,GAAEA,EAAE,WAAU,MAAKE,GAAEhzC,CAAC,GAAEunD,GAAGj9C,GAAEnK,GAAEP,CAAC,KAAGkjD,GAAGx4C,GAAEA,EAAE,WAAU,MAAK0oC,GAAEhzC,CAAC,GAAM,MAAJ,KAAO,KAAK,WAAY,KAAE09C,GAAG,IAAI,KAAG,KAAK,OAAQ;AAAA,MAAA;AAAA,IAAC;AAAC,WAAO73C;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,WAAM,EAAC,UAAS,CAAE,GAAC,WAAU,KAAK,gBAAe,QAAO,KAAK,cAAa,GAAG,QAAO,KAAK,UAAS,GAAG,MAAK,WAAU,SAAQ,EAAC;AAAA,EAAC;AAAA,EAAC,eAAegtC,GAAE1yC,GAAE;AAAC,WAAO;AAAA,EAAI;AAAA,EAAC,YAAW;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,gBAAgB0yC,GAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,gBAAgBA,GAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,eAAeA,GAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,eAAeA,GAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,aAAY;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,sBAAqB;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,qBAAoB;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,WAAU;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,eAAc;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,aAAaA,GAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,iBAAiBA,GAAE1yC,GAAEP,GAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,oBAAmB;AAAC,WAAM;AAAA,EAAE;AAAC;AAAC,SAASm5C,EAAGlG,GAAE;AAAC,SAAOA,aAAayU;AAAE;AAAC,SAASC,GAAG1U,GAAE,GAAEjzC,GAAE;AAAC,MAAI,IAAEizC,EAAE,QAAS;AAAC,SAAK,KAAG;AAAC,UAAMA,IAAE,EAAE;AAAM,QAAG,EAAE,IAAIA,CAAC,KAAG,CAACjzC,EAAE,IAAIizC,CAAC;AAAE,aAAM;AAAG,QAAE,EAAE;EAAW;AAAC,SAAM;AAAE;AAAC,MAAM2U,WAAWxE,GAAE;AAAA,EAAC,YAAYnQ,GAAE;AAAC,UAAMA,CAAC;AAAA,EAAC;AAAA,EAAC,SAASA,GAAE1yC,GAAE;AAAC,IAAAw3C,EAAG,EAAE;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,WAAU;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,uBAAsB;AAAC,WAAM;AAAA,EAAE;AAAC;AAAC,SAASgB,GAAG9F,GAAE;AAAC,SAAOA,aAAa2U;AAAE;AAAC,MAAMC,WAAWH,GAAE;AAAA,EAAC,OAAO,UAAS;AAAC,WAAM;AAAA,EAAM;AAAA,EAAC,OAAO,QAAO;AAAC,WAAO,IAAIG;AAAA,EAAE;AAAA,EAAC,cAAa;AAAC,UAAM,MAAM,GAAE,KAAK,eAAa;AAAA,EAAI;AAAA,EAAC,4BAA2B;AAAC,IAAA9P,EAAG,EAAE;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,UAAM9E,IAAE,KAAK;AAAa,WAAM,CAACuI,GAAE,KAAI7B,GAAE,EAAG,eAAa/D,MAAW3C,MAAP,OAAS,MAAM,mBAAiBA;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,IAAA8E,EAAG,EAAE;AAAA,EAAC;AAAA,EAAC,QAAQ9E,GAAE;AAAC,IAAA8E,EAAG,EAAE;AAAA,EAAC;AAAA,EAAC,aAAa9E,GAAE;AAAC,IAAA8E,EAAG,EAAE;AAAA,EAAC;AAAA,EAAC,YAAY9E,GAAE;AAAC,IAAA8E,EAAG,EAAE;AAAA,EAAC;AAAA,EAAC,UAAU9E,GAAE1yC,GAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,UAAU0yC,GAAE;AAAC,aAAQ1yC,IAAE,GAAEA,IAAE0yC,EAAE,QAAO1yC,KAAI;AAAC,YAAMP,IAAEizC,EAAE1yC;AAAG,MAAA44C,EAAGn5C,CAAC,KAAG+4C,GAAG/4C,CAAC,KAAG+3C,EAAG,EAAE;AAAA,IAAC;AAAC,WAAO,MAAM,OAAO,GAAG9E,CAAC;AAAA,EAAC;AAAA,EAAC,OAAO,WAAWA,GAAE;AAAC,UAAM1yC,IAAEo7C;AAAK,WAAOp7C,EAAE,UAAU0yC,EAAE,MAAM,GAAE1yC,EAAE,UAAU0yC,EAAE,MAAM,GAAE1yC,EAAE,aAAa0yC,EAAE,SAAS,GAAE1yC;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,WAAM,EAAC,UAAS,CAAE,GAAC,WAAU,KAAK,gBAAe,QAAO,KAAK,cAAe,GAAC,QAAO,KAAK,UAAW,GAAC,MAAK,QAAO,SAAQ,EAAC;AAAA,EAAC;AAAA,EAAC,kBAAiB;AAAC,WAAM;AAAA,EAAE;AAAC;AAAC,SAASg9C,GAAGtK,GAAE;AAAC,SAAOA,aAAa4U;AAAE;AAAC,SAASC,KAAI;AAAC,SAAO,IAAIL,GAAG,oBAAI,IAAI,CAAC,CAAC,QAAO,IAAII,IAAE,CAAC,CAAC,CAAC;AAAC;AAAC,SAASE,GAAG9U,GAAE;AAAC,QAAM,IAAEA,EAAE,WAAY,GAACjzC,IAAEizC,EAAE;AAAY,MAAG,EAAE,SAAOjzC,EAAE,QAAO,KAAI+3C,EAAG,KAAI/3C,EAAE,IAAI,GAAEm5C,EAAGlG,CAAC,GAAE;AAAC,UAAM,IAAE,EAAE;AAAS,UAAM,QAAQ,CAAC,KAAG8E,EAAG,IAAG/3C,EAAE,IAAI;AAAE,UAAM0K,IAAEuoC,EAAE,YAAW;AAAG,aAAQA,IAAE,GAAEA,IAAEvoC,EAAE,QAAOuoC,KAAI;AAAC,YAAM1yC,IAAEwnD,GAAGr9C,EAAEuoC,EAAE;AAAE,QAAE,KAAK1yC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC,SAAO;AAAC;AAAC,MAAMknD,GAAE;AAAA,EAAC,YAAYxU,GAAE1yC,GAAE;AAAC,SAAK,WAAS0yC,GAAE,KAAK,aAAW1yC,KAAG,MAAK,KAAK,aAAW,IAAG,KAAK,YAAU;AAAA,EAAE;AAAA,EAAC,UAAS;AAAC,WAAW,KAAK,SAAS,SAAlB,KAA+B,KAAK,eAAZ;AAAA,EAAsB;AAAA,EAAC,KAAK0yC,GAAE1yC,GAAE;AAAC,WAAO4mD,GAAG5mD,KAAGA,EAAE,UAAQ,MAAK,MAAK0yC,CAAC;AAAA,EAAC;AAAA,EAAC,MAAMA,GAAE;AAAC,UAAM1yC,IAAE,IAAIknD,GAAG,KAAK,UAAkBxU,MAAT,SAAW,KAAK,aAAWA,CAAC;AAAE,WAAO1yC,EAAE,YAAU,IAAGA;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAO4mD,GAAG,MAAK,MAAM,OAAK,EAAC,MAAKY,GAAGpM,GAAI,CAAA,EAAC,EAAE;AAAA,EAAE;AAAC;AAAC,MAAMqM,WAAWN,GAAE;AAAA,EAAC,OAAO,UAAS;AAAC,WAAM;AAAA,EAAY;AAAA,EAAC,UAAUzU,GAAE;AAAC,WAAO,SAAS,cAAc,KAAK;AAAA,EAAC;AAAC;AAAC,MAAMyP,WAAWgF,GAAE;AAAA,EAAC,YAAYzU,GAAE;AAAC,UAAMA,CAAC,GAAE,KAAK,eAAa,GAAE,KAAK,cAAY;AAAA,EAAE;AAAA,EAAC,OAAO,UAAS;AAAC,WAAM;AAAA,EAAW;AAAA,EAAC,gBAAe;AAAC,WAAO,KAAK,YAAY;AAAA,EAAY;AAAA,EAAC,cAAcA,GAAE;AAAC,UAAM1yC,IAAE,KAAK;AAAc,WAAOA,EAAE,eAAa0yC,GAAE1yC;AAAA,EAAC;AAAA,EAAC,cAAc0yC,GAAE;AAAC,UAAM1yC,IAAEi3C,GAAGvE;AAAG,WAAM,CAAC,EAAE,KAAK,kBAAgB1yC;AAAA,EAAE;AAAA,EAAC,eAAc;AAAC,WAAO,KAAK,UAAS,EAAG;AAAA,EAAW;AAAA,EAAC,aAAa0yC,GAAE;AAAC,UAAM1yC,IAAE,KAAK,YAAa;AAAC,WAAOA,EAAE,cAAY0yC,GAAE1yC;AAAA,EAAC;AAAA,EAAC,OAAO,MAAM0yC,GAAE;AAAC,WAAO,IAAIyP,GAAGzP,EAAE,KAAK;AAAA,EAAC;AAAA,EAAC,eAAeA,GAAE;AAAC,UAAM,eAAeA,CAAC,GAAE,KAAK,eAAaA,EAAE,cAAa,KAAK,cAAYA,EAAE;AAAA,EAAW;AAAA,EAAC,UAAUA,GAAE;AAAC,UAAM1yC,IAAE,SAAS,cAAc,GAAG,GAAEP,IAAE88C,GAAG7J,EAAE,OAAM,WAAW;AAAE,WAAYjzC,MAAT,UAAYO,EAAE,UAAU,IAAI,GAAGP,CAAC,GAASO;AAAA,EAAC;AAAA,EAAC,UAAU0yC,GAAE1yC,GAAEP,GAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,OAAO,YAAW;AAAC,WAAM,EAAC,GAAE,CAAAizC,OAAI,EAAC,YAAWgV,IAAG,UAAS,EAAC,GAAE;AAAA,EAAC;AAAA,EAAC,UAAUhV,GAAE;AAAC,UAAK,EAAC,SAAQ1yC,EAAC,IAAE,MAAM,UAAU0yC,CAAC;AAAE,QAAG1yC,KAAGg+C,GAAGh+C,CAAC,GAAE;AAAC,WAAK,QAAO,KAAIA,EAAE,OAAO,SAAS,cAAc,IAAI,CAAC;AAAE,YAAM0yC,IAAE,KAAK,cAAa;AAAG,MAAA1yC,EAAE,MAAM,YAAU0yC;AAAE,YAAMjzC,IAAE,KAAK,aAAY;AAAG,MAAAA,MAAIO,EAAE,MAAIP;AAAG,YAAMkzC,IAAE,KAAK,UAAW;AAAC,MAAAA,IAAE,MAAI3yC,EAAE,MAAM,aAAW,KAAG2yC,IAAE;AAAA,IAAK;AAAC,WAAM,EAAC,SAAQ3yC,EAAC;AAAA,EAAC;AAAA,EAAC,OAAO,WAAW0yC,GAAE;AAAC,UAAM1yC,IAAE+iD,GAAI;AAAC,WAAO/iD,EAAE,UAAU0yC,EAAE,MAAM,GAAE1yC,EAAE,UAAU0yC,EAAE,MAAM,GAAE1yC,EAAE,aAAa0yC,EAAE,SAAS,GAAE1yC,EAAE,cAAc0yC,EAAE,UAAU,GAAE1yC;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,WAAM,EAAC,GAAG,MAAM,WAAY,GAAC,YAAW,KAAK,cAAe,GAAC,WAAU,KAAK,aAAY,GAAG,MAAK,aAAY,SAAQ,EAAC;AAAA,EAAC;AAAA,EAAC,eAAe0yC,GAAE1yC,GAAE;AAAC,UAAMP,IAAEsjD,GAAI;AAAC,IAAAtjD,EAAE,cAAcizC,EAAE,MAAM,GAAEjzC,EAAE,aAAaizC,EAAE,KAAK;AAAE,UAAMC,IAAE,KAAK,aAAY;AAAG,WAAOlzC,EAAE,aAAakzC,CAAC,GAAElzC,EAAE,UAAU,KAAK,cAAa,CAAE,GAAEA,EAAE,SAAS,KAAK,aAAY,CAAE,GAAE,KAAK,YAAYA,GAAEO,CAAC,GAAEP;AAAA,EAAC;AAAA,EAAC,kBAAiB;AAAC,UAAMizC,IAAE,KAAK,YAAa;AAAC,QAAOA,EAAE,WAAN,KAAc+F,EAAG/F,EAAE,EAAE,KAAQA,EAAE,GAAG,eAAgB,EAAC,KAAI,MAA/B,IAAkC;AAAC,UAAU,KAAK,eAAgB,MAA5B;AAA6B,eAAO,KAAK,WAAU,GAAG,KAAK,OAAM,GAAG;AAAG,UAAU,KAAK,yBAAZ;AAAiC,eAAO,KAAK,kBAAiB,KAAK,UAAS;AAAA,IAAE;AAAC,WAAM;AAAA,EAAE;AAAC;AAAC,SAASgV,GAAGhV,GAAE;AAAC,QAAM,IAAEqQ;AAAK,MAAGrQ,EAAE,OAAM;AAAC,MAAE,UAAUA,EAAE,MAAM,SAAS;AAAE,UAAMjzC,IAAE,SAASizC,EAAE,MAAM,YAAW,EAAE,IAAE;AAAG,IAAAjzC,IAAE,KAAG,EAAE,UAAUA,CAAC;AAAA,EAAC;AAAC,SAAM,EAAC,MAAK,EAAC;AAAC;AAAC,SAASsjD,KAAI;AAAC,SAAO/9C,GAAG,IAAIm9C,IAAE;AAAC;AAAC,SAAStB,GAAGnO,GAAE;AAAC,SAAOA,aAAayP;AAAE;AAAC,MAAMwF,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG,GAAEC,KAAG;AAAE,SAASjB,GAAGpU,GAAE,GAAEjzC,GAAE,GAAE;AAAC,QAAM0K,IAAEuoC,EAAE;AAAa,EAAAvoC,EAAE,MAAO,GAACuoC,EAAE,eAAa6U,GAAI,GAAC7U,EAAE,sBAAoB,GAAEA,EAAE,kBAAgB,MAAKA,EAAE,aAAW2C,IAAG3C,EAAE,gBAAgB,MAAK,GAAGA,EAAE,eAAa,oBAAI,OAAIA,EAAE,eAAe,MAAO,GAACA,EAAE,mBAAiB,oBAAI,OAAIA,EAAE,cAAY,oBAAI,OAAIA,EAAE,WAAS,IAAGA,EAAE,sBAAoB;AAAK,QAAM,IAAEA,EAAE;AAAU,EAAO,MAAP,SAAW,EAAE,WAAU,GAAGA,EAAE,YAAU,OAAa,MAAP,SAAW,EAAE,cAAY,KAAWjzC,MAAP,SAAWA,EAAE,cAAY,IAAG0K,EAAE,IAAI,QAAO1K,CAAC;AAAE;AAAC,SAASuoD,GAAGtV,GAAE;AAAC,QAAM,IAAEA,KAAG,CAAA,GAAGjzC,IAAE8mD,GAAE,GAAG,IAAE,EAAE,SAAO,IAAGp8C,IAAWuoC,MAAT,SAAWjzC,IAAE,EAAE,gBAAc,MAAK,IAAE,EAAE,iBAAe,IAAGmzC,IAAE2U,GAAI,GAAC,IAAE,EAAE,cAAmBp9C,MAAP,OAASA,EAAE,QAAQ,YAAUsxC,GAAE,IAAI,IAAE,EAAE,aAAY,IAAE,CAAC6L,IAAG5D,IAAGV,IAAGuB,IAAGpC,IAAGsF,IAAG,GAAG,EAAE,SAAO,EAAE,GAAE,EAAC,SAAQ,GAAE,MAAKroD,EAAC,IAAE,GAAE0zC,IAAW,EAAE,aAAX,UAAqB,EAAE;AAAS,MAAI;AAAE,MAAYJ,MAAT,UAAmBjzC,MAAP;AAAS,QAAEA,EAAE;AAAA,OAAW;AAAC,QAAE,oBAAI;AAAI,aAAQizC,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,UAAI1yC,IAAE,EAAE0yC,IAAGjzC,IAAE,MAAKkzC,IAAE;AAAK,UAAe,OAAO3yC,KAAnB,YAAqB;AAAC,cAAM0yC,IAAE1yC;AAAE,QAAAA,IAAE0yC,EAAE,SAAQjzC,IAAEizC,EAAE,MAAKC,IAAED,EAAE,aAAW;AAAA,MAAI;AAAC,YAAMvoC,IAAEnK,EAAE,QAAO,GAAG0F,IAAE1F,EAAE,UAAS,GAAG4yC,IAAE,oBAAI;AAAI,MAAOltC,MAAP,QAAUktC,EAAE,IAAIltC,CAAC,GAAE,EAAE,IAAIyE,GAAE,EAAC,WAAU/K,KAAGA,EAAE,SAAOA,EAAE,OAAO,IAAIY,CAAC,IAAE,QAAO,OAAMA,GAAE,SAAQP,GAAE,kBAAiBkzC,GAAE,YAAWC,EAAC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC,QAAM,IAAE,IAAIoH,GAAGpH,GAAEzoC,GAAE,GAAE,EAAC,eAAc,GAAE,WAAU,GAAE,OAAM,EAAC,GAAE,KAAG,QAAQ,OAAM,SAASuoC,GAAE1yC,GAAE;AAAC,UAAMP,IAAE,oBAAI,OAAIkzC,IAAE,oBAAI,OAAIxoC,IAAE,CAAAuoC,MAAG;AAAC,aAAO,KAAKA,CAAC,EAAE,QAAS,CAAA1yC,MAAG;AAAC,YAAI2yC,IAAElzC,EAAE,IAAIO,CAAC;AAAE,QAAS2yC,MAAT,WAAaA,IAAE,CAAA,GAAGlzC,EAAE,IAAIO,GAAE2yC,CAAC,IAAGA,EAAE,KAAKD,EAAE1yC,EAAE;AAAA,MAAC,CAAG;AAAA,IAAA;AAAE,WAAO0yC,EAAE,QAAS,CAAAA,MAAG;AAAC,YAAM1yC,IAAE0yC,EAAE,MAAM;AAAU,UAAS1yC,KAAN,QAAS2yC,EAAE,IAAI3yC,CAAC;AAAE;AAAO,MAAA2yC,EAAE,IAAI3yC,CAAC;AAAE,YAAMP,IAAEO,EAAE,KAAK0yC,EAAE,KAAK;AAAE,MAAOjzC,MAAP,QAAU0K,EAAE1K,CAAC;AAAA,IAAC,IAAIO,KAAGmK,EAAEnK,CAAC,GAAEP;AAAA,EAAC,EAAE,GAAEL,IAAEA,EAAE,SAAO,MAAM,GAAE0zC,CAAC;AAAE,SAAgB,MAAT,WAAa,EAAE,sBAAoB,GAAE,EAAE,aAAWyC,KAAI;AAAC;AAAC,MAAMyE,GAAE;AAAA,EAAC,YAAYtH,GAAE1yC,GAAEP,GAAEkzC,GAAExoC,GAAEzE,GAAEktC,GAAE;AAAC,SAAK,gBAAc5yC,GAAE,KAAK,eAAa,MAAK,KAAK,eAAa0yC,GAAE,KAAK,sBAAoB,MAAK,KAAK,kBAAgB,MAAK,KAAK,YAAU,CAAE,GAAC,KAAK,eAAa,oBAAI,OAAI,KAAK,WAAS,CAAA,GAAG,KAAK,YAAU,IAAG,KAAK,aAAW,EAAC,WAAU,oBAAI,OAAI,UAAS,oBAAI,OAAI,UAAS,oBAAI,OAAI,MAAK,oBAAI,OAAI,aAAY,oBAAI,OAAI,QAAO,oBAAI,MAAG,GAAE,KAAK,YAAU,oBAAI,OAAI,KAAK,UAAQC,GAAE,KAAK,SAAOlzC,GAAE,KAAK,cAAY,IAAG,KAAK,qBAAmB,MAAK,KAAK,aAAW41C,IAAG,KAAK,kBAAgB,oBAAI,OAAI,KAAK,eAAa,oBAAI,OAAI,KAAK,iBAAe,oBAAI,OAAI,KAAK,mBAAiB,oBAAI,OAAI,KAAK,cAAY,oBAAI,OAAI,KAAK,YAAU,MAAK,KAAK,OAAKoG,GAAE,GAAG,KAAK,WAAStxC,GAAE,KAAK,mBAAiBzE,GAAE,KAAK,YAAUktC,GAAE,KAAK,YAAiB5yC,MAAP,QAAUA,EAAE,WAAU,KAAK,UAAQ,MAAK,KAAK,sBAAoB;AAAA,EAAI;AAAA,EAAC,cAAa;AAAC,WAAa,KAAK,mBAAX;AAAA,EAA0B;AAAA,EAAC,uBAAuB0yC,GAAE;AAAC,UAAM1yC,IAAE,KAAK,WAAW;AAAO,WAAOA,EAAE,IAAI0yC,CAAC,GAAE,MAAI;AAAC,MAAA1yC,EAAE,OAAO0yC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,yBAAyBA,GAAE;AAAC,UAAM1yC,IAAE,KAAK,WAAW;AAAS,WAAOA,EAAE,IAAI0yC,CAAC,GAAE,MAAI;AAAC,MAAA1yC,EAAE,OAAO0yC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,0BAA0BA,GAAE;AAAC,UAAM1yC,IAAE,KAAK,WAAW;AAAU,WAAOA,EAAE,IAAI0yC,CAAC,GAAE,MAAI;AAAC,MAAA1yC,EAAE,OAAO0yC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,4BAA4BA,GAAE;AAAC,UAAM1yC,IAAE,KAAK,WAAW;AAAY,WAAOA,EAAE,IAAI0yC,CAAC,GAAE,MAAI;AAAC,MAAA1yC,EAAE,OAAO0yC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,qBAAqBA,GAAE;AAAC,UAAM1yC,IAAE,KAAK,WAAW;AAAK,WAAO0yC,EAAE,KAAK,cAAa,IAAI,GAAE1yC,EAAE,IAAI0yC,CAAC,GAAE,MAAI;AAAC,MAAAA,EAAE,MAAK,KAAK,YAAY,GAAE1yC,EAAE,OAAO0yC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,gBAAgBA,GAAE1yC,GAAEP,GAAE;AAAC,IAASA,MAAT,UAAY+3C,EAAG,EAAE;AAAE,UAAM7E,IAAE,KAAK;AAAU,IAAAA,EAAE,IAAID,CAAC,KAAGC,EAAE,IAAID,GAAE,CAAC,oBAAI,OAAI,oBAAI,OAAI,oBAAI,OAAI,oBAAI,OAAI,oBAAI,KAAG,CAAC;AAAE,UAAMvoC,IAAEwoC,EAAE,IAAID,CAAC;AAAE,IAASvoC,MAAT,UAAYqtC,EAAG,IAAG,OAAO9E,CAAC,CAAC;AAAE,UAAMhtC,IAAEyE,EAAE1K;AAAG,WAAOiG,EAAE,IAAI1F,CAAC,GAAE,MAAI;AAAC,MAAA0F,EAAE,OAAO1F,CAAC,GAAEmK,EAAE,MAAO,CAAAuoC,MAAOA,EAAE,SAAN,CAAU,KAAIC,EAAE,OAAOD,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,yBAAyBA,GAAE1yC,GAAEP,GAAE;AAAC,UAAMkzC,IAAE,KAAK,uCAAuC,KAAK,kBAAkBD,CAAC,CAAC,EAAE,OAAMvoC,IAAE,KAAK,WAAW;AAAS,IAAAA,EAAE,IAAInK,GAAE2yC,CAAC;AAAE,UAAMjtC,IAAEjG,KAAGA,EAAE;AAAmB,WAAgBiG,MAAT,UAAYA,KAAG,KAAK,2BAA2B1F,GAAE2yC,CAAC,GAAE,MAAI;AAAC,MAAAxoC,EAAE,OAAOnK,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,kBAAkB0yC,GAAE;AAAC,UAAM1yC,IAAE,KAAK,OAAO,IAAI0yC,EAAE,QAAS,CAAA;AAAE,WAAgB1yC,MAAT,UAAYw3C,EAAG,IAAG9E,EAAE,IAAI,GAAE1yC;AAAA,EAAC;AAAA,EAAC,uCAAuC0yC,GAAE;AAAC,WAAKA,EAAE;AAAkB,MAAAA,IAAE,KAAK,kBAAkBA,EAAE,gBAAgB;AAAE,WAAOA;AAAA,EAAC;AAAA,EAAC,2BAA2BA,GAAE1yC,GAAE;AAAC,UAAMP,IAAE,KAAK,cAAakzC,IAAE+J,GAAGj9C,CAAC,EAAE,IAAIO,EAAE,QAAO,CAAE;AAAE,QAAG,CAAC2yC;AAAE;AAAO,UAAMxoC,IAAE,oBAAI;AAAI,eAAUuoC,KAAKC,EAAE,KAAI;AAAG,MAAAxoC,EAAE,IAAIuoC,GAAE,SAAS;AAAE,IAAAvoC,EAAE,OAAK,KAAGuoC,EAAEvoC,GAAE,EAAC,aAAY,oBAAI,OAAI,iBAAgB1K,GAAE,YAAW,oBAAI,IAAI,CAAC,0BAA0B,CAAC,EAAC,CAAC;AAAA,EAAC;AAAA,EAAC,6BAA6BizC,GAAE1yC,GAAE;AAAC,UAAMP,IAAE,KAAK,kBAAkBizC,CAAC;AAAE,WAAOjzC,EAAE,WAAW,IAAIO,CAAC,GAAEP;AAAA,EAAC;AAAA,EAAC,sBAAsBizC,GAAE1yC,GAAE;AAAC,UAAMP,IAAE,KAAK,6BAA6BizC,GAAE1yC,CAAC,GAAE2yC,IAAE,CAAClzC,CAAC,GAAE0K,IAAE1K,EAAE;AAAiB,QAAS0K,KAAN,MAAQ;AAAC,YAAMuoC,IAAE,KAAK,6BAA6BvoC,GAAEnK,CAAC;AAAE,MAAA2yC,EAAE,KAAKD,CAAC;AAAA,IAAC;AAAC,QAAIhtC,GAAEktC;AAAE,WAAOltC,IAAE,MAAKktC,IAAEF,EAAE,WAAU2F,GAAG3yC,GAAG,MAAI;AAAC,YAAMgtC,IAAEiI,GAAE;AAAG,UAAGjI,EAAE;AAAU;AAAO,UAAYE,MAAT;AAAW,eAAO,KAAKwI,GAAI,EAAC,UAAS;AAAG,YAAMp7C,IAAE0yC,EAAE;AAAS,iBAAS,CAAA,EAAEA,CAAC,KAAI1yC;AAAE,QAAA0yC,EAAE,UAAW;AAAA,IAAA,GAAUhtC,EAAE,wBAAT,OAA6B,EAAC,KAAI,gBAAe,IAAE,MAAM,GAAE,MAAI;AAAC,MAAAitC,EAAE,QAAS,CAAAD,MAAGA,EAAE,WAAW,OAAO1yC,CAAC,CAAG;AAAA,IAAA;AAAA,EAAC;AAAA,EAAC,QAAQ0yC,GAAE;AAAC,WAAO,KAAK,OAAO,IAAIA,EAAE,QAAS,CAAA;AAAA,EAAC;AAAA,EAAC,SAASA,GAAE;AAAC,WAAOA,EAAE,MAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,EAAC;AAAA,EAAC,gBAAgBA,GAAE1yC,GAAE;AAAC,WAAO68C,EAAG,MAAKnK,GAAE1yC,CAAC;AAAA,EAAC;AAAA,EAAC,gBAAe;AAAC,WAAO,KAAK;AAAA,EAAW;AAAA,EAAC,iBAAgB;AAAC,WAAO,KAAK;AAAA,EAAY;AAAA,EAAC,SAAQ;AAAC,WAAO,KAAK;AAAA,EAAI;AAAA,EAAC,eAAe0yC,GAAE;AAAC,UAAM1yC,IAAE,KAAK;AAAa,QAAG0yC,MAAI1yC,GAAE;AAAC,YAAMP,IAAE88C,GAAG,KAAK,QAAQ,OAAM,MAAM,GAAE5J,IAAE,KAAK,uBAAqB,KAAK;AAAa,UAAG,KAAK,eAAaD,GAAEoU,GAAG,MAAK9mD,GAAE0yC,GAAEC,CAAC,GAAS3yC,MAAP,SAAW,KAAK,QAAQ,iBAAeyiD,GAAGziD,CAAC,GAAQP,KAAN,QAASO,EAAE,UAAU,OAAO,GAAGP,CAAC,IAAUizC,MAAP,MAAS;AAAC,cAAM1yC,IAAE,SAAS0yC,GAAE;AAAC,gBAAM1yC,IAAE0yC,EAAE;AAAc,iBAAO1yC,KAAGA,EAAE,eAAa;AAAA,QAAI,EAAE0yC,CAAC,GAAEC,IAAED,EAAE;AAAM,QAAAC,EAAE,aAAW,QAAOA,EAAE,aAAW,YAAWA,EAAE,YAAU,cAAaD,EAAE,aAAa,uBAAsB,MAAM,GAAE,KAAK,UAAQ1yC,GAAE,KAAK,aAAWu1C,IAAGyD,GAAG,IAAI,GAAE,KAAK,YAAY,IAAI,eAAe,GAAE6N,GAAG,IAAI,GAAE,KAAK,QAAQ,iBAAe,SAASnU,GAAE1yC,GAAE;AAAC,gBAAMP,IAAEizC,EAAE,eAAcC,IAAEmP,GAAG,IAAIriD,CAAC;AAAE,WAAUkzC,MAAT,UAAYA,IAAE,MAAIlzC,EAAE,iBAAiB,mBAAkB6iD,EAAE,GAAER,GAAG,IAAIriD,IAAGkzC,KAAG,KAAG,CAAC,GAAED,EAAE,kBAAgB1yC;AAAE,gBAAMmK,IAAEi4C,GAAG1P,CAAC;AAAE,mBAAQjzC,IAAE,GAAEA,IAAEwhD,GAAG,QAAOxhD,KAAI;AAAC,kBAAK,CAACkzC,GAAEjtC,CAAC,IAAEu7C,GAAGxhD,IAAGmzC,IAAc,OAAOltC,KAAnB,aAAqB,CAAAgtC,MAAG;AAAC,cAAA8P,GAAG9P,CAAC,MAAI6P,GAAG7P,CAAC,IAAG1yC,EAAE,WAAU,KAAc2yC,MAAV,YAAcjtC,EAAEgtC,GAAE1yC,CAAC;AAAA,YAAE,IAAE,CAAA0yC,MAAG;AAAC,kBAAG8P,GAAG9P,CAAC;AAAE;AAAO,cAAA6P,GAAG7P,CAAC;AAAE,oBAAMjzC,IAAEO,EAAE,WAAU;AAAG,sBAAO2yC,GAAG;AAAA,gBAAA,KAAI;AAAM,yBAAOlzC,KAAGo9C,EAAG78C,GAAEi0C,IAAEvB,CAAC;AAAA,gBAAE,KAAI;AAAO,yBAAOmK,EAAG78C,GAAEg0C,IAAEtB,CAAC;AAAA,gBAAE,KAAI;AAAQ,yBAAOjzC,KAAGo9C,EAAG78C,GAAEJ,IAAE8yC,CAAC;AAAA,gBAAE,KAAI;AAAY,yBAAOjzC,KAAGo9C,EAAG78C,GAAE6zC,IAAEnB,CAAC;AAAA,gBAAE,KAAI;AAAW,yBAAOjzC,KAAGo9C,EAAG78C,GAAE8zC,IAAEpB,CAAC;AAAA,gBAAE,KAAI;AAAU,yBAAOjzC,KAAGo9C,EAAG78C,GAAE+zC,IAAErB,CAAC;AAAA,gBAAE,KAAI;AAAQ,yBAAOjzC,KAAGo9C,EAAG78C,GAAEu0C,IAAE7B,CAAC;AAAA,gBAAE,KAAI;AAAO,yBAAOjzC,KAAGo9C,EAAG78C,GAAEw0C,IAAE9B,CAAC;AAAA,gBAAE,KAAI;AAAO,yBAAOjzC,KAAGo9C,EAAG78C,GAAE2zC,IAAEjB,CAAC;AAAA,cAAC;AAAA,YAAC;AAAE,YAAAA,EAAE,iBAAiBC,GAAEC,CAAC,GAAEzoC,EAAE,KAAM,MAAI;AAAC,cAAAuoC,EAAE,oBAAoBC,GAAEC,CAAC;AAAA,YAAC,CAAG;AAAA,UAAA;AAAA,QAAC,EAAEF,GAAE,IAAI,GAAQjzC,KAAN,QAASizC,EAAE,UAAU,IAAI,GAAGjzC,CAAC;AAAA,MAAC;AAAM,aAAK,eAAakzC,GAAE,KAAK,sBAAoB,MAAK,KAAK,UAAQ;AAAK,MAAAoU,GAAG,QAAO,MAAK,IAAGrU,GAAE1yC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,gBAAgB0yC,GAAE;AAAC,WAAO,KAAK,aAAa,IAAIA,CAAC,KAAG;AAAA,EAAI;AAAA,EAAC,iBAAgB;AAAC,WAAO,KAAK;AAAA,EAAY;AAAA,EAAC,eAAeA,GAAE1yC,GAAE;AAAC,IAAA0yC,EAAE,QAAS,KAAE8E,EAAG,EAAE,GAAEuB,GAAG,IAAI;AAAE,UAAMt5C,IAAE,KAAK,qBAAoBkzC,IAAE,KAAK,aAAYxoC,IAAWnK,MAAT,SAAWA,EAAE,MAAI;AAAK,IAAOP,MAAP,QAAUA,EAAE,QAAS,MAAS0K,KAAN,QAASwoC,EAAE,IAAIxoC,CAAC,GAAE08C,GAAG,IAAI,IAAG,KAAK,sBAAoBnU,GAAE,KAAK,aAAW6C,IAAG,KAAK,eAAe,IAAI,QAAO,EAAE,GAAE,KAAK,kBAAgB,MAAWprC,KAAN,QAASwoC,EAAE,IAAIxoC,CAAC,GAAE08C,GAAG,IAAI;AAAA,EAAC;AAAA,EAAC,iBAAiBnU,GAAE1yC,GAAE;AAAC,WAAO,SAAS0yC,GAAE1yC,GAAEP,GAAE;AAAC,YAAMkzC,IAAE4U,GAAE,GAAGp9C,IAAE67C,IAAGtgD,IAAEwgD,IAAGtT,IAAEqT,IAAG1mD,IAAES,EAAE,gBAAeJ,IAAEI,EAAE,cAAaH,IAAEG,EAAE,iBAAgB6yC,IAAE7yC,EAAE;AAAW,MAAAA,EAAE,iBAAe,oBAAI,OAAIA,EAAE,eAAa,oBAAI,OAAIA,EAAE,kBAAgB,oBAAI,OAAIA,EAAE,aAAW,GAAEgmD,KAAGrT,GAAEuT,KAAG,IAAGD,KAAGjmD;AAAE,UAAG;AAAC,cAAMmK,IAAEnK,EAAE;AAAO,QAAA2mD,GAAGjU,EAAE,MAAKvoC,CAAC,GAAE1K,KAAGA,EAAC,GAAGkzC,EAAE,YAAU;AAAA,MAAE,SAAOD,GAAN;AAAS,QAAAA,aAAa,SAAO1yC,EAAE,SAAS0yC,CAAC;AAAA,MAAC,UAAC;AAAQ,QAAA1yC,EAAE,iBAAeT,GAAES,EAAE,eAAaJ,GAAEI,EAAE,kBAAgBH,GAAEG,EAAE,aAAW6yC,GAAEmT,KAAG77C,GAAE+7C,KAAGxgD,GAAEugD,KAAGrT;AAAA,MAAC;AAAC,aAAOD;AAAA,IAAC,EAAY,OAAOD,KAAjB,WAAmB,KAAK,MAAMA,CAAC,IAAEA,GAAE,MAAK1yC,CAAC;AAAA,EAAC;AAAA,EAAC,KAAK0yC,GAAE;AAAC,WAAOmU,GAAG,IAAI,GAAE,KAAK,eAAgB,EAAC,KAAKnU,GAAE,EAAC,QAAO,KAAI,CAAC;AAAA,EAAC;AAAA,EAAC,OAAOA,GAAE1yC,GAAE;AAAC,IAAAq4C,GAAG,MAAK3F,GAAE1yC,CAAC;AAAA,EAAC;AAAA,EAAC,MAAM0yC,GAAE1yC,IAAE,CAAE,GAAC;AAAC,UAAMP,IAAE,KAAK;AAAa,IAAOA,MAAP,SAAWA,EAAE,aAAa,kBAAiB,KAAK,GAAE44C,GAAG,MAAM,MAAI;AAAC,YAAM3F,IAAE4F,GAAI,GAAC74C,IAAE27C,GAAI;AAAC,MAAO1I,MAAP,OAASA,EAAE,QAAM,KAAOjzC,EAAE,sBAAN,MAAwCO,EAAE,qBAAhB,cAAiCP,EAAE,YAAa,IAACA,EAAE,UAAW;AAAA,IAAC,GAAG,EAAC,UAAS,MAAI;AAAC,MAAAA,EAAE,gBAAgB,gBAAgB,GAAEizC,KAAGA;IAAG,GAAE,KAAI,QAAO,CAAC,GAAS,KAAK,wBAAZ,QAAiCjzC,EAAE,gBAAgB,gBAAgB;AAAA,EAAE;AAAA,EAAC,OAAM;AAAC,UAAMizC,IAAE,KAAK;AAAa,IAAOA,MAAP,QAAUA,EAAE,KAAI;AAAG,UAAM1yC,IAAEg4C,GAAG,KAAK,OAAO;AAAE,IAAOh4C,MAAP,QAAUA,EAAE,gBAAiB;AAAA,EAAA;AAAA,EAAC,aAAY;AAAC,WAAO,KAAK;AAAA,EAAS;AAAA,EAAC,YAAY0yC,GAAE;AAAC,SAAK,cAAYA,MAAI,KAAK,YAAUA,GAAEqU,GAAG,YAAW,MAAK,IAAGrU,CAAC;AAAA,EAAE;AAAA,EAAC,SAAQ;AAAC,WAAM,EAAC,aAAY,KAAK,aAAa,OAAM,EAAE;AAAA,EAAC;AAAC;AAACsH,GAAG,UAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CCEnm/FiO,IAAM,QAAQ,IAAI,aAAa,gBAAgBC,KAASC,IAGjDphC,KAAuBkhC,EAAI,sBAE3BrwB,KAAuBqwB,EAAI,sBAE3BlxB,KAAuBkxB,EAAI,sBAI3BtrB,KAAiBsrB,EAAI,gBACrB5qC,KAAkB4qC,EAAI,iBACtBxmC,KAAmBwmC,EAAI,kBACvBjoB,KAAuBioB,EAAI,sBAC3BthC,KAAashC,EAAI,YAGjBjtC,KAAgBitC,EAAI,eAEpBhrC,KAAwBgrC,EAAI,uBAC5BxsC,KAAWwsC,EAAI,UACfn1C,IAAgBm1C,EAAI,eAEpBzkC,KAAeykC,EAAI,cAGnBriB,KAAsBqiB,EAAI,qBAC1BzzC,KAAmByzC,EAAI,kBACvB7yC,IAAiB6yC,EAAI,gBAErBhvC,KAAcgvC,EAAI,aAClB/uC,KAAmB+uC,EAAI,kBAEvB98B,KAAmB88B,EAAI,kBACvBx0C,IAAoBw0C,EAAI,mBACxB/lC,KAAc+lC,EAAI,aAClBlkC,KAAsBkkC,EAAI,qBAE1BxzC,IAAcwzC,EAAI,aAClBvvC,KAAsBuvC,EAAI,qBAG1Ble,KAAuBke,EAAI,sBAC3BhoC,KAAagoC,EAAI,YAEjBtyC,KAAgBsyC,EAAI,eACpB1iC,KAAa0iC,EAAI,YACjB3W,KAA6B2W,EAAI,4BAEjC75C,KAAmB65C,EAAI,kBACvB55C,KAAmB45C,EAAI,kBACvB/5C,KAAuB+5C,EAAI,sBAC3B95C,KAAwB85C,EAAI,uBAE5B5X,KAA4B4X,EAAI,2BAChChY,IAA0BgY,EAAI,yBAI9B/7C,KAAoC+7C,EAAI,mCACxCl6C,KAAek6C,EAAI,cACnBj6C,KAAci6C,EAAI,aAClBl8C,KAA2Bk8C,EAAI,0BAC/B37C,KAAsB27C,EAAI,qBAC1B57C,KAAsB47C,EAAI,qBAG1Br6C,KAAoBq6C,EAAI,mBACxBv6C,KAAeu6C,EAAI,cAOnBj8C,KAA4Bi8C,EAAI,2BAChCh8C,KAA2Bg8C,EAAI,0BAY/Bp7C,KAAyBo7C,EAAI,wBAC7Bt7C,KAA0Bs7C,EAAI,yBAE9B96C,KAAwB86C,EAAI,uBAC5B56C,KAAqB46C,EAAI,oBAEzBh7C,KAAoBg7C,EAAI,mBASxB97C,KAAgB87C,EAAI,eAEpBx7C,KAAew7C,EAAI,cACnB77C,KAAsB67C,EAAI,qBAG1Bp8C,KAA2Co8C,EAAI,0CAC/Ch6C,KAAqBg6C,EAAI,oBAGzB3uB,KAAW2uB,EAAI,UACfz7C,KAAey7C,EAAI,cAEnBhX,KAAegX,EAAI,cAGnB7hC,KAAiB6hC,EAAI,gBAErBjiC,KAAsBiiC,EAAI,qBAC1BhiC,KAAgBgiC,EAAI,eACpB/hC,KAAkB+hC,EAAI,iBAGtB/vC,KAA0B+vC,EAAI;ACjIW,SAAStV,GAAE3yC,GAAE;AAAC,SAAOA,KAAGA,EAAE,cAAY,OAAO,UAAU,eAAe,KAAKA,GAAE,SAAS,IAAEA,EAAE,UAAQA;AAAC;AAAC,IAAI0yC,KAAEC,GAAG,SAAS3yC,GAAE;AAAC,QAAMP,IAAE,IAAI;AAAgB,EAAAA,EAAE,OAAO,QAAOO,CAAC;AAAE,WAAQA,IAAE,GAAEA,IAAE,UAAU,QAAOA;AAAI,IAAAP,EAAE,OAAO,KAAI,UAAUO,EAAE;AAAE,QAAM,MAAM,2BAA2BA,2CAA2CP,iHAAiH;AAAC;AAAI,MAAMF,KAAES,GAAE,IAAI;AAAE,SAAS4yC,GAAE5yC,GAAEP,GAAE;AAAC,MAAIkzC,IAAE;AAAK,SAAa3yC,KAAN,SAAU2yC,IAAE3yC,EAAE,KAAI,EAAC,UAAS,WAAU;AAAC,WAAaP,MAAUkzC,KAAN,OAAQA,EAAE,aAAW;AAAA,EAAI,EAAC;AAAC;AAAC,SAASE,KAAG;AAAC,QAAM7yC,IAAEP,GAAEF,EAAC;AAAE,SAAaS,KAAN,QAAS0yC,GAAE,CAAC,GAAE1yC;AAAC;ACA3V,MAAM0F,KAAe,OAAO,SAApB,OAAqC,OAAO,aAAhB,UAAmC,OAAO,SAAS,kBAAzB,QAAuClG,KAAEkG,KAAE7F,KAAED,IAAEizC,KAAE,EAAC,KAAI,gBAAe;AAAE,SAASnzC,GAAE,EAAC,eAAcG,GAAE,UAASD,EAAC,GAAE;AAAC,QAAMF,IAAEH,GAAG,MAAI;AAAC,UAAK,EAAC,OAAMmzC,GAAE,WAAU9yC,GAAE,OAAML,GAAE,SAAQuzC,GAAE,aAAYtzC,GAAE,MAAKE,EAAC,IAAEG,GAAET,IAAEY,GAAE,MAAK0yC,CAAC,GAAEc,IAAEZ,GAAE,EAAC,UAAS/yC,EAAE,UAAS,MAAKH,GAAE,WAAUE,GAAE,OAAML,GAAE,SAAQ,CAAAS,MAAG8yC,EAAE9yC,GAAEwzC,CAAC,GAAE,OAAMd,EAAC,CAAC;AAAE,WAAO,SAAS1yC,GAAE0yC,GAAE;AAAC,UAAUA,MAAP;AAAgB,YAAYA,MAAT;AAAW,UAAA1yC,EAAE,OAAQ,MAAI;AAAC,kBAAM0yC,IAAEjzC;AAAI,gBAAGizC,EAAE,WAAU;AAAC,oBAAME,IAAEzoC,GAAG;AAAC,cAAAuoC,EAAE,OAAOE,CAAC;AAAE,oBAAMnzC,IAAEiG,KAAE,SAAS,gBAAc;AAAK,eAAQitC,EAAC,MAAR,QAAmBlzC,MAAP,QAAUA,MAAIO,EAAE,eAAc,MAAK4yC,EAAE,OAAQ;AAAA,YAAA;AAAA,UAAC,GAAGC,EAAC;AAAA,iBAAiBH,MAAP;AAAS,kBAAO,OAAOA;YAAG,KAAI,UAAS;AAAC,oBAAME,IAAE5yC,EAAE,iBAAiB0yC,CAAC;AAAE,cAAA1yC,EAAE,eAAe4yC,GAAEC,EAAC;AAAE;AAAA,YAAK;AAAA,YAAC,KAAI;AAAS,cAAA7yC,EAAE,eAAe0yC,GAAEG,EAAC;AAAE;AAAA,YAAM,KAAI;AAAW,cAAA7yC,EAAE,OAAQ,MAAI;AAACP,gBAAAA,KAAI,aAAWizC,EAAE1yC,CAAC;AAAA,cAAC,GAAG6yC,EAAC;AAAA,UAAC;AAAA;AAAA,IAAC,EAAEW,GAAEh0C,CAAC,GAAE,CAACg0C,GAAEp0C,CAAC;AAAA,EAAC,GAAG,CAAA,CAAE;AAAE,SAAOI,GAAG,MAAI;AAAC,UAAMQ,IAAEH,EAAE,UAAS,CAAC6yC,CAAC,IAAEhzC;AAAE,IAAAgzC,EAAE,YAAqB1yC,MAAT,UAAYA,CAAC;AAAA,EAAC,GAAG,CAAE,CAAA,GAAE8yC,GAAC,QAAA,IAACJ,GAAE,UAAS,EAAC,OAAMhzC,GAAE,UAASE,EAAC,CAAC;AAAC;ACAvhC,MAAMizC,KAAe,OAAO,SAApB,OAAqC,OAAO,aAAhB,UAAmC,OAAO,SAAS,kBAAzB,SAAuCH,KAAEjzC;AAAE,SAASG,GAAEI,GAAE;AAAC,SAAM,EAAC,gBAAe,MAAIA,EAAE,WAAU,GAAG,WAAU,CAAA0yC,MAAG1yC,EAAE,yBAAyB0yC,CAAC,EAAC;AAAC;AAAC,SAAS7yC,KAAG;AAAC,SAAO,SAAS6yC,GAAE;AAAC,UAAK,CAACjzC,CAAC,IAAEO,GAAC,GAAGJ,IAAE+yC,GAAG,MAAID,EAAEjzC,CAAC,GAAG,CAACA,GAAEizC,CAAC,CAAC,GAAE7yC,IAAEsK,GAAEvK,EAAE,eAAc,CAAE,GAAE,CAACL,GAAEuzC,CAAC,IAAEF,GAAE/yC,EAAE,OAAO;AAAE,WAAOgzC,GAAG,MAAI;AAAC,YAAK,EAAC,gBAAe7yC,GAAE,WAAU0yC,EAAC,IAAE9yC,GAAEH,IAAEO;AAAI,aAAOH,EAAE,YAAUJ,MAAII,EAAE,UAAQJ,GAAEqzC,EAAErzC,CAAC,IAAGizC,EAAG,CAAA1yC,MAAG;AAAC,QAAAH,EAAE,UAAQG,GAAE8yC,EAAE9yC,CAAC;AAAA,MAAC,CAAC;AAAA,IAAE,GAAG,CAACJ,GAAE8yC,CAAC,CAAC,GAAEnzC;AAAA,EAAC,EAAEK,EAAC;AAAC;ACcvnB,SAASwoD,KAAmB;AAE1B,SADa3sC,KACD;AACd;AAgBA,SAAS4sC,GAAwBC,GAAmBC,IAAO,IAAM;AAC/D,MAAID;AACF,WAAO;AAET,MAAIl1C,IAAOg1C;AACX,SAAIG,MACFn1C,IAAOA,EAAK,SAEPA,MAAS;AAClB;AAQA,SAASo1C,GAA6BF,GAAmBC,GAAM;AAC7D,SAAO,MAAMF,GAAwBC,GAAmBC,CAAI;AAC9D;AAgBA,SAASE,GAAoB5rC,GAAa;AACxC,MAAI,CAACwrC,GAAwBxrC,GAAa,EAAK;AAC7C,WAAO;AAGT,QAAM1R,IADOsQ,KACS,eAChB+lB,IAAiBr2B,EAAS;AAChC,MAAIq2B,IAAiB;AACnB,WAAO;AAET,WAASr3B,IAAI,GAAGA,IAAIq3B,GAAgBr3B,KAAK;AACvC,UAAMu+C,IAAWv9C,EAAShB;AAC1B,QAAIqK,GAAiBk0C,CAAQ;AAC3B,aAAO;AAET,QAAItzC,EAAeszC,CAAQ,GAAG;AAI5B,UAHI,CAACv9B,GAAiBu9B,CAAQ,KAG1BA,EAAS,aAAa;AACxB,eAAO;AAET,YAAMC,IAAmBD,EAAS,eAC5BE,IAAyBD,EAAiB;AAChD,eAASjjD,IAAI,GAAGA,IAAIkjD,GAAwBljD,KAAK;AAC/C,cAAM0E,IAAQu+C,EAAiBx+C;AAC/B,YAAI,CAACsK,EAAYrK,CAAK;AACpB,iBAAO;AAAA,MAEV;AAAA,IACF;AAAA,EACF;AACD,SAAO;AACT;AAOA,SAASy+C,GAAyBP,GAAmB;AACnD,SAAO,MAAMG,GAAoBH,CAAiB;AACpD;AAiBA,SAASQ,GAAoC5oC,GAAM6oC,GAAkB;AACnE,MAAI7+C,IAAOgW,EAAK,iBACZ8oC,IAAoB;AACxB,EAAAC;AAAU,WAAO/+C,MAAS,QAAM;AAC9B,UAAIkL,EAAelL,CAAI,GAAG;AACxB,cAAME,IAAQF,EAAK;AACnB,YAAIE,MAAU,MAAM;AAClB,UAAAF,IAAOE;AACP;AAAA,QACD;AAAA,MACP,WAAeqK,EAAYvK,CAAI,GAAG;AAC5B,cAAMg/C,IAAah/C,EAAK;AACxB,YAAI8+C,IAAoBE,IAAaH;AACnC,iBAAO;AAAA,YACL,MAAA7+C;AAAA,YACA,QAAQ6+C,IAAmBC;AAAA,UACrC;AAEM,QAAAA,KAAqBE;AAAA,MACtB;AACD,YAAM9jC,IAAUlb,EAAK;AACrB,UAAIkb,MAAY,MAAM;AACpB,QAAAlb,IAAOkb;AACP;AAAA,MACD;AACD,UAAIzK,IAASzQ,EAAK;AAClB,aAAOyQ,MAAW,QAAM;AACtB,cAAM8a,IAAgB9a,EAAO;AAC7B,YAAI8a,MAAkB,MAAM;AAC1B,UAAAvrB,IAAOurB;AACP,mBAASwzB;AAAA,QACV;AACD,QAAAtuC,IAASA,EAAO;MACjB;AACD;AAAA,IACD;AACD,SAAO;AACT;AA6BA,SAASwuC,GAA0B52C,GAAQ62C,GAAU51C,GAAY61C,GAAY;AAC3E,QAAMC,IAAe,CAAAp/C,MACZA,aAAgBsJ,GAEnB+1C,IAAyB,CAAAr/C,MAAQ;AACrC,UAAM2M,IAAWwG,GAAgBnT,EAAK,eAAgB,CAAA;AACtD,IAAA2M,EAAS,UAAU3M,EAAK,UAAW,CAAA,GACnCA,EAAK,QAAQ2M,CAAQ;AAAA,EACzB,GACQ2yC,IAAU,CAAAt/C,MACPA,EAAK,UAAW,EAAC,QAEpBu/C,IAAqB,CAAAv/C,MAAQ;AACjC,QAAI,CAACA,EAAK;AACR;AAEF,QAAImQ,IAAcnQ,EAAK,sBACnBkJ,IAAOlJ,EAAK,kBACZqO,IAAcrO,GACdvF;AACJ,QAAI8P,EAAY4F,CAAW,GAAG;AAC5B,YAAMuiB,IAAeviB,EAAY,kBAC3BqvC,IAAe9sB,IAAexpB,GAC9Bu2C,IAAYP,EAASM,CAAY;AACvC,UAAIJ,EAAajvC,CAAW;AAC1B,YAAIsvC,MAAc,QAAQH,EAAQnvC,CAAW,MAAM,GAAG;AACpD,UAAAkvC,EAAuBlvC,CAAW;AAClC;AAAA,QACV,OAAe;AACL,gBAAM0I,IAAO4mC,EAAU,MAAM/sB,EAAa;AAC1C,cAAI7Z,IAAO,GAAG;AACZ,kBAAM6mC,IAAax2C,EAAK,MAAM,GAAG2P,CAAI,GAC/B8mC,IAAiBjtB,IAAegtB;AAGtC,gBAFAvvC,EAAY,OAAM,GAClBA,EAAY,eAAewvC,CAAc,GACrC9mC,MAAS3P,EAAK;AAChB,cAAAlJ,EAAK,OAAM;AAAA,iBACN;AACL,oBAAM4/C,IAAgB12C,EAAK,MAAM2P,CAAI;AACrC,cAAA7Y,EAAK,eAAe4/C,CAAa;AAAA,YAClC;AACD;AAAA,UACD;AAAA,QACF;AAAA,eACQH,MAAc,QAAQA,EAAU,QAAQ/sB,EAAa;AAC9D;AAAA,IAEH;AACD,QAAImtB,IAAwB;AAE5B,eAAa;AACX,MAAAplD,IAAQykD,EAASh2C,CAAI;AACrB,UAAIylB,IAAWl0B,MAAU,OAAO,KAAKyO,EAAK,MAAMzO,EAAM,GAAG;AAEzD,UADAyO,IAAOylB,GACHA,MAAa,IAAI;AACnB,cAAMve,IAAc/B,EAAY;AAChC,YAAI9D,EAAY6F,CAAW,GAAG;AAC5B,UAAAue,IAAWtgB,EAAY,eAAgB,IAAG+B,EAAY,eAAc;AACpE,gBAAM0vC,IAAYZ,EAASvwB,CAAQ;AACnC,cAAImxB,MAAc,MAAM;AACtB,YAAIV,EAAahvC,CAAW,IAC1BivC,EAAuBjvC,CAAW,IAElCA,EAAY,UAAS;AAEvB;AAAA,UACZ,WAAqB0vC,EAAU,UAAU;AAC7B;AAAA,QAEH;AAAA,MACF;AACD,UAAIrlD,MAAU;AACZ;AAEF,UAAIA,EAAM,UAAU,KAAK8P,EAAY4F,CAAW,KAAKA,EAAY,gBAAgB;AAC/E,QAAA0vC,KAAyBplD,EAAM;AAC/B;AAAA,MACD;AACD,UAAIslD;AAMJ,UALItlD,EAAM,UAAU,IAClB,CAACslD,GAAe1xC,CAAW,IAAIA,EAAY,UAAU5T,EAAM,GAAG,IAE9D,CAAA,EAAGslD,GAAe1xC,CAAW,IAAIA,EAAY,UAAU5T,EAAM,QAAQolD,GAAuBplD,EAAM,MAAMolD,CAAqB,GAEzHE,MAAkB;AACtB,cAAM,MAAM,oGAAyG;AAEvH,YAAM7lC,IAAkBilC,EAAWY,CAAa;AAGhD,UAFA7lC,EAAgB,UAAU6lC,EAAc,UAAW,CAAA,GACnDA,EAAc,QAAQ7lC,CAAe,GACjC7L,KAAe;AACjB;AAEF,MAAAwxC,IAAwB,GACxB1vC,IAAc+J;AAAA,IACf;AAAA,EACL,GACQ8lC,IAAwB,CAAAhgD,MAAQ;AACpC,UAAMkJ,IAAOlJ,EAAK,kBACZvF,IAAQykD,EAASh2C,CAAI;AAC3B,QAAIzO,MAAU,QAAQA,EAAM,UAAU,GAAG;AACvC,MAAA4kD,EAAuBr/C,CAAI;AAC3B;AAAA,IACD;AACD,QAAIkJ,EAAK,SAASzO,EAAM,KAAK;AAE3B,MAAAuF,EAAK,UAAUvF,EAAM,GAAG;AACxB;AAAA,IACD;AACD,UAAM0V,IAAcnQ,EAAK;AACzB,IAAIuK,EAAY4F,CAAW,KAAKA,EAAY,aAAY,MACtDkvC,EAAuBlvC,CAAW,GAClCkvC,EAAuBr/C,CAAI;AAE7B,UAAMoQ,IAAcpQ,EAAK;AACzB,IAAIuK,EAAY6F,CAAW,KAAKA,EAAY,aAAY,MACtDivC,EAAuBjvC,CAAW,GAG9BgvC,EAAap/C,CAAI,KACnBq/C,EAAuBr/C,CAAI;AAAA,EAGnC,GACQigD,IAA2B53C,EAAO,sBAAsB+mB,IAAUmwB,CAAkB,GACpFW,IAA6B73C,EAAO,sBAAsBiB,GAAY02C,CAAqB;AACjG,SAAO,CAACC,GAA0BC,CAA0B;AAC9D;;;;;;;;;;;AChUuJ,SAAS1kD,KAAG;AAAC,SAAOgtC,GAAC,EAAG,eAAgB;AAAA;AAAC,SAASG,GAAEH,GAAE,IAAE,IAAG;AAAC,MAAGA;AAAE,WAAM;AAAG,MAAIjzC,IAAEiG,GAAC;AAAG,SAAO,MAAIjG,IAAEA,EAAE,KAAI,IAASA,MAAL;AAAM;AAAC,SAASL,GAAEszC,GAAE,GAAE;AAAC,SAAM,MAAIG,GAAEH,GAAE,CAAC;AAAC;AAAC,SAAS9yC,GAAEgzC,GAAE;AAAC,MAAG,CAACC,GAAED,GAAE,EAAE;AAAE,WAAM;AAAG,QAAMrzC,IAAEmzC,GAAC,EAAG,YAAW,GAAGhtC,IAAEnG,EAAE;AAAO,MAAGmG,IAAE;AAAE,WAAM;AAAG,WAAQgtC,IAAE,GAAEA,IAAEhtC,GAAEgtC,KAAI;AAAC,UAAM,IAAEnzC,EAAEmzC;AAAG,QAAG1yC,GAAE,CAAC;AAAE,aAAM;AAAG,QAAGP,EAAE,CAAC,GAAE;AAAmB,UAAf,CAACkzC,GAAE,CAAC,KAAkB,EAAE,aAAN;AAAe,eAAM;AAAG,YAAM3yC,IAAE,EAAE,YAAa,GAACP,IAAEO,EAAE;AAAO,eAAQ2yC,IAAE,GAAEA,IAAElzC,GAAEkzC,KAAI;AAAC,cAAMlzC,IAAEO,EAAE0yC;AAAG,YAAG,CAACvoC,EAAE1K,CAAC;AAAE,iBAAM;AAAA,MAAE;AAAA,IAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASK,GAAE4yC,GAAE;AAAC,SAAM,MAAI9yC,GAAE8yC,CAAC;AAAC;AAAC,SAAS7yC,GAAE6yC,GAAE,GAAE;AAAC,MAAIC,IAAED,EAAE,cAAe,GAACE,IAAE;AAAE,EAAAF;AAAE,WAAYC,MAAP,QAAU;AAAC,UAAGlzC,EAAEkzC,CAAC,GAAE;AAAC,cAAMD,IAAEC,EAAE,cAAe;AAAC,YAAUD,MAAP,MAAS;AAAC,UAAAC,IAAED;AAAE;AAAA,QAAQ;AAAA,MAAC,WAASvoC,EAAEwoC,CAAC,GAAE;AAAC,cAAMD,IAAEC,EAAE,mBAAkB;AAAG,YAAGC,IAAEF,IAAE;AAAE,iBAAM,EAAC,MAAKC,GAAE,QAAO,IAAEC,EAAC;AAAE,QAAAA,KAAGF;AAAA,MAAC;AAAC,YAAMA,IAAEC,EAAE,eAAgB;AAAC,UAAUD,MAAP,MAAS;AAAC,QAAAC,IAAED;AAAE;AAAA,MAAQ;AAAC,UAAInzC,IAAEozC,EAAE,UAAS;AAAG,aAAYpzC,MAAP,QAAU;AAAC,cAAMmzC,IAAEnzC,EAAE,eAAc;AAAG,YAAUmzC,MAAP,MAAS;AAAC,UAAAC,IAAED;AAAE,mBAASA;AAAA,QAAC;AAAC,QAAAnzC,IAAEA,EAAE,UAAW;AAAA,MAAA;AAAC;AAAA,IAAK;AAAC,SAAO;AAAI;AAAC,SAASuzC,GAAEJ,GAAE;AAAC,SAAOA,KAAGA,EAAE,cAAY,OAAO,UAAU,eAAe,KAAKA,GAAE,SAAS,IAAEA,EAAE,UAAQA;AAAC;AAAC,IAAIhuC,KAAEouC,GAAG,SAASJ,GAAE;AAAC,QAAM,IAAE,IAAI;AAAgB,IAAE,OAAO,QAAOA,CAAC;AAAE,WAAQ,IAAE,GAAE,IAAE,UAAU,QAAO;AAAI,MAAE,OAAO,KAAI,UAAU,EAAE;AAAE,QAAM,MAAM,2BAA2BA,2CAA2C,iHAAiH;AAAC,CAAC;AAAG,SAASU,GAAEV,GAAE,GAAEjzC,GAAE,GAAE;AAAC,QAAMiG,IAAE,CAAAgtC,MAAGA,aAAajzC,GAAEozC,IAAE,CAAAH,MAAG;AAAC,UAAM1yC,IAAET,GAAEmzC,EAAE,eAAgB,CAAA;AAAE,IAAA1yC,EAAE,UAAU0yC,EAAE,UAAS,CAAE,GAAEA,EAAE,QAAQ1yC,CAAC;AAAA,EAAC;AAAE,SAAM,CAAC0yC,EAAE,sBAAsBE,IAAG,CAAAF,MAAG;AAAC,QAAG,CAACA,EAAE;AAAe;AAAO,QAAIjzC,GAAEmzC,IAAEF,EAAE,mBAAkB,GAAGnzC,IAAEmzC,EAAE,kBAAiBtzC,IAAEszC;AAAE,QAAGvoC,EAAEyoC,CAAC,GAAE;AAAC,YAAMnzC,IAAEmzC,EAAE,eAAc,GAAGD,IAAE,EAAElzC,IAAEF,CAAC;AAAE,UAAGmG,EAAEktC,CAAC,GAAE;AAAC,YAAUD,MAAP,SAAe,CAAAD,MAAGA,EAAE,UAAW,EAAC,QAAQE,CAAC,MAA/B;AAAiC,iBAAO,KAAKC,EAAED,CAAC;AAAE;AAAC,gBAAM5yC,IAAE2yC,EAAE,MAAIlzC,EAAE;AAAO,cAAGO,IAAE,GAAE;AAAC,kBAAM2yC,IAAElzC,IAAEF,EAAE,MAAM,GAAES,CAAC;AAAE,gBAAG4yC,EAAE,OAAM,GAAGA,EAAE,eAAeD,CAAC,GAAE3yC,MAAIT,EAAE;AAAO,cAAAmzC,EAAE,OAAQ;AAAA,iBAAK;AAAC,oBAAMjzC,IAAEF,EAAE,MAAMS,CAAC;AAAE,cAAA0yC,EAAE,eAAejzC,CAAC;AAAA,YAAC;AAAC;AAAA,UAAM;AAAA,QAAC;AAAA,MAAC,WAAgBkzC,MAAP,QAAUA,EAAE,QAAMlzC,EAAE;AAAO;AAAA,IAAM;AAAC,QAAIG,IAAE;AAAE,eAAO;AAAC,MAAAH,IAAE,EAAEF,CAAC;AAAE,UAAImzC,GAAE5yC,IAASL,MAAP,OAAS,KAAGF,EAAE,MAAME,EAAE,GAAG;AAAE,UAAGF,IAAEO,GAAOA,MAAL,IAAO;AAAC,cAAM4yC,IAAEtzC,EAAE,eAAc;AAAG,YAAG+K,EAAEuoC,CAAC,GAAE;AAAC,UAAA5yC,IAAEV,EAAE,eAAgB,IAACszC,EAAE,eAAgB;AAAC,gBAAMjzC,IAAE,EAAEK,CAAC;AAAE,cAAUL,MAAP;AAAS,mBAAO,MAAKiG,EAAEgtC,CAAC,IAAEG,EAAEH,CAAC,IAAEA,EAAE,UAAW;AAAE,cAAOjzC,EAAE,UAAN;AAAY;AAAA,QAAM;AAAA,MAAC;AAAC,UAAUA,MAAP;AAAS;AAAO,UAAOA,EAAE,UAAN,KAAa0K,EAAEyoC,CAAC,KAAGA,EAAE,aAAY,GAAG;AAAC,QAAAhzC,KAAGH,EAAE;AAAI;AAAA,MAAQ;AAAC,MAAIA,EAAE,UAAN,IAAY,CAACizC,GAAEtzC,CAAC,IAAEA,EAAE,UAAUK,EAAE,GAAG,IAAE,CAAE,EAAAizC,GAAEtzC,CAAC,IAAEA,EAAE,UAAUK,EAAE,QAAMG,GAAEH,EAAE,MAAIG,CAAC,GAAW8yC,MAAT,UAAYhuC,GAAE,KAAI,eAAe;AAAE,YAAM7E,IAAE,EAAE6yC,CAAC;AAAE,UAAG7yC,EAAE,UAAU6yC,EAAE,UAAS,CAAE,GAAEA,EAAE,QAAQ7yC,CAAC,GAAQT,KAAN;AAAQ;AAAO,MAAAQ,IAAE,GAAEgzC,IAAE/yC;AAAA,IAAC;AAAA,EAAC,CAAC,GAAG6yC,EAAE,sBAAsBjzC,GAAG,CAAAizC,MAAG;AAAC,UAAMjzC,IAAEizC,EAAE,eAAgB,GAACC,IAAE,EAAElzC,CAAC;AAAE,QAAUkzC,MAAP,QAAcA,EAAE,UAAN;AAAY,aAAO,KAAKE,EAAEH,CAAC;AAAE,QAAGjzC,EAAE,SAAOkzC,EAAE;AAAI,aAAO,KAAKD,EAAE,UAAUC,EAAE,GAAG;AAAE,UAAMC,IAAEF,EAAE,mBAAkB;AAAGvoC,IAAAA,EAAEyoC,CAAC,KAAGA,EAAE,aAAc,MAAGC,EAAED,CAAC,GAAEC,EAAEH,CAAC;AAAG,UAAMnzC,IAAEmzC,EAAE,eAAc;AAAGvoC,IAAAA,EAAE5K,CAAC,KAAGA,EAAE,mBAAiBszC,EAAEtzC,CAAC,GAAEmG,EAAEgtC,CAAC,KAAGG,EAAEH,CAAC;AAAA,EAAE,EAAG;AAAC;;;;;;;;;;8CCE9uFuV,KAAM,QAAQ,IAAI,aAAa,gBAAgBC,KAASC,IAEjDU,KAA2BZ,GAAI,0BCMtCoC,KAAgB,oBAAI;AAU1B,SAASzxC,GAAevS,GAAS;AAC/B,MAAI6D,IAAO7D;AACX,SAAO6D,KAAQ,QAAM;AACnB,QAAIA,EAAK,aAAa,KAAK;AACzB,aAAOA;AAET,IAAAA,IAAOA,EAAK;AAAA,EACb;AACD,SAAO;AACT;AACA,SAASogD,GAAwBpgD,GAAM;AACrC,QAAMyQ,IAASzQ,EAAK;AACpB,MAAIyQ,KAAU;AACZ,UAAM,IAAI,MAAM,qBAAqB;AAEvC,SAAO,CAACA,GAAQ,MAAM,KAAKA,EAAO,UAAU,EAAE,QAAQzQ,CAAI,CAAC;AAC7D;AAWA,SAASqgD,GAAeh4C,GAAQmB,GAAY8mB,GAAe7Y,GAAW8Y,GAAc;AAClF,QAAM1K,IAAYrc,EAAW,UACvBqd,IAAWpP,EAAU,UACrBue,IAAQ,SAAS;AACvB,MAAIpoB,IAAYvF,EAAO,gBAAgBwd,CAAS,GAC5C5X,IAAW5F,EAAO,gBAAgBwe,CAAQ,GAC1C7d,IAAesnB,GACfrnB,IAAcsnB;AAOlB,MANIhmB,EAAYf,CAAU,MACxBoE,IAAYc,GAAed,CAAS,IAElCrD,EAAYkN,CAAS,MACvBxJ,IAAWS,GAAeT,CAAQ,IAEhCzE,MAAe,UAAaiO,MAAc,UAAa7J,MAAc,QAAQK,MAAa;AAC5F,WAAO;AAET,EAAIL,EAAU,aAAa,SACzB,CAACA,GAAW5E,CAAY,IAAIo3C,GAAwBxyC,CAAS,IAE3DK,EAAS,aAAa,SACxB,CAACA,GAAUhF,CAAW,IAAIm3C,GAAwBnyC,CAAQ;AAE5D,QAAMoO,IAAazO,EAAU;AAC7B,EAAIA,MAAcK,KAAYoO,KAAc,QAAQA,EAAW,aAAa,QAAQrT,MAAiB,KAAKC,MAAgB,MACxHA,IAAc;AAEhB,MAAI;AACF,IAAA+sB,EAAM,SAASpoB,GAAW5E,CAAY,GACtCgtB,EAAM,OAAO/nB,GAAUhF,CAAW;AAAA,EACnC,QAAC;AACA,WAAO;AAAA,EACR;AACD,SAAI+sB,EAAM,cAAchtB,MAAiBC,KAAe4c,MAAcgB,OAEpEmP,EAAM,SAAS/nB,GAAUhF,CAAW,GACpC+sB,EAAM,OAAOpoB,GAAW5E,CAAY,IAE/BgtB;AACT;AAQA,SAASsqB,GAAwBj4C,GAAQ2tB,GAAO;AAC9C,QAAMjsB,IAAc1B,EAAO;AAC3B,MAAI0B,MAAgB;AAClB,WAAO;AAET,QAAMw2C,IAAWx2C,EAAY,yBACvBy2C,IAAgB,iBAAiBz2C,CAAW,GAC5C02C,IAAc,WAAWD,EAAc,WAAW,IAAI,WAAWA,EAAc,YAAY,GAC3FE,IAAiB,MAAM,KAAK1qB,EAAM,eAAgB,CAAA;AACxD,MAAI2qB,IAAuBD,EAAe;AAE1C,EAAAA,EAAe,KAAK,CAAC,GAAG7qD,MAAM;AAC5B,UAAM+qD,IAAM,EAAE,MAAM/qD,EAAE;AAGtB,WAAI,KAAK,IAAI+qD,CAAG,KAAK,IACZ,EAAE,OAAO/qD,EAAE,OAEb+qD;AAAA,EACX,CAAG;AACD,MAAIC;AACJ,WAAS5gD,IAAI,GAAGA,IAAI0gD,GAAsB1gD,KAAK;AAC7C,UAAMmY,IAAgBsoC,EAAezgD,IAE/B6gD,IAAoBD,KAAYA,EAAS,OAAOzoC,EAAc,OAAOyoC,EAAS,MAAMA,EAAS,SAASzoC,EAAc,OAAOyoC,EAAS,OAAOA,EAAS,QAAQzoC,EAAc,MAE1K2oC,IAAwB3oC,EAAc,QAAQqoC,MAAgBF,EAAS;AAC7E,QAAIO,KAAqBC,GAAuB;AAC9C,MAAAL,EAAe,OAAOzgD,KAAK,CAAC,GAC5B0gD;AACA;AAAA,IACD;AACD,IAAAE,IAAWzoC;AAAA,EACZ;AACD,SAAOsoC;AACT;AAOA,SAASM,GAAyBC,GAAK;AACrC,QAAMC,IAAc,CAAA,GACdC,IAASF,EAAI,MAAM,GAAG;AAC5B,aAAWr3B,KAASu3B;AAClB,QAAIv3B,MAAU,IAAI;AAChB,YAAM,CAACrrB,GAAKrB,CAAK,IAAI0sB,EAAM,MAAM,SAAS;AAC1C,MAAIrrB,KAAOrB,MACTgkD,EAAY3iD,EAAI,KAAI,KAAMrB,EAAM,KAAI;AAAA,IAEvC;AAEH,SAAOgkD;AACT;AAOA,SAASE,GAAsBH,GAAK;AAClC,MAAI/jD,IAAQijD,GAAc,IAAIc,CAAG;AACjC,SAAI/jD,MAAU,WACZA,IAAQ8jD,GAAyBC,CAAG,GACpCd,GAAc,IAAIc,GAAK/jD,CAAK,IAI5B,OAAO,OAAOA,CAAK,GAEdA;AACT;AAOA,SAASmkD,GAAsBF,GAAQ;AACrC,MAAIF,IAAM;AACV,aAAWr3B,KAASu3B;AAClB,IAAIv3B,MACFq3B,KAAO,GAAGr3B,MAAUu3B,EAAOv3B;AAG/B,SAAOq3B;AACT;AAiBA,SAASK,GAA8B34C,GAAWgE,GAAU;AAC1D,QAAMstB,IAAiBtxB,EAAU;AACjC,MAAIgE,EAAS,WAAWhE,CAAS,KAAK,CAACgE,EAAS,YAAa,KAAI,CAACA,EAAS,aAAastB,MAAmB,MAAM;AAC/G,UAAM,CAAC5gB,GAAQ7B,CAAK,IAAIyiB,GAClB5iB,IAAa1O,EAAU,cACvBa,IAAa6P,EAAO,WACpB5B,IAAYD,EAAM,WAClB+pC,IAAW50C,EAAS,GAAGnD,CAAU,GACjCg4C,IAAU70C,EAAS,GAAG8K,CAAS;AACrC,QAAI8pC,KAAYC,GAAS;AACvB,YAAM,CAACx4C,GAAcC,CAAW,IAAI6sB,GAAqBntB,CAAS,GAC5D84C,IAASj4C,EAAW,GAAGiO,CAAS,GAChCiqC,IAAU/0C,EAAS,GAAG0K,IAAaI,IAAYjO,CAAU,GACzDgxB,IAAS7tB,EAAS,GAAG0K,IAAa7N,IAAaiO,CAAS;AAC9D,UAAIsP,IAAc,GACdC;AACJ,UAAIy6B;AACF,QAAA16B,IAAc/d,IAAeC,IAAcA,IAAcD,GACzDge,IAAYhe,IAAeC,IAAcD,IAAeC;AAAA,eAC/Cy4C;AAET,QAAA36B,IADe1P,IAAapO,IAAcD,GAE1Cge,IAAY;AAAA,eACHwT,GAAQ;AACjB,cAAMvtB,IAASoK,IAAarO,IAAeC;AAC3C,QAAA8d,IAAc,GACdC,IAAY/Z;AAAA,MACb;AACD,aAAAN,EAAS,SAASA,EAAS,OAAO,MAAMoa,GAAaC,CAAS,GACvDra;AAAA,IACR;AAAA,EACF;AACD,SAAOA;AACT;AAOA,SAASg1C,GAAa30C,GAAO;AAC3B,MAAIA,EAAM,SAAS;AACjB,WAAOA,EAAM,WAAWA,EAAM,QAAS,EAAC,mBAAkB;AAE5D,QAAMhN,IAAOgN,EAAM;AACnB,MAAI,CAAC9B,EAAelL,CAAI;AACtB,UAAM,MAAM,qDAAqD;AAEnE,SAAOgN,EAAM,WAAWhN,EAAK,gBAAe;AAC9C;AAUA,SAAS4hD,GAA2Bv5C,GAAQgR,GAAQoX,GAAU;AAE5D,MAAIpiB,IAAcgL,EAAO,WACrBwoC,IAAYpxB;AAChB,MAAIvlB,EAAemD,CAAW,GAAG;AAC/B,UAAMyzC,IAAiBzzC,EAAY,qBAAqBgL,EAAO,MAAM;AACrE,IAAIyoC,MAAmB,SACrBzzC,IAAcyzC;AAAA,EAEjB;AACD,SAAOD,IAAY,KAAKxzC,MAAgB,QAAM;AAC5C,QAAInD,EAAemD,CAAW,GAAG;AAC/B,YAAM0zC,IAAiB1zC,EAAY;AACnC,MAAI0zC,MAAmB,SACrB1zC,IAAc0zC;AAAA,IAEjB;AACD,QAAIl1C,IAAWwB,EAAY,sBACvB2zC,IAA8B;AAClC,QAAIn1C,MAAa,MAAM;AACrB,UAAI4D,IAASpC,EAAY,oBACrBkd,IAAgB9a,EAAO;AAC3B,aAAO8a,MAAkB,QAAM;AAE7B,YADA9a,IAASA,EAAO,aACZA,MAAW,MAAM;AACnB,UAAA5D,IAAW;AACX;AAAA,QACD;AACD,QAAA0e,IAAgB9a,EAAO;MACxB;AACD,MAAIA,MAAW,SACbuxC,IAA8BvxC,EAAO,aAAa,IAAI,GACtD5D,IAAW0e;AAAA,IAEd;AACD,QAAIriB,IAAOmF,EAAY;AAGvB,IAAInF,MAAS,MAAMgC,EAAemD,CAAW,KAAK,CAACA,EAAY,eAE7DnF,IAAO;AAAA;AAAA;AAET,UAAM+4C,IAAkB/4C,EAAK;AAC7B,QAAI,CAACqB,EAAY8D,CAAW,KAAKwzC,KAAaI,GAAiB;AAC7D,YAAMxxC,IAASpC,EAAY;AAC3B,MAAAA,EAAY,OAAM,GACdoC,KAAU,QAAQA,EAAO,gBAAiB,MAAK,KAAK,CAACuH,GAAYvH,CAAM,KACzEA,EAAO,OAAM,GAEfoxC,KAAaI,IAAkBD,GAC/B3zC,IAAcxB;AAAA,IACpB,OAAW;AACL,YAAMtO,IAAM8P,EAAY,UAElBwE,IAAkBxK,EAAO,eAAgB,EAAC,KAAK,MAAM;AACzD,cAAMma,IAAW1R,GAAcvS,CAAG;AAClC,eAAIgM,EAAYiY,CAAQ,KAAKA,EAAS,aAAY,IACzCA,EAAS,mBAEX;AAAA,MACf,CAAO,GACKvV,IAASg1C,IAAkBJ,GAC3BK,IAAah5C,EAAK,MAAM,GAAG+D,CAAM;AACvC,UAAI4F,MAAoB,QAAQA,MAAoB3J,GAAM;AACxD,cAAM4J,IAAgBC;AACtB,YAAItK,IAAS4F;AACb,YAAKA,EAAY;AAKf,UAAAA,EAAY,eAAewE,CAAe;AAAA,aALX;AAC/B,gBAAMlG,IAAWwG,GAAgBN,CAAe;AAChD,UAAAxE,EAAY,QAAQ1B,CAAQ,GAC5BlE,IAASkE;AAAA,QACnB;AAGQ,YAAIpD,EAAkBuJ,CAAa,KAAKA,EAAc,YAAW,GAAI;AACnE,gBAAMqvC,IAAarvC,EAAc,OAAO;AACxC,UAAArK,EAAO,OAAO05C,GAAYA,CAAU;AAAA,QACrC;AAAA,MACT,WAAiB9zC,EAAY,gBAAgB;AAErC,cAAMoc,IAAapR,EAAO,QAAQ9a;AAClC,YAAIyK,IAAeqQ,EAAO;AAG1B,QAAIrQ,IAAe64C,MACjB74C,IAAei5C;AAEjB,cAAMG,IAAa33B,IAAazhB,IAAe64C,IAAY,GACrDQ,IAAW53B,IAAazhB,IAAeiE;AAC7C,YAAIwd,KAAc23B,MAAe,GAAG;AAClC,gBAAM,CAACE,CAAU,IAAIj0C,EAAY,UAAU+zC,GAAYC,CAAQ;AAC/D,UAAAC,EAAW,OAAM;AAAA,QAC3B,OAAe;AACL,gBAAM,CAAA,EAAGA,CAAU,IAAIj0C,EAAY,UAAU+zC,GAAYC,CAAQ;AACjE,UAAAC,EAAW,OAAM;AAAA,QAClB;AAAA,MACT,OAAa;AACL,cAAM31C,IAAWwG,GAAgB+uC,CAAU;AAC3C,QAAA7zC,EAAY,QAAQ1B,CAAQ;AAAA,MAC7B;AACD,MAAAk1C,IAAY;AAAA,IACb;AAAA,EACF;AACH;AAMA,SAASU,GAAcviD,GAAM;AAC3B,QAAMwiD,IAAUxiD,EAAK,YACfmhD,IAASH,GAAyBwB,CAAO;AAC/C,EAAArC,GAAc,IAAIqC,GAASrB,CAAM;AACnC;AACA,SAASsB,GAAYh6C,GAAQi6C,GAAO;AAClC,QAAMC,IAAavB,GAAsB,cAAc34C,IAASA,EAAO,SAAU,IAAGA,EAAO,KAAK,GAC1Fm6C,IAAY,OAAO,QAAQF,CAAK,EAAE,OAAO,CAACvB,GAAQ,CAAC5iD,GAAKrB,CAAK,OAC7D,OAAOA,KAAU,aACnBikD,EAAO5iD,KAAOrB,EAAMylD,EAAWpkD,IAAMkK,CAAM,IAClCvL,MAAU,OACnB,OAAOikD,EAAO5iD,KAEd4iD,EAAO5iD,KAAOrB,GAETikD,IACN;AAAA,IACD,GAAGwB;AAAA,EACJ,CAAM,GACDE,IAAaxB,GAAsBuB,CAAS;AAClD,EAAAn6C,EAAO,SAASo6C,CAAU,GAC1B1C,GAAc,IAAI0C,GAAYD,CAAS;AACzC;AASA,SAASE,GAAgBn6C,GAAW+5C,GAAO;AACzC,QAAMttB,IAAgBzsB,EAAU,YAC1B0sB,IAAsBD,EAAc,QACpC6E,IAAiBtxB,EAAU;AACjC,MAAIsxB,MAAmB;AACrB;AAEF,QAAM,CAAC5gB,GAAQ7B,CAAK,IAAIyiB,GAClBzD,IAAYnB,IAAsB;AACxC,MAAIM,IAAYP,EAAc,IAC1BzO,IAAWyO,EAAcoB;AAC7B,MAAI7tB,EAAU,YAAW,KAAMY,EAAkBZ,CAAS,GAAG;AAC3D,IAAA85C,GAAY95C,GAAW+5C,CAAK;AAC5B;AAAA,EACD;AAED,QAAMpsB,IADgBX,EAAU,iBACU,QACpC1sB,IAAcuO,EAAM;AAC1B,MAAIxO,IAAeqQ,EAAO;AAC1B,QAAMgS,IAAWhS,EAAO,SAAS7B,CAAK;AACtC,MAAIuP,IAAcsE,IAAWriB,IAAeC,GACxC+d,IAAYqE,IAAWpiB,IAAcD;AACzC,QAAM+5C,IAAY13B,IAAWhS,EAAO,OAAO7B,EAAM,MAC3CwrC,IAAU33B,IAAW7T,EAAM,OAAO6B,EAAO,MACzC6N,IAASmE,IAAW7T,EAAM,MAAM6B,EAAO;AAI7C,MAAI9O,EAAYorB,CAAS,KAAK5O,MAAgBuP,GAAqB;AACjE,UAAMlmB,IAAculB,EAAU;AAC9B,IAAIprB,EAAY6F,CAAW,MAEzBpH,IAAe,GACf+d,IAAc,GACd4O,IAAYvlB;AAAA,EAEf;AAGD,MAAIglB,EAAc,WAAW;AAC3B,QAAI7qB,EAAYorB,CAAS,KAAKA,EAAU,cAAa,GAAI;AAKvD,UAJA5O,IAAcg8B,MAAc,YAAY,IAAI/5C,IAAeC,IAAcA,IAAcD,GACvFge,IAAYg8B,MAAY,YAAY1sB,IAAsBttB,IAAeC,IAAcD,IAAeC,GAGlG8d,MAAgBC;AAClB;AAIF,UAAIxY,GAAoBmnB,CAAS,KAAK5O,MAAgB,KAAKC,MAAcsP;AACvE,QAAAmsB,GAAY9sB,GAAW+sB,CAAK,GAC5B/sB,EAAU,OAAO5O,GAAaC,CAAS;AAAA,WAClC;AAGL,cAAMsK,IAAaqE,EAAU,UAAU5O,GAAaC,CAAS,GACvD9T,IAAc6T,MAAgB,IAAIuK,EAAW,KAAKA,EAAW;AACnE,QAAAmxB,GAAYvvC,GAAawvC,CAAK,GAC9BxvC,EAAY,OAAO,GAAG8T,IAAYD,CAAW;AAAA,MAC9C;AAAA,IACF;AAAA,SACI;AAcL,QAbIxc,EAAYorB,CAAS,KAAK5O,IAAc4O,EAAU,mBAAoB,KAAIA,EAAU,oBAClF5O,MAAgB,KAAK,CAACvY,GAAoBmnB,CAAS,MAErDA,IAAYA,EAAU,UAAU5O,CAAW,EAAE,IAC7CA,IAAc,GACVsE,IACFhS,EAAO,IAAIsc,EAAU,OAAM,GAAI5O,GAAa,MAAM,IAElDvP,EAAM,IAAIme,EAAU,OAAM,GAAI5O,GAAa,MAAM,IAGrD07B,GAAY9sB,GAAW+sB,CAAK,IAE1Bn4C,EAAYoc,CAAQ,KAAKA,EAAS,cAAa,GAAI;AAErD,YAAMoS,IADepS,EAAS,iBACU;AAMxC,MAAIA,EAAS,UAAUO,KAAUF,MAAc,MAC7CA,IAAY+R,IAIV/R,MAAc+R,KAAsB,CAACvqB,GAAoBmY,CAAQ,MACnE,CAACA,CAAQ,IAAIA,EAAS,UAAUK,CAAS,KAEvCA,MAAc,KAAKg8B,MAAY,cACjCP,GAAY97B,GAAU+7B,CAAK;AAAA,IAE9B;AAGD,aAASziD,IAAI,GAAGA,IAAIu2B,GAAWv2B,KAAK;AAClC,YAAMs3B,IAAenC,EAAcn1B,IAC7BgjD,IAAkB1rB,EAAa;AACrC,MAAIhtB,EAAYgtB,CAAY,KAAKA,EAAa,cAAa,KAAM0rB,MAAoBttB,EAAU,OAAM,KAAMstB,MAAoBt8B,EAAS,OAAQ,KAAI,CAAC4Q,EAAa,aAChKkrB,GAAYlrB,GAAcmrB,CAAK;AAAA,IAElC;AAAA,EACF;AACH;AAgBA,SAASQ,GAAev6C,GAAWw6C,GAAe;AAChD,MAAIx6C,MAAc;AAChB;AAEF,QAAMsxB,IAAiBtxB,EAAU,qBAC3B0Q,IAAS4gB,IAAiBA,EAAe,KAAK;AACpD,MAAI5gB,MAAW,QAAQA,EAAO,QAAQ,QAAQ;AAC5C,UAAMld,IAAUgnD,KACVntC,IAAOzE,MACP8K,IAAarG,EAAK;AACxB,IAAIqG,IACFA,EAAW,QAAQlgB,GAAS,EAAI,IAEhC6Z,EAAK,OAAO7Z,CAAO;AAErB;AAAA,EACD;AACD,QAAM8a,IAAQtO,EAAU,YAClBy6C,IAAqB/pC,MAAW,OAAOkD,GAAalD,EAAO,QAAS,GAAE+C,EAAiB,IAAI;AACjG,EAAIgnC,KAAsBnsC,EAAM,QAAQmsC,CAAkB,MAAM,MAC9DnsC,EAAM,KAAKmsC,CAAkB;AAE/B,WAAS,IAAI,GAAG,IAAInsC,EAAM,QAAQ,KAAK;AACrC,UAAMjX,IAAOiX,EAAM;AACnB,QAAI,CAACmF,GAAkBpc,CAAI;AACzB;AAEF,QAAI,CAACkL,EAAelL,CAAI;AACtB,YAAM,MAAM,0CAA0C;AAExD,UAAMqjD,IAAgBF;AACtB,IAAAE,EAAc,UAAUrjD,EAAK,cAAe,CAAA,GAC5CqjD,EAAc,UAAUrjD,EAAK,UAAW,CAAA,GACxCA,EAAK,QAAQqjD,GAAe,EAAI;AAAA,EACjC;AACH;AACA,SAASC,GAAgBt2C,GAAO;AAC9B,SAAOA,EAAM,UAAU;AACzB;AACA,SAASu2C,GAA2BC,GAAc;AAChD,MAAIxjD,IAAOwjD;AACX,SAAOxjD,MAAS,QAAQ,CAAC6Z,GAAoB7Z,CAAI,KAAG;AAClD,UAAMwQ,IAASxQ,EAAK,aACdoZ,IAAapZ,EAAK;AACxB,IAAIwQ,EAAO,gBAAiB,MAAK,KAC/BxQ,EAAK,OAAO,EAAI,GAElBA,IAAOoZ;AAAA,EACR;AACH;AASA,SAASqqC,GAAW96C,GAAWw6C,GAAeO,IAAkB,MAAM;AACpE,QAAMzpB,IAAiBtxB,EAAU,qBAC3B0Q,IAAS4gB,IAAiBA,EAAe,KAAK,MAC9ChjB,IAAQtO,EAAU,YAClBme,IAAc7P,EAAM;AAC1B,MAAIoC,MAAW,SAASyN,MAAgB,KAAKA,MAAgB,KAAKzN,EAAO,SAAS,aAAaA,EAAO,QAAS,EAAC,gBAAe,MAAO,IAAI;AACxI,UAAM5Q,IAAS4Q,EAAO,SAAS,SAASA,EAAO,QAAO,EAAG,iBAAgB,IAAKA,EAAO,QAAO,GACtFpY,IAAWwH,EAAO;AACxB,QAAItM,IAAUgnD;AACd,IAAAhnD,EAAQ,UAAUsM,EAAO,cAAe,CAAA,GACxCtM,EAAQ,UAAUsM,EAAO,UAAW,CAAA,GACpCxH,EAAS,QAAQ,CAAAf,MAAS/D,EAAQ,OAAO+D,CAAK,CAAC,GAC3CwjD,MACFvnD,IAAUunD,EAAgB,OAAOvnD,CAAO,IAE1CsM,EAAO,QAAQtM,CAAO;AACtB;AAAA,EACD;AACD,MAAIwnD,IAAe,MACfC,IAAc,CAAA;AAClB,WAAS3jD,IAAI,GAAGA,IAAI6mB,GAAa7mB,KAAK;AACpC,UAAMD,IAAOiX,EAAMhX;AAKnB,IAAI4Z,GAAoB7Z,CAAI,KAC1B6jD,GAAel7C,GAAWi7C,GAAaA,EAAY,QAAQT,GAAeO,CAAe,GACzFE,IAAc,CAAA,GACdD,IAAe3jD,KACN2jD,MAAiB,QAAQA,MAAiB,QAAQrqC,GAAatZ,GAAM2jD,CAAY,IAC1FC,EAAY,KAAK5jD,CAAI,KAErB6jD,GAAel7C,GAAWi7C,GAAaA,EAAY,QAAQT,GAAeO,CAAe,GACzFE,IAAc,CAAC5jD,CAAI;AAAA,EAEtB;AACD,EAAA6jD,GAAel7C,GAAWi7C,GAAaA,EAAY,QAAQT,GAAeO,CAAe;AAC3F;AAWA,SAASG,GAAel7C,GAAWsO,GAAO6P,GAAaq8B,GAAeO,IAAkB,MAAM;AAC5F,MAAIzsC,EAAM,WAAW;AACnB;AAEF,QAAM0e,IAAY1e,EAAM,IAClB6sC,IAAiB,oBAAI,OACrBC,IAAW,CAAA;AAKjB,MAAIt7C,IAASyC,EAAeyqB,CAAS,IAAIA,IAAYA,EAAU;AAC/D,EAAIltB,EAAO,eACTA,IAASA,EAAO;AAElB,MAAIu7C,IAAsB;AAC1B,SAAOv7C,MAAW,QAAM;AACtB,UAAM0H,IAAc1H,EAAO;AAC3B,QAAI0H,MAAgB,MAAM;AACxB,MAAA1H,IAAS0H,GACT6zC,IAAsB;AACtB;AAAA,IACD;AAED,QADAv7C,IAASA,EAAO,oBACZoR,GAAoBpR,CAAM;AAC5B;AAAA,EAEH;AACD,QAAMw7C,IAAgB,oBAAI;AAG1B,WAAShkD,IAAI,GAAGA,IAAI6mB,GAAa7mB,KAAK;AACpC,UAAMD,IAAOiX,EAAMhX;AACnB,IAAIiL,EAAelL,CAAI,KAAKA,EAAK,gBAAe,MAAO,KACrDikD,EAAc,IAAIjkD,EAAK,OAAQ,CAAA;AAAA,EAElC;AACD,QAAMkkD,IAAa,oBAAI;AAKvB,WAASjkD,IAAI,GAAGA,IAAI6mB,GAAa7mB,KAAK;AACpC,UAAMD,IAAOiX,EAAMhX;AACnB,QAAIwQ,IAASzQ,EAAK;AAIlB,QAHIyQ,MAAW,QAAQA,EAAO,SAAQ,MACpCA,IAASA,EAAO,cAEdA,MAAW,QAAQ1B,GAAY/O,CAAI,KAAK,CAACkkD,EAAW,IAAIlkD,EAAK,OAAM,CAAE,GAAG;AAC1E,YAAM2P,IAAYc,EAAO;AACzB,UAAIqzC,EAAe,IAAIn0C,CAAS,MAAM,QAAW;AAC/C,cAAM0zC,IAAgBF;AACtB,QAAAE,EAAc,UAAU5yC,EAAO,cAAe,CAAA,GAC9C4yC,EAAc,UAAU5yC,EAAO,UAAW,CAAA,GAC1CszC,EAAS,KAAKV,CAAa,GAC3BS,EAAe,IAAIn0C,GAAW0zC,CAAa,GAG3C5yC,EAAO,YAAW,EAAG,QAAQ,CAAAvQ,MAAS;AACpC,UAAAmjD,EAAc,OAAOnjD,CAAK,GAC1BgkD,EAAW,IAAIhkD,EAAM,OAAQ,CAAA,GACzBgL,EAAehL,CAAK,KAEtBA,EAAM,gBAAiB,EAAC,QAAQ,CAAA3B,MAAO2lD,EAAW,IAAI3lD,CAAG,CAAC;AAAA,QAEtE,CAAS,GACDglD,GAA2B9yC,CAAM;AAAA,MAClC;AAAA,IACF,WAAUwzC,EAAc,IAAIjkD,EAAK,OAAQ,CAAA,GAAG;AAC3C,UAAI,CAACkL,EAAelL,CAAI;AACtB,cAAM,MAAM,qDAAqD;AAEnE,YAAMqjD,IAAgBF;AACtB,MAAAE,EAAc,UAAUrjD,EAAK,cAAe,CAAA,GAC5CqjD,EAAc,UAAUrjD,EAAK,UAAW,CAAA,GACxC+jD,EAAS,KAAKV,CAAa,GAC3BrjD,EAAK,OAAO,EAAI;AAAA,IACjB;AAAA,EACF;AACD,MAAI0jD,MAAoB;AACtB,aAASzjD,IAAI,GAAGA,IAAI8jD,EAAS,QAAQ9jD,KAAK;AACxC,YAAM9D,IAAU4nD,EAAS9jD;AACzB,MAAAyjD,EAAgB,OAAOvnD,CAAO;AAAA,IAC/B;AAEH,MAAI26B,IAAc;AAIlB,MAAIjd,GAAoBpR,CAAM;AAC5B,QAAIu7C;AACF,UAAIN,MAAoB;AACtB,QAAAj7C,EAAO,YAAYi7C,CAAe;AAAA;AAElC,iBAASzjD,IAAI8jD,EAAS,SAAS,GAAG9jD,KAAK,GAAGA,KAAK;AAC7C,gBAAM9D,IAAU4nD,EAAS9jD;AACzB,UAAAwI,EAAO,YAAYtM,CAAO;AAAA,QAC3B;AAAA,SAEE;AACL,YAAMkgB,IAAa5T,EAAO;AAI1B,UAHIyC,EAAemR,CAAU,MAC3B5T,IAAS4T,IAEPA,MAAe;AACjB,YAAIqnC;AACF,UAAAj7C,EAAO,OAAOi7C,CAAe;AAAA;AAE7B,mBAASzjD,IAAI,GAAGA,IAAI8jD,EAAS,QAAQ9jD,KAAK;AACxC,kBAAM9D,IAAU4nD,EAAS9jD;AACzB,YAAAwI,EAAO,OAAOtM,CAAO,GACrB26B,IAAc36B;AAAA,UACf;AAAA,eAGCunD,MAAoB;AACtB,QAAArnC,EAAW,aAAaqnC,CAAe;AAAA;AAEvC,iBAASzjD,IAAI,GAAGA,IAAI8jD,EAAS,QAAQ9jD,KAAK;AACxC,gBAAM9D,IAAU4nD,EAAS9jD;AACzB,UAAAoc,EAAW,aAAalgB,CAAO,GAC/B26B,IAAc36B;AAAA,QACf;AAAA,IAGN;AAAA,WAEGunD;AACF,IAAAj7C,EAAO,YAAYi7C,CAAe;AAAA;AAElC,aAASzjD,IAAI8jD,EAAS,SAAS,GAAG9jD,KAAK,GAAGA,KAAK;AAC7C,YAAM9D,IAAU4nD,EAAS9jD;AACzB,MAAAwI,EAAO,YAAYtM,CAAO,GAC1B26B,IAAc36B;AAAA,IACf;AAGL,QAAM2W,IAAgBC;AACtB,EAAIxJ,EAAkBuJ,CAAa,KAAKwwC,GAAgBxwC,EAAc,MAAM,KAAKwwC,GAAgBxwC,EAAc,KAAK,IAClHrH,GAAcqH,EAAc,MAAK,CAAE,IAC1BgkB,MAAgB,OACzBA,EAAY,UAAS,IAErBnuB,EAAU,QAAQ;AAEtB;AAQA,SAASw7C,GAAyCx7C,GAAW0O,GAAY;AACvE,QAAMK,IAAeH,GAAiB5O,EAAU,OAAO0O,CAAU;AACjE,SAAO/M,GAAiBoN,CAAY,KAAK,CAACA,EAAa,WAAY,KAAIxM,EAAewM,CAAY,KAAK,CAACA,EAAa,SAAQ,KAAM,CAACA,EAAa,WAAU;AAC7J;AASA,SAAS0sC,GAAoBz7C,GAAW07C,GAAgBhtC,GAAY4hB,GAAa;AAC/E,EAAAtwB,EAAU,OAAO07C,IAAiB,WAAW,QAAQhtC,GAAY4hB,CAAW;AAC9E;AAOA,SAASqrB,GAAoB37C,GAAW;AACtC,QAAMa,IAAab,EAAU,OAAO,QAAO;AAE3C,UADeqP,GAAYxO,CAAU,IAAIA,IAAaA,EAAW,oBACnD,aAAc,MAAK;AACnC;AAQA,SAAS+6C,GAAe57C,GAAW07C,GAAgBhtC,GAAY;AAC7D,QAAMmtC,IAAQF,GAAoB37C,CAAS;AAC3C,EAAAy7C,GAAoBz7C,GAAW07C,GAAgBhtC,IAAa,CAACmtC,IAAQA,GAAO,WAAW;AACzF;AAMA,SAASzuC,GAAWpN,GAAW;AAC7B,QAAM0Q,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU,OAGlBqN,IAFaqD,EAAO,UACG,4BACN;AACvB,MAAIsc,IAAY3f,EAAK,sBACjB2Q,IAAW3Q,EAAK,qBAChByuC,IAAY,WACZC,IAAW,WACXl+B,IAAa;AACjB,EAAIjc,EAAYorB,CAAS,IACvB8uB,IAAY,SACH,CAACv5C,EAAeyqB,CAAS,KAAKA,MAAc,SACrDA,IAAYA,EAAU,qBAEpBprB,EAAYoc,CAAQ,KACtB+9B,IAAW,QACXl+B,IAAaG,EAAS,wBACb,CAACzb,EAAeyb,CAAQ,KAAKA,MAAa,SACnDA,IAAWA,EAAS,qBAElBgP,KAAahP,MACftN,EAAO,IAAIsc,EAAU,OAAM,GAAI,GAAG8uB,CAAS,GAC3CjtC,EAAM,IAAImP,EAAS,OAAM,GAAIH,GAAYk+B,CAAQ;AAErD;AASA,SAASC,GAA8B3kD,GAAM4kD,GAAeC,GAAc;AACxE,QAAM5D,IAAMjhD,EAAK,YACXkhD,IAAcE,GAAsBH,CAAG;AAC7C,SAAIC,MAAgB,QACXA,EAAY0D,MAAkBC;AAGzC;AAUA,SAASC,GAAmCn8C,GAAWi8C,GAAeC,IAAe,IAAI;AACvF,MAAIE,IAAa;AACjB,QAAM9tC,IAAQtO,EAAU,YAClB0Q,IAAS1Q,EAAU,QACnB6O,IAAQ7O,EAAU,OAClB0O,IAAa1O,EAAU,cACvBqe,IAAY3P,IAAaG,EAAM,SAAS6B,EAAO,QAC/C2rC,IAAU3tC,IAAaG,EAAM,QAAO,IAAK6B,EAAO;AACtD,MAAI9P,EAAkBZ,CAAS,KAAKA,EAAU,YAAW,KAAMA,EAAU,UAAU,IAAI;AACrF,UAAMs4C,IAAMt4C,EAAU,OAChBu4C,IAAcE,GAAsBH,CAAG;AAC7C,QAAIC,MAAgB,QAAQ0D,KAAiB1D;AAC3C,aAAOA,EAAY0D;AAAA,EAEtB;AACD,WAAS3kD,IAAI,GAAGA,IAAIgX,EAAM,QAAQhX,KAAK;AACrC,UAAMD,IAAOiX,EAAMhX;AAKnB,QAAI,EAAAA,MAAM,KAAK+mB,MAAc,KAAKhnB,EAAK,GAAGglD,CAAO,MAG7Cz6C,EAAYvK,CAAI,GAAG;AACrB,YAAMilD,IAAiBN,GAA8B3kD,GAAM4kD,GAAeC,CAAY;AACtF,UAAIE,MAAe;AACjB,QAAAA,IAAaE;AAAA,eACJF,MAAeE,GAAgB;AAGxC,QAAAF,IAAa;AACb;AAAA,MACD;AAAA,IACF;AAAA,EACF;AACD,SAAOA,MAAe,OAAOF,IAAeE;AAC9C;AAMA,SAAS3oC,GAAkBpc,GAAM;AAI/B,MAHIsK,GAAiBtK,CAAI,KAGrB,CAACkL,EAAelL,CAAI,KAAK6Z,GAAoB7Z,CAAI;AACnD,WAAO;AAET,QAAMqc,IAAarc,EAAK,iBAClBsc,IAAgBD,MAAe,QAAQrN,GAAiBqN,CAAU,KAAK9R,EAAY8R,CAAU,KAAKA,EAAW,SAAQ;AAC3H,SAAO,CAACrc,EAAK,SAAU,KAAIA,EAAK,WAAY,MAAK,MAASsc;AAC5D;AACA,SAASC,GAAavc,GAAMwc,GAAW;AACrC,MAAI/L,IAASzQ;AACb,SAAOyQ,MAAW,QAAQA,EAAO,UAAW,MAAK,QAAQ,CAAC+L,EAAU/L,CAAM;AACxE,IAAAA,IAASA,EAAO;AAElB,SAAO+L,EAAU/L,CAAM,IAAIA,IAAS;AACtC;AAWA,MAAMy0C,KAA4BtD;;;;;;;;;;;;;;;;;;;;;AC/6B+X,SAAStsD,GAAEQ,GAAE;AAAC,SAAOA,KAAGA,EAAE,cAAY,OAAO,UAAU,eAAe,KAAKA,GAAE,SAAS,IAAEA,EAAE,UAAQA;AAAC;AAAC,IAAIozC,KAAE5zC,GAAG,SAASQ,GAAE;AAAC,QAAM0yC,IAAE,IAAI;AAAgB,EAAAA,EAAE,OAAO,QAAO1yC,CAAC;AAAE,WAAQA,IAAE,GAAEA,IAAE,UAAU,QAAOA;AAAI,IAAA0yC,EAAE,OAAO,KAAI,UAAU1yC,EAAE;AAAE,QAAM,MAAM,2BAA2BA,2CAA2C0yC,iHAAiH;AAAC,CAAG;AAAC,MAAMhuC,KAAE,oBAAI;AAAI,SAASyuC,GAAEnzC,GAAE;AAAC,MAAI0yC,IAAE1yC;AAAE,SAAW0yC,KAAN,QAAS;AAAC,QAAGA,EAAE,aAAW,KAAK;AAAU,aAAOA;AAAE,IAAAA,IAAEA,EAAE;AAAA,EAAU;AAAC,SAAO;AAAI;AAAC,SAASQ,GAAElzC,GAAE;AAAC,QAAM0yC,IAAE1yC,EAAE;AAAW,MAAS0yC,KAAN;AAAQ,UAAM,IAAI,MAAM,qBAAqB;AAAE,SAAM,CAACA,GAAE,MAAM,KAAKA,EAAE,UAAU,EAAE,QAAQ1yC,CAAC,CAAC;AAAC;AAAC,SAASqzC,GAAEX,GAAEjzC,GAAEF,GAAEqzC,GAAED,GAAE;AAAC,QAAM,IAAElzC,EAAE,OAAM,GAAG,IAAEmzC,EAAE,OAAQ,GAAChzC,IAAE,SAAS,YAAW;AAAG,MAAIR,IAAEszC,EAAE,gBAAgB,CAAC,GAAEG,IAAEH,EAAE,gBAAgB,CAAC,GAAE5yC,IAAEP,GAAEM,IAAE8yC;AAAE,MAAG3yC,EAAEP,CAAC,MAAIL,IAAE+zC,GAAE/zC,CAAC,IAAGY,EAAE4yC,CAAC,MAAIC,IAAEM,GAAEN,CAAC,IAAYpzC,MAAT,UAAqBmzC,MAAT,UAAmBxzC,MAAP,QAAiByzC,MAAP;AAAS,WAAO;AAAK,EAAOzzC,EAAE,aAAT,SAAoB,CAACA,GAAEU,CAAC,IAAEozC,GAAE9zC,CAAC,IAAUyzC,EAAE,aAAT,SAAoB,CAACA,GAAEhzC,CAAC,IAAEqzC,GAAEL,CAAC;AAAG,QAAMC,IAAE1zC,EAAE;AAAW,EAAAA,MAAIyzC,KAASC,KAAN,QAAgBA,EAAE,aAAT,QAAuBhzC,MAAJ,KAAWD,MAAJ,MAAQA,IAAE;AAAG,MAAG;AAAC,IAAAD,EAAE,SAASR,GAAEU,CAAC,GAAEF,EAAE,OAAOizC,GAAEhzC,CAAC;AAAA,EAAC,QAAC;AAAS,WAAO;AAAA,EAAI;AAAC,SAAM,CAACD,EAAE,aAAWE,MAAID,KAAG,MAAI,MAAID,EAAE,SAASizC,GAAEhzC,CAAC,GAAED,EAAE,OAAOR,GAAEU,CAAC,IAAGF;AAAC;AAAC,SAAS6zC,GAAEzzC,GAAE0yC,GAAE;AAAC,QAAMjzC,IAAEO,EAAE,eAAgB;AAAC,MAAUP,MAAP;AAAS,WAAM,CAAA;AAAG,QAAMF,IAAEE,EAAE,sBAAqB,GAAG,IAAE,iBAAiBA,CAAC,GAAEkzC,IAAE,WAAW,EAAE,WAAW,IAAE,WAAW,EAAE,YAAY,GAAEjtC,IAAE,MAAM,KAAKgtC,EAAE,eAAc,CAAE;AAAE,MAAIvoC,GAAE,IAAEzE,EAAE;AAAO,EAAAA,EAAE,KAAM,CAAC1F,GAAE0yC,MAAI;AAAC,UAAMjzC,IAAEO,EAAE,MAAI0yC,EAAE;AAAI,WAAO,KAAK,IAAIjzC,CAAC,KAAG,IAAEO,EAAE,OAAK0yC,EAAE,OAAKjzC;AAAA,EAAC,CAAC;AAAG,WAAQO,IAAE,GAAEA,IAAE,GAAEA,KAAI;AAAC,UAAM0yC,IAAEhtC,EAAE1F,IAAGP,IAAE0K,KAAGA,EAAE,OAAKuoC,EAAE,OAAKvoC,EAAE,MAAIA,EAAE,SAAOuoC,EAAE,OAAKvoC,EAAE,OAAKA,EAAE,QAAMuoC,EAAE,MAAKE,IAAEF,EAAE,QAAMC,MAAIpzC,EAAE;AAAM,IAAAE,KAAGmzC,KAAGltC,EAAE,OAAO1F,KAAI,CAAC,GAAE,OAAKmK,IAAEuoC;AAAA,EAAC;AAAC,SAAOhtC;AAAC;AAAC,SAAS4tC,GAAEtzC,GAAE;AAAC,QAAM0yC,IAAE,CAAA,GAAGjzC,IAAEO,EAAE,MAAM,GAAG;AAAE,aAAUA,KAAKP;AAAE,QAAQO,MAAL,IAAO;AAAC,YAAK,CAACP,GAAEF,CAAC,IAAES,EAAE,MAAM,SAAS;AAAE,MAAAP,KAAGF,MAAImzC,EAAEjzC,EAAE,UAAQF,EAAE,KAAI;AAAA,IAAG;AAAC,SAAOmzC;AAAC;AAAC,SAASa,GAAEvzC,GAAE;AAAC,MAAI0yC,IAAEhuC,GAAE,IAAI1E,CAAC;AAAE,SAAgB0yC,MAAT,WAAaA,IAAEY,GAAEtzC,CAAC,GAAE0E,GAAE,IAAI1E,GAAE0yC,CAAC,IAAGA;AAAC;AAAC,SAASc,GAAExzC,GAAEP,GAAE;AAAC,QAAMF,IAAES,EAAE;AAAoB,MAAGP,EAAE,WAAWO,CAAC,KAAG,CAACP,EAAE,YAAW,KAAI,CAACA,EAAE,QAAS,KAASF,MAAP,MAAS;AAAC,UAAK,CAACqzC,GAAED,CAAC,IAAEpzC,GAAE,IAAES,EAAE,WAAY,GAAC,IAAE4yC,EAAE,QAAO,GAAGhzC,IAAE+yC,EAAE,QAAS,GAACvzC,IAAEK,EAAE,GAAG,CAAC,GAAEozC,IAAEpzC,EAAE,GAAGG,CAAC;AAAE,QAAGR,KAAGyzC,GAAE;AAAC,YAAK,CAACtzC,GAAEqzC,CAAC,IAAEF,GAAE1yC,CAAC,GAAE2yC,IAAE,EAAE,GAAG/yC,CAAC,GAAER,IAAEK,EAAE,GAAG,IAAEG,IAAE,CAAC,GAAEizC,IAAEpzC,EAAE,GAAG,IAAE,IAAEG,CAAC;AAAE,UAAIE,GAAED,IAAE;AAAE,aAAG8yC,KAAE9yC,IAAEN,IAAEqzC,IAAEA,IAAErzC,GAAEO,IAAEP,IAAEqzC,IAAErzC,IAAEqzC,KAAUxzC,KAAGS,IAAE,IAAE+yC,IAAErzC,GAAEO,IAAE,UAAe+yC,MAAGhzC,IAAE,GAAEC,IAAE,IAAEP,IAAEqzC,IAASnzC,EAAE,SAAOA,EAAE,OAAO,MAAMI,GAAEC,CAAC,GAAEL;AAAA,IAAC;AAAA,EAAC;AAAC,SAAOA;AAAC;AAAC,SAASi0C,GAAE1zC,GAAE;AAAC,MAAYA,EAAE,SAAX;AAAgB,WAAOA,EAAE,WAASA,EAAE,QAAS,EAAC,mBAAkB;AAAG,QAAM0yC,IAAE1yC,EAAE,QAAO;AAAG,SAAOP,EAAEizC,CAAC,KAAGU,GAAE,GAAG,GAAEpzC,EAAE,WAAS0yC,EAAE,gBAAiB;AAAA;AAAC,SAAS2B,GAAE3B,GAAE9yC,GAAER,GAAE;AAAC,MAAIyzC,IAAEjzC,EAAE,QAAO,GAAGE,IAAEV;AAAE,MAAGK,EAAEozC,CAAC,GAAE;AAAC,UAAM7yC,IAAE6yC,EAAE,qBAAqBjzC,EAAE,MAAM;AAAE,IAAOI,MAAP,SAAW6yC,IAAE7yC;AAAA,EAAE;AAAC,SAAKF,IAAE,KAAU+yC,MAAP,QAAU;AAAC,QAAGpzC,EAAEozC,CAAC,GAAE;AAAC,YAAM7yC,IAAE6yC,EAAE,kBAAiB;AAAG,MAAO7yC,MAAP,SAAW6yC,IAAE7yC;AAAA,IAAE;AAAC,QAAIZ,IAAEyzC,EAAE,mBAAkB,GAAGhzC,IAAE;AAAE,QAAUT,MAAP,MAAS;AAAC,UAAIY,IAAE6yC,EAAE,iBAAkB,GAACH,IAAE1yC,EAAE,mBAAkB;AAAG,aAAY0yC,MAAP,QAAU;AAAC,YAAG1yC,IAAEA,EAAE,UAAS,GAAUA,MAAP,MAAS;AAAC,UAAAZ,IAAE;AAAK;AAAA,QAAK;AAAC,QAAAszC,IAAE1yC,EAAE,mBAAoB;AAAA,MAAA;AAAC,MAAOA,MAAP,SAAWH,IAAEG,EAAE,SAAU,IAAC,IAAE,GAAEZ,IAAEszC;AAAA,IAAE;AAAC,QAAII,IAAED,EAAE,eAAgB;AAAC,IAAKC,MAAL,MAAQrzC,EAAEozC,CAAC,KAAG,CAACA,EAAE,SAAQ,MAAKC,IAAE;AAAA;AAAA;AAAQ,UAAMpzC,IAAEozC,EAAE;AAAO,QAAG,CAAC9yC,EAAE6yC,CAAC,KAAG/yC,KAAGJ,GAAE;AAAC,YAAMM,IAAE6yC,EAAE,UAAS;AAAG,MAAAA,EAAE,OAAQ,GAAO7yC,KAAN,QAAaA,EAAE,gBAAiB,MAAvB,KAAyBT,GAAES,CAAC,KAAGA,EAAE,OAAQ,GAACF,KAAGJ,IAAEG,GAAEgzC,IAAEzzC;AAAA,IAAC,OAAK;AAAC,YAAMK,IAAEozC,EAAE,UAAStzC,IAAEmzC,EAAE,eAAgB,EAAC,KAAM,MAAI;AAAC,cAAMA,IAAEE,GAAEnzC,CAAC;AAAE,eAAOO,EAAE0yC,CAAC,KAAGA,EAAE,aAAc,IAACA,EAAE,eAAgB,IAAC;AAAA,MAAI,CAAG,GAACtzC,IAAEM,IAAEI,GAAED,IAAEizC,EAAE,MAAM,GAAE1zC,CAAC;AAAE,UAAUG,MAAP,QAAUA,MAAIuzC,GAAE;AAAC,cAAM9yC,IAAE2yC,GAAG;AAAC,YAAID,IAAEG;AAAE,YAAGA,EAAE,aAAY;AAAG,UAAAA,EAAE,eAAetzC,CAAC;AAAA,aAAM;AAAC,gBAAMS,IAAE0F,GAAEnG,CAAC;AAAE,UAAAszC,EAAE,QAAQ7yC,CAAC,GAAE0yC,IAAE1yC;AAAA,QAAC;AAAC,YAAGmK,EAAEnK,CAAC,KAAGA,EAAE,YAAa,GAAC;AAAC,gBAAMP,IAAEO,EAAE,OAAO;AAAO,UAAA0yC,EAAE,OAAOjzC,GAAEA,CAAC;AAAA,QAAC;AAAA,MAAC,WAASozC,EAAE,aAAc,GAAC;AAAC,cAAM7yC,IAAEJ,EAAE,QAAMH;AAAE,YAAIizC,IAAE9yC,EAAE;AAAO,QAAA8yC,IAAE5yC,MAAI4yC,IAAEhzC;AAAG,cAAMH,IAAES,IAAE0yC,IAAE5yC,IAAE,GAAE8yC,IAAE5yC,IAAE0yC,IAAEtzC;AAAE,YAAGY,KAAOT,MAAJ,GAAM;AAAC,gBAAK,CAACS,CAAC,IAAE6yC,EAAE,UAAUtzC,GAAEqzC,CAAC;AAAE,UAAA5yC,EAAE,OAAQ;AAAA,QAAA,OAAK;AAAC,gBAAK,CAAA,EAAEA,CAAC,IAAE6yC,EAAE,UAAUtzC,GAAEqzC,CAAC;AAAE,UAAA5yC,EAAE,OAAQ;AAAA,QAAA;AAAA,MAAC,OAAK;AAAC,cAAMA,IAAE0F,GAAE7F,CAAC;AAAE,QAAAgzC,EAAE,QAAQ7yC,CAAC;AAAA,MAAC;AAAC,MAAAF,IAAE;AAAA,IAAC;AAAA,EAAC;AAAC;AAAC,SAASg0C,GAAE9zC,GAAE;AAAC,QAAM0yC,IAAE1yC,EAAE,SAAU,GAACP,IAAE6zC,GAAEZ,CAAC;AAAEhuC,EAAAA,GAAE,IAAIguC,GAAEjzC,CAAC;AAAC;AAAC,SAASo0C,GAAE7zC,GAAE0yC,GAAE;AAAC,QAAMjzC,IAAE8zC,GAAE,cAAavzC,IAAEA,EAAE,SAAU,IAACA,EAAE,KAAK,GAAET,IAAE,OAAO,QAAQmzC,CAAC,EAAE,OAAQ,CAACA,GAAE,CAACnzC,GAAEqzC,CAAC,OAAiB,OAAOA,KAAnB,aAAqBF,EAAEnzC,KAAGqzC,EAAEnzC,EAAEF,IAAGS,CAAC,IAAS4yC,MAAP,OAAS,OAAOF,EAAEnzC,KAAGmzC,EAAEnzC,KAAGqzC,GAAEF,IAAI,EAAC,GAAGjzC,EAAC,CAAK,GAAE,IAAE,SAASO,GAAE;AAAC,QAAI0yC,IAAE;AAAG,eAAUjzC,KAAKO;AAAE,MAAAP,MAAIizC,KAAG,GAAGjzC,MAAMO,EAAEP;AAAO,WAAOizC;AAAA,EAAC,EAAEnzC,CAAC;AAAE,EAAAS,EAAE,SAAS,CAAC,GAAE0E,GAAE,IAAI,GAAEnF,CAAC;AAAC;AAAC,SAAS40C,GAAEzB,GAAEjzC,GAAE;AAAC,QAAMF,IAAEmzC,EAAE,SAAU,GAACE,IAAErzC,EAAE,QAAOozC,IAAED,EAAE,kBAAmB;AAAC,MAAUC,MAAP;AAAS;AAAO,QAAK,CAAC,GAAEvzC,CAAC,IAAEuzC,GAAEE,IAAED,IAAE;AAAE,MAAI9yC,IAAEP,EAAE,IAAG,IAAEA,EAAEszC;AAAG,MAAGH,EAAE,iBAAevoC,EAAEuoC,CAAC;AAAE,WAAO,KAAKmB,GAAEnB,GAAEjzC,CAAC;AAAE,QAAMqzC,IAAEhzC,EAAE,eAAgB,EAAC,QAAOJ,IAAEN,EAAE;AAAO,MAAI2zC,IAAE,EAAE;AAAO,QAAME,IAAE,EAAE,SAAS7zC,CAAC;AAAE,MAAII,IAAEyzC,IAAEF,IAAErzC,GAAE0zC,IAAEH,IAAEvzC,IAAEqzC;AAAE,QAAMruC,IAAEuuC,IAAE,EAAE,OAAK7zC,EAAE,MAAK+zC,IAAEF,IAAE7zC,EAAE,OAAK,EAAE,MAAK8zC,IAAED,IAAE7zC,EAAE,MAAI,EAAE;AAAI,MAAGY,EAAEF,CAAC,KAAGN,MAAIszC,GAAE;AAAC,UAAMJ,IAAE5yC,EAAE,eAAc;AAAGE,IAAAA,EAAE0yC,CAAC,MAAIK,IAAE,GAAEvzC,IAAE,GAAEM,IAAE4yC;AAAA,EAAE;AAAC,MAAOnzC,EAAE,WAAN;AAAc,QAAGS,EAAEF,CAAC,KAAGA,EAAE,cAAa,GAAG;AAAC,UAAGN,IAAckF,MAAZ,YAAc,IAAEquC,IAAErzC,IAAEA,IAAEqzC,GAAEK,IAAcD,MAAZ,YAAcL,IAAEC,IAAErzC,IAAEqzC,IAAErzC,GAAEF,MAAI4zC;AAAE;AAAO,UAAGxzC,GAAEE,CAAC,KAAON,MAAJ,KAAO4zC,MAAIN;AAAEe,QAAAA,GAAE/zC,GAAEL,CAAC,GAAEK,EAAE,OAAON,GAAE4zC,CAAC;AAAA,WAAM;AAAC,cAAMpzC,IAAEF,EAAE,UAAUN,GAAE4zC,CAAC,GAAEV,IAAMlzC,MAAJ,IAAMQ,EAAE,KAAGA,EAAE;AAAG6zC,QAAAA,GAAEnB,GAAEjzC,CAAC,GAAEizC,EAAE,OAAO,GAAEU,IAAE5zC,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,SAAM;AAAC,QAAGQ,EAAEF,CAAC,KAAGN,IAAEM,EAAE,mBAAoB,KAAEA,EAAE,cAAa,MAASN,MAAJ,KAAOI,GAAEE,CAAC,MAAIA,IAAEA,EAAE,UAAUN,CAAC,EAAE,IAAGA,IAAE,GAAEyzC,IAAE,EAAE,IAAInzC,EAAE,OAAM,GAAGN,GAAE,MAAM,IAAEJ,EAAE,IAAIU,EAAE,OAAM,GAAGN,GAAE,MAAM,IAAGq0C,GAAE/zC,GAAEL,CAAC,IAAGO,EAAE,CAAC,KAAG,EAAE,iBAAgB;AAAC,YAAMA,IAAE,EAAE,eAAgB,EAAC;AAAO,QAAE,UAAQkzC,KAAOE,MAAJ,MAAQA,IAAEpzC,IAAGozC,MAAIpzC,KAAGJ,GAAE,CAAC,MAAI,CAAC,CAAC,IAAE,EAAE,UAAUwzC,CAAC,IAAOA,MAAJ,KAAmBD,MAAZ,aAAeU,GAAE,GAAEp0C,CAAC;AAAA,IAAC;AAAC,aAAQizC,IAAE,GAAEA,IAAEG,GAAEH,KAAI;AAAC,YAAME,IAAErzC,EAAEmzC,IAAGC,IAAEC,EAAE,OAAQ;AAAC5yC,MAAAA,EAAE4yC,CAAC,KAAGA,EAAE,cAAe,KAAED,MAAI7yC,EAAE,OAAM,KAAI6yC,MAAI,EAAE,OAAQ,KAAE,CAACC,EAAE,QAAO,KAAIiB,GAAEjB,GAAEnzC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC;AAAC,SAASH,GAAEU,GAAE0yC,GAAE;AAAC,MAAU1yC,MAAP;AAAS;AAAO,QAAMT,IAAES,EAAE,kBAAmB,GAAC4yC,IAAErzC,IAAEA,EAAE,KAAG;AAAK,MAAUqzC,MAAP,QAAmBA,EAAE,QAAX,QAAe;AAAC,UAAM5yC,IAAE0yC,EAAC,GAAGjzC,IAAEL,GAAC,GAAGG,IAAEE,EAAE,cAAe;AAAC,WAAO,MAAKF,IAAEA,EAAE,QAAQS,GAAE,EAAE,IAAEP,EAAE,OAAOO,CAAC;AAAA,EAAE;AAAC,QAAM2yC,IAAE3yC,EAAE,SAAU,GAAC,IAAS4yC,MAAP,QAAU,SAAS5yC,GAAE0yC,GAAE;AAAC,QAAIjzC,IAAEO;AAAE,WAAYP,MAAP,QAAiBA,EAAE,UAAW,MAApB,QAAsB,CAACizC,EAAEjzC,CAAC;AAAG,MAAAA,IAAEA,EAAE,iBAAgB;AAAG,WAAOizC,EAAEjzC,CAAC,IAAEA,IAAE;AAAA,EAAI,EAAEmzC,EAAE,QAAS,GAAC4B,EAAC;AAAE,OAAQ7B,EAAE,QAAQ,CAAC,MAAhB,MAAmBA,EAAE,KAAK,CAAC;AAAE,WAAQ3yC,IAAE,GAAEA,IAAE2yC,EAAE,QAAO3yC,KAAI;AAAC,UAAM,IAAE2yC,EAAE3yC;AAAG,QAAG,CAACw0C,GAAE,CAAC;AAAE;AAAS/0C,IAAAA,EAAE,CAAC,KAAG2zC,GAAE,GAAG;AAAE,UAAMR,IAAEF,EAAC;AAAG,IAAAE,EAAE,UAAU,EAAE,cAAa,CAAE,GAAEA,EAAE,UAAU,EAAE,UAAS,CAAE,GAAE,EAAE,QAAQA,GAAE,EAAE;AAAA,EAAC;AAAC;AAAC,SAAS7yC,GAAEC,GAAE;AAAC,SAAOA,EAAE,QAAS,EAAC,WAAU;AAAE;AAAC,SAASo0C,GAAEp0C,GAAE;AAAC,MAAI0yC,IAAE1yC;AAAE,SAAY0yC,MAAP,QAAU,CAACG,GAAEH,CAAC,KAAG;AAAC,UAAM1yC,IAAE0yC,EAAE,UAAW,GAACjzC,IAAEizC,EAAE,UAAS;AAAG,IAAI1yC,EAAE,gBAAe,MAArB,KAAyB0yC,EAAE,OAAO,EAAE,GAAEA,IAAEjzC;AAAA,EAAC;AAAC;AAAC,SAASuzC,GAAEhzC,GAAE0yC,GAAEjzC,IAAE,MAAK;AAAC,QAAMF,IAAES,EAAE,kBAAmB,GAAC,IAAET,IAAEA,EAAE,KAAG,MAAKozC,IAAE3yC,EAAE,SAAQ,GAAG0F,IAAEitC,EAAE;AAAO,MAAU,MAAP,SAAejtC,MAAJ,KAAWA,MAAJ,KAAmB,EAAE,SAAd,aAAwB,EAAE,QAAS,EAAC,gBAAe,MAA/B,IAAmC;AAAC,UAAM1F,IAAW,EAAE,SAAX,SAAgB,EAAE,QAAS,EAAC,iBAAgB,IAAG,EAAE,QAAS,GAACT,IAAES,EAAE,YAAa;AAAC,QAAI2yC,IAAED,EAAG;AAAC,WAAOC,EAAE,UAAU3yC,EAAE,cAAe,CAAA,GAAE2yC,EAAE,UAAU3yC,EAAE,UAAW,CAAA,GAAET,EAAE,QAAS,CAAAS,MAAG2yC,EAAE,OAAO3yC,CAAC,CAAG,GAACP,MAAIkzC,IAAElzC,EAAE,OAAOkzC,CAAC,IAAG,KAAK3yC,EAAE,QAAQ2yC,CAAC;AAAA,EAAC;AAAC,MAAIxoC,IAAE,MAAK,IAAE,CAAA;AAAG,WAAQ5K,IAAE,GAAEA,IAAEmG,GAAEnG,KAAI;AAAC,UAAMqzC,IAAED,EAAEpzC;AAAGszC,IAAAA,GAAED,CAAC,KAAGsB,GAAEl0C,GAAE,GAAE,EAAE,QAAO0yC,GAAEjzC,CAAC,GAAE,IAAE,CAAA,GAAG0K,IAAEyoC,KAAUzoC,MAAP,QAAiBA,MAAP,QAAUrK,GAAE8yC,GAAEzoC,CAAC,IAAE,EAAE,KAAKyoC,CAAC,KAAGsB,GAAEl0C,GAAE,GAAE,EAAE,QAAO0yC,GAAEjzC,CAAC,GAAE,IAAE,CAACmzC,CAAC;AAAA,EAAE;AAACsB,EAAAA,GAAEl0C,GAAE,GAAE,EAAE,QAAO0yC,GAAEjzC,CAAC;AAAC;AAAC,SAASy0C,GAAEl0C,GAAE0yC,GAAEnzC,GAAEqzC,GAAEltC,IAAE,MAAK;AAAC,MAAOgtC,EAAE,WAAN;AAAa;AAAO,QAAM9yC,IAAE8yC,EAAE,IAAGtzC,IAAE,oBAAI,OAAIU,IAAE,CAAE;AAAC,MAAIJ,IAAED,EAAEG,CAAC,IAAEA,IAAEA,EAAE,iBAAkB;AAAC,EAAAF,EAAE,SAAQ,MAAKA,IAAEA,EAAE;AAAoB,MAAIqzC,IAAE;AAAG,SAAYrzC,MAAP,QAAU;AAAC,UAAMM,IAAEN,EAAE,mBAAkB;AAAG,QAAUM,MAAP,MAAS;AAAC,MAAAN,IAAEM,GAAE+yC,IAAE;AAAG;AAAA,IAAK;AAAC,QAAGrzC,IAAEA,EAAE,iBAAkB,GAACmzC,GAAEnzC,CAAC;AAAE;AAAA,EAAK;AAAC,QAAMuzC,IAAE,oBAAI;AAAI,WAAQjzC,IAAE,GAAEA,IAAET,GAAES,KAAI;AAAC,UAAMT,IAAEmzC,EAAE1yC;AAAGP,IAAAA,EAAEF,CAAC,KAAOA,EAAE,gBAAiB,MAAvB,KAAyB0zC,EAAE,IAAI1zC,EAAE,OAAM,CAAE;AAAA,EAAC;AAAC,QAAMC,IAAE,oBAAI;AAAI,WAAQQ,IAAE,GAAEA,IAAET,GAAES,KAAI;AAAC,UAAMT,IAAEmzC,EAAE1yC;AAAG,QAAI2yC,IAAEpzC,EAAE,UAAW;AAAC,QAAUozC,MAAP,QAAUA,EAAE,SAAU,MAAGA,IAAEA,EAAE,UAAW,IAASA,MAAP,QAAU9yC,GAAEN,CAAC,KAAG,CAACC,EAAE,IAAID,EAAE,OAAM,CAAE,GAAE;AAAC,YAAMS,IAAE2yC,EAAE,OAAQ;AAAC,UAAYvzC,EAAE,IAAIY,CAAC,MAAhB,QAAkB;AAAC,cAAM0yC,IAAEE,EAAC;AAAG,QAAAF,EAAE,UAAUC,EAAE,cAAe,CAAA,GAAED,EAAE,UAAUC,EAAE,UAAS,CAAE,GAAE7yC,EAAE,KAAK4yC,CAAC,GAAEtzC,EAAE,IAAIY,GAAE0yC,CAAC,GAAEC,EAAE,YAAW,EAAG,QAAS,CAAA3yC,MAAG;AAAC,UAAA0yC,EAAE,OAAO1yC,CAAC,GAAER,EAAE,IAAIQ,EAAE,OAAM,CAAE,GAAEP,EAAEO,CAAC,KAAGA,EAAE,gBAAe,EAAG,QAAS,CAAAA,MAAGR,EAAE,IAAIQ,CAAC,CAAG;AAAA,QAAA,CAAG,GAACo0C,GAAEzB,CAAC;AAAA,MAAC;AAAA,IAAC,WAASM,EAAE,IAAI1zC,EAAE,OAAM,CAAE,GAAE;AAACE,MAAAA,EAAEF,CAAC,KAAG6zC,GAAE,GAAG;AAAE,YAAMpzC,IAAE4yC,EAAG;AAAC,MAAA5yC,EAAE,UAAUT,EAAE,cAAa,CAAE,GAAES,EAAE,UAAUT,EAAE,UAAW,CAAA,GAAEO,EAAE,KAAKE,CAAC,GAAET,EAAE,OAAO,EAAE;AAAA,IAAC;AAAA,EAAC;AAAC,MAAUmG,MAAP;AAAS,aAAQ1F,IAAE,GAAEA,IAAEF,EAAE,QAAOE,KAAI;AAAC,YAAM0yC,IAAE5yC,EAAEE;AAAG,MAAA0F,EAAE,OAAOgtC,CAAC;AAAA,IAAC;AAAC,MAAIhuC,IAAE;AAAK,MAAGmuC,GAAEnzC,CAAC;AAAE,QAAGqzC;AAAE,UAAUrtC,MAAP;AAAS,QAAAhG,EAAE,YAAYgG,CAAC;AAAA;AAAO,iBAAQ1F,IAAEF,EAAE,SAAO,GAAEE,KAAG,GAAEA,KAAI;AAAC,gBAAM0yC,IAAE5yC,EAAEE;AAAG,UAAAN,EAAE,YAAYgzC,CAAC;AAAA,QAAC;AAAA,SAAK;AAAC,YAAM1yC,IAAEN,EAAE,cAAe;AAAC,UAAGD,EAAEO,CAAC,MAAIN,IAAEM,IAAUA,MAAP;AAAS,YAAG0F;AAAE,UAAAhG,EAAE,OAAOgG,CAAC;AAAA;AAAO,mBAAQ1F,IAAE,GAAEA,IAAEF,EAAE,QAAOE,KAAI;AAAC,kBAAM0yC,IAAE5yC,EAAEE;AAAG,YAAAN,EAAE,OAAOgzC,CAAC,GAAEhuC,IAAEguC;AAAA,UAAC;AAAA,eAAgBhtC,MAAP;AAAS,QAAA1F,EAAE,aAAa0F,CAAC;AAAA;AAAO,iBAAQgtC,IAAE,GAAEA,IAAE5yC,EAAE,QAAO4yC,KAAI;AAAC,gBAAMjzC,IAAEK,EAAE4yC;AAAG,UAAA1yC,EAAE,aAAaP,CAAC,GAAEiF,IAAEjF;AAAA,QAAC;AAAA,IAAC;AAAA,WAASiG;AAAE,IAAAhG,EAAE,YAAYgG,CAAC;AAAA;AAAO,aAAQ1F,IAAEF,EAAE,SAAO,GAAEE,KAAG,GAAEA,KAAI;AAAC,YAAM0yC,IAAE5yC,EAAEE;AAAG,MAAAN,EAAE,YAAYgzC,CAAC,GAAEhuC,IAAEguC;AAAA,IAAC;AAAC,QAAMS,IAAER,GAAG;AAACxoC,EAAAA,EAAEgpC,CAAC,KAAGpzC,GAAEozC,EAAE,MAAM,KAAGpzC,GAAEozC,EAAE,KAAK,IAAEL,GAAEK,EAAE,MAAK,CAAE,IAASzuC,MAAP,OAASA,EAAE,UAAS,IAAG1E,EAAE,QAAM;AAAE;AAAC,SAAS+zC,GAAE/zC,GAAE0yC,GAAE;AAAC,QAAMnzC,IAAEG,GAAEM,EAAE,OAAM0yC,CAAC;AAAE,SAAOK,GAAExzC,CAAC,KAAG,CAACA,EAAE,WAAU,KAAIE,EAAEF,CAAC,KAAG,CAACA,EAAE,SAAU,KAAE,CAACA,EAAE,WAAU;AAAE;AAAC,SAASq0C,GAAE5zC,GAAE0yC,GAAEjzC,GAAEF,GAAE;AAAC,EAAAS,EAAE,OAAO0yC,IAAE,WAAS,QAAOjzC,GAAEF,CAAC;AAAC;AAAC,SAASo0C,GAAE3zC,GAAE;AAAC,QAAM0yC,IAAE1yC,EAAE,OAAO,QAAS;AAAC,UAAeT,GAAEmzC,CAAC,IAAEA,IAAEA,EAAE,iBAAkB,GAAE,aAAY,MAAlD;AAAoD;AAAC,SAASsB,GAAEh0C,GAAE0yC,GAAEjzC,GAAE;AAAC,QAAMF,IAAEo0C,GAAE3zC,CAAC;AAAE4zC,EAAAA,GAAE5zC,GAAE0yC,GAAEjzC,IAAE,CAACF,IAAEA,GAAE,WAAW;AAAC;AAAC,SAAS+0C,GAAE5B,GAAE;AAAC,QAAMnzC,IAAEmzC,EAAE,QAAOE,IAAEF,EAAE,OAAM,IAAEnzC,EAAE,QAAS,EAAC,0BAAyB,EAAG,iBAAkB;AAAC,MAAImG,IAAE,EAAE,mBAAkB,GAAGyE,IAAE,EAAE,kBAAmB,GAACvK,IAAE,WAAUR,IAAE,WAAUyzC,IAAE;AAAE7yC,EAAAA,EAAE0F,CAAC,IAAE9F,IAAE,SAAOH,EAAEiG,CAAC,KAAUA,MAAP,SAAWA,IAAEA,EAAE,iBAAgB,IAAI1F,EAAEmK,CAAC,KAAG/K,IAAE,QAAOyzC,IAAE1oC,EAAE,wBAAsB1K,EAAE0K,CAAC,KAAUA,MAAP,SAAWA,IAAEA,EAAE,iBAAgB,IAAIzE,KAAGyE,MAAI5K,EAAE,IAAImG,EAAE,OAAQ,GAAC,GAAE9F,CAAC,GAAEgzC,EAAE,IAAIzoC,EAAE,OAAM,GAAG0oC,GAAEzzC,CAAC;AAAE;AAAC,SAASs1C,GAAE10C,GAAE0yC,GAAEjzC,GAAE;AAAC,QAAMF,IAAEg0C,GAAEvzC,EAAE,SAAQ,CAAE;AAAE,SAAcT,MAAP,QAAUA,EAAEmzC,MAAIjzC;AAAC;AAAC,SAASitC,GAAEgG,GAAEjzC,GAAEF,IAAE,IAAG;AAAC,MAAIqzC,IAAE;AAAK,QAAMD,IAAED,EAAE,SAAQ,GAAG,IAAEA,EAAE,QAAO9yC,IAAE8yC,EAAE,OAAMtzC,IAAEszC,EAAE,WAAY,GAACG,IAAEzzC,IAAEQ,EAAE,SAAO,EAAE,QAAOE,IAAEV,IAAEQ,EAAE,QAAS,IAAC,EAAE,QAAS;AAAC,MAAGuK,EAAEuoC,CAAC,KAAGA,EAAE,YAAW,KAASA,EAAE,UAAP,IAAa;AAAC,UAAM1yC,IAAEuzC,GAAEb,EAAE,KAAK;AAAE,QAAU1yC,MAAP,QAAUP,KAAKO;AAAE,aAAOA,EAAEP;AAAA,EAAE;AAAC,WAAQizC,IAAE,GAAEA,IAAEC,EAAE,QAAOD,KAAI;AAAC,UAAMhtC,IAAEitC,EAAED;AAAG,SAAQA,MAAJ,KAAWG,MAAJ,KAAO,CAACntC,EAAE,GAAG5F,CAAC,MAAIE,EAAE0F,CAAC,GAAE;AAAC,YAAM1F,IAAE00C,GAAEhvC,GAAEjG,GAAEF,CAAC;AAAE,UAAUqzC,MAAP;AAAS,QAAAA,IAAE5yC;AAAA,eAAU4yC,MAAI5yC,GAAE;AAAC,QAAA4yC,IAAE;AAAG;AAAA,MAAK;AAAA,IAAC;AAAA,EAAC;AAAC,SAAcA,MAAP,OAASrzC,IAAEqzC;AAAC;AAAC,SAAS4B,GAAE9B,GAAE;AAAkB,MAAdK,GAAEL,CAAC,KAAc,CAACjzC,EAAEizC,CAAC,KAAGG,GAAEH,CAAC;AAAE,WAAM;AAAG,QAAMnzC,IAAEmzC,EAAE,cAAe,GAACE,IAASrzC,MAAP,QAAU0zC,GAAE1zC,CAAC,KAAGS,EAAET,CAAC,KAAGA,EAAE,SAAU;AAAC,SAAM,CAACmzC,EAAE,SAAU,KAAOA,EAAE,WAAY,MAAnB,MAAqBE;AAAC;AAAC,MAAMqB,KAAEI;;;;;;;;;;;;;;;;;;;;8CCE3tS4T,KAAM,QAAQ,IAAI,aAAa,gBAAgBC,KAASC,IACjDsE,KAAgBxE,GAAI,eAMpBwG,KAAiBxG,GAAI,gBAIrBoG,KAA2CpG,GAAI,0CAC/CuD,KAAgCvD,GAAI,+BAIpCuC,KAA0BvC,GAAI,yBCNrCoH,KAAgB,OAAO,SAAW,OAAe,OAAO,OAAO,WAAa,OAAe,OAAO,OAAO,SAAS,gBAAkB,KAUpI3gD,KAAe2gD,MAAiB,kBAAkB,WAAW,SAAS,eAAe,MACrFC,KAAaD,MAAiB,uBAAuB,KAAK,UAAU,QAAQ,GAC5EE,KAAeF,MAAiB,mCAAmC,KAAK,UAAU,SAAS,GAC3FG,KAAyBH,MAAiB,gBAAgB,UAAU,CAAC3gD,KAAe,qBAAqB,IAAI,OAAO,WAAW,OAAO,IAAI,IAC1I+gD,KAAcJ,MAAiB,0BAA0B,KAAK,UAAU,SAAS,GACjFK,KAAWL,MAAiB,mBAAmB,KAAK,UAAU,SAAS,KAAK,CAAC,OAAO,UACpFM,KAAeN,MAAiB,UAAU,KAAK,UAAU,SAAS,GAIlEO,KAAcP,MAAiB,mBAAmB,KAAK,UAAU,SAAS,GAG1EQ,KAAsBR,MAAiBM,MAAgBC,IACvDE,KAAoBT,MAAiB,sBAAsB,KAAK,UAAU,SAAS,KAAK,CAACO;AAU/F,SAASh+C,MAAuBC,GAAY;AAC1C,QAAMC,IAAO,CAAA;AACb,aAAWC,KAAaF;AACtB,QAAIE,KAAa,OAAOA,KAAc;AACpC,iBAAW,CAACrM,CAAC,KAAKqM,EAAU,SAAS,MAAM;AACzC,QAAAD,EAAK,KAAKpM,CAAC;AAIjB,SAAOoM;AACT;AAmCA,SAASi+C,MAAiBC,GAAM;AAC9B,SAAO,MAAM;AACX,aAAS7lD,IAAI6lD,EAAK,SAAS,GAAG7lD,KAAK,GAAGA;AACpC,MAAA6lD,EAAK7lD;AAGP,IAAA6lD,EAAK,SAAS;AAAA,EAClB;AACA;AAUA,SAASC,GAAG7oD,GAAO;AACjB,SAAO,GAAGA;AACZ;AAUA,MAAM8oD,KAAyB;AAAA,EAC7B,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,WAAW;AAAA,EACX,SAAS;AACX;AACA,SAASC,GAAoB59C,GAAQ2tB,GAAOkwB,GAAc;AACxD,MAAIC,IAAc,MACdC,IAAgB,MAChBz8C,IAAW,MACX08C,IAAY,CAAA;AAChB,QAAMC,IAAc,SAAS,cAAc,KAAK;AAChD,WAASC,IAAW;AAClB,QAAMJ,MAAgB;AACpB,YAAM,MAAM,6BAA6B;AAE3C,QAAMC,MAAkB;AACtB,YAAM,MAAM,+BAA+B;AAE7C,UAAM;AAAA,MACJ,MAAMI;AAAA,MACN,KAAKC;AAAA,IACX,IAAQN,EAAY,yBACVO,IAAiBN,GACjBO,IAAQrG,GAAwBj4C,GAAQ2tB,CAAK;AACnD,IAAKswB,EAAY,eACfI,EAAe,OAAOJ,CAAW;AAEnC,QAAIM,IAAkB;AACtB,aAAS3mD,IAAI,GAAGA,IAAI0mD,EAAM,QAAQ1mD,KAAK;AACrC,YAAM4mD,IAAOF,EAAM1mD,IAGb6mD,IAAWT,EAAUpmD,MAAM,SAAS,cAAc,KAAK,GACvD8mD,IAAgBD,EAAS;AAC/B,MAAIC,EAAc,aAAa,eAC7BA,EAAc,WAAW,YACzBH,IAAkB;AAEpB,YAAMp4B,IAAOu3B,GAAGc,EAAK,OAAOL,CAAQ;AACpC,MAAIO,EAAc,SAASv4B,MACzBu4B,EAAc,OAAOv4B,GACrBo4B,IAAkB;AAEpB,YAAMhG,IAAMmF,GAAGc,EAAK,MAAMJ,CAAO;AACjC,MAAIM,EAAc,QAAQnG,MACxBkG,EAAS,MAAM,MAAMlG,GACrBgG,IAAkB;AAEpB,YAAMI,IAAQjB,GAAGc,EAAK,KAAK;AAC3B,MAAIE,EAAc,UAAUC,MAC1BF,EAAS,MAAM,QAAQE,GACvBJ,IAAkB;AAEpB,YAAMK,IAASlB,GAAGc,EAAK,MAAM;AAC7B,MAAIE,EAAc,WAAWE,MAC3BH,EAAS,MAAM,SAASG,GACxBL,IAAkB,KAEhBE,EAAS,eAAeR,MAC1BA,EAAY,OAAOQ,CAAQ,GAC3BF,IAAkB,KAEpBP,EAAUpmD,KAAK6mD;AAAA,IAChB;AACD,WAAOT,EAAU,SAASM,EAAM;AAC9B,MAAAN,EAAU,IAAG;AAEf,IAAIO,KACFV,EAAaG,CAAS;AAAA,EAEzB;AACD,WAASa,IAAO;AACd,IAAAd,IAAgB,MAChBD,IAAc,MACVx8C,MAAa,QACfA,EAAS,WAAU,GAErBA,IAAW,MACX28C,EAAY,OAAM;AAClB,eAAWtmD,KAAQqmD;AACjB,MAAArmD,EAAK,OAAM;AAEb,IAAAqmD,IAAY,CAAA;AAAA,EACb;AACD,WAASc,IAAU;AACjB,UAAMC,IAAqB/+C,EAAO;AAClC,QAAI++C,MAAuB;AACzB,aAAOF,EAAI;AAEb,UAAMG,IAAuBD,EAAmB;AAChD,QAAI,EAAEC,aAAgC;AACpC,aAAOH,EAAI;AAEb,IAAAA,KACAf,IAAciB,GACdhB,IAAgBiB,GAChB19C,IAAW,IAAI,iBAAiB,CAAAD,MAAa;AAC3C,YAAM49C,IAAkBj/C,EAAO,kBACzBk/C,IAAoBD,KAAmBA,EAAgB;AAC7D,UAAIA,MAAoBnB,KAAeoB,MAAsBnB;AAC3D,eAAOe,EAAO;AAEhB,iBAAW/8C,KAAYV;AACrB,YAAI,CAAC48C,EAAY,SAASl8C,EAAS,MAAM;AAEvC,iBAAOm8C,EAAQ;AAAA,IAGzB,CAAK,GACD58C,EAAS,QAAQ09C,GAAsBrB,EAAsB,GAC7DO;EACD;AACD,QAAMiB,IAAqBn/C,EAAO,qBAAqB8+C,CAAO;AAC9D,SAAO,MAAM;AACX,IAAAK,KACAN;EACJ;AACA;AAUA,SAASO,GAAcp/C,GAAQ69C,GAAc;AAC3C,MAAIwB,IAAqB,MACrBC,IAAuB,MACvBC,IAAoB,MACpBC,IAAsB,MACtBC,IAAsB,MAAM;AAAA;AAChC,WAASC,EAAQz4C,GAAa;AAC5B,IAAAA,EAAY,KAAK,MAAM;AACrB,YAAM3G,IAAYC;AAClB,UAAI,CAACW,EAAkBZ,CAAS,GAAG;AAEjC,QAAA++C,IAAqB,MACrBC,IAAuB,MACvBC,IAAoB,MACpBC,IAAsB,MACtBC,KACAA,IAAsB,MAAM;AAAA,QAAA;AAC5B;AAAA,MACD;AACD,YAAM;AAAA,QACJ,QAAAzuC;AAAA,QACA,OAAA7B;AAAA,MACD,IAAG7O,GACEq/C,IAAoB3uC,EAAO,WAC3B4uC,IAAuBD,EAAkB,UACzCE,IAAsB7uC,EAAO,QAC7B8uC,IAAmB3wC,EAAM,WACzB4wC,IAAsBD,EAAiB,UACvCE,IAAqB7wC,EAAM,QAC3B8wC,IAAuBjgD,EAAO,gBAAgB4/C,CAAoB,GAClEM,IAAsBlgD,EAAO,gBAAgB+/C,CAAmB,GAChEI,IAAqBd,MAAuB,QAAQY,MAAyB,QAAQJ,MAAwBP,KAAwBM,MAAyBP,EAAmB,OAAQ,KAAIM,MAAsBN,MAAuB,EAAEA,aAA8Bt4B,OAAa44B,EAAkB,UAAUN,GAAoBY,GAAsBjgD,EAAO,OAAO,IAC3WogD,IAAoBb,MAAsB,QAAQW,MAAwB,QAAQF,MAAuBR,KAAuBO,MAAwBR,EAAkB,OAAQ,KAAIO,MAAqBP,MAAsB,EAAEA,aAA6Bx4B,OAAa+4B,EAAiB,UAAUP,GAAmBW,GAAqBlgD,EAAO,OAAO;AACpW,UAAImgD,KAAsBC,GAAmB;AAC3C,cAAMC,IAAoBrgD,EAAO,gBAAgBgR,EAAO,QAAS,EAAC,OAAM,CAAE,GACpEsvC,IAAmBtgD,EAAO,gBAAgBmP,EAAM,QAAS,EAAC,OAAM,CAAE;AAExE,YAAIkxC,MAAsB,QAAQC,MAAqB,QAAQD,EAAkB,YAAY,UAAUC,EAAiB,YAAY,QAAQ;AAC1I,gBAAM3yB,IAAQ,SAAS;AACvB,cAAI4yB,GACAC,GACAC,GACAtiC;AACJ,UAAIhP,EAAM,SAAS6B,CAAM,KACvBuvC,IAAmBD,GACnBE,IAAcrxC,EAAM,QACpBsxC,IAAkBJ,GAClBliC,IAAanN,EAAO,WAEpBuvC,IAAmBF,GACnBG,IAAcxvC,EAAO,QACrByvC,IAAkBH,GAClBniC,IAAahP,EAAM;AAErB,gBAAMuxC,IAAgBH,EAAiB;AACvC,cAAMG,MAAkB;AACtB,kBAAM,MAAM,8CAA8C;AAE5D,gBAAMC,IAAeF,EAAgB;AACrC,cAAME,MAAiB;AACrB,kBAAM,MAAM,8CAA8C;AAE5D,UAAAhzB,EAAM,SAAS+yB,GAAeF,CAAW,GACzC7yB,EAAM,OAAOgzB,GAAcxiC,CAAU,GACrCshC,KACAA,IAAsB7B,GAAoB59C,GAAQ2tB,GAAO,CAAAizB,OAAY;AACnE,uBAAWhjC,MAAWgjC,IAAU;AAC9B,oBAAMC,IAAejjC,GAAQ;AAC7B,cAAIijC,EAAa,eAAe,gBAC9BA,EAAa,aAAa,cAExBA,EAAa,UAAU,oBACzBA,EAAa,QAAQ,kBAEnBA,EAAa,WAAW,SAC1BA,EAAa,SAAS,OAEpBA,EAAa,kBAAkB,WACjCA,EAAa,gBAAgB,SAE3BA,EAAa,cAAcnD,GAAG,IAAI,MACpCmD,EAAa,YAAYnD,GAAG,IAAI,IAE9BmD,EAAa,eAAenD,GAAG,CAAC,MAClCmD,EAAa,aAAanD,GAAG,CAAC,IAE5BmD,EAAa,kBAAkBnD,GAAG,CAAC,MACrCmD,EAAa,gBAAgBnD,GAAG,CAAC;AAAA,YAEpC;AACD,YAAIG,MAAiB,UACnBA,EAAa+C,EAAQ;AAAA,UAEnC,CAAW;AAAA,QACF;AAAA,MACF;AACD,MAAAvB,IAAqBM,GACrBL,IAAuBO,GACvBN,IAAoBO,GACpBN,IAAsBQ;AAAA,IAC5B,CAAK;AAAA,EACF;AACD,SAAAN,EAAQ1/C,EAAO,eAAc,CAAE,GACxBw9C,GAAcx9C,EAAO,uBAAuB,CAAC;AAAA,IAClD,aAAAiH;AAAA,EACD,MAAKy4C,EAAQz4C,CAAW,CAAC,GAAGw4C,GAAqB,MAAM;AACtD,IAAAA;EACJ,CAAG;AACH;AAWA,MAAMnjD,KAAuB2gD,IACvB/gD,KAAc4gD,IACdrgD,KAAa2gD,IACbzgD,KAAoB2gD,IACpBlhD,KAAW2gD,IACXngD,KAAkB2gD,IAClB7gD,KAAY2gD,IACZhhD,KAAa2gD,IACbxgD,KAAS2gD,IACT5gD,KAAY2gD;AASlB,SAAS4D,GAAuBhtD,MAAYwL,GAAY;AACtD,QAAMyhD,IAAe1hD,GAAoB,GAAGC,CAAU;AACtD,EAAIyhD,EAAa,SAAS,KACxBjtD,EAAQ,UAAU,IAAI,GAAGitD,CAAY;AAEzC;AAUA,SAASC,GAA4BltD,MAAYwL,GAAY;AAC3D,QAAM2hD,IAAkB5hD,GAAoB,GAAGC,CAAU;AACzD,EAAI2hD,EAAgB,SAAS,KAC3BntD,EAAQ,UAAU,OAAO,GAAGmtD,CAAe;AAE/C;AAUA,SAASC,GAAWC,GAAMC,GAAqB;AAC7C,aAAWC,KAAkBD;AAC3B,QAAID,EAAK,KAAK,WAAWE,CAAc;AACrC,aAAO;AAGX,SAAO;AACT;AAaA,SAASC,GAAgBC,GAAOH,GAAqB;AACnD,QAAMI,IAAgBD,EAAM,OAAO,UAAS;AAC5C,SAAO,IAAI,QAAQ,CAACE,GAASC,MAAW;AACtC,UAAMC,IAAY,CAAA,GACZC,IAAiB,MAAM;AAC3B,YAAM;AAAA,QACJ,MAAAC;AAAA,QACA,OAAOV;AAAA,MACf,IAAUK,EAAc;AAClB,UAAIK;AACF,eAAOJ,EAAQE,CAAS;AAE1B,YAAMG,IAAa,IAAI;AACvB,MAAAA,EAAW,iBAAiB,SAASJ,CAAM,GAC3CI,EAAW,iBAAiB,QAAQ,MAAM;AACxC,cAAMC,IAASD,EAAW;AAC1B,QAAI,OAAOC,KAAW,YACpBJ,EAAU,KAAK;AAAA,UACb,MAAAR;AAAA,UACA,QAAAY;AAAA,QACZ,CAAW,GAEHH;MACR,CAAO,GACGV,GAAWC,GAAMC,CAAmB,IACtCU,EAAW,cAAcX,CAAI,IAE7BS;IAER;AACI,IAAAA;EACJ,CAAG;AACH;AAYA,SAASI,GAAK7G,GAAc8G,GAAY;AACtC,QAAMrzC,IAAQ,CAAA,GACR6d,KAAS0uB,KAAgBjyC,GAAU,GAAE,UAAS,GAC9CwjB,IAAMu1B,KAAep/C,EAAe4pB,CAAK,KAAIA,EAAM,kBAAmB,KAAIA;AAChF,MAAI90B,IAAO80B,GACPy1B,IAAQC,GAAUxqD,CAAI;AAC1B,SAAOA,MAAS,QAAQ,CAACA,EAAK,GAAG+0B,CAAG;AAKlC,QAJA9d,EAAM,KAAK;AAAA,MACT,OAAAszC;AAAA,MACA,MAAAvqD;AAAA,IACN,CAAK,GACGkL,EAAelL,CAAI,KAAKA,EAAK,gBAAe,IAAK;AACnD,MAAAA,IAAOA,EAAK,iBACZuqD;AAAA,SACK;AAEL,UAAIrvC,IAAU;AACd,aAAOA,MAAY,QAAQlb,MAAS;AAClC,QAAAkb,IAAUlb,EAAK,kBACXkb,MAAY,QACdlb,IAAOA,EAAK,aACZuqD,OAEAvqD,IAAOkb;AAAA,IAGZ;AAEH,SAAIlb,MAAS,QAAQA,EAAK,GAAG+0B,CAAG,KAC9B9d,EAAM,KAAK;AAAA,IACT,OAAAszC;AAAA,IACA,MAAAvqD;AAAA,EACN,CAAK,GAEIiX;AACT;AACA,SAASuzC,GAAUxqD,GAAM;AACvB,MAAIyqD,IAAYzqD,GACZuqD,IAAQ;AACZ,UAAQE,IAAYA,EAAU,UAAS,OAAQ;AAC7C,IAAAF;AAEF,SAAOA;AACT;AAUA,SAASG,GAA0BlH,GAAc;AAC/C,MAAIxjD,IAAOwjD;AACX,MAAIt4C,EAAelL,CAAI,KAAKA,EAAK,gBAAe,IAAK;AACnD,IAAAA,IAAOA,EAAK;OACP;AACL,QAAIkb,IAAU;AACd,WAAOA,MAAY,QAAQlb,MAAS;AAClC,MAAAkb,IAAUlb,EAAK,sBACXkb,MAAY,OACdlb,IAAOA,EAAK,cAEZA,IAAOkb;AAAA,EAGZ;AACD,SAAOlb;AACT;AASA,SAAS2qD,GAAsB3qD,GAAM2W,GAAO;AAC1C,MAAIlG,IAASzQ;AACb,SAAOyQ,KAAU,QAAM;AACrB,QAAIA,aAAkBkG;AACpB,aAAOlG;AAET,IAAAA,IAASA,EAAO;EACjB;AACD,SAAO;AACT;AAOA,SAASm6C,GAAuCtvC,GAAW;AACzD,QAAMuvC,IAAYC,GAAoBxvC,GAAW,CAAAtb,MAAQkL,EAAelL,CAAI,KAAK,CAACA,EAAK,SAAQ,CAAE;AACjG,MAAI,CAACkL,EAAe2/C,CAAS;AAEzB,UAAM,MAAM,iBAAiBvvC,EAAU,2CAA2C;AAGtF,SAAOuvC;AACT;AASA,MAAMC,KAAsB,CAACtH,GAAcuH,MAAW;AACpD,MAAIC,IAAOxH;AACX,SAAOwH,MAASz5C,QAAcy5C,KAAQ,QAAM;AAC1C,QAAID,EAAOC,CAAI;AACb,aAAOA;AAET,IAAAA,IAAOA,EAAK;EACb;AACD,SAAO;AACT;AAWA,SAASC,GAA8B5iD,GAAQiB,GAAY4hD,GAAWC,GAAe;AACnF,QAAMC,IAAgB,CAAAprD,MACbA,aAAgBsJ,GAEnB+hD,IAAa,CAAArrD,MAAQ;AAGzB,UAAMiB,IAAWjB,EAAK;AACtB,aAASC,IAAI,GAAGA,IAAIgB,EAAS,QAAQhB,KAAK;AACxC,YAAMC,IAAQe,EAAShB;AACvB,UAAImrD,EAAclrD,CAAK;AACrB,eAAO;AAAA,IAEV;AACD,QAAIkZ,IAAapZ,GACbigC,IAAYjgC;AAChB,WAAOoZ,MAAe;AAGpB,UAFA6mB,IAAY7mB,GACZA,IAAaA,EAAW,aACpBgyC,EAAchyC,CAAU;AAC1B,eAAO;AAAA,UACL,OAAO6mB;AAAA,UACP,QAAQ7mB;AAAA,QAClB;AAGI,WAAO;AAAA,EACX,GACQkyC,IAAwB,CAAAtrD,MAAQ;AACpC,UAAMvF,IAAQ4wD,EAAWrrD,CAAI;AAC7B,QAAIvF,MAAU,MAAM;AAClB,YAAM;AAAA,QACJ,OAAAyF;AAAA,QACA,QAAAuQ;AAAA,MACD,IAAGhW;AAIJ,UAAIyF,EAAM,GAAGF,CAAI,GAAG;AAClB,QAAAmrD,EAAc16C,GAAQzQ,CAAI;AAC1B,cAAM6b,IAAe3b,EAAM,mBACrBqrD,IAAqB1vC,EAAa;AAExC,YADApL,EAAO,YAAYvQ,CAAK,GACpBqrD,MAAuB,GAAG;AAC5B,gBAAM3vC,IAAYsvC,EAAUz6C,CAAM;AAClC,UAAAvQ,EAAM,YAAY0b,CAAS;AAC3B,mBAAS3b,IAAI,GAAGA,IAAIsrD,GAAoBtrD;AACtC,YAAA2b,EAAU,OAAOC,EAAa5b,EAAE;AAAA,QAEnC;AACD,QAAI,CAACwQ,EAAO,WAAU,KAAMA,EAAO,gBAAiB,MAAK,KACvDA,EAAO,OAAM;AAAA,MAEhB;AAAA,IACF;AAAA,EACL;AACE,SAAOpI,EAAO,sBAAsBiB,GAAYgiD,CAAqB;AACvE;AAQA,SAASE,GAAoBnjD,GAAQiH,GAAa;AAEhD,QAAMM,IAAU,oBAAI,OACduuB,IAAoB91B,EAAO;AACjC,aAAW,CAAC9J,GAAKyB,CAAI,KAAKsP,EAAY;AACpC,IAAAM,EAAQ,IAAIrR,GAAKse,GAAqB7c,CAAI,CAAC;AAE7C,EAAIm+B,MACFA,EAAkB,WAAWvuB,IAE/BvH,EAAO,aAAa;AACpB,QAAMM,IAAY2G,EAAY;AAC9B,EAAA7D,GAAc9C,MAAc,OAAO,OAAOA,EAAU,MAAK,CAAE;AAC7D;AAUA,SAAS8iD,GAAyBzrD,GAAM;AACtC,QAAM2I,IAAYC,OAAmBmK;AACrC,MAAIxJ,EAAkBZ,CAAS,GAAG;AAChC,UAAM;AAAA,MACJ,OAAA6O;AAAA,IACD,IAAG7O,GACE8O,IAAYD,EAAM,WAClBvO,IAAcuO,EAAM;AAC1B,QAAIqC,GAAoBpC,CAAS,GAAG;AAClC,YAAMi0C,IAAaj0C,EAAU,gBAAgBxO,CAAW;AACxD,MAAIyiD,KAAc,OAChBj0C,EAAU,OAAOzX,CAAI,IAErB0rD,EAAW,aAAa1rD,CAAI,GAE9BA,EAAK,WAAU;AAAA,IACrB,OAAW;AACL,UAAI2rD,GACAC;AACJ,MAAIrhD,EAAYkN,CAAS,KACvBk0C,IAAYl0C,EAAU,oBACtBm0C,IAAcn0C,EAAU,wBACpBxO,IAAc,MAChB2iD,KAAe,GACfn0C,EAAU,UAAUxO,CAAW,OAGjC0iD,IAAYl0C,GACZm0C,IAAc3iD;AAEhB,YAAM,CAAG,EAAA0S,CAAS,IAAIN,GAAWswC,GAAWC,CAAW;AACvD,MAAAjwC,EAAU,aAAa3b,CAAI,GAC3B2b,EAAU,YAAW;AAAA,IACtB;AAAA,EACL,OAAS;AACL,QAAIhT,KAAa,MAAM;AACrB,YAAMsO,IAAQtO,EAAU;AACxB,MAAAsO,EAAMA,EAAM,SAAS,GAAG,4BAA4B,YAAYjX,CAAI;AAAA,IAC1E;AAEM,MADauR,KACR,OAAOvR,CAAI;AAElB,UAAM6rD,IAAgBh/B;AACtB,IAAA7sB,EAAK,YAAY6rD,CAAa,GAC9BA,EAAc,OAAM;AAAA,EACrB;AACD,SAAO7rD,EAAK;AACd;AAQA,SAAS8rD,GAAmB9rD,GAAM+rD,GAAmB;AACnD,QAAMjxC,IAAcixC;AACpB,SAAA/rD,EAAK,QAAQ8a,CAAW,GACxBA,EAAY,OAAO9a,CAAI,GAChB8a;AACT;AASA,SAASkxC,GAAkB9sD,GAAQ+sD,GAAa;AAC9C,SAAO/sD,MAAW,OAAO,OAAO,eAAeA,CAAM,EAAE,YAAY,SAAS+sD,EAAY,OAAO;AACjG;AASA,SAASC,GAAQj1C,GAAOk1C,GAAU;AAChC,QAAM/B,IAAS,CAAA;AACf,WAASnqD,IAAI,GAAGA,IAAIgX,EAAM,QAAQhX,KAAK;AACrC,UAAMD,IAAOmsD,EAASl1C,EAAMhX,EAAE;AAC9B,IAAID,MAAS,QACXoqD,EAAO,KAAKpqD,CAAI;AAAA,EAEnB;AACD,SAAOoqD;AACT;AAMA,SAASgC,GAAa37C,GAAQzQ,GAAM;AAClC,QAAMqc,IAAa5L,EAAO;AAC1B,EAAI4L,MAAe,OACjBA,EAAW,aAAarc,CAAI,IAE5ByQ,EAAO,OAAOzQ,CAAI;AAEtB;AAOA,SAASqsD,GAAmBlwD,GAAS;AACnC,MAAIuI;AACF,WAAO;AAET,MAAI4nD,IAAO;AACX,SAAOnwD;AACL,IAAAmwD,KAAQ,OAAO,OAAO,iBAAiBnwD,CAAO,EAAE,iBAAiB,MAAM,CAAC,GACxEA,IAAUA,EAAQ;AAEpB,SAAOmwD;AACT;AAKA,SAASC,GAAwBlkD,GAAQ;AACvC,SAAOA,EAAO,kBAAkB;AAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzzBya,SAASzS,GAAEE,GAAE;AAAC,SAAOA,KAAGA,EAAE,cAAY,OAAO,UAAU,eAAe,KAAKA,GAAE,SAAS,IAAEA,EAAE,UAAQA;AAAC;AAAC,IAAIN,KAAEI,GAAG,SAASE,GAAE;AAAC,QAAM0yC,IAAE,IAAI;AAAgB,EAAAA,EAAE,OAAO,QAAO1yC,CAAC;AAAE,WAAQA,IAAE,GAAEA,IAAE,UAAU,QAAOA;AAAI,IAAA0yC,EAAE,OAAO,KAAI,UAAU1yC,EAAE;AAAE,QAAM,MAAM,2BAA2BA,2CAA2C0yC,iHAAiH;AAAC,CAAC;AAAG,MAAMK,KAAe,OAAO,SAApB,OAAqC,OAAO,aAAhB,UAAmC,OAAO,SAAS,kBAAzB,QAAuCvzC,KAAEuzC,MAAG,kBAAiB,WAAS,SAAS,eAAa,MAAKG,KAAEH,MAAG,uBAAuB,KAAK,UAAU,QAAQ,GAAEE,KAAEF,MAAG,mCAAmC,KAAK,UAAU,SAAS,GAAEO,KAAE,EAAE,CAACP,MAAG,EAAE,gBAAe,WAASvzC,OAAI,qBAAoB,IAAI,OAAO,WAAW,OAAO,GAAEg0C,KAAET,MAAG,0BAA0B,KAAK,UAAU,SAAS,GAAEU,KAAEV,MAAG,mBAAmB,KAAK,UAAU,SAAS,KAAG,CAAC,OAAO,UAASI,KAAEJ,MAAG,UAAU,KAAK,UAAU,SAAS,GAAEruC,KAAEquC,MAAG,mBAAmB,KAAK,UAAU,SAAS,GAAEQ,KAAER,MAAGI,MAAGzuC,IAAEqvC,KAAEhB,MAAG,sBAAsB,KAAK,UAAU,SAAS,KAAG,CAACruC;AAAE,SAASkvC,MAAK5zC,GAAE;AAAC,QAAM0yC,IAAE,CAAE;AAAC,aAAUjzC,KAAKO;AAAE,QAAGP,KAAa,OAAOA,KAAjB;AAAmB,iBAAS,CAACO,CAAC,KAAIP,EAAE,SAAS,MAAM;AAAE,QAAAizC,EAAE,KAAK1yC,CAAC;AAAE,SAAO0yC;AAAC;AAAC,SAAS3yC,MAAKC,GAAE;AAAC,SAAM,MAAI;AAAC,aAAQ0yC,IAAE1yC,EAAE,SAAO,GAAE0yC,KAAG,GAAEA;AAAI,MAAA1yC,EAAE0yC;AAAK,IAAA1yC,EAAE,SAAO;AAAA,EAAC;AAAC;AAAC,SAASozC,GAAEpzC,GAAE;AAAC,SAAM,GAAGA;AAAK;AAAC,MAAMg0C,KAAE,EAAC,YAAW,IAAG,eAAc,IAAG,WAAU,IAAG,SAAQ,GAAE;AAAE,SAASX,GAAErzC,GAAE0yC,GAAEjzC,GAAE;AAAC,MAAImzC,IAAE,MAAKD,IAAE,MAAKpzC,IAAE,MAAK,IAAE,CAAE;AAAC,QAAMmG,IAAE,SAAS,cAAc,KAAK;AAAE,WAASmtC,IAAG;AAAC,IAAOD,MAAP,QAAUlzC,GAAE,GAAG,GAASizC,MAAP,QAAUjzC,GAAE,GAAG;AAAE,UAAK,EAAC,MAAKH,GAAE,KAAIszC,EAAC,IAAED,EAAE,sBAAqB,GAAGhzC,IAAE+yC,GAAEvzC,IAAE0zC,GAAE9yC,GAAE0yC,CAAC;AAAE,IAAAhtC,EAAE,eAAa9F,EAAE,OAAO8F,CAAC;AAAE,QAAI7F,IAAE;AAAG,aAAQG,IAAE,GAAEA,IAAEZ,EAAE,QAAOY,KAAI;AAAC,YAAM0yC,IAAEtzC,EAAEY,IAAGP,IAAE,EAAEO,MAAI,SAAS,cAAc,KAAK,GAAE4yC,IAAEnzC,EAAE;AAAM,MAAamzC,EAAE,aAAf,eAA0BA,EAAE,WAAS,YAAW/yC,IAAE;AAAI,YAAM8yC,IAAES,GAAEV,EAAE,OAAKnzC,CAAC;AAAE,MAAAqzC,EAAE,SAAOD,MAAIC,EAAE,OAAKD,GAAE9yC,IAAE;AAAI,YAAMD,IAAEwzC,GAAEV,EAAE,MAAIG,CAAC;AAAE,MAAAD,EAAE,QAAMhzC,MAAIH,EAAE,MAAM,MAAIG,GAAEC,IAAE;AAAI,YAAMizC,IAAEM,GAAEV,EAAE,KAAK;AAAE,MAAAE,EAAE,UAAQE,MAAIrzC,EAAE,MAAM,QAAMqzC,GAAEjzC,IAAE;AAAI,YAAMC,IAAEszC,GAAEV,EAAE,MAAM;AAAE,MAAAE,EAAE,WAAS9yC,MAAIL,EAAE,MAAM,SAAOK,GAAED,IAAE,KAAIJ,EAAE,eAAaiG,MAAIA,EAAE,OAAOjG,CAAC,GAAEI,IAAE,KAAI,EAAEG,KAAGP;AAAA,IAAC;AAAC,WAAK,EAAE,SAAOL,EAAE;AAAQ,QAAE,IAAK;AAAC,IAAAS,KAAGJ,EAAE,CAAC;AAAA,EAAC;AAAC,WAASG,IAAG;AAAC,IAAA+yC,IAAE,MAAKC,IAAE,MAAYrzC,MAAP,QAAUA,EAAE,cAAaA,IAAE,MAAKmG,EAAE;AAAS,eAAU1F,KAAK;AAAE,MAAAA,EAAE;AAAS,QAAE,CAAE;AAAA,EAAA;AAAC,QAAMZ,IAAEY,EAAE,qBAAsB,SAAS0yC,IAAG;AAAC,UAAMjzC,IAAEO,EAAE;AAAiB,QAAUP,MAAP;AAAS,aAAOG;AAAI,UAAMuK,IAAE1K,EAAE;AAAc,QAAG,EAAE0K,aAAa;AAAa,aAAOvK;AAAI,IAAAA,KAAIgzC,IAAEnzC,GAAEkzC,IAAExoC,GAAE5K,IAAE,IAAI,iBAAkB,CAAAE,MAAG;AAAC,YAAMF,IAAES,EAAE,eAAgB,GAACmK,IAAE5K,KAAGA,EAAE;AAAc,UAAGA,MAAIqzC,KAAGzoC,MAAIwoC;AAAE,eAAOD,EAAC;AAAG,iBAAU1yC,KAAKP;AAAE,YAAG,CAACiG,EAAE,SAAS1F,EAAE,MAAM;AAAE,iBAAO6yC;IAAG,CAAC,GAAGtzC,EAAE,QAAQ4K,GAAE6pC,EAAC,GAAEnB,EAAC;AAAA,EAAE,CAAG;AAAC,SAAM,MAAI;AAAC,IAAAzzC,EAAG,GAACQ,EAAG;AAAA,EAAA;AAAC;AAAC,SAASu0C,GAAEvB,GAAED,GAAE;AAAC,MAAIpzC,IAAE,MAAK4K,IAAE,MAAKzE,IAAE,MAAKmtC,IAAE,MAAKjzC,IAAE,MAAI;AAAA;AAAG,WAASR,EAAEA,GAAE;AAAC,IAAAA,EAAE,KAAM,MAAI;AAAC,YAAMA,IAAEY,EAAG;AAAC,UAAG,CAAC0yC,EAAEtzC,CAAC;AAAE,eAAOG,IAAE,MAAK4K,IAAE,MAAKzE,IAAE,MAAKmtC,IAAE,MAAKjzC,EAAC,GAAG,MAAKA,IAAE,MAAI;AAAA,QAAA;AAAI,YAAK,EAAC,QAAOC,GAAE,OAAM,EAAC,IAAET,GAAEU,IAAED,EAAE,QAAO,GAAG,IAAEC,EAAE,OAAQ,GAACN,IAAEK,EAAE,QAAOqzC,IAAE,EAAE,QAAO,GAAGD,IAAEC,EAAE,UAASI,IAAE,EAAE,QAAOE,IAAEZ,EAAE,gBAAgB,CAAC,GAAEa,IAAEb,EAAE,gBAAgBK,CAAC,GAAEE,IAAS5zC,MAAP,QAAiBi0C,MAAP,QAAUh0C,MAAI2K,KAAG,MAAI5K,EAAE,OAAQ,KAAEO,MAAIP,MAAI,EAAEA,aAAaE,OAAIK,EAAE,UAAUP,GAAEi0C,GAAEZ,EAAE,OAAO,IAAGluC,IAASgB,MAAP,QAAiB+tC,MAAP,QAAUH,MAAIT,KAAGI,MAAIvtC,EAAE,OAAM,KAAIwtC,MAAIxtC,MAAI,EAAEA,aAAajG,OAAIyzC,EAAE,UAAUxtC,GAAE+tC,GAAEb,EAAE,OAAO;AAAG,UAAGO,KAAGzuC,GAAE;AAAC,cAAM1E,IAAE4yC,EAAE,gBAAgB/yC,EAAE,QAAS,EAAC,OAAQ,CAAA,GAAE6yC,IAAEE,EAAE,gBAAgB,EAAE,QAAS,EAAC,OAAQ,CAAA;AAAE,YAAU5yC,MAAP,QAAiB0yC,MAAP,QAAmB1yC,EAAE,YAAX,UAA6B0yC,EAAE,YAAX,QAAmB;AAAC,gBAAMjzC,IAAE,SAAS;AAAc,cAAIF,GAAE4K,GAAEzE,GAAEmtC;AAAE,YAAE,SAAShzC,CAAC,KAAGN,IAAEmzC,GAAEvoC,IAAE,EAAE,QAAOzE,IAAE1F,GAAE6yC,IAAEhzC,EAAE,WAASN,IAAES,GAAEmK,IAAEtK,EAAE,QAAO6F,IAAEgtC,GAAEG,IAAE,EAAE;AAAQ,gBAAMzzC,IAAEG,EAAE;AAAW,UAAOH,MAAP,QAAUM,GAAE,GAAG;AAAE,gBAAMI,IAAE4F,EAAE;AAAW,UAAO5F,MAAP,QAAUJ,GAAE,GAAG,GAAED,EAAE,SAASL,GAAE+K,CAAC,GAAE1K,EAAE,OAAOK,GAAE+yC,CAAC,GAAEjzC,EAAC,GAAGA,IAAEyzC,GAAET,GAAEnzC,GAAG,CAAAO,OAAG;AAAC,uBAAU0yC,MAAK1yC,IAAE;AAAC,oBAAMA,IAAE0yC,GAAE;AAAM,cAAc1yC,EAAE,eAAhB,gBAA6BA,EAAE,aAAW,cAA+BA,EAAE,UAApB,oBAA4BA,EAAE,QAAM,kBAAwBA,EAAE,WAAT,SAAkBA,EAAE,SAAO,OAAeA,EAAE,kBAAX,WAA2BA,EAAE,gBAAc,SAAQA,EAAE,cAAYozC,GAAE,IAAI,MAAIpzC,EAAE,YAAUozC,GAAE,IAAI,IAAGpzC,EAAE,eAAaozC,GAAE,CAAC,MAAIpzC,EAAE,aAAWozC,GAAE,CAAC,IAAGpzC,EAAE,kBAAgBozC,GAAE,CAAC,MAAIpzC,EAAE,gBAAcozC,GAAE,CAAC;AAAA,YAAE;AAAC,YAAST,MAAT,UAAYA,EAAE3yC,EAAC;AAAA,UAAC;QAAG;AAAA,MAAC;AAAC,MAAAT,IAAEO,GAAEqK,IAAE3K,GAAEkG,IAAEwtC,GAAEL,IAAES;AAAA,IAAC,CAAC;AAAA,EAAE;AAAC,SAAOl0C,EAAEwzC,EAAE,eAAgB,CAAA,GAAE7yC,GAAE6yC,EAAE,uBAAwB,CAAC,EAAC,aAAY5yC,EAAC,MAAIZ,EAAEY,CAAC,CAAG,GAACJ,GAAG,MAAI;AAAC,IAAAA;EAAG,CAAC;AAAE;AAAC,MAAMozC,KAAEM,IAAEe,KAAEtB,IAAEc,KAAEV,IAAEiB,KAAEb,IAAEO,KAAEZ,IAAES,KAAEI,IAAEW,KAAEhwC,IAAEwvC,KAAEjB,IAAE3zC,KAAEm0C,IAAEC,KAAEF;AAAE,SAASc,GAAEt0C,MAAK0yC,GAAE;AAAC,QAAMjzC,IAAEm0C,GAAE,GAAGlB,CAAC;AAAE,EAAAjzC,EAAE,SAAO,KAAGO,EAAE,UAAU,IAAI,GAAGP,CAAC;AAAC;AAAC,SAAS+0C,GAAEx0C,MAAK0yC,GAAE;AAAC,QAAMjzC,IAAEm0C,GAAE,GAAGlB,CAAC;AAAE,EAAAjzC,EAAE,SAAO,KAAGO,EAAE,UAAU,OAAO,GAAGP,CAAC;AAAC;AAAC,SAASw0C,GAAEj0C,GAAE0yC,GAAE;AAAC,aAAUjzC,KAAKizC;AAAE,QAAG1yC,EAAE,KAAK,WAAWP,CAAC;AAAE,aAAM;AAAG,SAAM;AAAE;AAAC,SAASitC,GAAE1sC,GAAE0yC,GAAE;AAAC,QAAMjzC,IAAEO,EAAE,OAAO,UAAS;AAAG,SAAO,IAAI,QAAS,CAACA,GAAE,MAAI;AAAC,UAAM2yC,IAAE,CAAA,GAAGpzC,IAAE,MAAI;AAAC,YAAK,EAAC,MAAK4K,GAAE,OAAMzE,EAAC,IAAEjG,EAAE,KAAI;AAAG,UAAG0K;AAAE,eAAOnK,EAAE2yC,CAAC;AAAE,YAAME,IAAE,IAAI;AAAW,MAAAA,EAAE,iBAAiB,SAAQ,CAAC,GAAEA,EAAE,iBAAiB,QAAQ,MAAI;AAAC,cAAM7yC,IAAE6yC,EAAE;AAAO,QAAU,OAAO7yC,KAAjB,YAAoB2yC,EAAE,KAAK,EAAC,MAAKjtC,GAAE,QAAO1F,EAAC,CAAC,GAAET,EAAC;AAAA,MAAE,CAAG,GAAC00C,GAAEvuC,GAAEgtC,CAAC,IAAEG,EAAE,cAAcntC,CAAC,IAAEnG,EAAG;AAAA,IAAA;AAAE,IAAAA,EAAC;AAAA,EAAE,CAAG;AAAA;AAAC,SAASk1C,GAAEz0C,GAAE0yC,GAAE;AAAC,QAAMjzC,IAAE,CAAA,GAAGF,KAAGS,KAAG4yC,GAAG,GAAE,UAAW,GAACzoC,IAAEuoC,KAAGC,EAAEpzC,CAAC,KAAGA,EAAE,uBAAqBA;AAAE,MAAI,IAAEA,GAAEszC,IAAE,SAAS7yC,GAAE;AAAC,QAAI0yC,IAAE1yC,GAAEP,IAAE;AAAE,YAAaizC,IAAEA,EAAE,UAAW,OAAvB;AAA0B,MAAAjzC;AAAI,WAAOA;AAAA,EAAC,EAAE,CAAC;AAAE,SAAY,MAAP,QAAU,CAAC,EAAE,GAAG0K,CAAC;AAAG,QAAG1K,EAAE,KAAK,EAAC,OAAMozC,GAAE,MAAK,EAAC,CAAC,GAAEF,EAAE,CAAC,KAAG,EAAE,gBAAiB,IAAC;AAAE,UAAE,EAAE,cAAe,GAACE;AAAA,SAAQ;AAAC,UAAI7yC,IAAE;AAAK,aAAYA,MAAP,QAAiB,MAAP;AAAU,QAAAA,IAAE,EAAE,eAAgB,GAAQA,MAAP,QAAU,IAAE,EAAE,aAAY6yC,OAAK,IAAE7yC;AAAA,IAAC;AAAC,SAAc,MAAP,QAAU,EAAE,GAAGmK,CAAC,KAAG1K,EAAE,KAAK,EAAC,OAAMozC,GAAE,MAAK,EAAC,CAAC,GAAEpzC;AAAC;AAAC,SAASE,GAAEK,GAAE;AAAC,MAAI0yC,IAAE1yC;AAAE,MAAG2yC,EAAED,CAAC,KAAGA,EAAE,gBAAe,IAAG;AAAE,IAAAA,IAAEA,EAAE;OAAmB;AAAC,QAAI1yC,IAAE;AAAK,WAAYA,MAAP,QAAiB0yC,MAAP;AAAU,MAAA1yC,IAAE0yC,EAAE,sBAAqBA,IAAS1yC,MAAP,OAAS0yC,EAAE,UAAS,IAAG1yC;AAAA,EAAC;AAAC,SAAO0yC;AAAC;AAAC,SAASqC,GAAE/0C,GAAE0yC,GAAE;AAAC,MAAIjzC,IAAEO;AAAE,SAAWP,KAAN,QAAS;AAAC,QAAGA,aAAaizC;AAAE,aAAOjzC;AAAE,IAAAA,IAAEA,EAAE;EAAW;AAAC,SAAO;AAAI;AAAC,SAAS80C,GAAEv0C,GAAE;AAAC,QAAM0yC,IAAEiC,GAAE30C,GAAG,CAAAA,MAAG2yC,EAAE3yC,CAAC,KAAG,CAACA,EAAE,UAAY;AAAC,SAAO2yC,EAAED,CAAC,KAAGhzC,GAAE,GAAEM,EAAE,KAAK,GAAE0yC;AAAC;AAAC,MAAMiC,KAAE,CAAC30C,GAAE0yC,MAAI;AAAC,MAAIjzC,IAAEO;AAAE,SAAKP,MAAImzC,QAAWnzC,KAAN,QAAS;AAAC,QAAGizC,EAAEjzC,CAAC;AAAE,aAAOA;AAAE,IAAAA,IAAEA,EAAE;EAAW;AAAC,SAAO;AAAI;AAAE,SAASm1C,GAAE50C,GAAE0yC,GAAEjzC,GAAEmzC,GAAE;AAAC,QAAMD,IAAE,CAAA3yC,MAAGA,aAAa0yC;AAAE,SAAO1yC,EAAE,sBAAsB0yC,GAAG,CAAA1yC,MAAG;AAAC,UAAM0yC,KAAG,CAAA1yC,MAAG;AAAC,YAAM0yC,IAAE1yC,EAAE,YAAa;AAAC,eAAQA,IAAE,GAAEA,IAAE0yC,EAAE,QAAO1yC,KAAI;AAAC,cAAMP,IAAEizC,EAAE1yC;AAAG,YAAG2yC,EAAElzC,CAAC;AAAE,iBAAO;AAAA,MAAI;AAAC,UAAIA,IAAEO,GAAE4yC,IAAE5yC;AAAE,aAAYP,MAAP;AAAU,YAAGmzC,IAAEnzC,GAAEA,IAAEA,EAAE,UAAW,GAACkzC,EAAElzC,CAAC;AAAE,iBAAM,EAAC,OAAMmzC,GAAE,QAAOnzC,EAAC;AAAE,aAAO;AAAA,IAAI,GAAGO,CAAC;AAAE,QAAU0yC,MAAP,MAAS;AAAC,YAAK,EAAC,OAAMC,GAAE,QAAOpzC,EAAC,IAAEmzC;AAAE,UAAGC,EAAE,GAAG3yC,CAAC,GAAE;AAAC,QAAA4yC,EAAErzC,GAAES,CAAC;AAAE,cAAM0yC,IAAEC,EAAE,gBAAiB,GAACxoC,IAAEuoC,EAAE;AAAO,YAAGnzC,EAAE,YAAYozC,CAAC,GAAMxoC,MAAJ,GAAM;AAAC,gBAAMnK,IAAEP,EAAEF,CAAC;AAAE,UAAAozC,EAAE,YAAY3yC,CAAC;AAAE,mBAAQP,IAAE,GAAEA,IAAE0K,GAAE1K;AAAI,YAAAO,EAAE,OAAO0yC,EAAEjzC,EAAE;AAAA,QAAC;AAAC,QAAAF,EAAE,WAAU,KAAQA,EAAE,sBAAN,KAAyBA,EAAE,OAAM;AAAA,MAAE;AAAA,IAAC;AAAA,EAAC,CAAG;AAAA;AAAC,SAASs1C,GAAE70C,GAAE0yC,GAAE;AAAC,QAAMjzC,IAAE,oBAAI,OAAImzC,IAAE5yC,EAAE;AAAoB,aAAS,CAACA,GAAE4yC,CAAC,KAAIF,EAAE;AAAS,IAAAjzC,EAAE,IAAIO,GAAET,GAAEqzC,CAAC,CAAC;AAAE,EAAAA,MAAIA,EAAE,WAASnzC,IAAGO,EAAE,aAAW;AAAE,QAAM2yC,IAAED,EAAE;AAAWvoC,EAAAA,GAASwoC,MAAP,OAAS,OAAKA,EAAE,OAAO;AAAC;AAAC,SAASmC,GAAE,GAAE;AAAC,QAAMnC,IAAE3yC,EAAG,KAAE0F,GAAC;AAAG,MAAGgtC,EAAEC,CAAC,GAAE;AAAC,UAAK,EAAC,OAAM3yC,EAAC,IAAE2yC,GAAED,IAAE1yC,EAAE,QAAS,GAAC,IAAEA,EAAE;AAAO,QAAG6yC,GAAEH,CAAC,GAAE;AAAC,YAAM1yC,IAAE0yC,EAAE,gBAAgB,CAAC;AAAE,MAAM1yC,KAAN,OAAQ0yC,EAAE,OAAO,CAAC,IAAE1yC,EAAE,aAAa,CAAC,GAAE,EAAE,WAAY;AAAA,IAAA,OAAK;AAAC,UAAIA,GAAE2yC;AAAE/yC,MAAAA,EAAE8yC,CAAC,KAAG1yC,IAAE0yC,EAAE,iBAAgB,GAAGC,IAAED,EAAE,qBAAsB,GAAC,IAAE,MAAIC,KAAG,GAAED,EAAE,UAAU,CAAC,OAAK1yC,IAAE0yC,GAAEC,IAAE;AAAG,YAAK,CAAA,EAAE,CAAC,IAAEvzC,GAAEY,GAAE2yC,CAAC;AAAE,QAAE,aAAa,CAAC,GAAE,EAAE;IAAa;AAAA,EAAC,OAAK;AAAC,QAASA,KAAN,MAAQ;AAAC,YAAM3yC,IAAE2yC,EAAE,SAAQ;AAAG,MAAA3yC,EAAEA,EAAE,SAAO,GAAG,0BAAyB,EAAG,YAAY,CAAC;AAAA,IAAC;AAAM4yC,MAAAA,KAAI,OAAO,CAAC;AAAE,UAAM5yC,IAAEH;AAAI,MAAE,YAAYG,CAAC,GAAEA,EAAE;EAAQ;AAAC,SAAO,EAAE;AAAW;AAAC,SAASs5C,GAAGt5C,GAAE0yC,GAAE;AAAC,QAAMjzC,IAAEizC,EAAC;AAAG,SAAO1yC,EAAE,QAAQP,CAAC,GAAEA,EAAE,OAAOO,CAAC,GAAEP;AAAC;AAAC,SAAS45C,GAAGr5C,GAAE0yC,GAAE;AAAC,SAAc1yC,MAAP,QAAU,OAAO,eAAeA,CAAC,EAAE,YAAY,SAAO0yC,EAAE;AAAI;AAAC,SAAS6G,GAAGv5C,GAAE0yC,GAAE;AAAC,QAAMjzC,IAAE;AAAG,WAAQmzC,IAAE,GAAEA,IAAE5yC,EAAE,QAAO4yC,KAAI;AAAC,UAAMD,IAAED,EAAE1yC,EAAE4yC,EAAE;AAAE,IAAOD,MAAP,QAAUlzC,EAAE,KAAKkzC,CAAC;AAAA,EAAC;AAAC,SAAOlzC;AAAC;AAAC,SAASk6C,GAAG35C,GAAE0yC,GAAE;AAAC,QAAMjzC,IAAEO,EAAE,cAAe;AAAC,EAAOP,MAAP,OAASA,EAAE,aAAaizC,CAAC,IAAE1yC,EAAE,OAAO0yC,CAAC;AAAC;AAAC,SAAS8G,GAAGx5C,GAAE;AAAC,MAAGk0C;AAAE,WAAO;AAAE,MAAIxB,IAAE;AAAE,SAAK1yC;AAAG,IAAA0yC,KAAG,OAAO,OAAO,iBAAiB1yC,CAAC,EAAE,iBAAiB,MAAM,CAAC,GAAEA,IAAEA,EAAE;AAAc,SAAO0yC;AAAC;AAAC,SAASmH,GAAG75C,GAAE;AAAC,SAAcA,EAAE,kBAAT;AAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CCEv2OioD,KAAM,QAAQ,IAAI,aAAa,gBAAgBC,KAASC,IAyBjD/hC,KAAiB6hC,GAAI,gBAErBhiC,KAAgBgiC,GAAI,eAKpB8H,KAAgB9H,GAAI,eACpBiO,KAAoBjO,GAAI;ACzBrC,SAASyO,GAAsBnkD,GAAQ;AACrC,QAAMokD,IAAS,OAAO,SAAS,QACzBC,IAAU,CAAAvkD,MAAS;AACvB,QAAIA,EAAM,WAAWskD;AACnB;AAEF,UAAM1iD,IAAc1B,EAAO;AAC3B,QAAI,SAAS,kBAAkB0B;AAC7B;AAEF,UAAMyI,IAAOrK,EAAM;AACnB,QAAI,OAAOqK,KAAS,UAAU;AAC5B,UAAIm6C;AACJ,UAAI;AACF,QAAAA,IAAa,KAAK,MAAMn6C,CAAI;AAAA,MAC7B,QAAC;AACA;AAAA,MACD;AACD,UAAIm6C,KAAcA,EAAW,aAAa,uBAAuBA,EAAW,SAAS,WAAW;AAC9F,cAAMxzD,IAAUwzD,EAAW;AAC3B,YAAIxzD,KAAWA,EAAQ,eAAe,eAAe;AACnD,gBAAM5B,IAAO4B,EAAQ;AACrB,cAAI5B,GAAM;AACR,kBAAM,CAACq1D,GAAcC,GAAe3jD,GAAM4jD,GAAUC,GAAWC,CAAa,IAAIz1D;AAChF,YAAA8Q,EAAO,OAAO,MAAM;AAClB,oBAAMM,IAAYC;AAClB,kBAAIW,EAAkBZ,CAAS,GAAG;AAChC,sBAAM0Q,IAAS1Q,EAAU;AACzB,oBAAIa,IAAa6P,EAAO,WACpB4zC,IAAc,GACdC,IAAY;AAchB,oBAbI3iD,EAAYf,CAAU,KAEpBojD,KAAgB,KAAKC,KAAiB,MACxCI,IAAcL,GACdM,IAAYN,IAAeC,GAE3BlkD,EAAU,iBAAiBa,GAAYyjD,GAAazjD,GAAY0jD,CAAS,KAGzED,MAAgBC,KAAahkD,MAAS,QACxCP,EAAU,cAAcO,CAAI,GAC5BM,IAAa6P,EAAO,YAElB9O,EAAYf,CAAU,GAAG;AAE3B,kBAAAyjD,IAAcH,GACdI,IAAYJ,IAAWC;AACvB,wBAAMI,IAAuB3jD,EAAW;AAExC,kBAAAyjD,IAAcA,IAAcE,IAAuBA,IAAuBF,GAC1EC,IAAYA,IAAYC,IAAuBA,IAAuBD,GACtEvkD,EAAU,iBAAiBa,GAAYyjD,GAAazjD,GAAY0jD,CAAS;AAAA,gBAC1E;AAGD,gBAAA/kD,EAAM,yBAAwB;AAAA,cAC/B;AAAA,YACf,CAAa;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACL;AACE,gBAAO,iBAAiB,WAAWukD,GAAS,EAAI,GACzC,MAAM;AACX,WAAO,oBAAoB,WAAWA,GAAS,EAAI;AAAA,EACvD;AACA;;;;;AC9EgF,SAAShkB,GAAEA,GAAE;AAAC,QAAMzoC,IAAE,OAAO,SAAS,QAAOtK,IAAE,CAAAA,MAAG;AAAC,QAAGA,EAAE,WAASsK;AAAE;AAAO,UAAMwoC,IAAEC,EAAE,eAAc;AAAG,QAAG,SAAS,kBAAgBD;AAAE;AAAO,UAAM,IAAE9yC,EAAE;AAAK,QAAa,OAAO,KAAjB,UAAmB;AAAC,UAAI;AAAE,UAAG;AAAC,YAAE,KAAK,MAAM,CAAC;AAAA,MAAC,QAAC;AAAS;AAAA,MAAM;AAAC,UAAG,KAAyB,EAAE,aAAxB,uBAA8C,EAAE,SAAd,WAAmB;AAAC,cAAM8yC,IAAE,EAAE;AAAQ,YAAGA,KAAmBA,EAAE,eAAlB,eAA6B;AAAC,gBAAMxoC,IAAEwoC,EAAE;AAAK,cAAGxoC,GAAE;AAAC,kBAAK,CAACwoC,GAAEjtC,GAAE9F,GAAEE,GAAEgzC,GAAE1zC,CAAC,IAAE+K;AAAE,YAAAyoC,EAAE,OAAQ,MAAI;AAAC,oBAAMA,IAAE5yC;AAAI,kBAAG0yC,EAAEE,CAAC,GAAE;AAAC,sBAAM5yC,IAAE4yC,EAAE;AAAO,oBAAIF,IAAE1yC,EAAE,WAAUmK,IAAE,GAAE/K,IAAE;AAAE,oBAAGK,EAAEizC,CAAC,KAAGC,KAAG,KAAGjtC,KAAG,MAAIyE,IAAEwoC,GAAEvzC,IAAEuzC,IAAEjtC,GAAEktC,EAAE,iBAAiBF,GAAEvoC,GAAEuoC,GAAEtzC,CAAC,IAAG+K,MAAI/K,KAAQQ,MAAL,OAASgzC,EAAE,cAAchzC,CAAC,GAAE8yC,IAAE1yC,EAAE,QAAO,IAAIP,EAAEizC,CAAC,GAAE;AAAC,kBAAAvoC,IAAErK,GAAEV,IAAEU,IAAEgzC;AAAE,wBAAM9yC,IAAE0yC,EAAE,mBAAoB;AAAC,kBAAAvoC,IAAEA,IAAEnK,IAAEA,IAAEmK,GAAE/K,IAAEA,IAAEY,IAAEA,IAAEZ,GAAEwzC,EAAE,iBAAiBF,GAAEvoC,GAAEuoC,GAAEtzC,CAAC;AAAA,gBAAC;AAAC,gBAAAS,EAAE,yBAA0B;AAAA,cAAA;AAAA,YAAC,CAAG;AAAA,UAAA;AAAA,QAAC;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;AAAE,SAAO,OAAO,iBAAiB,WAAUA,GAAE,EAAE,GAAE,MAAI;AAAC,WAAO,oBAAoB,WAAUA,GAAE,EAAE;AAAA,EAAC;AAAC;;;;8CCEl2BooD,KAAM,QAAQ,IAAI,aAAa,gBAAgBC,KAASC,IACjDuO,KAAwBzO,GAAI;ACezC,SAASqP,GAAsB/kD,GAAQG,GAAK;AAC1C,QAAMu7C,IAAWv7C,EAAI,OAAOA,EAAI,KAAK,aAAa;AAClD,MAAI6kD,IAAe,CAAA;AACnB,QAAMC,IAAqB,CAAA;AAC3B,WAASrtD,IAAI,GAAGA,IAAI8jD,EAAS,QAAQ9jD,KAAK;AACxC,UAAM9D,IAAU4nD,EAAS9jD;AACzB,QAAI,CAACstD,GAAY,IAAIpxD,EAAQ,QAAQ,GAAG;AACtC,YAAMw3B,IAAc65B,GAAoBrxD,GAASkM,GAAQilD,GAAoB,EAAK;AAClF,MAAI35B,MAAgB,SAClB05B,IAAeA,EAAa,OAAO15B,CAAW;AAAA,IAEjD;AAAA,EACF;AACD,SAAA85B,GAAsBH,CAAkB,GACjCD;AACT;AACA,SAASK,GAAuBrlD,GAAQM,GAAW;AACjD,MAAI,OAAO,WAAa,OAAe,OAAO,SAAW,OAAe,OAAO,OAAO,SAAW;AAC/F,UAAM,IAAI,MAAM,gJAAgJ;AAElK,QAAMglD,IAAY,SAAS,cAAc,KAAK,GAExCC,IADOr8C,KACiB;AAC9B,WAAStR,IAAI,GAAGA,IAAI2tD,EAAiB,QAAQ3tD,KAAK;AAChD,UAAM0jD,IAAeiK,EAAiB3tD;AACtC,IAAA4tD,GAAmBxlD,GAAQs7C,GAAcgK,GAAWhlD,CAAS;AAAA,EAC9D;AACD,SAAOglD,EAAU;AACnB;AACA,SAASE,GAAmBxlD,GAAQgG,GAAa6J,GAAevP,IAAY,MAAM;AAChF,MAAImlD,IAAgBnlD,MAAc,OAAO0F,EAAY,WAAW1F,CAAS,IAAI;AAC7E,QAAMolD,IAAgB7iD,EAAemD,CAAW,KAAKA,EAAY,gBAAgB,MAAM;AACvF,MAAI5F,IAAS4F;AACb,MAAI1F,MAAc,MAAM;AACtB,QAAIqlD,IAAQnxC,GAAqBxO,CAAW;AAC5C,IAAA2/C,IAAQzjD,EAAYyjD,CAAK,KAAKrlD,MAAc,OAAO24C,GAA8B34C,GAAWqlD,CAAK,IAAIA,GACrGvlD,IAASulD;AAAA,EACV;AACD,QAAM/sD,IAAWiK,EAAezC,CAAM,IAAIA,EAAO,YAAa,IAAG,IAC3D+E,IAAiBnF,EAAO,OAAO,IAAII,EAAO,QAAO,CAAE;AACzD,MAAIwlD;AAGJ,EAAIzgD,KAAkBA,EAAe,cAAc,SACjDygD,IAAezgD,EAAe,UAAUnF,GAAQI,CAAM,IAEtDwlD,IAAexlD,EAAO,UAAUJ,CAAM;AAExC,QAAM;AAAA,IACJ,SAAAlM;AAAA,IACA,OAAA+xD;AAAA,EACD,IAAGD;AACJ,MAAI,CAAC9xD;AACH,WAAO;AAET,QAAMuE,IAAW,SAAS;AAC1B,WAAST,IAAI,GAAGA,IAAIgB,EAAS,QAAQhB,KAAK;AACxC,UAAMggC,IAAYh/B,EAAShB,IACrBkuD,IAAqBN,GAAmBxlD,GAAQ43B,GAAWv/B,GAAUiI,CAAS;AACpF,IAAI,CAACmlD,KAAiB5iD,EAAemD,CAAW,KAAK8/C,KAAsB9/C,EAAY,iBAAiB4xB,GAAWt3B,GAAW,MAAM,MAClImlD,IAAgB;AAAA,EAEnB;AACD,MAAIA,KAAiB,CAACC;AAKpB,QAJIhyC,GAAc5f,CAAO,KACvBA,EAAQ,OAAOuE,CAAQ,GAEzBwX,EAAc,OAAO/b,CAAO,GACxB+xD,GAAO;AACT,YAAMnwB,IAAamwB,EAAM,KAAKzlD,GAAQtM,CAAO;AAC7C,MAAI4hC,KACF5hC,EAAQ,YAAY4hC,CAAU;AAAA,IAEjC;AAAA;AAED,IAAA7lB,EAAc,OAAOxX,CAAQ;AAE/B,SAAOotD;AACT;AACA,SAASM,GAAsBnoC,GAAS5d,GAAQ;AAC9C,QAAM;AAAA,IACJ,UAAAyF;AAAA,EACD,IAAGmY,GACEooC,IAAoBhmD,EAAO,iBAAiB,IAAIyF,EAAS,YAAW,CAAE;AAC5E,MAAIwgD,IAAoB;AACxB,MAAID,MAAsB;AACxB,eAAWE,KAAoBF,GAAmB;AAChD,YAAMG,IAAgBD,EAAiBtoC,CAAO;AAC9C,MAAIuoC,MAAkB,SAASF,MAAsB,SAASA,EAAkB,YAAY,MAAME,EAAc,YAAY,QAC1HF,IAAoBE;AAAA,IAEvB;AAEH,SAAOF,MAAsB,OAAOA,EAAkB,aAAa;AACrE;AACA,MAAMf,KAAc,oBAAI,IAAI,CAAC,SAAS,QAAQ,CAAC;AAC/C,SAASC,GAAoBxtD,GAAMqI,GAAQilD,GAAoBmB,GAA6BC,IAAc,oBAAI,IAAK,GAAEC,GAAmB;AACtI,MAAItB,IAAe,CAAA;AACnB,MAAIE,GAAY,IAAIvtD,EAAK,QAAQ;AAC/B,WAAOqtD;AAET,MAAIuB,IAAqB;AACzB,QAAMC,IAAoBT,GAAsBpuD,GAAMqI,CAAM,GACtDymD,IAAkBD,IAAoBA,EAAkB7uD,CAAI,IAAI;AACtE,MAAI+uD,IAAgB;AACpB,MAAID,MAAoB,MAAM;AAC5B,IAAAC,IAAgBD,EAAgB;AAChC,UAAME,IAAiBF,EAAgB;AAEvC,QADAF,IAAqB,MAAM,QAAQI,CAAc,IAAIA,EAAeA,EAAe,SAAS,KAAKA,GAC7FJ,MAAuB,MAAM;AAC/B,iBAAW,CAAA,EAAGK,CAAgB,KAAKP;AAEjC,YADAE,IAAqBK,EAAiBL,GAAoBD,CAAiB,GACvE,CAACC;AACH;AAGJ,MAAIA,KACFvB,EAAa,KAAK,GAAI,MAAM,QAAQ2B,CAAc,IAAIA,IAAiB,CAACJ,CAAkB,CAAE;AAAA,IAE/F;AACD,IAAIE,EAAgB,YAAY,QAC9BJ,EAAY,IAAI1uD,EAAK,UAAU8uD,EAAgB,QAAQ;AAAA,EAE1D;AAID,QAAM7tD,IAAWjB,EAAK;AACtB,MAAIkvD,IAAoB,CAAA;AACxB,QAAMC,IAAyCP,KAAsB,QAAQ/0C,GAAoB+0C,CAAkB,IAAI,KAAQA,KAAsB,QAAQlzB,GAAoBkzB,CAAkB,KAAKH;AACxM,WAASxuD,IAAI,GAAGA,IAAIgB,EAAS,QAAQhB;AACnC,IAAAivD,EAAkB,KAAK,GAAG1B,GAAoBvsD,EAAShB,IAAIoI,GAAQilD,GAAoB6B,GAAwC,IAAI,IAAIT,CAAW,GAAGE,CAAkB,CAAC;AAE1K,SAAIG,KAAiB,SACnBG,IAAoBH,EAAcG,CAAiB,IAEjDhzC,GAAelc,CAAI,MAChBmvD,IAGHD,IAAoBE,GAAsBpvD,GAAMkvD,GAAmB,MAAM;AACvE,UAAMG,IAAiB,IAAIjoB;AAC3B,WAAAkmB,EAAmB,KAAK+B,CAAc,GAC/BA;AAAA,EACf,CAAO,IANDH,IAAoBE,GAAsBpvD,GAAMkvD,GAAmBriC,EAAoB,IASvF+hC,KAAsB,OACpBM,EAAkB,SAAS,IAG7B7B,IAAeA,EAAa,OAAO6B,CAAiB,IAEhDhzC,GAAelc,CAAI,KAAKsvD,GAA+BtvD,CAAI,MAE7DqtD,IAAeA,EAAa,OAAO3/B,GAAsB,CAAA,KAIzDxiB,EAAe0jD,CAAkB,KAGnCA,EAAmB,OAAO,GAAGM,CAAiB,GAG3C7B;AACT;AACA,SAAS+B,GAAsBnpC,GAAShP,GAAOs4C,GAAiB;AAC9D,QAAMC,IAAYvpC,EAAQ,MAAM,WAC1BwpC,IAAM,CAAA;AACZ,MAAIC,IAAoB,CAAA;AAExB,WAAS,IAAI,GAAG,IAAIz4C,EAAM,QAAQ,KAAK;AACrC,UAAMjX,IAAOiX,EAAM;AACnB,QAAIykB,GAAoB17B,CAAI;AAC1B,MAAIwvD,KAAa,CAACxvD,EAAK,eACrBA,EAAK,UAAUwvD,CAAS,GAE1BC,EAAI,KAAKzvD,CAAI;AAAA,aAEb0vD,EAAkB,KAAK1vD,CAAI,GACvB,MAAMiX,EAAM,SAAS,KAAK,IAAIA,EAAM,SAAS,KAAKykB,GAAoBzkB,EAAM,IAAI,EAAE,GAAG;AACvF,YAAM04C,IAAUJ;AAChB,MAAAI,EAAQ,UAAUH,CAAS,GAC3BG,EAAQ,OAAO,GAAGD,CAAiB,GACnCD,EAAI,KAAKE,CAAO,GAChBD,IAAoB,CAAA;AAAA,IACrB;AAAA,EAEJ;AACD,SAAOD;AACT;AACA,SAAShC,GAAsBH,GAAoB;AACjD,aAAWttD,KAAQstD;AACjB,IAAIttD,EAAK,eAAgB,aAAYonC,MACnCpnC,EAAK,YAAY0tB,GAAoB,CAAE;AAI3C,aAAW1tB,KAAQstD,GAAoB;AACrC,UAAMrsD,IAAWjB,EAAK;AACtB,eAAWE,KAASe;AAClB,MAAAjB,EAAK,aAAaE,CAAK;AAEzB,IAAAF,EAAK,OAAM;AAAA,EACZ;AACH;AACA,SAASsvD,GAA+BtvD,GAAM;AAC5C,SAAIA,EAAK,eAAe,QAAQA,EAAK,mBAAmB,OAC/C,KAEFgc,GAAgBhc,EAAK,WAAW,KAAKgc,GAAgBhc,EAAK,eAAe;AAClF;;;;;;ACtOmY,SAASxK,GAAEM,GAAEP,GAAE;AAAC,QAAM,IAAEA,EAAE,OAAKA,EAAE,KAAK,aAAW,CAAE;AAAC,MAAImzC,IAAE,CAAE;AAAC,QAAMrzC,IAAE,CAAE;AAAC,WAAQE,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,UAAMkzC,IAAE,EAAElzC;AAAG,QAAG,CAACK,GAAE,IAAI6yC,EAAE,QAAQ,GAAE;AAAC,YAAMlzC,IAAEiF,GAAEiuC,GAAE3yC,GAAET,GAAE,EAAE;AAAE,MAAOE,MAAP,SAAWmzC,IAAEA,EAAE,OAAOnzC,CAAC;AAAA,IAAE;AAAA,EAAC;AAAC,SAAO,SAASO,GAAE;AAAC,eAAUP,KAAKO;AAAE,MAAAP,EAAE,eAAc,aAAaL,MAAGK,EAAE,YAAYozC,GAAC,CAAE;AAAE,eAAUpzC,KAAKO,GAAE;AAAC,YAAMA,IAAEP,EAAE,YAAa;AAAC,iBAAUizC,KAAK1yC;AAAE,QAAAP,EAAE,aAAaizC,CAAC;AAAE,MAAAjzC,EAAE;IAAQ;AAAA,EAAC,EAAEF,CAAC,GAAEqzC;AAAC;AAAC,SAASG,GAAE/yC,GAAEP,GAAE;AAAC,MAAgB,OAAO,WAApB,OAA2C,OAAO,SAApB,OAAqC,OAAO,WAAhB;AAAuB,UAAM,IAAI,MAAM,gJAAgJ;AAAE,QAAM,IAAE,SAAS,cAAc,KAAK,GAAEF,IAAEqzC,GAAC,EAAG,YAAW;AAAG,WAAQ,IAAE,GAAE,IAAErzC,EAAE,QAAO;AAAKC,IAAAA,GAAEQ,GAAET,EAAE,IAAG,GAAEE,CAAC;AAAE,SAAO,EAAE;AAAS;AAAC,SAASD,GAAEkzC,GAAEE,GAAEltC,GAAE9F,IAAE,MAAK;AAAC,MAAIizC,IAASjzC,MAAP,QAAUgzC,EAAE,WAAWhzC,CAAC;AAAE,QAAMR,IAAEG,EAAEqzC,CAAC,KAAGA,EAAE,gBAAgB,MAAM;AAAE,MAAI/yC,IAAE+yC;AAAE,MAAUhzC,MAAP,MAAS;AAAC,QAAIH,IAAEkzC,GAAEC,CAAC;AAAE,IAAAnzC,IAAE0K,EAAE1K,CAAC,KAAUG,MAAP,OAASI,GAAEJ,GAAEH,CAAC,IAAEA,GAAEI,IAAEJ;AAAA,EAAC;AAAC,QAAMqzC,IAAEvzC,EAAEM,CAAC,IAAEA,EAAE,YAAW,IAAG,CAAE,GAACH,IAAEgzC,EAAE,OAAO,IAAI7yC,EAAE,SAAS;AAAE,MAAIkzC;AAAE,EAAAA,IAAErzC,KAAYA,EAAE,cAAX,SAAqBA,EAAE,UAAUgzC,GAAE7yC,CAAC,IAAEA,EAAE,UAAU6yC,CAAC;AAAE,QAAK,EAAC,SAAQ5yC,GAAE,OAAM4E,EAAC,IAAEquC;AAAE,MAAG,CAACjzC;AAAE,WAAM;AAAG,QAAMmzC,IAAE,SAAS,uBAAwB;AAAC,WAAQjzC,IAAE,GAAEA,IAAE8yC,EAAE,QAAO9yC,KAAI;AAAC,UAAMP,IAAEqzC,EAAE9yC,IAAG2yC,IAAEnzC,GAAEkzC,GAAEjzC,GAAEwzC,GAAErzC,CAAC;AAAE,KAACizC,KAAGtzC,EAAEqzC,CAAC,KAAGD,KAAGC,EAAE,iBAAiBnzC,GAAEG,GAAE,MAAM,MAAIizC,IAAE;AAAA,EAAG;AAAC,MAAGA,KAAG,CAACzzC;AAAG,QAAGK,GAAEK,CAAC,KAAGA,EAAE,OAAOmzC,CAAC,GAAEvtC,EAAE,OAAO5F,CAAC,GAAE4E,GAAE;AAAC,YAAM1E,IAAE0E,EAAE,KAAK7E,GAAEC,CAAC;AAAE,MAAAE,KAAGF,EAAE,YAAYE,CAAC;AAAA,IAAC;AAAA;AAAO,IAAA0F,EAAE,OAAOutC,CAAC;AAAE,SAAOJ;AAAC;AAAC,MAAM/yC,KAAE,oBAAI,IAAI,CAAC,SAAQ,QAAQ,CAAC;AAAE,SAAS4E,GAAE1E,GAAEP,GAAEmzC,GAAE,GAAEzoC,IAAE,oBAAI,OAAIzK,GAAE;AAAC,MAAIqzC,IAAE,CAAA;AAAG,MAAGjzC,GAAE,IAAIE,EAAE,QAAQ;AAAE,WAAO+yC;AAAE,MAAIvzC,IAAE;AAAK,QAAM8zC,IAAE,SAAStzC,GAAEP,GAAE;AAAC,UAAK,EAAC,UAASizC,EAAC,IAAE1yC,GAAE4yC,IAAEnzC,EAAE,iBAAiB,IAAIizC,EAAE,YAAW,CAAE;AAAE,QAAInzC,IAAE;AAAK,QAAYqzC,MAAT;AAAW,iBAAUnzC,KAAKmzC,GAAE;AAAC,cAAMF,IAAEjzC,EAAEO,CAAC;AAAE,QAAO0yC,MAAP,SAAkBnzC,MAAP,SAAWA,EAAE,YAAU,MAAImzC,EAAE,YAAU,QAAMnzC,IAAEmzC;AAAA,MAAE;AAAC,WAAcnzC,MAAP,OAASA,EAAE,aAAW;AAAA,EAAI,EAAES,GAAEP,CAAC,GAAEM,IAAEuzC,IAAEA,EAAEtzC,CAAC,IAAE;AAAK,MAAIqzC,IAAE;AAAK,MAAUtzC,MAAP,MAAS;AAAC,IAAAszC,IAAEtzC,EAAE;AAAM,UAAMN,IAAEM,EAAE;AAAK,QAAGP,IAAE,MAAM,QAAQC,CAAC,IAAEA,EAAEA,EAAE,SAAO,KAAGA,GAASD,MAAP,MAAS;AAAC,iBAAS,CAAA,EAAEQ,CAAC,KAAImK;AAAE,YAAG3K,IAAEQ,EAAER,GAAEE,CAAC,GAAE,CAACF;AAAE;AAAM,MAAAA,KAAGuzC,EAAE,KAAK,GAAG,MAAM,QAAQtzC,CAAC,IAAEA,IAAE,CAACD,CAAC,CAAC;AAAA,IAAC;AAAC,IAAMO,EAAE,YAAR,QAAkBoK,EAAE,IAAInK,EAAE,UAASD,EAAE,QAAQ;AAAA,EAAC;AAAC,QAAMozC,IAAEnzC,EAAE;AAAW,MAAIkzC,IAAE,CAAE;AAAC,QAAMK,KAAS/zC,KAAN,QAAS,CAACkG,GAAElG,CAAC,OAAWA,KAAN,QAASI,GAAEJ,CAAC,KAAG;AAAG,WAAQQ,IAAE,GAAEA,IAAEmzC,EAAE,QAAOnzC;AAAI,IAAAkzC,EAAE,KAAK,GAAGxuC,GAAEyuC,EAAEnzC,IAAGP,GAAEmzC,GAAEW,GAAE,IAAI,IAAIppC,CAAC,GAAE3K,CAAC,CAAC;AAAE,SAAa6zC,KAAN,SAAUH,IAAEG,EAAEH,CAAC,IAAGR,GAAE1yC,CAAC,MAAIkzC,IAAED,GAAEjzC,GAAEkzC,GAAEK,IAAE,MAAI;AAAC,UAAMvzC,IAAE,IAAIZ;AAAE,WAAOwzC,EAAE,KAAK5yC,CAAC,GAAEA;AAAA,EAAC,IAAE8yC,EAAC,IAAStzC,KAAN,OAAQ0zC,EAAE,SAAO,IAAEH,IAAEA,EAAE,OAAOG,CAAC,IAAER,GAAE1yC,CAAC,KAAG,SAASA,GAAE;AAAC,WAASA,EAAE,eAAR,QAA2BA,EAAE,mBAAR,OAA8B,KAAUH,GAAEG,EAAE,WAAW,KAAGH,GAAEG,EAAE,eAAe;AAAA,EAAC,EAAEA,CAAC,MAAI+yC,IAAEA,EAAE,OAAOF,GAAC,CAAE,KAAGtzC,EAAEC,CAAC,KAAGA,EAAE,OAAO,GAAG0zC,CAAC,GAAEH;AAAC;AAAC,SAASE,GAAEjzC,GAAEP,GAAE,GAAE;AAAC,QAAMmzC,IAAE5yC,EAAE,MAAM,WAAUT,IAAE,CAAE;AAAC,MAAIozC,IAAE,CAAE;AAAC,WAAQ3yC,IAAE,GAAEA,IAAEP,EAAE,QAAOO,KAAI;AAAC,UAAMmK,IAAE1K,EAAEO;AAAG,QAAGJ,GAAEuK,CAAC;AAAE,MAAAyoC,KAAG,CAACzoC,EAAE,UAAW,KAAEA,EAAE,UAAUyoC,CAAC,GAAErzC,EAAE,KAAK4K,CAAC;AAAA,aAAUwoC,EAAE,KAAKxoC,CAAC,GAAEnK,MAAIP,EAAE,SAAO,KAAGO,IAAEP,EAAE,SAAO,KAAGG,GAAEH,EAAEO,IAAE,EAAE,GAAE;AAAC,YAAMA,IAAE;AAAI,MAAAA,EAAE,UAAU4yC,CAAC,GAAE5yC,EAAE,OAAO,GAAG2yC,CAAC,GAAEpzC,EAAE,KAAKS,CAAC,GAAE2yC,IAAE,CAAA;AAAA,IAAE;AAAA,EAAC;AAAC,SAAOpzC;AAAC;;;;;8CCE/7F0oD,KAAM,QAAQ,IAAI,aAAa,gBAAgBC,KAASC,IACjDyP,KAAyB3P,GAAI,wBAC7BqP,KAAwBrP,GAAI,uBCSnCx5C,KAAc,OAAO,SAAW,OAAe,OAAO,OAAO,WAAa,OAAe,OAAO,OAAO,SAAS,gBAAkB,KAUlIwE,KAAkB,CAAAqS,MAAgB7W,MAAe6W,KAAgB,QAAQ,aAAc,IAAG;AAWhG,SAASw0C,GAAgBvnD,GAAQM,IAAYC,KAAiB;AAC5D,MAAID,KAAa;AAEb,UAAM,MAAM,iCAAiC;AAKjD,SAAIY,EAAkBZ,CAAS,KAAKA,EAAU,iBAAiBA,EAAU,SAAQ,EAAG,WAAW,IACtF,KAEF+kD,GAAuBrlD,GAAQM,CAAS;AACjD;AAYA,SAASknD,GAAmBxnD,GAAQM,IAAYC,KAAiB;AAC/D,MAAID,KAAa;AAEb,UAAM,MAAM,iCAAiC;AAKjD,SAAIY,EAAkBZ,CAAS,KAAKA,EAAU,iBAAiBA,EAAU,SAAQ,EAAG,WAAW,IACtF,OAEF,KAAK,UAAUmnD,GAA+BznD,GAAQM,CAAS,CAAC;AACzE;AAUA,SAASonD,GAAgCC,GAAcrnD,GAAW;AAChE,QAAMO,IAAO8mD,EAAa,QAAQ,YAAY,KAAKA,EAAa,QAAQ,eAAe;AACvF,EAAI9mD,KAAQ,QACVP,EAAU,cAAcO,CAAI;AAEhC;AAWA,SAAS+mD,GAA+BD,GAAcrnD,GAAWN,GAAQ;AACvE,QAAM6nD,IAAgBF,EAAa,QAAQ,8BAA8B;AACzE,MAAIE;AACF,QAAI;AACF,YAAM/2D,IAAU,KAAK,MAAM+2D,CAAa;AACxC,UAAI/2D,EAAQ,cAAckP,EAAO,QAAQ,aAAa,MAAM,QAAQlP,EAAQ,KAAK,GAAG;AAClF,cAAM8d,IAAQk5C,GAAkCh3D,EAAQ,KAAK;AAC7D,eAAOi3D,GAAsB/nD,GAAQ4O,GAAOtO,CAAS;AAAA,MACtD;AAAA,IACF,QAAC;AAAA,IAED;AAEH,QAAM0nD,IAAaL,EAAa,QAAQ,WAAW;AACnD,MAAIK;AACF,QAAI;AAEF,YAAM7nD,IADS,IAAI,YACA,gBAAgB6nD,GAAY,WAAW,GACpDp5C,IAAQm2C,GAAsB/kD,GAAQG,CAAG;AAC/C,aAAO4nD,GAAsB/nD,GAAQ4O,GAAOtO,CAAS;AAAA,IACtD,QAAC;AAAA,IAED;AAMH,QAAMO,IAAO8mD,EAAa,QAAQ,YAAY,KAAKA,EAAa,QAAQ,eAAe;AACvF,MAAI9mD,KAAQ;AACV,QAAIK,EAAkBZ,CAAS,GAAG;AAChC,YAAMsoB,IAAQ/nB,EAAK,MAAM,YAAY;AACrC,MAAI+nB,EAAMA,EAAM,SAAS,OAAO,MAC9BA,EAAM,IAAG;AAEX,eAAShxB,IAAI,GAAGA,IAAIgxB,EAAM,QAAQhxB,KAAK;AACrC,cAAMkhC,IAAmBv4B;AACzB,YAAIW,EAAkB43B,CAAgB,GAAG;AACvC,gBAAM3P,IAAOP,EAAMhxB;AACnB,UAAIuxB,MAAS;AAAA,KAAQA,MAAS;AAAA,IAC5B2P,EAAiB,gBAAe,IACvB3P,MAAS,MAClB2P,EAAiB,YAAY,CAAC1O,GAAc,CAAE,CAAC,IAE/C0O,EAAiB,WAAW3P,CAAI;AAAA,QAEnC;AAAA,MACF;AAAA,IACP;AACM,MAAA7oB,EAAU,cAAcO,CAAI;AAGlC;AAYA,SAASknD,GAAsB/nD,GAAQ4O,GAAOtO,GAAW;AACvD,EAAKN,EAAO,gBAAgB1G,IAA0C;AAAA,IACpE,OAAAsV;AAAA,IACA,WAAAtO;AAAA,EACJ,CAAG,KACCA,EAAU,YAAYsO,CAAK;AAG/B;AACA,SAASwuB,GAAiBzlC,GAAM;AAC9B,QAAMmwB,IAAiBnwB,EAAK,cACtB+/B,IAAY//B,EAAK;AACvB,MAAImwB,EAAe,SAAS4P,EAAU,QAAO;AAEzC,UAAM,MAAM,qBAAqBA,EAAU,wCAAwC;AAGvF,MAAI70B,EAAelL,CAAI,GAAG;AACxB,UAAM0lC,IAAqBvV,EAAe;AAC1C,QAAI,CAAC,MAAM,QAAQuV,CAAkB;AAEjC,YAAM,MAAM,qBAAqB3F,EAAU,sEAAsE;AAAA,EAGtH;AACD,SAAO5P;AACT;AACA,SAASmgC,GAAmBjoD,GAAQM,GAAW0F,GAAakiD,IAAc,CAAA,GAAI;AAC5E,MAAIzC,IAAgBnlD,MAAc,OAAO0F,EAAY,WAAW1F,CAAS,IAAI;AAC7E,QAAMolD,IAAgB7iD,EAAemD,CAAW,KAAKA,EAAY,gBAAgB,MAAM;AACvF,MAAI5F,IAAS4F;AACb,MAAI1F,MAAc,MAAM;AACtB,QAAIqlD,IAAQnxC,GAAqBxO,CAAW;AAC5C,IAAA2/C,IAAQzjD,EAAYyjD,CAAK,KAAKrlD,MAAc,OAAO24C,GAA8B34C,GAAWqlD,CAAK,IAAIA,GACrGvlD,IAASulD;AAAA,EACV;AACD,QAAM/sD,IAAWiK,EAAezC,CAAM,IAAIA,EAAO,YAAa,IAAG,IAC3D0nB,IAAiBsV,GAAiBh9B,CAAM;AAQ9C,MAAI8B,EAAY9B,CAAM,GAAG;AACvB,UAAMS,IAAOT,EAAO;AAIpB,IAAIS,EAAK,SAAS,IAChBinB,EAAe,OAAOjnB,IAEtB4kD,IAAgB;AAAA,EAEnB;AACD,WAAS7tD,IAAI,GAAGA,IAAIgB,EAAS,QAAQhB,KAAK;AACxC,UAAMggC,IAAYh/B,EAAShB,IACrBkuD,IAAqBmC,GAAmBjoD,GAAQM,GAAWs3B,GAAW9P,EAAe,QAAQ;AACnG,IAAI,CAAC29B,KAAiB5iD,EAAemD,CAAW,KAAK8/C,KAAsB9/C,EAAY,iBAAiB4xB,GAAWt3B,GAAW,OAAO,MACnImlD,IAAgB;AAAA,EAEnB;AACD,MAAIA,KAAiB,CAACC;AACpB,IAAAwC,EAAY,KAAKpgC,CAAc;AAAA,WACtB,MAAM,QAAQA,EAAe,QAAQ;AAC9C,aAASlwB,IAAI,GAAGA,IAAIkwB,EAAe,SAAS,QAAQlwB,KAAK;AACvD,YAAM0lC,IAAsBxV,EAAe,SAASlwB;AACpD,MAAAswD,EAAY,KAAK5qB,CAAmB;AAAA,IACrC;AAEH,SAAOmoB;AACT;AAUA,SAASgC,GAA+BznD,GAAQM,GAAW;AACzD,QAAMsO,IAAQ,CAAA,GAER22C,IADOr8C,KACiB;AAC9B,WAAStR,IAAI,GAAGA,IAAI2tD,EAAiB,QAAQ3tD,KAAK;AAChD,UAAM0jD,IAAeiK,EAAiB3tD;AACtC,IAAAqwD,GAAmBjoD,GAAQM,GAAWg7C,GAAc1sC,CAAK;AAAA,EAC1D;AACD,SAAO;AAAA,IACL,WAAW5O,EAAO,QAAQ;AAAA,IAC1B,OAAA4O;AAAA,EACJ;AACA;AAUA,SAASk5C,GAAkCK,GAAiB;AAC1D,QAAMv5C,IAAQ,CAAA;AACd,WAAShX,IAAI,GAAGA,IAAIuwD,EAAgB,QAAQvwD,KAAK;AAC/C,UAAMkwB,IAAiBqgC,EAAgBvwD,IACjCD,IAAO6/B,GAAqB1P,CAAc;AAChD,IAAI5lB,EAAYvK,CAAI,KAClBuiD,GAAcviD,CAAI,GAEpBiX,EAAM,KAAKjX,CAAI;AAAA,EAChB;AACD,SAAOiX;AACT;AACA,MAAMw5C,KAAgB;AACtB,IAAIC,KAAwB;AAa5B,eAAeC,GAAgBtoD,GAAQF,GAAOqK,GAAM;AAClD,MAAIk+C,OAA0B;AAG5B,WAAO;AAET,MAAIvoD,MAAU;AACZ,WAAO,IAAI,QAAQ,CAAC2hD,GAASC,MAAW;AACtC,MAAA1hD,EAAO,OAAO,MAAM;AAClB,QAAAyhD,EAAQ8G,GAAsBvoD,GAAQF,GAAOqK,CAAI,CAAC;AAAA,MAC1D,CAAO;AAAA,IACP,CAAK;AAEH,QAAMzI,IAAc1B,EAAO,kBACrBwoD,IAAiBxoD,EAAO,WAAW,OAAO,OAAO,WAAWA,EAAO,QAAQ,UAC3ES,IAAeC,GAAgBV,EAAO,OAAO;AACnD,MAAI0B,MAAgB,QAAQjB,MAAiB;AAC3C,WAAO;AAET,QAAM3M,IAAU00D,EAAe,cAAc,MAAM;AACnD,EAAA10D,EAAQ,MAAM,UAAU,kCACxBA,EAAQ,OAAO00D,EAAe,eAAe,GAAG,CAAC,GACjD9mD,EAAY,OAAO5N,CAAO;AAC1B,QAAM65B,IAAQ,IAAI;AAClB,SAAAA,EAAM,SAAS75B,GAAS,CAAC,GACzB65B,EAAM,OAAO75B,GAAS,CAAC,GACvB2M,EAAa,gBAAe,GAC5BA,EAAa,SAASktB,CAAK,GACpB,IAAI,QAAQ,CAAC8zB,GAASC,MAAW;AACtC,UAAM+G,IAAiBzoD,EAAO,gBAAgBxE,IAAc,CAAAktD,OACtD/E,GAAkB+E,GAAa,cAAc,MAC/CD,KACIJ,OAA0B,SAC5B,OAAO,aAAaA,EAAqB,GACzCA,KAAwB,OAE1B5G,EAAQ8G,GAAsBvoD,GAAQ0oD,GAAav+C,CAAI,CAAC,IAGnD,KACN2zB,EAAyB;AAG5B,IAAAuqB,KAAwB,OAAO,WAAW,MAAM;AAC9C,MAAAI,KACAJ,KAAwB,MACxB5G,EAAQ,EAAK;AAAA,IACd,GAAE2G,EAAa,GAChBI,EAAe,YAAY,MAAM,GACjC10D,EAAQ,OAAM;AAAA,EAClB,CAAG;AACH;AAGA,SAASy0D,GAAsBvoD,GAAQF,GAAOqK,GAAM;AAClD,MAAIA,MAAS,QAAW;AACtB,UAAM1J,IAAeC,GAAgBV,EAAO,OAAO;AACnD,QAAI,CAACS;AACH,aAAO;AAET,UAAM8E,IAAY9E,EAAa,YACzBmF,IAAWnF,EAAa;AAC9B,QAAI8E,MAAc,QAAQK,MAAa,QAAQ,CAACD,GAAwB3F,GAAQuF,GAAWK,CAAQ;AACjG,aAAO;AAET,UAAMtF,IAAYC;AAClB,QAAID,MAAc;AAChB,aAAO;AAET,IAAA6J,IAAOw+C,GAA+BroD,CAAS;AAAA,EAChD;AACD,EAAAR,EAAM,eAAc;AACpB,QAAM8oD,IAAgB9oD,EAAM;AAC5B,SAAI8oD,MAAkB,OACb,MAETC,GAAgCD,GAAez+C,CAAI,GAC5C;AACT;AACA,MAAM2+C,KAAyB,CAAC,CAAC,aAAavB,EAAe,GAAG,CAAC,gCAAgCC,EAAkB,CAAC;AAUpH,SAASmB,GAA+BroD,IAAYC,KAAiB;AACnE,QAAMqoD,IAAgB;AAAA,IACpB,cAActoD,IAAYA,EAAU,eAAgB,IAAG;AAAA,EAC3D;AACE,MAAIA,GAAW;AACb,UAAMN,IAASoU;AACf,eAAW,CAAC20C,GAAUC,CAAS,KAAKF,IAAwB;AAC1D,YAAMnoB,IAAIqoB,EAAUhpD,GAAQM,CAAS;AACrC,MAAIqgC,MAAM,SACRioB,EAAcG,KAAYpoB;AAAA,IAE7B;AAAA,EACF;AACD,SAAOioB;AACT;AASA,SAASC,GAAgCD,GAAez+C,GAAM;AAC5D,aAAWpd,KAAKod,GAAM;AACpB,UAAMw2B,IAAIx2B,EAAKpd;AACf,IAAI4zC,MAAM,UACRioB,EAAc,QAAQ77D,GAAG4zC,CAAC;AAAA,EAE7B;AACH;;;;;;;;;;;;;;ACzZiiB,SAASI,GAAEZ,GAAE;AAAC,SAAOA,KAAGA,EAAE,cAAY,OAAO,UAAU,eAAe,KAAKA,GAAE,SAAS,IAAEA,EAAE,UAAQA;AAAC;AAAC,IAAIO,KAAEK,GAAG,SAASZ,GAAE;AAAC,QAAM,IAAE,IAAI;AAAgB,IAAE,OAAO,QAAOA,CAAC;AAAE,WAAQ,IAAE,GAAE,IAAE,UAAU,QAAO;AAAI,MAAE,OAAO,KAAI,UAAU,EAAE;AAAE,QAAM,MAAM,2BAA2BA,2CAA2C,iHAAiH;AAAC,CAAC;AAAG,MAAMQ,KAAe,OAAO,SAApB,OAAqC,OAAO,aAAhB,UAAmC,OAAO,SAAS,kBAAzB,QAAuCG,KAAE,CAAAX,MAAGQ,MAAGR,KAAG,QAAQ,aAAc,IAAC;AAAK,SAASiB,GAAE3zC,GAAEP,IAAE0K,KAAI;AAAC,SAAa1K,KAAN,QAASwzC,GAAE,GAAG,GAAE1zC,EAAEE,CAAC,KAAGA,EAAE,iBAAmBA,EAAE,SAAU,EAAC,WAAjB,IAAwB,KAAGizC,GAAE1yC,GAAEP,CAAC;AAAC;AAAC,SAAS8zC,GAAEb,GAAE,IAAEvoC,KAAI;AAAC,SAAa,KAAN,QAAS8oC,GAAE,GAAG,GAAE1zC,EAAE,CAAC,KAAG,EAAE,iBAAmB,EAAE,SAAU,EAAC,WAAjB,IAAwB,OAAK,KAAK,UAAU60C,GAAE1B,GAAE,CAAC,CAAC;AAAC;AAAC,SAASM,GAAEN,GAAE,GAAE;AAAC,QAAMjzC,IAAEizC,EAAE,QAAQ,YAAY,KAAGA,EAAE,QAAQ,eAAe;AAAE,EAAMjzC,KAAN,QAAS,EAAE,cAAcA,CAAC;AAAC;AAAC,SAAS2zC,GAAEV,GAAEjzC,GAAEmzC,GAAE;AAAC,QAAM,IAAEF,EAAE,QAAQ,8BAA8B;AAAE,MAAG;AAAE,QAAG;AAAC,YAAMA,IAAE,KAAK,MAAM,CAAC;AAAE,UAAGA,EAAE,cAAYE,EAAE,QAAQ,aAAW,MAAM,QAAQF,EAAE,KAAK;AAAG,eAAOS,GAAEP,GAAEY,GAAEd,EAAE,KAAK,GAAEjzC,CAAC;AAAA,IAAE,QAAC;AAAA,IAAU;AAAA,QAAMiG,IAAEgtC,EAAE,QAAQ,WAAW;AAAE,MAAGhtC;AAAE,QAAG;AAAC,YAAMgtC,IAAG,IAAI,YAAW,gBAAgBhtC,GAAE,WAAW;AAAE,aAAOytC,GAAEP,GAAE5yC,GAAE4yC,GAAEF,CAAC,GAAEjzC,CAAC;AAAA,IAAC,QAAC;AAAA,IAAQ;AAAE,QAAMI,IAAE6yC,EAAE,QAAQ,YAAY,KAAGA,EAAE,QAAQ,eAAe;AAAE,MAAS7yC,KAAN;AAAQ,QAAGN,EAAEE,CAAC,GAAE;AAAC,YAAMizC,IAAE7yC,EAAE,MAAM,YAAY;AAAE,MAAK6yC,EAAEA,EAAE,SAAO,OAAhB,MAAoBA,EAAE,IAAK;AAAC,eAAQ1yC,IAAE,GAAEA,IAAE0yC,EAAE,QAAO1yC,KAAI;AAAC,cAAMP,IAAE0K,EAAC;AAAG,YAAG5K,EAAEE,CAAC,GAAE;AAAC,gBAAMmzC,IAAEF,EAAE1yC;AAAG,UAAO4yC,MAAP;AAAA,KAAmBA,MAAT;AAAA,IAAWnzC,EAAE,gBAAe,IAAUmzC,MAAP,MAASnzC,EAAE,YAAY,CAACG,GAAC,CAAE,CAAC,IAAEH,EAAE,WAAWmzC,CAAC;AAAA,QAAC;AAAA,MAAC;AAAA,IAAC;AAAM,MAAAnzC,EAAE,cAAcI,CAAC;AAAC;AAAC,SAASszC,GAAET,GAAE,GAAEjzC,GAAE;AAAC,EAAAizC,EAAE,gBAAgBhtC,IAAE,EAAC,OAAM,GAAE,WAAUjG,EAAC,CAAC,KAAGA,EAAE,YAAY,CAAC;AAAC;AAAC,SAASs0C,GAAErB,GAAE,GAAEjzC,GAAE,IAAE,CAAE,GAAC;AAAC,MAAIF,IAAS,MAAP,QAAUE,EAAE,WAAW,CAAC;AAAE,QAAM0K,IAAErK,EAAEL,CAAC,KAAGA,EAAE,gBAAgB,MAAM;AAAE,MAAIG,IAAEH;AAAE,MAAU,MAAP,MAAS;AAAC,QAAIizC,IAAEhuC,GAAEjF,CAAC;AAAE,IAAAizC,IAAEI,EAAEJ,CAAC,KAAU,MAAP,OAASE,GAAE,GAAEF,CAAC,IAAEA,GAAE9yC,IAAE8yC;AAAA,EAAC;AAAC,QAAMhtC,IAAE5F,EAAEF,CAAC,IAAEA,EAAE,gBAAc,CAAA,GAAGC,IAAE,SAAS6yC,GAAE;AAAC,UAAM1yC,IAAE0yC,EAAE,cAAajzC,IAAEizC,EAAE;AAAY,QAAG1yC,EAAE,SAAOP,EAAE,QAAS,KAAEwzC,GAAE,IAAGxzC,EAAE,IAAI,GAAEK,EAAE4yC,CAAC,GAAE;AAAC,YAAMA,IAAE1yC,EAAE;AAAS,YAAM,QAAQ0yC,CAAC,KAAGO,GAAE,IAAGxzC,EAAE,IAAI;AAAA,IAAC;AAAC,WAAOO;AAAA,EAAC,EAAEJ,CAAC;AAAE,MAAGkzC,EAAElzC,CAAC,GAAE;AAAC,UAAM8yC,IAAE9yC,EAAE;AAAO,IAAA8yC,EAAE,SAAO,IAAE7yC,EAAE,OAAK6yC,IAAEnzC,IAAE;AAAA,EAAE;AAAC,WAAQqzC,IAAE,GAAEA,IAAEltC,EAAE,QAAOktC,KAAI;AAAC,UAAMD,IAAEjtC,EAAEktC,IAAGzoC,IAAE4pC,GAAErB,GAAE,GAAEC,GAAE9yC,EAAE,QAAQ;AAAE,KAACN,KAAGO,EAAEL,CAAC,KAAG0K,KAAG1K,EAAE,iBAAiBkzC,GAAE,GAAE,OAAO,MAAIpzC,IAAE;AAAA,EAAG;AAAC,MAAGA,KAAG,CAAC4K;AAAE,MAAE,KAAKtK,CAAC;AAAA,WAAU,MAAM,QAAQA,EAAE,QAAQ;AAAE,aAAQ6yC,IAAE,GAAEA,IAAE7yC,EAAE,SAAS,QAAO6yC,KAAI;AAAC,YAAM1yC,IAAEH,EAAE,SAAS6yC;AAAG,QAAE,KAAK1yC,CAAC;AAAA,IAAC;AAAC,SAAOT;AAAC;AAAC,SAAS60C,GAAE1B,GAAE,GAAE;AAAC,QAAMjzC,IAAE,IAAGmzC,IAAE/yC,GAAC,EAAG,YAAW;AAAG,WAAQ8yC,IAAE,GAAEA,IAAEC,EAAE,QAAOD;AAAK,IAAAoB,GAAErB,GAAE,GAAEE,EAAED,IAAGlzC,CAAC;AAAE,SAAM,EAAC,WAAUizC,EAAE,QAAQ,WAAU,OAAMjzC,EAAC;AAAC;AAAC,SAAS+zC,GAAEd,GAAE;AAAC,QAAM,IAAE,CAAA;AAAG,WAAQE,IAAE,GAAEA,IAAEF,EAAE,QAAOE,KAAI;AAAC,UAAM,IAAEF,EAAEE,IAAGrzC,IAAEszC,GAAE,CAAC;AAAEC,IAAAA,EAAEvzC,CAAC,KAAGE,GAAEF,CAAC,GAAE,EAAE,KAAKA,CAAC;AAAA,EAAC;AAAC,SAAO;AAAC;AAAC,IAAIs0C,KAAE;AAAK,eAAeJ,GAAEf,GAAE,GAAEjzC,GAAE;AAAC,MAAUo0C,OAAP;AAAS,WAAM;AAAG,MAAU,MAAP;AAAS,WAAO,IAAI,QAAS,CAACjB,GAAED,MAAI;AAAC,MAAAD,EAAE,OAAQ,MAAI;AAAC,QAAAE,EAAE7yC,GAAE2yC,GAAE,GAAEjzC,CAAC,CAAC;AAAA,MAAC,CAAC;AAAA,IAAE,CAAG;AAAC,QAAMmzC,IAAEF,EAAE,kBAAiBnzC,IAAQmzC,EAAE,WAAR,OAAgB,OAAO,WAASA,EAAE,QAAQ,UAASvoC,IAAEkpC,GAAEX,EAAE,OAAO;AAAE,MAAUE,MAAP,QAAiBzoC,MAAP;AAAS,WAAM;AAAG,QAAMvK,IAAEL,EAAE,cAAc,MAAM;AAAE,EAAAK,EAAE,MAAM,UAAQ,kCAAiCA,EAAE,OAAOL,EAAE,eAAe,GAAG,CAAC,GAAEqzC,EAAE,OAAOhzC,CAAC;AAAE,QAAM8F,IAAE,IAAI;AAAM,SAAOA,EAAE,SAAS9F,GAAE,CAAC,GAAE8F,EAAE,OAAO9F,GAAE,CAAC,GAAEuK,EAAE,gBAAe,GAAGA,EAAE,SAASzE,CAAC,GAAE,IAAI,QAAS,CAAC1F,GAAE4yC,MAAI;AAAC,UAAMzoC,IAAEuoC,EAAE,gBAAgBtzC,IAAG,CAAAwzC,OAAID,GAAEC,GAAE,cAAc,MAAIzoC,EAAC,GAAU0pC,OAAP,SAAW,OAAO,aAAaA,EAAC,GAAEA,KAAE,OAAM7zC,EAAED,GAAE2yC,GAAEE,GAAEnzC,CAAC,CAAC,IAAG,KAAKC,EAAC;AAAE,IAAAm0C,KAAE,OAAO,WAAY,MAAI;AAAC,MAAA1pC,KAAI0pC,KAAE,MAAK7zC,EAAE,EAAE;AAAA,IAAC,GAAG,EAAE,GAAET,EAAE,YAAY,MAAM,GAAEK,EAAE,OAAM;AAAA,EAAE,CAAC;AAAE;AAAC,SAASG,GAAE2yC,GAAE,GAAEjzC,GAAE;AAAC,MAAYA,MAAT,QAAW;AAAC,UAAMO,IAAEqzC,GAAEX,EAAE,OAAO;AAAE,QAAG,CAAC1yC;AAAE,aAAM;AAAG,UAAM4yC,IAAE5yC,EAAE,YAAW2yC,IAAE3yC,EAAE;AAAU,QAAU4yC,MAAP,QAAiBD,MAAP,QAAU,CAACnzC,GAAEkzC,GAAEE,GAAED,CAAC;AAAE,aAAM;AAAG,UAAM,IAAExoC;AAAI,QAAU,MAAP;AAAS,aAAM;AAAG,IAAA1K,IAAEu0C,GAAE,CAAC;AAAA,EAAC;AAAC,IAAE,eAAgB;AAAC,QAAMpB,IAAE,EAAE;AAAc,SAAcA,MAAP,SAAWc,GAAEd,GAAEnzC,CAAC,GAAE;AAAG;AAAC,MAAM80C,KAAE,CAAC,CAAC,aAAYZ,EAAC,GAAE,CAAC,gCAA+BJ,EAAC,CAAC;AAAE,SAASS,GAAEtB,IAAEvoC,EAAC,GAAG;AAAC,QAAM,IAAE,EAAC,cAAauoC,IAAEA,EAAE,mBAAiB,GAAE;AAAE,MAAGA,GAAE;AAAC,UAAMjzC,IAAEszC,GAAG;AAAC,eAAS,CAACH,GAAED,CAAC,KAAI4B,IAAE;AAAC,YAAMh1C,IAAEozC,EAAElzC,GAAEizC,CAAC;AAAE,MAAOnzC,MAAP,SAAW,EAAEqzC,KAAGrzC;AAAA,IAAE;AAAA,EAAC;AAAC,SAAO;AAAC;AAAC,SAASm0C,GAAEhB,GAAE,GAAE;AAAC,aAAUjzC,KAAK,GAAE;AAAC,UAAMmzC,IAAE,EAAEnzC;AAAG,IAASmzC,MAAT,UAAYF,EAAE,QAAQjzC,GAAEmzC,CAAC;AAAA,EAAC;AAAC;;;;;;;;;;;;;8CCE5qIqV,KAAM,QAAQ,IAAI,aAAa,gBAAgBC,KAASC,IAIjD2R,KAAkB7R,GAAI,iBAEtBgS,KAAkChS,GAAI,iCCK7Cx5C,KAAc,OAAO,SAAW,OAAe,OAAO,OAAO,WAAa,OAAe,OAAO,OAAO,SAAS,gBAAkB,KAUlIC,KAAeD,MAAe,kBAAkB,WAAW,SAAS,eAAe,MACnFI,KAAuBJ,MAAe,gBAAgB,UAAU,CAACC,KAAe,qBAAqB,IAAI,OAAO,WAAW,OAAO,IAAI,IACtII,KAAYL,MAAe,0BAA0B,KAAK,UAAU,SAAS,GAC7EM,KAASN,MAAe,mBAAmB,KAAK,UAAU,SAAS,KAAK,CAAC,OAAO,UAIhFQ,KAAYR,MAAe,mBAAmB,KAAK,UAAU,SAAS,GACtEU,KAAkBV,MAAe,sBAAsB,KAAK,UAAU,SAAS,KAAK,CAACQ;AAU3F,SAASusD,GAAmBnpD,GAAOE,GAAQ;AACzC,EAAAA,EAAO,OAAO,MAAM;AAClB,QAAIF,MAAU,MAAM;AAClB,YAAM8oD,IAAgBjF,GAAkB7jD,GAAO,aAAa,IAAI,OAAOA,EAAM,eACvEQ,IAAYC;AAClB,UAAID,MAAc,QAAQsoD,KAAiB,MAAM;AAC/C,QAAA9oD,EAAM,eAAc;AACpB,cAAMkoD,IAAaT,GAAgBvnD,CAAM;AACzC,QAAIgoD,MAAe,QACjBY,EAAc,QAAQ,aAAaZ,CAAU,GAE/CY,EAAc,QAAQ,cAActoD,EAAU,eAAgB,CAAA;AAAA,MAC/D;AAAA,IACF;AAAA,EACL,CAAG;AACH;AACA,SAAS4oD,GAAoBppD,GAAOE,GAAQ;AAC1C,EAAAF,EAAM,eAAc,GACpBE,EAAO,OAAO,MAAM;AAClB,UAAMM,IAAYC,KACZ;AAAA,MACJ,eAAAqoD;AAAA,IACD,IAAG9oD;AACJ,IAAI8oD,KAAiB,QAAQ1nD,EAAkBZ,CAAS,KACtDonD,GAAgCkB,GAAetoD,CAAS;AAAA,EAE9D,GAAK;AAAA,IACD,KAAK;AAAA,EACT,CAAG;AACH;AACA,SAAS6oD,GAAkBrpD,GAAOE,GAAQ;AACxC,EAAAipD,GAAmBnpD,GAAOE,CAAM,GAChCA,EAAO,OAAO,MAAM;AAClB,UAAMM,IAAYC;AAClB,IAAIW,EAAkBZ,CAAS,KAC7BA,EAAU,WAAU;AAAA,EAE1B,CAAG;AACH;AACA,SAAS8oD,GAAkBppD,GAAQ;AAoKjC,SAnKuBw9C,GAAcx9C,EAAO,gBAAgBxG,IAA0B,CAAAwV,MAAc;AAClG,UAAM1O,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhCA,EAAU,gBAAgB0O,CAAU,GAC7B,MAHE;AAAA,EAIV,GAAE0uB,CAAuB,GAAG19B,EAAO,gBAAgBlG,IAAqB,CAAAkV,MAAc;AACrF,UAAM1O,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhCA,EAAU,WAAW0O,CAAU,GACxB,MAHE;AAAA,EAIV,GAAE0uB,CAAuB,GAAG19B,EAAO,gBAAgBjG,IAAqB,CAAAiV,MAAc;AACrF,UAAM1O,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhCA,EAAU,WAAW0O,CAAU,GACxB,MAHE;AAAA,EAIV,GAAE0uB,CAAuB,GAAG19B,EAAO,gBAAgBrG,IAAmC,CAAA0vD,MAAe;AACpG,UAAM/oD,IAAYC;AAClB,QAAI,CAACW,EAAkBZ,CAAS;AAC9B,aAAO;AAET,QAAI,OAAO+oD,KAAgB;AACzB,MAAA/oD,EAAU,WAAW+oD,CAAW;AAAA,SAC3B;AACL,YAAM1B,IAAe0B,EAAY;AACjC,UAAI1B,KAAgB;AAClB,QAAAD,GAAgCC,GAAcrnD,CAAS;AAAA,WAClD;AACL,cAAM6J,IAAOk/C,EAAY;AACzB,QAAIl/C,KACF7J,EAAU,WAAW6J,CAAI;AAAA,MAE5B;AAAA,IACF;AACD,WAAO;AAAA,EACR,GAAEuzB,CAAuB,GAAG19B,EAAO,gBAAgBnG,IAAqB,MAAM;AAC7E,UAAMyG,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhCA,EAAU,WAAU,GACb,MAHE;AAAA,EAIV,GAAEo9B,CAAuB,GAAG19B,EAAO,gBAAgBvG,IAA2B,CAAA+2B,MAAe;AAC5F,UAAMlwB,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhCA,EAAU,gBAAgBkwB,CAAW,GAC9B,MAHE;AAAA,EAIV,GAAEkN,CAAuB,GAAG19B,EAAO,gBAAgBtG,IAA0B,MAAM;AAClF,UAAM4G,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhCA,EAAU,gBAAe,GAClB,MAHE;AAAA,EAIV,GAAEo9B,CAAuB,GAAG19B,EAAO,gBAAgB1F,IAAwB,CAAAxJ,MAAW;AACrF,UAAMwP,IAAYC;AAClB,QAAI,CAACW,EAAkBZ,CAAS;AAC9B,aAAO;AAET,UAAMR,IAAQhP,GACRkrD,IAAiBl8C,EAAM;AAC7B,WAAIg8C,GAAyCx7C,GAAW,EAAI,KAC1DR,EAAM,eAAc,GACpBo8C,GAAe57C,GAAW07C,GAAgB,EAAI,GACvC,MAEF;AAAA,EACR,GAAEte,CAAuB,GAAG19B,EAAO,gBAAgB5F,IAAyB,CAAAtJ,MAAW;AACtF,UAAMwP,IAAYC;AAClB,QAAI,CAACW,EAAkBZ,CAAS;AAC9B,aAAO;AAET,UAAMR,IAAQhP,GACRkrD,IAAiBl8C,EAAM;AAC7B,WAAIg8C,GAAyCx7C,GAAW,EAAK,KAC3DR,EAAM,eAAc,GACpBo8C,GAAe57C,GAAW07C,GAAgB,EAAK,GACxC,MAEF;AAAA,EACR,GAAEte,CAAuB,GAAG19B,EAAO,gBAAgBpF,IAAuB,CAAAkF,MAAS;AAClF,UAAMQ,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhCR,EAAM,eAAc,GACbE,EAAO,gBAAgBxG,IAA0B,EAAI,KAHnD;AAAA,EAIV,GAAEkkC,CAAuB,GAAG19B,EAAO,gBAAgBlF,IAAoB,CAAAgF,MAAS;AAC/E,UAAMQ,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhCR,EAAM,eAAc,GACbE,EAAO,gBAAgBxG,IAA0B,EAAK,KAHpD;AAAA,EAIV,GAAEkkC,CAAuB,GAAG19B,EAAO,gBAAgBtF,IAAmB,CAAAoF,MAAS;AAC9E,UAAMQ,IAAYC;AAClB,QAAI,CAACW,EAAkBZ,CAAS;AAC9B,aAAO;AAET,QAAIR,MAAU,MAAM;AAQlB,WAAKtD,MAAUD,MAAaK,OAAoBN;AAC9C,eAAO;AAET,MAAAwD,EAAM,eAAc;AAAA,IACrB;AACD,WAAOE,EAAO,gBAAgBvG,IAA2B,EAAK;AAAA,EAC/D,GAAEikC,CAAuB,GAAG19B,EAAO,gBAAgBtE,IAAoB,OACtEgS,MACO,KACNgwB,CAAuB,GAAG19B,EAAO,gBAAgBxE,IAAc,CAAAsE,MAAS;AACzE,UAAMQ,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhC2oD,GAAmBnpD,GAAOE,CAAM,GACzB,MAHE;AAAA,EAIV,GAAE09B,CAAuB,GAAG19B,EAAO,gBAAgBvE,IAAa,CAAAqE,MAAS;AACxE,UAAMQ,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhC6oD,GAAkBrpD,GAAOE,CAAM,GACxB,MAHE;AAAA,EAIV,GAAE09B,CAAuB,GAAG19B,EAAO,gBAAgBpG,IAAe,CAAAkG,MAAS;AAC1E,UAAMQ,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAGhC4oD,GAAoBppD,GAAOE,CAAM,GAC1B,MAHE;AAAA,EAIV,GAAE09B,CAAuB,GAAG19B,EAAO,gBAAgB7E,IAAc,CAAA2E,MAAS;AACzE,UAAMQ,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAKhCR,EAAM,eAAc,GACb,MALE;AAAA,EAMV,GAAE49B,CAAuB,GAAG19B,EAAO,gBAAgB3E,IAAmB,CAAAyE,MAAS;AAC9E,UAAMQ,IAAYC;AAClB,WAAKW,EAAkBZ,CAAS,KAKhCR,EAAM,eAAc,GACb,MALE;AAAA,EAMb,GAAK49B,CAAuB,CAAC;AAE7B;;;;8CCrP2zB2D,KAAe,OAAO,SAApB,OAAqC,OAAO,aAAhB,UAAmC,OAAO,SAAS,kBAAzB,QAAuCI,KAAEJ,MAAG,kBAAiB,WAAS,SAAS,eAAa,MAAKH,KAAE,EAAE,CAACG,MAAG,EAAE,gBAAe,WAASI,OAAI,qBAAoB,IAAI,OAAO,WAAW,OAAO,GAAEb,KAAES,MAAG,0BAA0B,KAAK,UAAU,SAAS,GAAEt0C,KAAEs0C,MAAG,mBAAmB,KAAK,UAAU,SAAS,KAAG,CAAC,OAAO,UAASO,KAAEP,MAAG,mBAAmB,KAAK,UAAU,SAAS,GAAEE,KAAEF,MAAG,sBAAsB,KAAK,UAAU,SAAS,KAAG,CAACO;AAAE,SAASF,GAAEj0C,GAAEP,GAAE;AAAC,EAAAA,EAAE,OAAQ,MAAI;AAAC,QAAUO,MAAP,MAAS;AAAC,YAAM2yC,IAAExoC,GAAEnK,GAAE,aAAa,IAAE,OAAKA,EAAE,eAAc4yC,IAAEltC;AAAI,UAAUktC,MAAP,QAAgBD,KAAN,MAAQ;AAAC,QAAA3yC,EAAE,eAAc;AAAG,cAAMmK,IAAEuoC,GAAEjzC,CAAC;AAAE,QAAO0K,MAAP,QAAUwoC,EAAE,QAAQ,aAAYxoC,CAAC,GAAEwoC,EAAE,QAAQ,cAAaC,EAAE,eAAgB,CAAA;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC,CAAC;AAAE;AAAC,SAASwB,GAAE1B,GAAE;AAAC,SAAOE,GAAEF,EAAE,gBAAgB7yC,IAAG,OAAG;AAAC,UAAM,IAAE6F,EAAC;AAAG,WAAM,CAAC,CAACmtC,EAAE,CAAC,MAAI,EAAE,gBAAgB,CAAC,GAAE;AAAA,EAAG,GAAGrzC,CAAC,GAAEkzC,EAAE,gBAAgBI,IAAG,OAAG;AAAC,UAAM,IAAEptC;AAAI,WAAM,CAAC,CAACmtC,EAAE,CAAC,MAAI,EAAE,WAAW,CAAC,GAAE;AAAA,EAAG,GAAGrzC,CAAC,GAAEkzC,EAAE,gBAAgB9yC,IAAG,OAAG;AAAC,UAAM,IAAE8F,EAAG;AAAC,WAAM,CAAC,CAACmtC,EAAE,CAAC,MAAI,EAAE,WAAW,CAAC,GAAE;AAAA,EAAG,GAAGrzC,CAAC,GAAEkzC,EAAE,gBAAgBnzC,IAAG,CAAAmzC,MAAG;AAAC,UAAMjzC,IAAEiG,EAAC;AAAG,QAAG,CAACmtC,EAAEpzC,CAAC;AAAE,aAAM;AAAG,QAAa,OAAOizC,KAAjB;AAAmB,MAAAjzC,EAAE,WAAWizC,CAAC;AAAA,SAAM;AAAC,YAAM,IAAEA,EAAE;AAAa,UAAS,KAAN;AAAQ1yC,QAAAA,GAAE,GAAEP,CAAC;AAAA,WAAM;AAAC,cAAMO,IAAE0yC,EAAE;AAAK,QAAA1yC,KAAGP,EAAE,WAAWO,CAAC;AAAA,MAAC;AAAA,IAAC;AAAC,WAAM;AAAA,EAAE,GAAGR,CAAC,GAAEkzC,EAAE,gBAAgBtzC,IAAG,MAAI;AAAC,UAAM,IAAEsG,EAAG;AAAC,WAAM,CAAC,CAACmtC,EAAE,CAAC,MAAI,EAAE,cAAa;AAAA,EAAG,GAAGrzC,CAAC,GAAEkzC,EAAE,gBAAgB5yC,IAAG,OAAG;AAAC,UAAM,IAAE4F,EAAC;AAAG,WAAM,CAAC,CAACmtC,EAAE,CAAC,MAAI,EAAE,gBAAgB,CAAC,GAAE;AAAA,EAAG,GAAGrzC,CAAC,GAAEkzC,EAAE,gBAAgBhzC,IAAG,MAAI;AAAC,UAAM,IAAEgG,EAAC;AAAG,WAAM,CAAC,CAACmtC,EAAE,CAAC,MAAI,EAAE,gBAAiB,GAAC;AAAA,EAAG,GAAGrzC,CAAC,GAAEkzC,EAAE,gBAAgBW,IAAG,OAAG;AAAC,UAAM,IAAE3tC,EAAC;AAAG,QAAG,CAACmtC,EAAE,CAAC;AAAE,aAAM;AAAG,UAAMD,IAAE,GAAEzoC,IAAEyoC,EAAE;AAAS,WAAM,CAAC,CAACnzC,GAAE,GAAE,EAAE,MAAImzC,EAAE,eAAc,GAAGD,GAAE,GAAExoC,GAAE,EAAE,GAAE;AAAA,EAAG,GAAG3K,CAAC,GAAEkzC,EAAE,gBAAgBQ,IAAG,OAAG;AAAC,UAAM,IAAExtC;AAAI,QAAG,CAACmtC,EAAE,CAAC;AAAE,aAAM;AAAG,UAAMD,IAAE,GAAEzoC,IAAEyoC,EAAE;AAAS,WAAM,CAAC,CAACnzC,GAAE,GAAE,EAAE,MAAImzC,EAAE,eAAgB,GAACD,GAAE,GAAExoC,GAAE,EAAE,GAAE;AAAA,EAAG,GAAG3K,CAAC,GAAEkzC,EAAE,gBAAgBY,IAAG,OAAG;AAAC,UAAM7zC,IAAEiG,EAAG;AAAC,WAAM,CAAC,CAACmtC,EAAEpzC,CAAC,MAAI,EAAE,eAAgB,GAACizC,EAAE,gBAAgB7yC,IAAE,EAAE;AAAA,EAAE,GAAGL,CAAC,GAAEkzC,EAAE,gBAAgBiB,IAAG,OAAG;AAAC,UAAMl0C,IAAEiG;AAAI,WAAM,CAAC,CAACmtC,EAAEpzC,CAAC,MAAI,EAAE,eAAgB,GAACizC,EAAE,gBAAgB7yC,IAAE,EAAE;AAAA,EAAE,GAAGL,CAAC,GAAEkzC,EAAE,gBAAgBhuC,IAAG,OAAG;AAAC,UAAMjF,IAAEiG,EAAC;AAAG,QAAG,CAACmtC,EAAEpzC,CAAC;AAAE,aAAM;AAAG,QAAU,MAAP,MAAS;AAAC,WAAIH,MAAG6zC,MAAGW,OAAIL;AAAE,eAAM;AAAG,QAAE;IAAgB;AAAC,WAAOf,EAAE,gBAAgB5yC,IAAE,EAAE;AAAA,EAAC,GAAGN,CAAC,GAAEkzC,EAAE,gBAAgBK,IAAG,OAAKK,GAAG,GAAC,KAAK5zC,CAAC,GAAEkzC,EAAE,gBAAgB3yC,IAAG,OAAG;AAAC,UAAMN,IAAEiG,EAAG;AAAC,WAAM,CAAC,CAACmtC,EAAEpzC,CAAC,MAAIw0C,GAAE,GAAEvB,CAAC,GAAE;AAAA,EAAG,GAAGlzC,CAAC,GAAEkzC,EAAE,gBAAgBO,IAAG,OAAG;AAAC,UAAMxzC,IAAEiG,EAAC;AAAG,WAAM,CAAC,CAACmtC,EAAEpzC,CAAC,MAAI,SAASO,GAAE0yC,GAAE;AAAC,MAAAuB,GAAEj0C,GAAE0yC,CAAC,GAAEA,EAAE,OAAQ,MAAI;AAAC,cAAM1yC,IAAE0F,EAAC;AAAGmtC,QAAAA,EAAE7yC,CAAC,KAAGA,EAAE,WAAY;AAAA,MAAA,CAAG;AAAA,IAAA,EAAE,GAAE0yC,CAAC,GAAE;AAAA,EAAG,GAAGlzC,CAAC,GAAEkzC,EAAE,gBAAgBqB,IAAG,CAAAt0C,MAAG;AAAC,UAAMkzC,IAAEjtC,EAAG;AAAC,WAAM,CAAC,CAACmtC,EAAEF,CAAC,MAAI,SAASD,GAAEjzC,GAAE;AAAC,MAAAizC,EAAE,eAAgB,GAACjzC,EAAE,OAAQ,MAAI;AAAC,cAAMA,IAAEiG,EAAC,GAAG,EAAC,eAAcitC,EAAC,IAAED;AAAE,QAAMC,KAAN,QAASE,EAAEpzC,CAAC,KAAGO,GAAE2yC,GAAElzC,CAAC;AAAA,MAAC,GAAG,EAAC,KAAI,QAAO,CAAC;AAAA,IAAC,EAAEA,GAAEizC,CAAC,GAAE;AAAA,EAAG,GAAGlzC,CAAC,GAAEkzC,EAAE,gBAAgBc,IAAG,OAAG;AAAC,UAAM,IAAE9tC,EAAC;AAAG,WAAM,CAAC,CAACmtC,EAAE,CAAC,MAAI,EAAE,eAAgB,GAAC;AAAA,EAAG,GAAGrzC,CAAC,GAAEkzC,EAAE,gBAAgB2B,IAAG,OAAG;AAAC,UAAM,IAAE3uC,EAAC;AAAG,WAAM,CAAC,CAACmtC,EAAE,CAAC,MAAI,EAAE,eAAgB,GAAC;AAAA,EAAG,GAAGrzC,CAAC,CAAC;AAAC;;;;8CCEx2GyoD,KAAM,QAAQ,IAAI,aAAa,gBAAgBC,KAASC,IACjDwT,KAAoB1T,GAAI,mBCH0iBnoD,KAAe,OAAO,SAApB,OAAqC,OAAO,aAAhB,UAAmC,OAAO,SAAS,kBAAzB,SAAuCL,KAAE0K;AAAE,SAASqpC,GAAEd,GAAE;AAAC,SAAOA,EAAE,eAAc,EAAG,KAAKC,GAAED,EAAE,YAAW,CAAE,CAAC;AAAC;AAAC,SAASK,GAAE,EAAC,iBAAgB/yC,GAAE,aAAY2yC,IAAE,MAAK,eAAclzC,EAAC,GAAE;AAAC,QAAK,CAAC+zC,CAAC,IAAEd,GAAG,GAACK,IAAE,SAASL,GAAE1yC,GAAE;AAAC,UAAK,CAAC2yC,GAAEC,CAAC,IAAEhzC,GAAG,MAAI8yC,EAAE,cAAe,CAAA;AAAG,WAAO5yC,GAAG,MAAI4yC,EAAE,0BAA2B,CAAAA,MAAG;AAACG,MAAAA,GAAG,MAAI;AAAC,QAAAD,EAAEF,CAAC;AAAA,MAAC,CAAC;AAAA,IAAE,CAAC,GAAI,CAACA,CAAC,CAAC,GAAEvoC,GAAG,MAAI;AAAC,MAAAyoC,EAAEF,EAAE,cAAa,CAAE;AAAA,IAAC,GAAG,CAACA,CAAC,CAAC,GAAEnzC,GAAG,MAAI;AAAC,YAAMqzC,IAAE,CAAE,GAACnzC,IAAE,OAAO,KAAKkzC,CAAC;AAAE,eAAQxoC,IAAE,GAAEA,IAAE1K,EAAE,QAAO0K,KAAI;AAAC,cAAMvK,IAAEH,EAAE0K,IAAG5K,IAAEmG,GAAC,QAAA,IAAC1F,GAAE,EAAC,SAAQ,CAAAA,MAAG0yC,EAAE,SAAS1yC,CAAC,GAAE,UAAS0F,GAAC,QAAA,IAAC7F,IAAE,EAAC,UAAS,MAAK,UAAS8yC,EAAE/yC,GAAE,CAAC,EAAC,CAAC,GAAEizC,IAAEH,EAAE,gBAAgB9yC,CAAC;AAAE,QAAOizC,MAAP,QAAUD,EAAE,KAAKpzC,GAAED,GAAEszC,GAAEjzC,CAAC,CAAC;AAAA,MAAC;AAAC,aAAOgzC;AAAA,IAAC,GAAG,CAAC5yC,GAAE2yC,GAAED,CAAC,CAAC;AAAA,EAAC,EAAEc,GAAE/zC,CAAC;AAAE,SAAO,SAASizC,GAAE;AAAC5yC,IAAAA,GAAG,MAAI8yC,GAAEluC,GAAEguC,CAAC,GAAEhzC,GAAEgzC,CAAC,CAAC,GAAG,CAACA,CAAC,CAAC;AAAA,EAAC,EAAEc,CAAC,GAAEV,GAAAA,QAAAA,KAAE1zC,GAAAA,QAAAA,UAAE,EAAC,UAAS,CAACY,GAAE0F,GAAC,QAAA,IAAC4tC,IAAE,EAAC,SAAQX,EAAC,CAAC,GAAEI,CAAC,EAAC,CAAC;AAAC;AAAC,SAASO,GAAE,EAAC,SAAQX,EAAC,GAAE;AAAC,QAAK,CAAClzC,CAAC,IAAEizC,GAAC,GAAGvoC,IAAE,SAASuoC,GAAE;AAAC,UAAK,CAAC1yC,GAAE2yC,CAAC,IAAE/yC,GAAG,MAAI4zC,GAAEd,CAAC;AAAI,WAAO5yC,GAAG,MAAI;AAAC,eAASE,IAAG;AAAC,cAAMA,IAAEwzC,GAAEd,CAAC;AAAE,QAAAC,EAAE3yC,CAAC;AAAA,MAAC;AAAC,aAAOA,EAAC,GAAG4yC,GAAEF,EAAE,uBAAwB,MAAI;AAAC,QAAA1yC,EAAG;AAAA,MAAA,CAAG,GAAC0yC,EAAE,yBAA0B,MAAI;AAAC,QAAA1yC,EAAG;AAAA,MAAA,CAAG,CAAA;AAAA,IAAC,GAAG,CAAC0yC,CAAC,CAAC,GAAE1yC;AAAA,EAAC,EAAEP,CAAC,GAAEF,IAAES,GAAG;AAAC,SAAOmK,IAAc,OAAOwoC,KAAnB,aAAqBA,EAAEpzC,CAAC,IAAEozC,IAAE;AAAI;ACAzsC,MAAMnzC,KAAe,OAAO,SAApB,OAAqC,OAAO,aAAhB,UAAmC,OAAO,SAAS,kBAAzB,SAAuCkzC,KAAEvoC;AAAE,SAAS/K,GAAE,EAAC,QAAOY,GAAE,sBAAqB0yC,GAAE,kBAAiBvoC,GAAE,cAAatK,GAAE,iBAAgBizC,GAAE,cAAalzC,GAAE,WAAU8F,GAAE,gBAAemtC,GAAE,eAAczzC,GAAE,UAASW,GAAE,cAAaL,GAAE,gBAAegF,GAAE,WAAU8uC,GAAE,IAAGN,GAAE,MAAKI,IAAE,WAAU,YAAWL,IAAE,IAAG,OAAMI,GAAE,UAASN,GAAE,eAAca,MAAK9zC,EAAC,GAAE6zC,GAAE;AAAC,QAAK,CAACS,GAAE90C,CAAC,IAAEqzC,GAAE3yC,EAAE,WAAY,CAAA,GAAEL,IAAEF,GAAG,CAAAizC,MAAG;AAAC,IAAAA,KAAGA,EAAE,iBAAeA,EAAE,cAAc,cAAY1yC,EAAE,eAAe0yC,CAAC,IAAE1yC,EAAE,eAAe,IAAI;AAAA,EAAC,GAAG,CAACA,CAAC,CAAC,GAAEk0C,IAAEtB,GAAG,MAAI,YAAY5yC,GAAE;AAAC,WAAO,CAAA0yC,MAAG;AAAC,MAAA1yC,EAAE,QAAS,CAAAA,MAAG;AAAC,QAAY,OAAOA,KAAnB,aAAqBA,EAAE0yC,CAAC,IAAQ1yC,KAAN,SAAUA,EAAE,UAAQ0yC;AAAA,MAAE,CAAG;AAAA,IAAA;AAAA,EAAC,EAAEiB,GAAEh0C,CAAC,GAAG,CAACA,GAAEg0C,CAAC,CAAC;AAAE,SAAOn0C,GAAG,OAAKF,EAAEU,EAAE,WAAY,CAAA,GAAEA,EAAE,yBAA0B,CAAAA,MAAG;AAAC,IAAAV,EAAEU,CAAC;AAAA,EAAC,CAAC,IAAK,CAACA,CAAC,CAAC,GAAET,GAAC,QAAA,IAAC,OAAM,EAAC,GAAGO,GAAE,yBAAwBs0C,IAAE1B,IAAE,QAAO,qBAAoB0B,IAAEjqC,IAAE,QAAO,iBAAgBiqC,IAAEv0C,IAAE,QAAO,oBAAmBizC,GAAE,iBAAgBsB,KAAgBd,MAAb,aAAe,CAAC,CAAC1zC,IAAE,QAAO,cAAa8F,GAAE,mBAAkBmtC,GAAE,kBAAiBzzC,GAAE,aAAYg1C,IAAEr0C,IAAE,QAAO,iBAAgB,CAACq0C,KAAG,QAAO,iBAAgB10C,GAAE,gBAAegF,GAAE,WAAU8uC,GAAE,iBAAgBY,GAAE,eAAcR,GAAE,IAAGV,GAAE,KAAIgB,GAAE,MAAKE,IAAEd,IAAE,QAAO,YAAWL,GAAE,OAAMI,GAAE,UAASN,EAAC,CAAC;AAAC;AAAC,MAAMhzC,KAAEF,GAAET,EAAC;AAAE,SAASM,GAAEM,GAAE;AAAC,SAAOA,EAAE,eAAc,EAAG,KAAK0F,GAAE1F,EAAE,aAAa,CAAC;AAAC;AAAC,MAAM0E,KAAE7E,GAAE2zC,EAAC;AAAE,SAASA,GAAEd,GAAEvoC,GAAE;AAAC,QAAK,EAAC,aAAYtK,MAAK,EAAC,IAAE6yC,GAAE,CAACjzC,CAAC,IAAEO;AAAI,SAAO8yC,gBAAElzC,GAAAA,QAAAA,UAAE,EAAC,UAAS,CAACL,eAAEQ,IAAE,EAAC,QAAON,GAAE,GAAG,GAAE,KAAI0K,EAAC,CAAC,GAAQtK,KAAN,QAASN,eAAE2zC,IAAE,EAAC,QAAOzzC,GAAE,SAAQI,EAAC,CAAC,CAAC,EAAC,CAAC;AAAC;AAAC,SAASqzC,GAAE,EAAC,SAAQlzC,GAAE,QAAOmK,EAAC,GAAE;AAAC,QAAMtK,IAAE,SAASG,GAAE;AAAC,UAAK,CAAC0yC,GAAEvoC,CAAC,IAAEwoC,GAAG,MAAIjzC,GAAEM,CAAC;AAAI,WAAOR,GAAG,MAAI;AAAC,eAASkzC,IAAG;AAAC,cAAMA,IAAEhzC,GAAEM,CAAC;AAAE,QAAAmK,EAAEuoC,CAAC;AAAA,MAAC;AAAC,aAAOA,EAAG,GAACG,GAAE7yC,EAAE,uBAAwB,MAAI;AAAC,QAAA0yC,EAAG;AAAA,MAAA,IAAI1yC,EAAE,yBAA0B,MAAI;AAAC,QAAA0yC,EAAG;AAAA,MAAA,EAAG;AAAA,IAAC,GAAG,CAAC1yC,CAAC,CAAC,GAAE0yC;AAAA,EAAC,EAAEvoC,CAAC,GAAE,CAAC1K,GAAE,CAAC,IAAEkzC,GAAExoC,EAAE,WAAY,CAAA;AAAE,MAAGuoC,GAAG,OAAK,EAAEvoC,EAAE,WAAU,CAAE,GAAEA,EAAE,yBAA0B,CAAAnK,MAAG;AAAC,MAAEA,CAAC;AAAA,EAAC,KAAM,CAACmK,CAAC,CAAC,GAAE,CAACtK;AAAE,WAAO;AAAK,MAAIizC,IAAE;AAAK,SAAkB,OAAO9yC,KAAnB,aAAqB8yC,IAAE9yC,EAAEP,CAAC,IAASO,MAAP,SAAW8yC,IAAE9yC,IAAU8yC,MAAP,OAAS,OAAKvzC,GAAAA,QAAAA,IAAE,OAAM,EAAC,eAAc,IAAG,UAASuzC,EAAC,CAAC;AAAC;ACW1pE,MAAM+oB,KAAgB,GAChBC,KAAe,GACfC,KAA4B,GAC5BC,KAAQ,GACRC,KAAsB,GACtBC,KAAmC,GACnCC,KAAoC,GACpCC,KAAmC;AACzC,SAASC,GAAc7iD,GAAaqO,GAAa9N,GAAe;AAC9D,QAAMD,IAAUN,EAAY,UACtB2H,IAAQ,CAAA;AACd,aAAWm7C,KAAgBz0C,GAAa;AACtC,UAAM00C,IAAYziD,EAAQ,IAAIwiD,CAAY;AAC1C,IAAIC,MAAc,UAChBp7C,EAAM,KAAKo7C,CAAS;AAAA,EAEvB;AACD,aAAW,CAACC,GAAiB1yB,CAA0B,KAAK/vB,GAAe;AACzE,QAAI,CAAC+vB;AACH;AAEF,UAAM2yB,IAAe3iD,EAAQ,IAAI0iD,CAAe;AAChD,IAAIC,MAAiB,UAAa,CAACv6C,GAAYu6C,CAAY,KACzDt7C,EAAM,KAAKs7C,CAAY;AAAA,EAE1B;AACD,SAAOt7C;AACT;AACA,SAASu7C,GAAc90C,GAAiBsG,GAAiByuC,GAAgBC,GAAkB//C,GAAa;AACtG,MAAI+K,MAAoB,QAAQ+0C,EAAe,SAAS,KAAKC,EAAiB,SAAS,KAAK,CAAC//C;AAC3F,WAAOm/C;AAET,QAAMj3C,IAAgBmJ,EAAgB,YAChClR,IAAgB4K,EAAgB;AACtC,MAAI/K;AACF,WAAOo/C;AAET,MAAI,CAACxoD,EAAkBsR,CAAa,KAAK,CAACtR,EAAkBuJ,CAAa,KAAK,CAACA,EAAc,YAAa,KAAI,CAAC+H,EAAc,YAAW;AACtI,WAAOi3C;AAET,QAAMv0C,IAAa40C,GAAcnuC,GAAiByuC,GAAgBC,CAAgB;AAClF,MAAIn1C,EAAW,WAAW;AACxB,WAAOu0C;AAKT,MAAIv0C,EAAW,SAAS,GAAG;AACzB,UAAMo1C,IAAc3uC,EAAgB,UAC9BsZ,IAAiBq1B,EAAY,IAAI93C,EAAc,OAAO,GAAG,GACzD+3C,IAAiBD,EAAY,IAAI7/C,EAAc,OAAO,GAAG;AAC/D,WAAIwqB,KAAkBs1B,KAAkB,CAACl1C,EAAgB,SAAS,IAAI4f,EAAe,KAAK,KAAK/yB,EAAY+yB,CAAc,KAAKA,EAAe,OAAO,WAAW,KAAKziB,EAAc,OAAO,WAAW,IAC3Lm3C,KAEFF;AAAA,EACR;AACD,QAAMe,IAAgBt1C,EAAW,IAC3Bu1C,IAAgBp1C,EAAgB,SAAS,IAAIm1C,EAAc,KAAK;AACtE,MAAI,CAACtoD,EAAYuoD,CAAa,KAAK,CAACvoD,EAAYsoD,CAAa,KAAKC,EAAc,WAAWD,EAAc;AACvG,WAAOf;AAET,QAAMiB,IAAWD,EAAc,QACzBnkC,IAAWkkC,EAAc;AAC/B,MAAIE,MAAapkC;AACf,WAAOmjC;AAET,QAAMkB,IAAan4C,EAAc,QAC3Bo4C,IAAangD,EAAc;AACjC,MAAIkgD,EAAW,QAAQC,EAAW,OAAOD,EAAW,SAAS;AAC3D,WAAOlB;AAET,QAAM10B,IAAmB41B,EAAW,QAC9BE,IAAmBD,EAAW,QAC9BE,IAAWxkC,EAAS,SAASokC,EAAS;AAC5C,SAAII,MAAa,KAAKD,MAAqB91B,IAAmB,IACrD40B,KAELmB,MAAa,MAAMD,MAAqB91B,IAAmB,IACtD60B,KAELkB,MAAa,MAAMD,MAAqB91B,IACnC80B,KAEFJ;AACT;AACA,SAASsB,GAAoB70D,GAAKmf,GAAiBsG,GAAiB;AAClE,QAAMxB,IAAW9E,EAAgB,SAAS,IAAInf,CAAG,GAC3CsO,IAAWmX,EAAgB,SAAS,IAAIzlB,CAAG,GAC3CuU,IAAgB4K,EAAgB,YAChC7C,IAAgBmJ,EAAgB;AAEtC,SAAI,EADmBza,EAAkBuJ,CAAa,KAAKvJ,EAAkBsR,CAAa,KAAK/H,EAAc,OAAO,SAAS,aAAaA,EAAc,MAAM,SAAS,aAAa+H,EAAc,OAAO,SAAS,UAAUA,EAAc,MAAM,SAAS,WAClOtQ,EAAYiY,CAAQ,KAAKjY,EAAYsC,CAAQ,KAAK2V,EAAS,aAAa3V,EAAS,WAI/F,KAAK,UAAU6Q,EAAgB,KAAK,MAAM8E,EAAS,YAAY,CAAC,MAAM,KAAK,UAAUwB,EAAgB,KAAK,MAAMnX,EAAS,WAAY,CAAA,CAAC,IAExI;AACT;AACA,SAASwmD,GAAwBhrD,GAAQirD,GAAO;AAC9C,MAAIC,IAAiB,KAAK,OACtBC,IAAiB1B;AACrB,SAAO,CAACp0C,GAAiBsG,GAAiByvC,GAAqB91C,GAAa9N,GAAemtB,MAAS;AAClG,UAAM02B,IAAa,KAAK;AAIxB,QAAI12B,EAAK,IAAI,UAAU;AACrB,aAAAw2B,IAAiB1B,IACjByB,IAAiBG,GACV7B;AAET,UAAM8B,IAAanB,GAAc90C,GAAiBsG,GAAiBrG,GAAa9N,GAAexH,EAAO,YAAW,CAAE,GAC7GurD,KAAe,MAAM;AACzB,YAAMC,IAAeJ,MAAwB,QAAQA,EAAoB,WAAWprD,GAC9EyrD,IAAoB92B,EAAK,IAAI,cAAc;AAEjD,UAD2B,CAAC82B,KAAqBD,KAAgB72B,EAAK,IAAI,eAAe;AAEvF,eAAO20B;AAET,UAAIj0C,MAAoB;AACtB,eAAOk0C;AAET,YAAMjpD,IAAYqb,EAAgB;AAElC,UAAI,EADkBrG,EAAY,OAAO,KAAK9N,EAAc,OAAO;AAEjE,eAAIlH,MAAc,OACTgpD,KAEFE;AAET,UAAIiC,MAAsB,MAASH,MAAe7B,MAAS6B,MAAeH,KAAkBE,IAAaH,IAAiBD,KAASO;AACjI,eAAOlC;AAKT,UAAIh0C,EAAY,SAAS,GAAG;AAC1B,cAAMy0C,IAAe,MAAM,KAAKz0C,CAAW,EAAE;AAC7C,YAAIy1C,GAAoBhB,GAAc10C,GAAiBsG,CAAe;AACpE,iBAAO2tC;AAAA,MAEV;AACD,aAAOC;AAAA,IACb;AACI,WAAA2B,IAAiBG,GACjBF,IAAiBG,GACVC;AAAA,EACX;AACA;AACA,SAASG,GAAK1rD,GAAQ2rD,GAAc;AAClC,QAAMC,IAAYD,EAAa,WACzBE,IAAYF,EAAa;AAC/B,MAAIC,EAAU,WAAW,GAAG;AAC1B,UAAM9mC,IAAU6mC,EAAa;AAC7B,IAAI7mC,MAAY,SACd+mC,EAAU,KAAK/mC,CAAO,GACtB9kB,EAAO,gBAAgBlE,IAAkB,EAAI;AAE/C,UAAMgwD,IAAoBF,EAAU;AACpC,IAAIA,EAAU,WAAW,KACvB5rD,EAAO,gBAAgBnE,IAAkB,EAAK,GAEhD8vD,EAAa,UAAUG,KAAqB,MACxCA,KACFA,EAAkB,OAAO,eAAeA,EAAkB,aAAa;AAAA,MACrE,KAAK;AAAA,IACb,CAAO;AAAA,EAEJ;AACH;AACA,SAASC,GAAK/rD,GAAQ2rD,GAAc;AAClC,QAAMC,IAAYD,EAAa,WACzBE,IAAYF,EAAa;AAE/B,MADwBE,EAAU,WACV,GAAG;AACzB,UAAM/mC,IAAU6mC,EAAa,SACvBG,IAAoBD,EAAU;AACpC,IAAI/mC,MAAY,SACd8mC,EAAU,KAAK9mC,CAAO,GACtB9kB,EAAO,gBAAgBnE,IAAkB,EAAI,IAE3CgwD,EAAU,WAAW,KACvB7rD,EAAO,gBAAgBlE,IAAkB,EAAK,GAEhD6vD,EAAa,UAAUG,KAAqB,MACxCA,KACFA,EAAkB,OAAO,eAAeA,EAAkB,aAAa;AAAA,MACrE,KAAK;AAAA,IACb,CAAO;AAAA,EAEJ;AACH;AACA,SAASE,GAAaL,GAAc;AAClC,EAAAA,EAAa,YAAY,IACzBA,EAAa,YAAY,IACzBA,EAAa,UAAU;AACzB;AAWA,SAASM,GAAgBjsD,GAAQ2rD,GAAcV,GAAO;AACpD,QAAMiB,IAAiBlB,GAAwBhrD,GAAQirD,CAAK,GACtDkB,IAAc,CAAC;AAAA,IACnB,aAAAllD;AAAA,IACA,iBAAAoO;AAAA,IACA,aAAAC;AAAA,IACA,eAAA9N;AAAA,IACA,MAAAmtB;AAAA,EACJ,MAAQ;AACJ,UAAM7P,IAAU6mC,EAAa,SACvBC,IAAYD,EAAa,WACzBE,IAAYF,EAAa,WACzBhqD,IAAqBmjB,MAAY,OAAO,OAAOA,EAAQ;AAC7D,QAAIA,MAAY,QAAQ7d,MAAgBtF;AACtC;AAEF,UAAM4pD,IAAcW,EAAe72C,GAAiBpO,GAAa6d,GAASxP,GAAa9N,GAAemtB,CAAI;AAC1G,QAAI42B,MAAgBhC;AAClB,MAAIqC,EAAU,WAAW,MACvBD,EAAa,YAAY,IACzB3rD,EAAO,gBAAgBnE,IAAkB,EAAK,IAE5CipB,MAAY,SACd+mC,EAAU,KAAK;AAAA,QACb,GAAG/mC;AAAA,MACb,CAAS,GACD9kB,EAAO,gBAAgBlE,IAAkB,EAAI;AAAA,aAEtCyvD,MAAgB/B;AACzB;AAIF,IAAAmC,EAAa,UAAU;AAAA,MACrB,QAAA3rD;AAAA,MACA,aAAAiH;AAAA,IACN;AAAA,EACA;AAgBE,SAfmBu2C,GAAcx9C,EAAO,gBAAgB/F,IAAc,OACpE8xD,GAAK/rD,GAAQ2rD,CAAY,GAClB,KACNjuB,CAAuB,GAAG19B,EAAO,gBAAgB9F,IAAc,OAChEwxD,GAAK1rD,GAAQ2rD,CAAY,GAClB,KACNjuB,CAAuB,GAAG19B,EAAO,gBAAgBrE,IAAsB,OACxEqwD,GAAaL,CAAY,GAClB,KACNjuB,CAAuB,GAAG19B,EAAO,gBAAgBpE,IAAuB,OACzEowD,GAAaL,CAAY,GACzB3rD,EAAO,gBAAgBnE,IAAkB,EAAK,GAC9CmE,EAAO,gBAAgBlE,IAAkB,EAAK,GACvC,KACN4hC,CAAuB,GAAG19B,EAAO,uBAAuBmsD,CAAW,CAAC;AAEzE;AAMA,SAASC,KAA0B;AACjC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,WAAW,CAAE;AAAA,IACb,WAAW,CAAE;AAAA,EACjB;AACA;;;;;8CC7RqSp/D,KAAE,GAAEH,KAAE,GAAEM,KAAE,GAAEqzC,KAAE,GAAEvzC,KAAE,GAAEM,KAAE,GAAEkzC,KAAE,GAAEG,KAAE;AAAE,SAASF,GAAEP,GAAE,GAAEjzC,GAAE,GAAE,GAAE;AAAC,MAAUizC,MAAP,QAAcjzC,EAAE,SAAN,KAAgB,EAAE,SAAN,KAAY,CAAC;AAAE,WAAOszC;AAAE,QAAM5oC,IAAE,EAAE,YAAWzE,IAAEgtC,EAAE;AAAW,MAAG;AAAE,WAAOlzC;AAAE,MAAG,EAAEK,EAAEsK,CAAC,KAAGtK,EAAE6F,CAAC,KAAGA,EAAE,iBAAeyE,EAAE;AAAe,WAAO4oC;AAAE,QAAMnzC,IAAE,SAAS8yC,GAAE1yC,GAAEP,GAAE;AAAC,UAAMkzC,IAAED,EAAE,UAASE,IAAE,CAAE;AAAC,eAAUF,KAAK1yC,GAAE;AAAC,YAAMA,IAAE2yC,EAAE,IAAID,CAAC;AAAE,MAAS1yC,MAAT,UAAY4yC,EAAE,KAAK5yC,CAAC;AAAA,IAAC;AAAC,eAAS,CAAC0yC,GAAE1yC,CAAC,KAAIP,GAAE;AAAC,UAAG,CAACO;AAAE;AAAS,YAAMP,IAAEkzC,EAAE,IAAID,CAAC;AAAE,MAASjzC,MAAT,UAAYqzC,GAAErzC,CAAC,KAAGmzC,EAAE,KAAKnzC,CAAC;AAAA,IAAC;AAAC,WAAOmzC;AAAA,EAAC,EAAE,GAAEnzC,GAAE,CAAC;AAAE,MAAOG,EAAE,WAAN;AAAa,WAAOmzC;AAAE,MAAGnzC,EAAE,SAAO,GAAE;AAAC,UAAMH,IAAE,EAAE,UAASkzC,IAAElzC,EAAE,IAAI0K,EAAE,OAAO,GAAG,GAAEyoC,IAAEnzC,EAAE,IAAIiG,EAAE,OAAO,GAAG;AAAE,WAAOitC,KAAGC,KAAG,CAACF,EAAE,SAAS,IAAIC,EAAE,KAAK,KAAGE,EAAEF,CAAC,KAAOA,EAAE,OAAO,WAAb,KAAyBxoC,EAAE,OAAO,WAAb,IAAoBrK,KAAEizC;AAAA,EAAC;AAAC,QAAMxzC,IAAEK,EAAE,IAAGR,IAAEszC,EAAE,SAAS,IAAInzC,EAAE,KAAK;AAAE,MAAG,CAACszC,EAAEzzC,CAAC,KAAG,CAACyzC,EAAEtzC,CAAC,KAAGH,EAAE,WAASG,EAAE;AAAO,WAAOwzC;AAAE,QAAMrzC,IAAEN,EAAE,QAAO6zC,IAAE1zC,EAAE;AAAO,MAAGG,MAAIuzC;AAAE,WAAOF;AAAE,QAAMzzC,IAAE6K,EAAE,QAAOkpC,IAAE3tC,EAAE;AAAO,MAAGpG,EAAE,QAAM+zC,EAAE,OAAc/zC,EAAE,SAAX;AAAgB,WAAOyzC;AAAE,QAAMruC,IAAEpF,EAAE,QAAO00C,IAAEX,EAAE,QAAOa,IAAEjB,EAAE,SAAOvzC,EAAE;AAAO,SAAWw0C,MAAJ,KAAOF,MAAItvC,IAAE,IAAE5E,KAAOo0C,MAAL,MAAQF,MAAItvC,IAAE,IAAEsuC,KAAOkB,MAAL,MAAQF,MAAItvC,IAAEyuC,KAAEJ;AAAC;AAAC,SAASzzC,GAAEozC,GAAE,GAAE;AAAC,MAAIjzC,IAAE,KAAK,IAAK,GAAC,IAAEszC;AAAE,SAAM,CAAC,GAAE5oC,GAAEzE,GAAE9F,GAAEkzC,GAAEtzC,MAAI;AAAC,UAAMM,IAAE,KAAK,IAAK;AAAC,QAAGN,EAAE,IAAI,UAAU;AAAE,aAAO,IAAEuzC,IAAEtzC,IAAEK,GAAEJ;AAAE,UAAMszC,IAAEC,GAAE,GAAE9oC,GAAEvK,GAAEkzC,GAAEJ,EAAE,aAAa,GAAES,KAAG,MAAI;AAAC,YAAMA,IAASztC,MAAP,QAAUA,EAAE,WAASgtC,GAAEO,IAAEzzC,EAAE,IAAI,cAAc;AAAE,UAAG,CAACyzC,KAAGE,KAAG3zC,EAAE,IAAI,eAAe;AAAE,eAAOD;AAAE,UAAU,MAAP;AAAS,eAAOH;AAAE,YAAME,IAAE6K,EAAE;AAAW,aAAKvK,EAAE,OAAK,KAAGkzC,EAAE,OAAK,IAA+BG,MAAL,MAAQD,MAAID,MAAGC,MAAI,KAAGlzC,IAAEL,IAAE,KAAG0zC,KAAkBvzC,EAAE,SAAN,KAAe,SAAS8yC,GAAE1yC,GAAEP,GAAE;AAAC,cAAMkzC,IAAE3yC,EAAE,SAAS,IAAI0yC,CAAC,GAAEE,IAAEnzC,EAAE,SAAS,IAAIizC,CAAC,GAAEvoC,IAAEnK,EAAE,YAAW0F,IAAEjG,EAAE;AAAW,eAAM,EAAEI,EAAEsK,CAAC,KAAGtK,EAAE6F,CAAC,KAAeyE,EAAE,OAAO,SAArB,aAAuCA,EAAE,MAAM,SAApB,aAAmCzE,EAAE,OAAO,SAAlB,UAAiCA,EAAE,MAAM,SAAjB,UAAuB,CAACmtC,EAAEF,CAAC,KAAG,CAACE,EAAED,CAAC,KAAGD,EAAE,aAAWC,EAAE,aAAW,KAAK,UAAU5yC,EAAE,KAAM,MAAI2yC,EAAE,YAAc,CAAA,MAAI,KAAK,UAAUlzC,EAAE,KAAM,MAAImzC,EAAE,YAAc,CAAA;AAAA,MAAC,EAAE,MAAM,KAAKhzC,CAAC,EAAE,IAAG,GAAEuK,CAAC,IAAS5K,KAASH,KAAlcE,MAAP,OAASC,KAAEG;AAAA,IAA+b,GAAI;AAAC,WAAOD,IAAEK,GAAE,IAAEkzC,GAAEG;AAAA,EAAC;AAAC;AAAC,SAASE,GAAEX,GAAE;AAAC,EAAAA,EAAE,YAAU,IAAGA,EAAE,YAAU,CAAE,GAACA,EAAE,UAAQ;AAAI;AAAC,SAAShuC,GAAE7E,GAAEgzC,GAAEC,GAAE;AAAC,QAAMvzC,IAAED,GAAEO,GAAEizC,CAAC;AAAymC,SAArmCJ,GAAE7yC,EAAE,gBAAgBG,IAAG,OAAK,SAAS0yC,GAAE1yC,GAAE;AAAC,UAAMP,IAAEO,EAAE,WAAU2yC,IAAE3yC,EAAE;AAAU,QAAO2yC,EAAE,WAAN,GAAa;AAAC,YAAMC,IAAE5yC,EAAE,SAAQmK,IAAEwoC,EAAE;AAAM,MAAOC,MAAP,SAAWnzC,EAAE,KAAKmzC,CAAC,GAAEF,EAAE,gBAAgBhtC,IAAE,EAAE,IAAOitC,EAAE,WAAN,KAAcD,EAAE,gBAAgB9yC,IAAE,EAAE,GAAEI,EAAE,UAAQmK,KAAG,MAAKA,KAAGA,EAAE,OAAO,eAAeA,EAAE,aAAY,EAAC,KAAI,WAAU,CAAC;AAAA,IAAC;AAAA,EAAC,EAAEtK,GAAEgzC,CAAC,GAAE,KAAKpzC,CAAC,GAAEI,EAAE,gBAAgB8yC,IAAG,OAAK,SAASD,GAAE1yC,GAAE;AAAC,UAAMP,IAAEO,EAAE,WAAU2yC,IAAE3yC,EAAE;AAAU,QAAOP,EAAE,WAAN,GAAa;AAAC,YAAMmzC,IAAE5yC,EAAE;AAAQ,MAAO4yC,MAAP,SAAWD,EAAE,KAAKC,CAAC,GAAEF,EAAE,gBAAgB9yC,IAAE,EAAE;AAAG,YAAMuK,IAAE1K,EAAE,IAAK;AAAC,MAAIA,EAAE,WAAN,KAAcizC,EAAE,gBAAgBhtC,IAAE,EAAE,GAAE1F,EAAE,UAAQmK,KAAG,MAAKA,KAAGA,EAAE,OAAO,eAAeA,EAAE,aAAY,EAAC,KAAI,WAAU,CAAC;AAAA,IAAC;AAAA,EAAC,EAAEtK,GAAEgzC,CAAC,GAAE,KAAKpzC,CAAC,GAAEI,EAAE,gBAAgB+yC,IAAG,OAAKS,GAAER,CAAC,GAAE,KAAKpzC,CAAC,GAAEI,EAAE,gBAAgBsK,IAAG,OAAKkpC,GAAER,CAAC,GAAEhzC,EAAE,gBAAgB6F,IAAE,EAAE,GAAE7F,EAAE,gBAAgBD,IAAE,EAAE,GAAE,KAAKH,CAAC,GAAEI,EAAE,uBAAwB,CAAC,EAAC,aAAY6yC,GAAE,iBAAgB1yC,GAAE,aAAYP,GAAE,eAAckzC,GAAE,MAAKC,EAAC,MAAI;AAAC,UAAMzoC,IAAE0oC,EAAE,SAAQ,IAAEA,EAAE,WAAUE,IAAEF,EAAE,WAAUrzC,IAAS2K,MAAP,OAAS,OAAKA,EAAE;AAAY,QAAUA,MAAP,QAAUuoC,MAAIlzC;AAAE;AAAO,UAAM,IAAED,EAAES,GAAE0yC,GAAEvoC,GAAE1K,GAAEkzC,GAAEC,CAAC;AAAE,QAAG,MAAIxzC;AAAE,MAAI,EAAE,WAAN,MAAeyzC,EAAE,YAAU,CAAA,GAAGhzC,EAAE,gBAAgB6F,IAAE,EAAE,IAAUyE,MAAP,SAAW4oC,EAAE,KAAK,EAAC,GAAG5oC,EAAC,CAAC,GAAEtK,EAAE,gBAAgBD,IAAE,EAAE;AAAA,aAAW,MAAIF;AAAE;AAAO,IAAAmzC,EAAE,UAAQ,EAAC,QAAOhzC,GAAE,aAAY6yC,EAAC;AAAA,EAAC,EAAG;AAAU;AAAC,SAASsB,KAAG;AAAC,SAAM,EAAC,SAAQ,MAAK,WAAU,CAAA,GAAG,WAAU,GAAE;AAAC;;;;;8CCEvuGiU,KAAM,QAAQ,IAAI,aAAa,gBAAgBC,KAASC,IACjDwW,KAA0B1W,GAAI,yBAC9BuW,KAAkBvW,GAAI;ACJoO,SAASpoD,GAAE,EAAC,OAAMA,GAAE,sBAAqBD,EAAC,GAAE;AAAC,QAAK,CAACL,CAAC,IAAEmzC,GAAC;AAAG,SAAO,SAASA,GAAE7yC,GAAED,IAAE,KAAI;AAAC,UAAML,IAAES,GAAG,MAAIH,KAAG+yC,GAAG,GAAE,CAAC/yC,CAAC,CAAC;AAAEsK,IAAAA,GAAG,MAAIwoC,GAAED,GAAEnzC,GAAEK,CAAC,GAAG,CAACA,GAAE8yC,GAAEnzC,CAAC,CAAC;AAAA,EAAC,EAAEA,GAAEK,GAAEC,CAAC,GAAE;AAAI;ACArR,MAAM8yC,KAAe,OAAO,SAApB,OAAqC,OAAO,aAAhB,UAAmC,OAAO,SAAS,kBAAzB,SAAuCD,KAAEE;AAAE,SAASzoC,GAAE,EAAC,6BAA4BuoC,IAAE,IAAG,uBAAsBE,IAAE,IAAG,UAASzoC,EAAC,GAAE;AAAC,QAAK,CAAC1K,CAAC,IAAEO,GAAC;AAAG,SAAO2yC,GAAG,MAAI;AAAC,QAAGxoC;AAAE,aAAO1K,EAAE,uBAAwB,CAAC,EAAC,aAAYO,GAAE,eAAc2yC,GAAE,aAAY9yC,GAAE,iBAAgBizC,GAAE,MAAKptC,EAAC,MAAI;AAAC,QAAAktC,KAAOD,EAAE,SAAN,KAAgB9yC,EAAE,SAAN,KAAY6yC,KAAGhtC,EAAE,IAAI,eAAe,KAAGotC,EAAE,aAAW3oC,EAAEnK,GAAEP,GAAEiG,CAAC;AAAA,MAAC,CAAC;AAAA,EAAE,GAAG,CAACjG,GAAEizC,GAAEE,GAAEzoC,CAAC,CAAC,GAAE;AAAI;ACApf,SAASuoC,GAAEC,GAAE,GAAE;AAAC,SAAOD,KAAE,OAAO,iBAAe,OAAO,eAAe,KAAI,IAAG,SAASC,GAAE3yC,GAAE;AAAC,WAAO2yC,EAAE,YAAU3yC,GAAE2yC;AAAA,EAAC,GAAED,GAAEC,GAAE,CAAC;AAAC;AAAC,IAAIC,KAAE,EAAC,OAAM,KAAI,GAAEnzC,KAAE,SAASO,GAAE;AAAC,MAAIP,GAAEI;AAAE,WAAS6F,IAAG;AAAC,aAAQitC,GAAED,IAAE,UAAU,QAAOjzC,IAAE,IAAI,MAAMizC,CAAC,GAAE7yC,IAAE,GAAEA,IAAE6yC,GAAE7yC;AAAI,MAAAJ,EAAEI,KAAG,UAAUA;AAAG,YAAO8yC,IAAE3yC,EAAE,KAAK,MAAMA,GAAE,CAAC,IAAI,EAAE,OAAOP,CAAC,CAAC,KAAG,MAAM,QAAMmzC,IAAED,EAAE,qBAAmB,WAAU;AAAC,eAAQ3yC,GAAE0yC,IAAE,UAAU,QAAOE,IAAE,IAAI,MAAMF,CAAC,GAAEjzC,IAAE,GAAEA,IAAEizC,GAAEjzC;AAAI,QAAAmzC,EAAEnzC,KAAG,UAAUA;AAAG,MAAMkzC,EAAE,MAAM,WAAd,SAAwB3yC,IAAE2yC,EAAE,OAAO,QAAQ,MAAM3yC,GAAE4yC,CAAC,GAAED,EAAE;IAAO,GAAEA;AAAA,EAAC;AAAC,EAAA9yC,IAAEG,IAAGP,IAAEiG,GAAG,YAAU,OAAO,OAAO7F,EAAE,SAAS,GAAEJ,EAAE,UAAU,cAAYA,GAAEizC,GAAEjzC,GAAEI,CAAC,GAAE6F,EAAE,2BAAyB,SAASitC,GAAE;AAAC,WAAM,EAAC,OAAMA,EAAC;AAAA,EAAC;AAAE,MAAIpzC,IAAEmG,EAAE;AAAU,SAAOnG,EAAE,QAAM,WAAU;AAAC,SAAK,SAASqzC,EAAC;AAAA,EAAC,GAAErzC,EAAE,oBAAkB,SAASozC,GAAE3yC,GAAE;AAAC,QAAI0yC,GAAEE;AAAE,KAAOF,KAAGE,IAAE,KAAK,OAAO,YAAxB,QAAkCF,EAAE,KAAKE,GAAED,GAAE3yC,CAAC;AAAA,EAAC,GAAET,EAAE,qBAAmB,SAASozC,GAAE3yC,GAAE;AAAC,QAAI0yC,GAAEE,GAAEnzC,GAAEI,GAAE6F,IAAE,KAAK,MAAM,OAAMnG,IAAE,KAAK,MAAM;AAAU,IAAOmG,MAAP,QAAiB1F,EAAE,UAAT,UAA2BP,IAAEkzC,EAAE,eAAd,WAA2BlzC,IAAE,CAAA,KAAcI,IAAEN,OAAZ,WAAiBM,IAAE,CAAA,IAAIJ,EAAE,WAASI,EAAE,UAAQJ,EAAE,KAAM,SAASkzC,GAAE3yC,GAAE;AAAC,aAAM,CAAC,OAAO,GAAG2yC,GAAE9yC,EAAEG,EAAE;AAAA,IAAC,CAAG,QAAW0yC,KAAGE,IAAE,KAAK,OAAO,sBAAxB,QAA4CF,EAAE,KAAKE,GAAED,EAAE,WAAUpzC,CAAC,GAAE,KAAK,MAAK;AAAA,EAAG,GAAEA,EAAE,SAAO,WAAU;AAAC,QAAIS,IAAE,KAAK,MAAM,OAAM0yC,IAAE,KAAK,OAAME,IAAEF,EAAE,gBAAejzC,IAAEizC,EAAE,mBAAkB,IAAEA,EAAE;AAAS,QAAU1yC,MAAP,MAAS;AAAC,UAAI0F,IAAE,EAAC,OAAM1F,GAAE,oBAAmB,KAAK,mBAAkB;AAAE,UAAG2yC,GAAE,eAAe,CAAC;AAAE,eAAO;AAAE,UAAe,OAAOC,KAAnB;AAAqB,eAAOA,EAAEltC,CAAC;AAAE,UAAGjG;AAAE,eAAOkzC,GAAE,cAAclzC,GAAEiG,CAAC;AAAE,YAAM,IAAI,MAAM,4FAA4F;AAAA,IAAC;AAAC,WAAO,KAAK,MAAM;AAAA,EAAQ,GAAEA;AAAC,EAAEitC,GAAE,SAAS;AAAE,SAAS9yC,GAAE,EAAC,UAAS8yC,GAAE,SAAQD,EAAC,GAAE;AAAC,SAAO1yC,eAAEP,IAAE,EAAC,UAASO,GAAAA,QAAAA,IAAE,OAAM,EAAC,OAAM,EAAC,QAAO,kBAAiB,OAAM,QAAO,SAAQ,MAAK,GAAE,UAAS,uBAAsB,CAAC,GAAE,SAAQ0yC,GAAE,UAASC,EAAC,CAAC;AAAC;ACGlvD,MAAMjuB,KAAQ,CAAA;AAOd,SAASk6C,GAASplD,GAAkB;AAClC,EAAAA,EAAY,KAAK,MAAM;AAErB,UAAM0G,IAAOzE,MACP5I,IAAYC;AAEV,YAAA,IAAIoN,GAAMrN,CAAS;AAAA,EAAA,CAC5B;AACH;AAMA,SAASgsD,KAA0B;AAC3B,QAAA,CAACtsD,CAAM,IAAIusD;AAEjB,SAAAC,GAAU,MAAM;AAEd,IAAAxsD,EAAO,MAAM;AAAA,EAAA,GACZ,CAACA,CAAM,CAAC,GAEJ;AACT;AAKA,SAASg/B,GAAQjwC,GAAY;AAC3B,UAAQ,MAAMA,CAAK;AACrB;AAEO,SAAS09D,KAAS;AACvB,QAAMC,IAAgB;AAAA,IACpB,WAAW;AAAA,IACX,OAAAv6C;AAAA,IACA,SAAA6sB;AAAA,EAAA;AAIA,SAAAhmC,gBAAAA,gBAAC2zD,MAAgB,eAAAD,GACf,UAAA;AAAA,IAAA3zD,gBAAAA,GAAA,QAAA;AAAA,MAAC6zD;AAAAA,MAAA;AAAA,QACC,gDAAkBC,IAAgB,EAAA;AAAA,QAClC,aAAc9zD,gBAAAA,GAAAA,QAAAA,IAAA,OAAA,EAAI,UAAkB,qBAAA,CAAA;AAAA,QACpC,eAAe+zD;AAAAA,MAAA;AAAA,IACjB;AAAA,IACA/zD,gBAAAA,eAACg0D,MAAe,UAAAV,IAAoB;AAAA,mCACnCW,IAAc,EAAA;AAAA,mCACdV,IAAwB,EAAA;AAAA,EAC3B,EAAA,CAAA;AAGJ;"}