@textbus/collaborate 5.4.8 → 5.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +14 -7
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +14 -7
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/base/sub-model-loader.ts","../src/base/collaborate.ts","../src/base/collab-history.ts","../src/base/message-bus.ts","../src/base/multiple-doc-collab-history.ts","../src/base/sync-connector.ts","../src/connectors/hocuspocus-connector.ts","../src/connectors/local-connector.ts","../src/connectors/y-websocket-connector.ts","../src/collaborate-module.ts","../src/multiple-document-collaborate-module.ts"],"sourcesContent":["import { Doc, Doc as YDoc } from 'yjs'\nimport { Injectable } from '@viewfly/core'\nimport { AsyncComponent, AsyncSlot, makeError } from '@textbus/core'\n\nconst subModelLoaderErrorFn = makeError('subModelLoaderError')\n\n/**\n * 子文档加载器\n */\nexport abstract class SubModelLoader {\n /**\n * 通过插槽获取已加载的文档\n * @param slot\n */\n abstract getLoadedModelBySlot(slot: AsyncSlot): YDoc | null\n\n /**\n * 通过组件获取已加载的文档\n * @param component\n */\n abstract getLoadedModelByComponent(component: AsyncComponent): YDoc | null\n\n /**\n * 当本地新增异步子插槽时调用\n * @param slot\n */\n abstract createSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当本地新增异步子组件时调用\n * @param component\n */\n abstract createSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n\n /**\n * 当远程异步子插槽同步到本地时调用\n * @param slot\n */\n abstract loadSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当远程异步子组件同步到本地时调用\n * @param component\n */\n abstract loadSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n}\n\n@Injectable()\nexport class NonSubModelLoader extends SubModelLoader {\n createSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n createSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelBySlot(): Doc {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelByComponent(): Doc {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n}\n","import { Injectable } from '@viewfly/core'\nimport { filter, map, Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n ChangeOrigin,\n Component,\n Format,\n Formats,\n FormatValue,\n PendingErasure,\n Registry,\n makeError,\n Scheduler,\n Selection,\n Slot,\n AsyncSlot,\n AsyncComponent,\n AbstractSelection,\n observe,\n ProxyModel,\n toRaw,\n getObserver,\n attachModel,\n StackableFormatter,\n valueToJSON,\n} from '@textbus/core'\nimport {\n AbstractType,\n Array as YArray, createAbsolutePositionFromRelativePosition, createRelativePositionFromTypeIndex,\n Doc as YDoc,\n Map as YMap,\n RelativePosition,\n Text as YText,\n Transaction,\n UndoManager,\n YArrayEvent,\n YMapEvent,\n YTextEvent,\n XmlElement,\n} from 'yjs'\n\nimport { SubModelLoader } from './sub-model-loader'\n\n/** 与本地稀疏数组「空洞」对应的 YXmlElement,仅放入 YArray,不作通用 XML 节点使用 */\nconst ARRAY_HOLE_ELEMENT_NODE = 'tb-array-hole'\n\nexport interface RelativePositionRecord {\n doc: YDoc,\n position: RelativePosition\n}\n\nexport interface CursorPosition {\n anchor: RelativePositionRecord\n focus: RelativePositionRecord\n}\n\nexport interface CollaborateHistorySelectionPosition {\n before: CursorPosition | null\n after: CursorPosition | null\n}\n\nconst collaborateErrorFn = makeError('Collaborate')\n\nclass SlotMap {\n private slotAndYTextMap = new WeakMap<Slot, YText>()\n private yTextAndSlotMap = new WeakMap<YText, Slot>()\n\n set(key: Slot, value: YText): void\n set(key: YText, value: Slot): void\n set(key: any, value: any) {\n if (key instanceof Slot) {\n this.slotAndYTextMap.set(key, value)\n this.yTextAndSlotMap.set(value, key)\n } else {\n this.slotAndYTextMap.set(value, key)\n this.yTextAndSlotMap.set(key, value)\n }\n }\n\n get(key: Slot): YText | null\n get(key: YText): Slot | null\n get(key: any) {\n if (key instanceof Slot) {\n return this.slotAndYTextMap.get(key) || null\n }\n return this.yTextAndSlotMap.get(key) || null\n }\n\n delete(key: Slot | YText) {\n if (key instanceof Slot) {\n const v = this.slotAndYTextMap.get(key)\n this.slotAndYTextMap.delete(key)\n if (v) {\n this.yTextAndSlotMap.delete(v)\n }\n } else {\n const v = this.yTextAndSlotMap.get(key)\n this.yTextAndSlotMap.delete(key)\n if (v) {\n this.slotAndYTextMap.delete(v)\n }\n }\n }\n}\n\ninterface Update {\n record: boolean\n actions: Array<() => void>\n}\n\ninterface UpdateItem {\n record: boolean\n\n action(): void\n}\n\nexport interface SubModelLoaded {\n yType: AbstractType<any>\n yDoc: YDoc\n}\n\n@Injectable()\nexport class Collaborate {\n yDoc = new YDoc()\n slotMap = new SlotMap()\n onAddSubModel: Observable<SubModelLoaded>\n\n private subscriptions: Subscription[] = []\n private updateFromRemote = false\n private addSubModelEvent = new Subject<SubModelLoaded>()\n\n private updateRemoteActions = new WeakMap<YDoc, UpdateItem[]>()\n private noRecord = {}\n\n constructor(private scheduler: Scheduler,\n private registry: Registry,\n private selection: Selection,\n private subModelLoader: SubModelLoader) {\n this.onAddSubModel = this.addSubModelEvent.asObservable()\n }\n\n syncRootComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n this.initSyncEvent(yDoc)\n this.syncComponent(yDoc, sharedComponent, localComponent)\n }\n\n syncRootSlot(yDoc: YDoc, sharedSlot: YText, localSlot: Slot) {\n if (sharedSlot.length) {\n localSlot.retain(0)\n localSlot.delete(localSlot.length)\n localSlot.cleanAttributes()\n localSlot.cleanFormats()\n this.initLocalSlotBySharedSlot(sharedSlot, localSlot)\n } else {\n yDoc.transact(() => {\n this.initSharedSlotByLocalSlot(sharedSlot, localSlot)\n })\n }\n this.initSyncEvent(yDoc)\n this.syncSlot(sharedSlot, localSlot)\n }\n\n getAbstractSelection(position: CursorPosition): AbstractSelection | null {\n const anchorPosition = createAbsolutePositionFromRelativePosition(position.anchor.position, position.anchor.doc)\n const focusPosition = createAbsolutePositionFromRelativePosition(position.focus.position, position.focus.doc)\n if (anchorPosition && focusPosition) {\n const focusSlot = this.slotMap.get(focusPosition.type as YText)\n const anchorSlot = this.slotMap.get(anchorPosition.type as YText)\n if (focusSlot && anchorSlot) {\n return {\n anchorSlot,\n anchorOffset: anchorPosition.index,\n focusSlot,\n focusOffset: focusPosition.index\n }\n }\n }\n return null\n }\n\n getRelativeCursorLocation(): CursorPosition | null {\n const {anchorSlot, anchorOffset, focusSlot, focusOffset} = this.selection\n if (anchorSlot) {\n const anchorYText = this.slotMap.get(anchorSlot)\n if (anchorYText) {\n const anchorPosition = createRelativePositionFromTypeIndex(anchorYText, anchorOffset!)\n if (focusSlot) {\n const focusYText = this.slotMap.get(focusSlot)\n if (focusYText) {\n const focusPosition = createRelativePositionFromTypeIndex(focusYText, focusOffset!)\n return {\n focus: {\n doc: focusYText.doc!,\n position: focusPosition\n },\n anchor: {\n doc: anchorYText.doc!,\n position: anchorPosition\n }\n }\n }\n }\n }\n }\n return null\n }\n\n restoreCursorPosition(position: CursorPosition | null) {\n if (!position) {\n this.selection.unSelect()\n return\n }\n const selection = this.getAbstractSelection(position)\n if (selection) {\n this.selection.setBaseAndExtent(\n selection.anchorSlot,\n selection.anchorOffset,\n selection.focusSlot,\n selection.focusOffset)\n }\n }\n\n private initSyncEvent(yDoc: YDoc) {\n this.subscriptions.push(\n this.scheduler.onDocChanged.pipe(\n map(item => {\n return item.filter(i => {\n return i.from !== ChangeOrigin.Remote\n })\n }),\n filter(item => {\n return item.length\n })\n ).subscribe(() => {\n const updates: Update[] = []\n\n let update: Update | null = null\n\n const updateRemoteActions = this.updateRemoteActions.get(yDoc) || []\n\n for (const item of updateRemoteActions) {\n if (!update) {\n update = {\n record: item.record,\n actions: []\n }\n updates.push(update)\n }\n if (update.record === item.record) {\n update.actions.push(item.action)\n } else {\n update = {\n record: item.record,\n actions: [item.action]\n }\n updates.push(update)\n }\n }\n\n this.updateRemoteActions.delete(yDoc)\n\n for (const item of updates) {\n yDoc.transact(() => {\n item.actions.forEach(fn => {\n fn()\n })\n }, item.record ? yDoc : this.noRecord)\n }\n })\n )\n }\n\n private syncComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n let state = sharedComponent.get('state') as YMap<any>\n if (!state) {\n state = new YMap<any>()\n this.syncLocalMapToSharedMap(localComponent.state as ProxyModel<Record<string, any>>, state)\n yDoc.transact(() => {\n sharedComponent.set('state', state)\n })\n } else {\n Object.keys(localComponent.state).forEach(key => {\n Reflect.deleteProperty(localComponent.state, key)\n })\n this.syncSharedMapToLocalMap(state, localComponent.state as ProxyModel<Record<string, any>>)\n }\n }\n\n private syncSlot(sharedSlot: YText, localSlot: Slot) {\n const syncRemote = (ev: YTextEvent, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n localSlot.retain(0)\n ev.keysChanged.forEach(key => {\n const change = ev.keys.get(key)\n if (!change) {\n return\n }\n const updateType = change.action\n if (updateType === 'update' || updateType === 'add') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, sharedSlot.getAttribute(key))\n }\n } else if (updateType === 'delete') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.removeAttribute(attribute)\n }\n }\n })\n ev.delta.forEach(action => {\n if (Reflect.has(action, 'retain')) {\n if (action.attributes) {\n const start = localSlot.index\n const end = start + action.retain!\n const formats = remoteRetainFormatsToLocal(this.registry, localSlot, start, end, action.attributes)\n if (formats.length) {\n localSlot.retain(action.retain!, formats)\n }\n }\n localSlot.retain(localSlot.index + action.retain!)\n } else if (action.insert) {\n const index = localSlot.index\n let length = 1\n if (typeof action.insert === 'string') {\n length = action.insert.length\n localSlot.insert(action.insert, remoteInsertFormatsToLocal(this.registry, action.attributes))\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component)\n }\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! > index) {\n this.selection.setAnchor(localSlot, this.selection.anchorOffset! + length)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! > index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! + length)\n }\n }\n } else if (action.delete) {\n const index = localSlot.index\n localSlot.delete(action.delete)\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! >= index) {\n this.selection.setAnchor(localSlot, this.selection.startOffset! - action.delete)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! >= index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! - action.delete)\n }\n }\n }\n })\n })\n }\n sharedSlot.observe(syncRemote)\n\n const sub = localSlot.onContentChange.subscribe(actions => {\n this.runLocalUpdate(sharedSlot.doc, true, () => {\n let offset = 0\n let length = 0\n for (const action of actions) {\n if (action.type === 'retain') {\n const formats = action.formats\n if (formats) {\n const attrs = localFormatsToYjsAttributes(\n this.registry,\n localSlot,\n offset,\n offset + action.offset,\n formats,\n )\n if (Object.keys(attrs).length) {\n sharedSlot.format(offset, action.offset, attrs)\n }\n } else {\n offset = action.offset\n }\n } else if (action.type === 'contentInsert') {\n const delta = sharedSlot.toDelta()\n const isEmpty = delta.length === 1 && delta[0].insert === Slot.emptyPlaceholder\n if (typeof action.content === 'string') {\n length = action.content.length\n sharedSlot.insert(offset, action.content, localFormatsRecordToRemote(this.registry, action.formats) || {})\n } else {\n length = 1\n const sharedComponent = this.createSharedComponentByLocalComponent(action.ref as Component)\n sharedSlot.insertEmbed(offset, sharedComponent, localFormatsRecordToRemote(this.registry, action.formats) || {})\n }\n\n if (isEmpty && offset === 0) {\n sharedSlot.delete(sharedSlot.length - 1, 1)\n }\n offset += length\n } else if (action.type === 'delete') {\n const delta = sharedSlot.toDelta()\n if (sharedSlot.length) {\n sharedSlot.delete(offset, action.count)\n }\n if (sharedSlot.length === 0) {\n sharedSlot.insert(0, '\\n', delta[0]?.attributes)\n }\n } else if (action.type === 'attrSet') {\n sharedSlot.setAttribute(action.name, action.value)\n } else if (action.type === 'attrDelete') {\n sharedSlot.removeAttribute(action.name)\n }\n }\n })\n })\n\n this.slotMap.set(localSlot, sharedSlot)\n\n localSlot.__changeMarker__.addDetachCallback(() => {\n this.slotMap.delete(localSlot)\n sharedSlot.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n\n destroy() {\n this.subscriptions.forEach(i => i.unsubscribe())\n this.subscriptions = []\n }\n\n private syncSharedMapToLocalMap(sharedMap: YMap<any>, localMap: ProxyModel<Record<string, any>>) {\n sharedMap.forEach((value, key) => {\n localMap[key] = toRaw(this.createLocalModelBySharedByModel(value))\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createLocalMapBySharedMap(sharedMap: YMap<any>): ProxyModel<Record<string, any>> {\n const localMap = observe({}) as ProxyModel<Record<string, any>>\n this.syncSharedMapToLocalMap(sharedMap, localMap)\n return localMap\n }\n\n private createLocalArrayBySharedArray(sharedArray: YArray<any>): ProxyModel<any[]> {\n const raw: any[] = []\n for (let i = 0; i < sharedArray.length; i++) {\n const item = sharedArray.get(i)\n if (!this.isArrayHoleElement(item)) {\n raw[i] = toRaw(this.createLocalModelBySharedByModel(item))\n }\n }\n raw.length = sharedArray.length\n const localArray = observe(raw) as ProxyModel<any[]>\n this.syncArray(sharedArray, localArray)\n return localArray\n }\n\n private syncLocalMapToSharedMap(localMap: ProxyModel<Record<string, any>>, sharedMap: YMap<any>) {\n Object.entries(localMap).forEach(([key, value]) => {\n sharedMap.set(key, this.createSharedModelByLocalModel(value))\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createSharedMapByLocalMap(localMap: ProxyModel<Record<string, any>>): YMap<any> {\n const sharedMap = new YMap<any>()\n this.syncLocalMapToSharedMap(localMap, sharedMap)\n return sharedMap\n }\n\n private createSharedArrayByLocalArray(localArray: ProxyModel<any[]>): YArray<any> {\n const sharedArray = new YArray<any>()\n for (let i = 0; i < localArray.length; i++) {\n if (i in localArray) {\n sharedArray.push([this.sharedModelForArraySlot(localArray[i])])\n } else {\n sharedArray.push([this.createArrayHoleXmlElement()])\n }\n }\n this.syncArray(sharedArray, localArray)\n return sharedArray\n }\n\n private createSharedSlotByLocalSlot(localSlot: Slot): YText {\n const sharedSlot = new YText()\n const isAsyncSlot = localSlot instanceof AsyncSlot\n sharedSlot.setAttribute('schema', [...localSlot.schema])\n sharedSlot.setAttribute('type', isAsyncSlot ? 'async' : 'sync')\n\n if (isAsyncSlot) {\n let isDestroyed = false\n const sharedMetadata = this.createSharedMapByLocalMap(localSlot.metadata)\n sharedSlot.setAttribute('metadata', sharedMetadata)\n this.subModelLoader.createSubModelBySlot(localSlot).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const content = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncLocalMapToSharedMap(localSlot.state, state)\n this.initSharedSlotByLocalSlot(content, localSlot)\n this.syncSlot(content, localSlot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: content\n })\n this.initSyncEvent(subDocument)\n localSlot.loader.markAsLoaded()\n })\n localSlot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return sharedSlot\n }\n\n const sharedSlotState = new YMap()\n this.syncLocalMapToSharedMap(localSlot.state as ProxyModel<Record<string, any>>, sharedSlotState)\n sharedSlot.setAttribute('state', sharedSlotState)\n\n const sharedContent = new YText()\n this.initSharedSlotByLocalSlot(sharedContent, localSlot)\n sharedSlot.insertEmbed(0, sharedContent)\n this.syncSlot(sharedContent, localSlot)\n return sharedSlot\n }\n\n private initSharedSlotByLocalSlot(sharedContent: YText, localSlot: Slot) {\n let offset = 0\n localSlot.toDelta().forEach(i => {\n const formats = i.formats ? formatsArrayToRemoteRecord(this.registry, i.formats) : undefined\n if (typeof i.insert === 'string') {\n sharedContent.insert(offset, i.insert, formats)\n } else {\n const sharedComponent = this.createSharedComponentByLocalComponent(i.insert)\n sharedContent.insertEmbed(offset, sharedComponent, formats)\n }\n offset += i.insert.length\n })\n localSlot.getAttributes().forEach(item => {\n sharedContent.setAttribute(item[0].name, item[1])\n })\n }\n\n private createLocalSlotBySharedSlot(sharedSlot: YText): Slot {\n const type = sharedSlot.getAttribute('type')\n const schema = sharedSlot.getAttribute('schema')\n\n if (type === 'async') {\n const metadata = sharedSlot.getAttribute('metadata') as YMap<any>\n const slot = new AsyncSlot(schema || [], {}, {})\n this.syncSharedMapToLocalMap(metadata, slot.metadata as ProxyModel<Record<string, any>>)\n const loadedSubDocument = this.subModelLoader.getLoadedModelBySlot(slot)\n if (loadedSubDocument) {\n const subContent = loadedSubDocument.getText('content')\n const data = loadedSubDocument.getMap('state')\n this.syncSharedMapToLocalMap(data, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(loadedSubDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: loadedSubDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n return slot\n }\n let isDestroyed = false\n slot.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelBySlot(slot)\n }).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const subContent = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncSharedMapToLocalMap(state, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(subDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n })\n slot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return slot\n }\n\n const contentDelta = sharedSlot.toDelta()\n const content = contentDelta[0]?.insert\n\n if (!(content instanceof YText)) {\n throw collaborateErrorFn('shared slot content type is not `YText`.')\n }\n\n const localSlot = new Slot(schema || [], {})\n\n const sharedSlotState = sharedSlot.getAttribute('state')\n this.syncSharedMapToLocalMap(sharedSlotState, localSlot.state as ProxyModel<Record<string, any>>)\n\n this.initLocalSlotBySharedSlot(content, localSlot)\n\n this.syncSlot(content, localSlot)\n return localSlot\n }\n\n private initLocalSlotBySharedSlot(content: YText, localSlot: Slot) {\n const delta = content.toDelta()\n\n const attrs = content.getAttributes()\n Object.keys(attrs).forEach(key => {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, attrs[key])\n }\n })\n for (const action of delta) {\n if (action.insert) {\n if (typeof action.insert === 'string') {\n const formats = remoteInsertFormatsToLocal(this.registry, action.attributes)\n localSlot.insert(action.insert, formats)\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component, remoteInsertFormatsToLocal(this.registry, action.attributes))\n }\n } else {\n throw collaborateErrorFn('unexpected delta action.')\n }\n }\n }\n\n private createSharedModelByLocalModel(localModel: any) {\n if (localModel instanceof Slot) {\n return this.createSharedSlotByLocalSlot(localModel)\n }\n if (Array.isArray(localModel)) {\n return this.createSharedArrayByLocalArray(localModel as ProxyModel<any[]>)\n }\n if (typeof localModel === 'object' && localModel !== null) {\n return this.createSharedMapByLocalMap(localModel)\n }\n return localModel\n }\n\n private createLocalModelBySharedByModel(sharedModel: any) {\n if (sharedModel instanceof YMap) {\n return this.createLocalMapBySharedMap(sharedModel)\n }\n if (sharedModel instanceof YArray) {\n return this.createLocalArrayBySharedArray(sharedModel)\n }\n if (sharedModel instanceof YText) {\n return this.createLocalSlotBySharedSlot(sharedModel)\n }\n return sharedModel\n }\n\n\n private createSharedComponentByLocalComponent(component: Component | AsyncComponent): YMap<any> {\n const sharedComponent = new YMap()\n sharedComponent.set('name', component.name)\n\n if (component instanceof AsyncComponent) {\n sharedComponent.set('type', 'async')\n const sharedMetadata = this.createSharedMapByLocalMap(component.metadata)\n sharedComponent.set('metadata', sharedMetadata)\n const state = component.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n this.subModelLoader.createSubModelByComponent(component).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, component)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n this.initSyncEvent(subDocument)\n component.loader.markAsLoaded()\n })\n return sharedComponent\n }\n\n const sharedState = this.createSharedMapByLocalMap(component.state as ProxyModel<Record<string, any>>)\n sharedComponent.set('state', sharedState)\n sharedComponent.set('type', 'sync')\n return sharedComponent\n }\n\n private createLocalComponentBySharedComponent(yMap: YMap<any>): Component {\n const componentName = yMap.get('name') as string\n const type = yMap.get('type') as string\n\n let instance: Component<any> | null\n if (type === 'async') {\n instance = this.registry.createComponentByData(componentName, {}, {})\n if (instance instanceof AsyncComponent) {\n const sharedMetadata = yMap.get('metadata') as YMap<any>\n this.syncSharedMapToLocalMap(sharedMetadata, instance.metadata)\n const loadedSubDocument = this.subModelLoader.getLoadedModelByComponent(instance)\n if (loadedSubDocument) {\n const state = loadedSubDocument.getMap('state')\n this.syncComponent(loadedSubDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: loadedSubDocument\n })\n instance.loader.markAsLoaded()\n return instance\n }\n\n const state = instance.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n instance.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelByComponent(instance as AsyncComponent)\n })\n .then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n ;(instance as AsyncComponent).loader.markAsLoaded()\n })\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n } else if (instance instanceof Component) {\n throw collaborateErrorFn(`component name \\`${componentName}\\` is not a async component.`)\n }\n } else {\n const sharedState = yMap.get('state') as YMap<any>\n const state = this.createLocalMapBySharedMap(sharedState)\n instance = this.registry.createComponentByData(componentName, state)\n }\n if (instance) {\n return instance\n }\n\n throw collaborateErrorFn(`cannot find component factory \\`${componentName}\\`.`)\n }\n\n private createArrayHoleXmlElement() {\n return new XmlElement(ARRAY_HOLE_ELEMENT_NODE)\n }\n\n private isArrayHoleElement(sharedModel: any): boolean {\n return sharedModel instanceof XmlElement && sharedModel.nodeName === ARRAY_HOLE_ELEMENT_NODE\n }\n\n /**\n * 仅用于 YArray ↔ 可观察数组:本地 `undefined` 槽位用 XmlElement 占位同步到 Yjs(不与对象字面量同步混用)。\n */\n private sharedModelForArraySlot(localItem: any) {\n if (localItem === undefined) {\n return this.createArrayHoleXmlElement()\n }\n return this.createSharedModelByLocalModel(localItem)\n }\n\n /**\n * 在可观察数组中插入稀疏空洞(与 YArray 中 XmlElement 占位对齐)。\n * 仅在远端同步路径调用;先改 raw,再用与 {@link ArrayProxyHandler} `length` 增长一致的原子命令\n * `retain` + `insert`(`undefined` 槽)记录,`unApply` 为 `retain` + `delete`。\n * `runLocalUpdate` 在 `updateFromRemote` 为 true 时会跳过,不会把洞再写回 Y。\n */\n private insertSparseHole(localArray: ProxyModel<any[]>, atIndex: number) {\n const raw = toRaw(localArray) as any[]\n const oldLen = raw.length\n this.applySparseHoleToRaw(raw, atIndex)\n const holeCount = atIndex >= oldLen ? atIndex + 1 - oldLen : 1\n const newTail: any[] = []\n if (atIndex >= oldLen) {\n for (let i = oldLen; i < oldLen + holeCount; i++) {\n newTail.push((raw as any)[i])\n }\n } else {\n newTail.push(undefined)\n }\n const changeMarker = localArray.__changeMarker__\n changeMarker.beforeChange()\n const parentModel = getObserver(raw)!\n const subModels = newTail.map(item => {\n const m = observe(item)\n attachModel(parentModel, m)\n return m\n })\n const retainOffset = atIndex >= oldLen ? oldLen : atIndex\n changeMarker.markAsDirtied({\n paths: [],\n apply: [\n {type: 'retain', offset: retainOffset},\n {type: 'insert', data: valueToJSON(newTail), ref: subModels}\n ],\n unApply: [\n {type: 'retain', offset: retainOffset},\n {type: 'delete', count: holeCount}\n ]\n })\n }\n\n /** 与 Y 洞位对齐的稀疏洞写入,仅操作 raw */\n private applySparseHoleToRaw(raw: any[], atIndex: number) {\n const len = raw.length\n if (atIndex >= len) {\n raw.length = atIndex + 1\n return\n }\n for (let i = len; i > atIndex; i--) {\n if ((i - 1) in raw) {\n raw[i] = raw[i - 1]\n } else {\n delete raw[i]\n }\n }\n delete raw[atIndex]\n }\n\n /**\n * 双向同步数组\n * @param sharedArray\n * @param localArray\n * @private\n */\n private syncArray(sharedArray: YArray<any>, localArray: ProxyModel<any[]>) {\n function logError(type: string) {\n console.error(collaborateErrorFn(`${type} error, length exceeded, path in ${localArray.__changeMarker__.getPaths().join('/')}`))\n }\n\n const sub = localArray.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedArray.doc, !localArray.__changeMarker__.irrevocableUpdate, () => {\n let index = 0\n for (const action of actions) {\n switch (action.type) {\n case 'retain':\n index = action.offset\n break\n case 'insert': {\n const ref = action.ref\n if (!Array.isArray(ref)) {\n throw collaborateErrorFn('The insertion action must have a reference value.')\n }\n const data = ref.map(item => {\n return this.sharedModelForArraySlot(item)\n })\n if (index <= sharedArray.length) {\n sharedArray.insert(index, data)\n } else {\n sharedArray.insert(sharedArray.length, data)\n logError('insert')\n }\n }\n break\n case 'delete':\n if (action.count <= 0) {\n break\n }\n if (index < sharedArray.length) {\n sharedArray.delete(index, action.count)\n } else {\n logError('delete')\n }\n break\n case 'setIndex':\n if (action.index < sharedArray.length) {\n sharedArray.delete(action.index, 1)\n sharedArray.insert(action.index, [this.sharedModelForArraySlot(action.ref)])\n } else {\n sharedArray.insert(sharedArray.length, [this.sharedModelForArraySlot(action.ref)])\n logError('setIndex')\n }\n break\n }\n }\n })\n })\n\n const syncRemote = (ev: YArrayEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n let index = 0\n ev.delta.forEach((action) => {\n if (Reflect.has(action, 'retain')) {\n index += action.retain as number\n } else if (action.insert) {\n let at = index\n for (const item of action.insert as Array<any>) {\n if (this.isArrayHoleElement(item)) {\n this.insertSparseHole(localArray, at)\n } else {\n localArray.splice(at, 0, this.createLocalModelBySharedByModel(item))\n }\n at++\n }\n index = at\n } else if (action.delete) {\n localArray.splice(index, action.delete)\n }\n })\n })\n }\n\n sharedArray.observe(syncRemote)\n localArray.__changeMarker__.addDetachCallback(() => {\n sub.unsubscribe()\n sharedArray.unobserve(syncRemote)\n })\n }\n\n /**\n * 双向同步对象\n * @param sharedObject\n * @param localObject\n * @private\n */\n private syncObject(sharedObject: YMap<any>, localObject: ProxyModel<Record<string, any>>) {\n const syncRemote = (ev: YMapEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n ev.changes.keys.forEach((item, key) => {\n if (item.action === 'add' || item.action === 'update') {\n const value = sharedObject.get(key)\n localObject[key] = this.createLocalModelBySharedByModel(value)\n } else {\n Reflect.deleteProperty(localObject, key)\n }\n })\n })\n }\n\n sharedObject.observe(syncRemote)\n\n const sub = localObject.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedObject.doc, !localObject.__changeMarker__.irrevocableUpdate, () => {\n for (const action of actions) {\n switch (action.type) {\n case 'propSet': {\n const subModel = this.createSharedModelByLocalModel(action.ref)\n sharedObject.set(action.key, subModel)\n if (sharedObject.size === 0) {\n // 奇怪的 bug,设置了子模型,但子模型会标记为 deleted,导致设置后无效\n console.error(collaborateErrorFn(`prop set error, key is ${action.key}`))\n }\n }\n break\n case 'propDelete':\n sharedObject.delete(action.key)\n break\n }\n }\n })\n })\n\n localObject.__changeMarker__.addDetachCallback(function () {\n sharedObject.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n private runLocalUpdate(yDoc: YDoc | null, record: boolean, fn: () => void) {\n if (this.updateFromRemote || !yDoc) {\n return\n }\n let changeList = this.updateRemoteActions.get(yDoc)\n if (!changeList) {\n changeList = []\n this.updateRemoteActions.set(yDoc, changeList)\n }\n changeList.push({\n record,\n action: fn\n })\n }\n\n private runRemoteUpdate(tr: Transaction, fn: () => void) {\n if (tr.origin === tr.doc) {\n return\n }\n this.updateFromRemote = true\n if (tr.origin instanceof UndoManager) {\n this.scheduler.historyApplyTransact(fn)\n } else {\n this.scheduler.remoteUpdateTransact(fn)\n }\n this.updateFromRemote = false\n }\n}\n\nfunction collectStackableValuesInRange(\n slot: Slot,\n formatter: StackableFormatter<any>,\n start: number,\n end: number,\n): FormatValue[] {\n const values: FormatValue[] = []\n slot.getFormatRangesByFormatter(formatter, start, end).forEach(range => {\n const v = range.value\n if (!values.some(existing => Format.equal(existing, v))) {\n values.push(v)\n }\n })\n return values\n}\n\nfunction serializeFormatForYjs(value: FormatValue): FormatValue {\n return valueToJSON(value) as FormatValue\n}\n\nexport function localFormatsToYjsAttributes(\n registry: Registry,\n slot: Slot,\n start: number,\n end: number,\n localFormats: Record<string, FormatValue>,\n): Record<string, FormatValue | FormatValue[] | null> {\n const attrs: Record<string, FormatValue | FormatValue[] | null> = {}\n Object.keys(localFormats).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (!formatter) {\n return\n }\n if (formatter instanceof StackableFormatter) {\n const values = collectStackableValuesInRange(slot, formatter, start, end)\n attrs[key] = values.length ? values.map(serializeFormatForYjs) : null\n } else {\n attrs[key] = localFormats[key]\n }\n })\n return attrs\n}\n\nexport function localFormatsRecordToRemote(\n registry: Registry,\n formats: Record<string, FormatValue> | undefined,\n): Record<string, FormatValue | FormatValue[] | null> | undefined {\n if (!formats) {\n return undefined\n }\n const record: Record<string, FormatValue | FormatValue[] | null> = {}\n Object.keys(formats).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (!formatter) {\n return\n }\n const incoming = formats[key]\n if (formatter instanceof StackableFormatter) {\n if (incoming === null || incoming === undefined) {\n record[key] = null\n } else {\n record[key] = [serializeFormatForYjs(incoming)]\n }\n } else {\n record[key] = incoming\n }\n })\n return Object.keys(record).length ? record : undefined\n}\n\nexport function formatsArrayToRemoteRecord(\n registry: Registry,\n formats: Formats,\n): Record<string, FormatValue | FormatValue[]> | undefined {\n const record: Record<string, FormatValue | FormatValue[]> = {}\n formats.forEach(([formatter, value]) => {\n if (!registry.getFormatter(formatter.name)) {\n return\n }\n if (formatter instanceof StackableFormatter) {\n const serialized = serializeFormatForYjs(value)\n const current = record[formatter.name]\n if (Array.isArray(current)) {\n current.push(serialized)\n } else {\n record[formatter.name] = [serialized]\n }\n } else {\n record[formatter.name] = value\n }\n })\n return Object.keys(record).length ? record : undefined\n}\n\nfunction stackableRemoteRetainToLocal(\n slot: Slot,\n formatter: StackableFormatter<any>,\n start: number,\n end: number,\n raw: FormatValue | FormatValue[] | null | undefined,\n): Formats {\n const formats: Formats = []\n const localValues = collectStackableValuesInRange(slot, formatter, start, end)\n\n if (raw === null || raw === undefined || (Array.isArray(raw) && raw.length === 0)) {\n if (localValues.length > 0) {\n formats.push([formatter, new PendingErasure(true)])\n }\n return formats\n }\n\n const remoteValues = Array.isArray(raw) ? raw : [raw]\n localValues.forEach(localValue => {\n if (!remoteValues.some(remoteValue => Format.equal(localValue, remoteValue))) {\n formats.push([formatter, new PendingErasure(false, localValue)])\n }\n })\n remoteValues.forEach(remoteValue => {\n if (!localValues.some(localValue => Format.equal(localValue, remoteValue))) {\n formats.push([formatter, remoteValue])\n }\n })\n return formats\n}\n\nfunction stackableRemoteInsertToLocal(\n formatter: StackableFormatter<any>,\n raw: FormatValue | FormatValue[] | null | undefined,\n): Formats {\n if (raw === null || raw === undefined || (Array.isArray(raw) && raw.length === 0)) {\n return []\n }\n const remoteValues = Array.isArray(raw) ? raw : [raw]\n return remoteValues.map(value => [formatter, value])\n}\n\n/** 远程插入内容的格式 → 本地 Formats(新内容无旧状态,可堆叠仅展开远程数组) */\nexport function remoteInsertFormatsToLocal(\n registry: Registry,\n attrs?: Record<string, FormatValue | FormatValue[] | null> | null,\n): Formats {\n const formats: Formats = []\n if (!attrs) {\n return formats\n }\n Object.keys(attrs).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (!formatter) {\n return\n }\n const raw = attrs[key]\n if (formatter instanceof StackableFormatter) {\n formats.push(...stackableRemoteInsertToLocal(formatter, raw))\n return\n }\n formats.push([formatter, raw as FormatValue])\n })\n return formats\n}\n\n/** 远程 retain 格式 → 本地 Formats(可堆叠与区间内本地快照做差量对齐) */\nexport function remoteRetainFormatsToLocal(\n registry: Registry,\n slot: Slot,\n start: number,\n end: number,\n attrs?: Record<string, FormatValue | FormatValue[] | null> | null,\n): Formats {\n const formats: Formats = []\n if (!attrs) {\n return formats\n }\n Object.keys(attrs).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (!formatter) {\n return\n }\n const raw = attrs[key]\n if (formatter instanceof StackableFormatter) {\n formats.push(...stackableRemoteRetainToLocal(slot, formatter, start, end, raw))\n return\n }\n formats.push([formatter, raw as FormatValue])\n })\n return formats\n}\n","import { Inject, Injectable, Optional } from '@viewfly/core'\nimport { History, HISTORY_STACK_SIZE, makeError, RootComponentRef, Scheduler } from '@textbus/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n Item,\n Transaction,\n UndoManager\n} from 'yjs'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\n\nexport abstract class CustomUndoManagerConfig {\n abstract captureTimeout?: number\n\n abstract captureTransaction?(arg0: Transaction): boolean\n\n abstract deleteFilter?(arg0: Item): boolean\n}\n\nconst collabHistoryErrorFn = makeError('CollabHistory')\n\n@Injectable()\nexport class CollabHistory implements History {\n onBack: Observable<void>\n onForward: Observable<void>\n onChange: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.manager?.canUndo() || false\n }\n\n get canForward() {\n return this.manager?.canRedo() || false\n }\n\n private manager: UndoManager | null = null\n\n private historyItems: Array<CollaborateHistorySelectionPosition> = []\n private index = 0\n private subscriptions: Subscription[] = []\n\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private changeEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n\n constructor(private rootComponentRef: RootComponentRef,\n private collaborate: Collaborate,\n private scheduler: Scheduler,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onChange = this.changeEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n\n }\n\n listen() {\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n const undoManagerConfig = this.undoManagerConfig || {}\n const manager = new UndoManager(root, {\n captureTimeout: typeof undoManagerConfig.captureTimeout === 'number' ? undoManagerConfig.captureTimeout : 500,\n trackedOrigins: new Set<any>([this.collaborate.yDoc]),\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n this.manager = manager\n\n let beforePosition: CursorPosition | null = null\n this.subscriptions.push(\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n beforePosition = this.collaborate.getRelativeCursorLocation()\n }),\n this.collaborate.onAddSubModel.subscribe(() => {\n throw collabHistoryErrorFn('single document does not support submodels.')\n })\n )\n\n manager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo') {\n if (event.origin === manager) {\n this.index++\n } else {\n this.historyItems.length = this.index\n this.historyItems.push({\n before: beforePosition,\n after: this.collaborate.getRelativeCursorLocation()\n })\n this.index++\n }\n } else {\n this.index--\n }\n if (manager.undoStack.length > this.stackSize) {\n this.historyItems.shift()\n manager.undoStack.shift()\n }\n if (event.origin === this.collaborate.yDoc) {\n this.pushEvent.next()\n }\n this.changeEvent.next()\n })\n manager.on('stack-item-popped', (ev: any) => {\n const index = ev.type === 'undo' ? this.index : this.index - 1\n const position = this.historyItems[index] || null\n const p = ev.type === 'undo' ? position?.before : position?.after\n this.collaborate.restoreCursorPosition(p)\n })\n }\n\n\n back() {\n if (this.canBack) {\n this.manager?.undo()\n this.backEvent.next()\n }\n }\n\n forward() {\n if (this.canForward) {\n this.manager?.redo()\n this.forwardEvent.next()\n }\n }\n\n clear() {\n const last = this.historyItems.pop()\n this.historyItems = last ? [last] : []\n this.index = last ? 1 : 0\n this.manager?.clear()\n this.changeEvent.next()\n }\n\n destroy() {\n this.index = 0\n this.historyItems = []\n this.subscriptions.forEach(i => i.unsubscribe())\n if (this.manager) {\n this.manager.destroy()\n this.manager.captureTransaction = () => true\n this.manager.deleteFilter = () => true\n this.manager.trackedOrigins = new Set([null])\n }\n\n this.manager = null\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\nimport { Textbus } from '@textbus/core'\n\nexport interface Message<T> {\n clientId: number\n message: T\n}\n\n/**\n * 协作消息总线,用于同步各终端消息\n */\nexport abstract class MessageBus<T> {\n onSync: Observable<void>\n protected syncEvent = new Subject<void>()\n\n constructor() {\n this.onSync = this.syncEvent.asObservable()\n }\n\n /**\n * 立即同步消息\n */\n sync() {\n this.syncEvent.next()\n }\n\n /**\n * 当需要同步协作消息是,Textbus 会自动调用,并把返回数据同步到其它终端\n */\n abstract get(textbus: Textbus): T\n\n /**\n * 当远程消息更新时,Textbus 会自动调用\n * @param message\n * @param textbus\n */\n abstract consume(message: Message<T>[], textbus: Textbus): void\n}\n","import { AbstractType, Item, UndoManager, Doc as YDoc } from 'yjs'\nimport { Inject, Injectable, Optional } from '@viewfly/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport { History, HISTORY_STACK_SIZE, RootComponentRef, Scheduler } from '@textbus/core'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\nimport { CustomUndoManagerConfig } from './collab-history'\n\ninterface HistoryStackItem extends CollaborateHistorySelectionPosition {\n undoManagers: UndoManager[]\n}\n\n@Injectable()\nexport class MultipleDocCollabHistory implements History {\n onChange: Observable<void>\n onBack: Observable<void>\n onForward: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.actionStack.length > 0 && this.index > 0\n }\n\n get canForward() {\n return this.actionStack.length > 0 && this.index < this.actionStack.length\n }\n\n isListen = false\n\n private changeEvent = new Subject<void>()\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n private actionStack: HistoryStackItem[] = []\n\n private index = 0\n\n private stackItem: HistoryStackItem | null = null\n private timer: any = null\n private beforePosition: CursorPosition | null = null\n\n private subscription = new Subscription()\n\n private subDocs = new Set<AbstractType<any>>()\n\n private listenerCaches = new Set<UndoManager>()\n\n constructor(private collaborate: Collaborate,\n private scheduler: Scheduler,\n private rootComponentRef: RootComponentRef,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onChange = this.changeEvent.asObservable()\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n }\n\n listen() {\n this.isListen = true\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n this.listenItem(root, this.collaborate.yDoc)\n\n this.subscription.add(\n this.collaborate.onAddSubModel.subscribe(({yType, yDoc}) => {\n if (this.subDocs.has(yType)) {\n return\n }\n this.subDocs.add(yType)\n if (this.isListen) {\n this.listenItem(yType, yDoc)\n }\n }),\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n this.beforePosition = this.collaborate.getRelativeCursorLocation()\n })\n )\n }\n\n forward() {\n if (!this.canForward) {\n return\n }\n clearTimeout(this.timer as any)\n const item = this.actionStack[this.index]\n if (item) {\n for (const i of item.undoManagers) {\n i.redo()\n }\n this.collaborate.restoreCursorPosition(item.after)\n }\n this.index++\n this.forwardEvent.next()\n this.changeEvent.next()\n }\n\n back() {\n if (!this.canBack) {\n return\n }\n clearTimeout(this.timer as any)\n let historyStackItem: HistoryStackItem\n if (this.stackItem) {\n historyStackItem = this.stackItem\n this.stackItem = null\n } else {\n this.index--\n historyStackItem = this.actionStack[this.index]\n }\n let len = historyStackItem.undoManagers.length\n while (len > 0) {\n len--\n historyStackItem.undoManagers[len].undo()\n }\n if (historyStackItem) {\n const beforePosition = historyStackItem.before\n this.collaborate.restoreCursorPosition(beforePosition)\n this.backEvent.next()\n this.changeEvent.next()\n }\n }\n\n clear() {\n this.actionStack = []\n this.stackItem = null\n this.index = 0\n this.beforePosition = null\n clearTimeout(this.timer as any)\n this.listenerCaches.forEach((undoManager) => {\n undoManager.clear()\n })\n this.changeEvent.next()\n }\n\n destroy() {\n this.clear()\n this.beforePosition = this.stackItem = null\n this.subscription.unsubscribe()\n this.listenerCaches.forEach((undoManager) => {\n undoManager.destroy()\n })\n this.subDocs.clear()\n this.listenerCaches.clear()\n }\n\n private listenItem(yType: AbstractType<any>, yDoc: YDoc) {\n const undoManagerConfig = this.undoManagerConfig || {}\n const undoManager = new UndoManager(yType, {\n trackedOrigins: new Set([yDoc]),\n captureTimeout: 0,\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n\n undoManager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo' && !(event.origin instanceof UndoManager)) {\n if (this.index != this.actionStack.length) {\n const redoStack = this.actionStack.slice(this.index)\n redoStack.forEach(item => {\n item.undoManagers.forEach(i => {\n i.clear(false, true)\n })\n })\n this.actionStack.length = this.index\n this.changeEvent.next()\n }\n if (this.stackItem === null) {\n this.stackItem = {\n before: this.beforePosition,\n after: null,\n undoManagers: []\n }\n this.timer = setTimeout(() => {\n if (this.actionStack.length >= this.stackSize) {\n this.actionStack.shift()\n } else {\n this.index++\n }\n // this.beforePosition = this.collaborate.getRelativeCursorLocation()\n this.stackItem!.after = this.beforePosition\n this.actionStack.push(this.stackItem!)\n this.stackItem = null\n this.pushEvent.next()\n this.changeEvent.next()\n }, typeof undoManagerConfig.captureTimeout === 'number' ? undoManagerConfig.captureTimeout : 500)\n }\n\n this.stackItem.undoManagers.push(undoManager)\n }\n })\n\n this.listenerCaches.add(undoManager)\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\n\n/**\n * 协作通信通用接口\n */\nexport abstract class SyncConnector {\n /**\n * 当文档加载完成时触发的观察者\n */\n onLoad: Observable<void>\n /**\n * 当文档 awareness 状态变更时触发的观察者\n */\n onStateChange: Observable<any[]>\n\n protected loadEvent = new Subject<void>()\n protected stateChangeEvent = new Subject<any[]>()\n\n protected constructor() {\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n }\n\n /**\n * 设置 awareness 状态\n * @param key 状态的 key\n * @param data 状态值\n */\n abstract setLocalStateField(key: string, data: Record<string, any>): void\n\n /**\n * 当文档销毁时调用\n */\n abstract onDestroy(): void\n}\n","import { HocuspocusProvider } from '@hocuspocus/provider'\nimport { HocuspocusProviderConfiguration } from '@hocuspocus/provider'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class HocuspocusConnector extends SyncConnector {\n provide: HocuspocusProvider\n\n constructor(config: HocuspocusProviderConfiguration) {\n super()\n this.provide = new HocuspocusProvider({\n ...config,\n onSynced: (data) => {\n config.onSynced?.(data)\n this.loadEvent.next()\n },\n onAwarenessUpdate: (data) => {\n config.onAwarenessUpdate?.(data)\n const states: Message<any>[] = data.states.map(state => {\n return {\n clientId: state.clientId,\n message: state.message as any\n }\n })\n this.stateChangeEvent.next(states)\n },\n })\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.setAwarenessField(key, data)\n }\n\n onDestroy() {\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { Doc as YDoc } from 'yjs'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport interface LocalConnectorOptions {\n /**\n * 与其它连接器一致,会出现在 `onStateChange` 的 `clientId` 中。\n * 多实例场景可传入不同值以模拟多客户端。\n */\n clientId?: number\n}\n\n/**\n * 不经网络的协作连接器,实现与 {@link SyncConnector} 相同的对外行为,\n * 便于在单元测试中配合 {@link CollaborateModule} 使用,无需 WebSocket / Provider。\n *\n * - `onLoad`:在微任务中触发一次,对应远端「已同步可编辑」的时机。\n * - `onStateChange`:在每次 {@link LocalConnector.setLocalStateField} 后发出当前客户端状态,\n * 载荷形状与 `YWebsocketConnector` 一致(`{ clientId, message }`,其中 `message` 为 awareness 上的 `message` 字段)。\n *\n * 第一个参数与 `createConnector(yDoc)` 对齐,便于直接传入 `Collaborate` 的文档;当前实现不读写该 `YDoc`。\n */\nexport class LocalConnector extends SyncConnector {\n readonly clientId: number\n\n private destroyed = false\n private fields: Record<string, any> = {}\n\n constructor(_yDoc?: YDoc, options?: LocalConnectorOptions) {\n super()\n this.clientId = options?.clientId ?? 0\n Promise.resolve().then(() => {\n if (!this.destroyed) {\n this.loadEvent.next()\n }\n })\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n if (this.destroyed) {\n return\n }\n this.fields[key] = data\n this.emitAwarenessStates()\n }\n\n onDestroy() {\n this.destroyed = true\n }\n\n /**\n * 读取当前本地 awareness 字段快照,仅用于测试断言。\n */\n getLocalAwarenessSnapshot(): Readonly<Record<string, any>> {\n return { ...this.fields }\n }\n\n private emitAwarenessStates() {\n const states: Message<any>[] = []\n states.push({\n clientId: this.clientId,\n message: this.fields.message\n })\n this.stateChangeEvent.next(states)\n }\n}\n","import { Doc as YDoc } from 'yjs'\nimport { WebsocketProvider } from 'y-websocket'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class YWebsocketConnector extends SyncConnector {\n provide: WebsocketProvider\n\n private onSync = (is: boolean) => {\n if (is) {\n this.loadEvent.next()\n }\n }\n\n private onUpdate = () => {\n const syncStates: Message<any>[] = []\n this.provide.awareness.getStates().forEach((state, id) => {\n syncStates.push({\n clientId: id,\n message: state.message,\n })\n })\n this.stateChangeEvent.next(syncStates)\n }\n\n constructor(url: string, roomName: string, yDoc: YDoc) {\n super()\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n this.provide = new WebsocketProvider(url, roomName, yDoc)\n\n this.provide.once('sync', this.onSync)\n this.provide.awareness.on('update', this.onUpdate)\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.awareness.setLocalStateField(key, data)\n }\n\n onDestroy() {\n this.provide.awareness.off('update', this.onUpdate)\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Subscription } from '@tanbo/stream'\nimport { Provider } from '@viewfly/core'\nimport { Doc as YDoc } from 'yjs'\n\nimport { CollabHistory, Collaborate, MessageBus, NonSubModelLoader, SubModelLoader, SyncConnector } from './base/_api'\n\nexport interface CollaborateConfig {\n createConnector(yDoc: YDoc): SyncConnector\n\n onlyLoad?: boolean\n}\n\nexport class CollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n CollabHistory,\n {\n provide: History,\n useExisting: CollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useClass: NonSubModelLoader\n }\n ]\n\n private timer: any = null\n\n constructor(public config: CollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Provider } from '@viewfly/core'\nimport { Subscription } from '@tanbo/stream'\n\nimport { Collaborate, SyncConnector, MultipleDocCollabHistory, SubModelLoader, MessageBus } from './base/_api'\nimport { CollaborateConfig } from './collaborate-module'\n\nexport interface MultipleDocCollaborateConfig extends CollaborateConfig {\n subModelLoader: SubModelLoader\n}\n\nexport class MultipleDocumentCollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n MultipleDocCollabHistory,\n {\n provide: History,\n useExisting: MultipleDocCollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useFactory: () => {\n return this.config.subModelLoader\n }\n }\n ]\n\n private timer: any = null\n\n constructor(public config: MultipleDocCollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n"],"names":["subModelLoaderErrorFn","makeError","SubModelLoader","NonSubModelLoader","_call_super","createSubModelBySlot","createSubModelByComponent","loadSubModelByComponent","loadSubModelBySlot","getLoadedModelBySlot","getLoadedModelByComponent","ARRAY_HOLE_ELEMENT_NODE","collaborateErrorFn","SlotMap","_define_property","slotAndYTextMap","WeakMap","yTextAndSlotMap","set","key","value","_instanceof","Slot","get","delete","v","Collaborate","scheduler","subModelLoader","yDoc","slotMap","onAddSubModel","subscriptions","updateFromRemote","addSubModelEvent","updateRemoteActions","noRecord","registry","selection","YDoc","Subject","asObservable","syncRootComponent","sharedComponent","localComponent","initSyncEvent","syncComponent","syncRootSlot","sharedSlot","localSlot","length","retain","cleanAttributes","cleanFormats","initLocalSlotBySharedSlot","transact","initSharedSlotByLocalSlot","syncSlot","getAbstractSelection","position","anchorPosition","createAbsolutePositionFromRelativePosition","anchor","doc","focusPosition","focus","focusSlot","type","anchorSlot","anchorOffset","index","focusOffset","getRelativeCursorLocation","anchorYText","createRelativePositionFromTypeIndex","focusYText","restoreCursorPosition","unSelect","setBaseAndExtent","push","onDocChanged","pipe","map","item","filter","i","from","ChangeOrigin","Remote","subscribe","updates","update","record","actions","action","forEach","fn","state","YMap","syncLocalMapToSharedMap","Object","keys","Reflect","deleteProperty","syncSharedMapToLocalMap","syncRemote","ev","tr","runRemoteUpdate","keysChanged","change","updateType","attribute","getAttribute","setAttribute","removeAttribute","delta","has","attributes","start","end","formats","remoteRetainFormatsToLocal","insert","remoteInsertFormatsToLocal","component","createLocalComponentBySharedComponent","isSelected","origin","UndoManager","setAnchor","setFocus","startOffset","observe","sub","onContentChange","runLocalUpdate","offset","attrs","localFormatsToYjsAttributes","format","toDelta","isEmpty","emptyPlaceholder","content","localFormatsRecordToRemote","createSharedComponentByLocalComponent","ref","insertEmbed","count","name","__changeMarker__","addDetachCallback","unobserve","unsubscribe","destroy","sharedMap","localMap","toRaw","createLocalModelBySharedByModel","syncObject","createLocalMapBySharedMap","createLocalArrayBySharedArray","sharedArray","raw","isArrayHoleElement","localArray","syncArray","entries","createSharedModelByLocalModel","createSharedMapByLocalMap","createSharedArrayByLocalArray","YArray","sharedModelForArraySlot","createArrayHoleXmlElement","createSharedSlotByLocalSlot","YText","isAsyncSlot","AsyncSlot","schema","isDestroyed","sharedMetadata","metadata","then","subDocument","getText","getMap","next","yType","loader","markAsLoaded","sharedSlotState","sharedContent","formatsArrayToRemoteRecord","undefined","getAttributes","createLocalSlotBySharedSlot","contentDelta","slot","loadedSubDocument","subContent","data","onRequestLoad","toPromise","localModel","Array","isArray","_type_of","sharedModel","AsyncComponent","sharedState","yMap","componentName","instance","createComponentByData","Component","XmlElement","nodeName","localItem","insertSparseHole","atIndex","oldLen","applySparseHoleToRaw","holeCount","newTail","changeMarker","beforeChange","parentModel","getObserver","subModels","m","attachModel","retainOffset","markAsDirtied","paths","apply","valueToJSON","unApply","len","logError","console","error","getPaths","join","onSelfChange","irrevocableUpdate","at","splice","sharedObject","localObject","changes","subModel","size","changeList","historyApplyTransact","remoteUpdateTransact","collectStackableValuesInRange","formatter","values","getFormatRangesByFormatter","range","some","existing","Format","equal","serializeFormatForYjs","localFormats","getFormatter","StackableFormatter","incoming","serialized","current","stackableRemoteRetainToLocal","localValues","PendingErasure","remoteValues","localValue","remoteValue","stackableRemoteInsertToLocal","CustomUndoManagerConfig","collabHistoryErrorFn","CollabHistory","collaborate","stackSize","onBack","onForward","onChange","onPush","manager","historyItems","backEvent","forwardEvent","changeEvent","pushEvent","rootComponentRef","undoManagerConfig","canBack","canUndo","canForward","canRedo","listen","root","rootComponent","captureTimeout","trackedOrigins","Set","captureTransaction","arg","deleteFilter","beforePosition","onLocalChangeBefore","on","event","before","after","undoStack","shift","p","back","undo","forward","redo","clear","last","pop","MessageBus","onSync","syncEvent","sync","MultipleDocCollabHistory","isListen","actionStack","stackItem","timer","subscription","subDocs","listenerCaches","Subscription","listenItem","add","clearTimeout","undoManagers","historyStackItem","undoManager","redoStack","slice","setTimeout","SyncConnector","onLoad","onStateChange","loadEvent","stateChangeEvent","HocuspocusConnector","config","provide","HocuspocusProvider","_object_spread","onSynced","onAwarenessUpdate","states","clientId","message","setLocalStateField","setAwarenessField","onDestroy","disconnect","LocalConnector","_yDoc","options","destroyed","fields","Promise","resolve","emitAwarenessStates","getLocalAwarenessSnapshot","YWebsocketConnector","url","roomName","is","onUpdate","syncStates","awareness","getStates","id","WebsocketProvider","once","off","CollaborateModule","providers","History","useExisting","useFactory","collab","createConnector","deps","useClass","setup","textbus","messageBus","connector","Selection","consume","onlyLoad","testing","MultipleDocumentCollaborateModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/base/sub-model-loader.ts","../src/base/collaborate.ts","../src/base/collab-history.ts","../src/base/message-bus.ts","../src/base/multiple-doc-collab-history.ts","../src/base/sync-connector.ts","../src/connectors/hocuspocus-connector.ts","../src/connectors/local-connector.ts","../src/connectors/y-websocket-connector.ts","../src/collaborate-module.ts","../src/multiple-document-collaborate-module.ts"],"sourcesContent":["import { Doc, Doc as YDoc } from 'yjs'\nimport { Injectable } from '@viewfly/core'\nimport { AsyncComponent, AsyncSlot, makeError } from '@textbus/core'\n\nconst subModelLoaderErrorFn = makeError('subModelLoaderError')\n\n/**\n * 子文档加载器\n */\nexport abstract class SubModelLoader {\n /**\n * 通过插槽获取已加载的文档\n * @param slot\n */\n abstract getLoadedModelBySlot(slot: AsyncSlot): YDoc | null\n\n /**\n * 通过组件获取已加载的文档\n * @param component\n */\n abstract getLoadedModelByComponent(component: AsyncComponent): YDoc | null\n\n /**\n * 当本地新增异步子插槽时调用\n * @param slot\n */\n abstract createSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当本地新增异步子组件时调用\n * @param component\n */\n abstract createSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n\n /**\n * 当远程异步子插槽同步到本地时调用\n * @param slot\n */\n abstract loadSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当远程异步子组件同步到本地时调用\n * @param component\n */\n abstract loadSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n}\n\n@Injectable()\nexport class NonSubModelLoader extends SubModelLoader {\n createSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n createSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelBySlot(): Doc {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelByComponent(): Doc {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n}\n","import { Injectable } from '@viewfly/core'\nimport { filter, map, Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n ChangeOrigin,\n Component,\n Format,\n Formats,\n FormatValue,\n PendingErasure,\n Registry,\n makeError,\n Scheduler,\n Selection,\n Slot,\n AsyncSlot,\n AsyncComponent,\n AbstractSelection,\n observe,\n ProxyModel,\n toRaw,\n getObserver,\n attachModel,\n StackableFormatter,\n valueToJSON,\n} from '@textbus/core'\nimport {\n AbstractType,\n Array as YArray, createAbsolutePositionFromRelativePosition, createRelativePositionFromTypeIndex,\n Doc as YDoc,\n Map as YMap,\n RelativePosition,\n Text as YText,\n Transaction,\n UndoManager,\n YArrayEvent,\n YMapEvent,\n YTextEvent,\n XmlElement,\n} from 'yjs'\n\nimport { SubModelLoader } from './sub-model-loader'\n\n/** 与本地稀疏数组「空洞」对应的 YXmlElement,仅放入 YArray,不作通用 XML 节点使用 */\nconst ARRAY_HOLE_ELEMENT_NODE = 'tb-array-hole'\n\nexport interface RelativePositionRecord {\n doc: YDoc,\n position: RelativePosition\n}\n\nexport interface CursorPosition {\n anchor: RelativePositionRecord\n focus: RelativePositionRecord\n}\n\nexport interface CollaborateHistorySelectionPosition {\n before: CursorPosition | null\n after: CursorPosition | null\n}\n\nconst collaborateErrorFn = makeError('Collaborate')\n\nclass SlotMap {\n private slotAndYTextMap = new WeakMap<Slot, YText>()\n private yTextAndSlotMap = new WeakMap<YText, Slot>()\n\n set(key: Slot, value: YText): void\n set(key: YText, value: Slot): void\n set(key: any, value: any) {\n if (key instanceof Slot) {\n this.slotAndYTextMap.set(key, value)\n this.yTextAndSlotMap.set(value, key)\n } else {\n this.slotAndYTextMap.set(value, key)\n this.yTextAndSlotMap.set(key, value)\n }\n }\n\n get(key: Slot): YText | null\n get(key: YText): Slot | null\n get(key: any) {\n if (key instanceof Slot) {\n return this.slotAndYTextMap.get(key) || null\n }\n return this.yTextAndSlotMap.get(key) || null\n }\n\n delete(key: Slot | YText) {\n if (key instanceof Slot) {\n const v = this.slotAndYTextMap.get(key)\n this.slotAndYTextMap.delete(key)\n if (v) {\n this.yTextAndSlotMap.delete(v)\n }\n } else {\n const v = this.yTextAndSlotMap.get(key)\n this.yTextAndSlotMap.delete(key)\n if (v) {\n this.slotAndYTextMap.delete(v)\n }\n }\n }\n}\n\ninterface Update {\n record: boolean\n actions: Array<() => void>\n}\n\ninterface UpdateItem {\n record: boolean\n\n action(): void\n}\n\nexport interface SubModelLoaded {\n yType: AbstractType<any>\n yDoc: YDoc\n}\n\n@Injectable()\nexport class Collaborate {\n yDoc = new YDoc()\n slotMap = new SlotMap()\n onAddSubModel: Observable<SubModelLoaded>\n\n private subscriptions: Subscription[] = []\n private updateFromRemote = false\n private addSubModelEvent = new Subject<SubModelLoaded>()\n\n private updateRemoteActions = new WeakMap<YDoc, UpdateItem[]>()\n private noRecord = {}\n\n constructor(private scheduler: Scheduler,\n private registry: Registry,\n private selection: Selection,\n private subModelLoader: SubModelLoader) {\n this.onAddSubModel = this.addSubModelEvent.asObservable()\n }\n\n syncRootComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n this.initSyncEvent(yDoc)\n this.syncComponent(yDoc, sharedComponent, localComponent)\n }\n\n syncRootSlot(yDoc: YDoc, sharedSlot: YText, localSlot: Slot) {\n if (sharedSlot.length) {\n localSlot.retain(0)\n localSlot.delete(localSlot.length)\n localSlot.cleanAttributes()\n localSlot.cleanFormats()\n this.initLocalSlotBySharedSlot(sharedSlot, localSlot)\n } else {\n yDoc.transact(() => {\n this.initSharedSlotByLocalSlot(sharedSlot, localSlot)\n })\n }\n this.initSyncEvent(yDoc)\n this.syncSlot(sharedSlot, localSlot)\n }\n\n getAbstractSelection(position: CursorPosition): AbstractSelection | null {\n const anchorPosition = createAbsolutePositionFromRelativePosition(position.anchor.position, position.anchor.doc)\n const focusPosition = createAbsolutePositionFromRelativePosition(position.focus.position, position.focus.doc)\n if (anchorPosition && focusPosition) {\n const focusSlot = this.slotMap.get(focusPosition.type as YText)\n const anchorSlot = this.slotMap.get(anchorPosition.type as YText)\n if (focusSlot && anchorSlot) {\n return {\n anchorSlot,\n anchorOffset: anchorPosition.index,\n focusSlot,\n focusOffset: focusPosition.index\n }\n }\n }\n return null\n }\n\n getRelativeCursorLocation(): CursorPosition | null {\n const {anchorSlot, anchorOffset, focusSlot, focusOffset} = this.selection\n if (anchorSlot) {\n const anchorYText = this.slotMap.get(anchorSlot)\n if (anchorYText) {\n const anchorPosition = createRelativePositionFromTypeIndex(anchorYText, anchorOffset!)\n if (focusSlot) {\n const focusYText = this.slotMap.get(focusSlot)\n if (focusYText) {\n const focusPosition = createRelativePositionFromTypeIndex(focusYText, focusOffset!)\n return {\n focus: {\n doc: focusYText.doc!,\n position: focusPosition\n },\n anchor: {\n doc: anchorYText.doc!,\n position: anchorPosition\n }\n }\n }\n }\n }\n }\n return null\n }\n\n restoreCursorPosition(position: CursorPosition | null) {\n if (!position) {\n this.selection.unSelect()\n return\n }\n const selection = this.getAbstractSelection(position)\n if (selection) {\n this.selection.setBaseAndExtent(\n selection.anchorSlot,\n selection.anchorOffset,\n selection.focusSlot,\n selection.focusOffset)\n }\n }\n\n private initSyncEvent(yDoc: YDoc) {\n this.subscriptions.push(\n this.scheduler.onDocChanged.pipe(\n map(item => {\n return item.filter(i => {\n return i.from !== ChangeOrigin.Remote\n })\n }),\n filter(item => {\n return item.length\n })\n ).subscribe(() => {\n const updates: Update[] = []\n\n let update: Update | null = null\n\n const updateRemoteActions = this.updateRemoteActions.get(yDoc) || []\n\n for (const item of updateRemoteActions) {\n if (!update) {\n update = {\n record: item.record,\n actions: []\n }\n updates.push(update)\n }\n if (update.record === item.record) {\n update.actions.push(item.action)\n } else {\n update = {\n record: item.record,\n actions: [item.action]\n }\n updates.push(update)\n }\n }\n\n this.updateRemoteActions.delete(yDoc)\n\n for (const item of updates) {\n yDoc.transact(() => {\n item.actions.forEach(fn => {\n fn()\n })\n }, item.record ? yDoc : this.noRecord)\n }\n })\n )\n }\n\n private syncComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n let state = sharedComponent.get('state') as YMap<any>\n if (!state) {\n state = new YMap<any>()\n this.syncLocalMapToSharedMap(localComponent.state as ProxyModel<Record<string, any>>, state)\n yDoc.transact(() => {\n sharedComponent.set('state', state)\n })\n } else {\n Object.keys(localComponent.state).forEach(key => {\n Reflect.deleteProperty(localComponent.state, key)\n })\n this.syncSharedMapToLocalMap(state, localComponent.state as ProxyModel<Record<string, any>>)\n }\n }\n\n private syncSlot(sharedSlot: YText, localSlot: Slot) {\n const syncRemote = (ev: YTextEvent, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n localSlot.retain(0)\n ev.keysChanged.forEach(key => {\n const change = ev.keys.get(key)\n if (!change) {\n return\n }\n const updateType = change.action\n if (updateType === 'update' || updateType === 'add') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, sharedSlot.getAttribute(key))\n }\n } else if (updateType === 'delete') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.removeAttribute(attribute)\n }\n }\n })\n ev.delta.forEach(action => {\n if (Reflect.has(action, 'retain')) {\n if (action.attributes) {\n const start = localSlot.index\n const end = start + action.retain!\n const formats = remoteRetainFormatsToLocal(this.registry, localSlot, start, end, action.attributes)\n if (formats.length) {\n localSlot.retain(action.retain!, formats)\n }\n }\n localSlot.retain(localSlot.index + action.retain!)\n } else if (action.insert) {\n const index = localSlot.index\n let length = 1\n if (typeof action.insert === 'string') {\n length = action.insert.length\n localSlot.insert(action.insert, remoteInsertFormatsToLocal(this.registry, action.attributes))\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component)\n }\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! > index) {\n this.selection.setAnchor(localSlot, this.selection.anchorOffset! + length)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! > index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! + length)\n }\n }\n } else if (action.delete) {\n const index = localSlot.index\n localSlot.delete(action.delete)\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! >= index) {\n this.selection.setAnchor(localSlot, this.selection.startOffset! - action.delete)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! >= index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! - action.delete)\n }\n }\n }\n })\n })\n }\n sharedSlot.observe(syncRemote)\n\n const sub = localSlot.onContentChange.subscribe(actions => {\n this.runLocalUpdate(sharedSlot.doc, true, () => {\n let offset = 0\n let length = 0\n for (const action of actions) {\n if (action.type === 'retain') {\n const formats = action.formats\n if (formats) {\n const attrs = localFormatsToYjsAttributes(\n this.registry,\n localSlot,\n offset,\n offset + action.offset,\n formats,\n )\n if (Object.keys(attrs).length) {\n sharedSlot.format(offset, action.offset, attrs)\n }\n } else {\n offset = action.offset\n }\n } else if (action.type === 'contentInsert') {\n const delta = sharedSlot.toDelta()\n const isEmpty = delta.length === 1 && delta[0].insert === Slot.emptyPlaceholder\n if (typeof action.content === 'string') {\n length = action.content.length\n sharedSlot.insert(offset, action.content, localFormatsRecordToRemote(this.registry, action.formats) || {})\n } else {\n length = 1\n const sharedComponent = this.createSharedComponentByLocalComponent(action.ref as Component)\n sharedSlot.insertEmbed(offset, sharedComponent, localFormatsRecordToRemote(this.registry, action.formats) || {})\n }\n\n if (isEmpty && offset === 0) {\n sharedSlot.delete(sharedSlot.length - 1, 1)\n }\n offset += length\n } else if (action.type === 'delete') {\n const delta = sharedSlot.toDelta()\n if (sharedSlot.length) {\n sharedSlot.delete(offset, action.count)\n }\n if (sharedSlot.length === 0) {\n sharedSlot.insert(0, '\\n', delta[0]?.attributes)\n }\n } else if (action.type === 'attrSet') {\n sharedSlot.setAttribute(action.name, action.value)\n } else if (action.type === 'attrDelete') {\n sharedSlot.removeAttribute(action.name)\n }\n }\n })\n })\n\n this.slotMap.set(localSlot, sharedSlot)\n\n localSlot.__changeMarker__.addDetachCallback(() => {\n this.slotMap.delete(localSlot)\n sharedSlot.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n\n destroy() {\n this.subscriptions.forEach(i => i.unsubscribe())\n this.subscriptions = []\n }\n\n private syncSharedMapToLocalMap(sharedMap: YMap<any>, localMap: ProxyModel<Record<string, any>>) {\n sharedMap.forEach((value, key) => {\n localMap[key] = toRaw(this.createLocalModelBySharedByModel(value))\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createLocalMapBySharedMap(sharedMap: YMap<any>): ProxyModel<Record<string, any>> {\n const localMap = observe({}) as ProxyModel<Record<string, any>>\n this.syncSharedMapToLocalMap(sharedMap, localMap)\n return localMap\n }\n\n private createLocalArrayBySharedArray(sharedArray: YArray<any>): ProxyModel<any[]> {\n const raw: any[] = []\n for (let i = 0; i < sharedArray.length; i++) {\n const item = sharedArray.get(i)\n if (!this.isArrayHoleElement(item)) {\n raw[i] = toRaw(this.createLocalModelBySharedByModel(item))\n }\n }\n raw.length = sharedArray.length\n const localArray = observe(raw) as ProxyModel<any[]>\n this.syncArray(sharedArray, localArray)\n return localArray\n }\n\n private syncLocalMapToSharedMap(localMap: ProxyModel<Record<string, any>>, sharedMap: YMap<any>) {\n Object.entries(localMap).forEach(([key, value]) => {\n sharedMap.set(key, this.createSharedModelByLocalModel(value))\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createSharedMapByLocalMap(localMap: ProxyModel<Record<string, any>>): YMap<any> {\n const sharedMap = new YMap<any>()\n this.syncLocalMapToSharedMap(localMap, sharedMap)\n return sharedMap\n }\n\n private createSharedArrayByLocalArray(localArray: ProxyModel<any[]>): YArray<any> {\n const sharedArray = new YArray<any>()\n for (let i = 0; i < localArray.length; i++) {\n if (i in localArray) {\n sharedArray.push([this.sharedModelForArraySlot(localArray[i])])\n } else {\n sharedArray.push([this.createArrayHoleXmlElement()])\n }\n }\n this.syncArray(sharedArray, localArray)\n return sharedArray\n }\n\n private createSharedSlotByLocalSlot(localSlot: Slot): YText {\n const sharedSlot = new YText()\n const isAsyncSlot = localSlot instanceof AsyncSlot\n sharedSlot.setAttribute('schema', [...localSlot.schema])\n sharedSlot.setAttribute('type', isAsyncSlot ? 'async' : 'sync')\n\n if (isAsyncSlot) {\n let isDestroyed = false\n const sharedMetadata = this.createSharedMapByLocalMap(localSlot.metadata)\n sharedSlot.setAttribute('metadata', sharedMetadata)\n this.subModelLoader.createSubModelBySlot(localSlot).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const content = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncLocalMapToSharedMap(localSlot.state, state)\n this.initSharedSlotByLocalSlot(content, localSlot)\n this.syncSlot(content, localSlot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: content\n })\n this.initSyncEvent(subDocument)\n localSlot.loader.markAsLoaded()\n })\n localSlot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return sharedSlot\n }\n\n const sharedSlotState = new YMap()\n this.syncLocalMapToSharedMap(localSlot.state as ProxyModel<Record<string, any>>, sharedSlotState)\n sharedSlot.setAttribute('state', sharedSlotState)\n\n const sharedContent = new YText()\n this.initSharedSlotByLocalSlot(sharedContent, localSlot)\n sharedSlot.insertEmbed(0, sharedContent)\n this.syncSlot(sharedContent, localSlot)\n return sharedSlot\n }\n\n private initSharedSlotByLocalSlot(sharedContent: YText, localSlot: Slot) {\n let offset = 0\n localSlot.toDelta().forEach(i => {\n const formats = i.formats ? formatsArrayToRemoteRecord(this.registry, i.formats) : undefined\n if (typeof i.insert === 'string') {\n sharedContent.insert(offset, i.insert, formats)\n } else {\n const sharedComponent = this.createSharedComponentByLocalComponent(i.insert)\n sharedContent.insertEmbed(offset, sharedComponent, formats)\n }\n offset += i.insert.length\n })\n localSlot.getAttributes().forEach(item => {\n sharedContent.setAttribute(item[0].name, item[1])\n })\n }\n\n private createLocalSlotBySharedSlot(sharedSlot: YText): Slot {\n const type = sharedSlot.getAttribute('type')\n const schema = sharedSlot.getAttribute('schema')\n\n if (type === 'async') {\n const metadata = sharedSlot.getAttribute('metadata') as YMap<any>\n const slot = new AsyncSlot(schema || [], {}, {})\n this.syncSharedMapToLocalMap(metadata, slot.metadata as ProxyModel<Record<string, any>>)\n const loadedSubDocument = this.subModelLoader.getLoadedModelBySlot(slot)\n if (loadedSubDocument) {\n const subContent = loadedSubDocument.getText('content')\n const data = loadedSubDocument.getMap('state')\n this.syncSharedMapToLocalMap(data, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(loadedSubDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: loadedSubDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n return slot\n }\n let isDestroyed = false\n slot.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelBySlot(slot)\n }).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const subContent = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncSharedMapToLocalMap(state, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(subDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n })\n slot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return slot\n }\n\n const contentDelta = sharedSlot.toDelta()\n const content = contentDelta[0]?.insert\n\n if (!(content instanceof YText)) {\n throw collaborateErrorFn('shared slot content type is not `YText`.')\n }\n\n const localSlot = new Slot(schema || [], {})\n\n const sharedSlotState = sharedSlot.getAttribute('state')\n this.syncSharedMapToLocalMap(sharedSlotState, localSlot.state as ProxyModel<Record<string, any>>)\n\n this.initLocalSlotBySharedSlot(content, localSlot)\n\n this.syncSlot(content, localSlot)\n return localSlot\n }\n\n private initLocalSlotBySharedSlot(content: YText, localSlot: Slot) {\n const delta = content.toDelta()\n\n const attrs = content.getAttributes()\n Object.keys(attrs).forEach(key => {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.skipCheckHost(() => {\n localSlot.setAttribute(attribute, attrs[key])\n })\n }\n })\n for (const action of delta) {\n if (action.insert) {\n if (typeof action.insert === 'string') {\n const formats = remoteInsertFormatsToLocal(this.registry, action.attributes)\n localSlot.skipCheckHost(() => {\n localSlot.insert(action.insert, formats)\n })\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.skipCheckHost(() => {\n localSlot.insert(component, remoteInsertFormatsToLocal(this.registry, action.attributes))\n })\n }\n } else {\n throw collaborateErrorFn('unexpected delta action.')\n }\n }\n }\n\n private createSharedModelByLocalModel(localModel: any) {\n if (localModel instanceof Slot) {\n return this.createSharedSlotByLocalSlot(localModel)\n }\n if (Array.isArray(localModel)) {\n return this.createSharedArrayByLocalArray(localModel as ProxyModel<any[]>)\n }\n if (typeof localModel === 'object' && localModel !== null) {\n return this.createSharedMapByLocalMap(localModel)\n }\n return localModel\n }\n\n private createLocalModelBySharedByModel(sharedModel: any) {\n if (sharedModel instanceof YMap) {\n return this.createLocalMapBySharedMap(sharedModel)\n }\n if (sharedModel instanceof YArray) {\n return this.createLocalArrayBySharedArray(sharedModel)\n }\n if (sharedModel instanceof YText) {\n return this.createLocalSlotBySharedSlot(sharedModel)\n }\n return sharedModel\n }\n\n\n private createSharedComponentByLocalComponent(component: Component | AsyncComponent): YMap<any> {\n const sharedComponent = new YMap()\n sharedComponent.set('name', component.name)\n\n if (component instanceof AsyncComponent) {\n sharedComponent.set('type', 'async')\n const sharedMetadata = this.createSharedMapByLocalMap(component.metadata)\n sharedComponent.set('metadata', sharedMetadata)\n const state = component.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n this.subModelLoader.createSubModelByComponent(component).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, component)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n this.initSyncEvent(subDocument)\n component.loader.markAsLoaded()\n })\n return sharedComponent\n }\n\n const sharedState = this.createSharedMapByLocalMap(component.state as ProxyModel<Record<string, any>>)\n sharedComponent.set('state', sharedState)\n sharedComponent.set('type', 'sync')\n return sharedComponent\n }\n\n private createLocalComponentBySharedComponent(yMap: YMap<any>): Component {\n const componentName = yMap.get('name') as string\n const type = yMap.get('type') as string\n\n let instance: Component<any> | null\n if (type === 'async') {\n instance = this.registry.createComponentByData(componentName, {}, {})\n if (instance instanceof AsyncComponent) {\n const sharedMetadata = yMap.get('metadata') as YMap<any>\n this.syncSharedMapToLocalMap(sharedMetadata, instance.metadata)\n const loadedSubDocument = this.subModelLoader.getLoadedModelByComponent(instance)\n if (loadedSubDocument) {\n const state = loadedSubDocument.getMap('state')\n this.syncComponent(loadedSubDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: loadedSubDocument\n })\n instance.loader.markAsLoaded()\n return instance\n }\n\n const state = instance.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n instance.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelByComponent(instance as AsyncComponent)\n })\n .then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n ;(instance as AsyncComponent).loader.markAsLoaded()\n })\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n } else if (instance instanceof Component) {\n throw collaborateErrorFn(`component name \\`${componentName}\\` is not a async component.`)\n }\n } else {\n const sharedState = yMap.get('state') as YMap<any>\n const state = this.createLocalMapBySharedMap(sharedState)\n instance = this.registry.createComponentByData(componentName, state)\n }\n if (instance) {\n return instance\n }\n\n throw collaborateErrorFn(`cannot find component factory \\`${componentName}\\`.`)\n }\n\n private createArrayHoleXmlElement() {\n return new XmlElement(ARRAY_HOLE_ELEMENT_NODE)\n }\n\n private isArrayHoleElement(sharedModel: any): boolean {\n return sharedModel instanceof XmlElement && sharedModel.nodeName === ARRAY_HOLE_ELEMENT_NODE\n }\n\n /**\n * 仅用于 YArray ↔ 可观察数组:本地 `undefined` 槽位用 XmlElement 占位同步到 Yjs(不与对象字面量同步混用)。\n */\n private sharedModelForArraySlot(localItem: any) {\n if (localItem === undefined) {\n return this.createArrayHoleXmlElement()\n }\n return this.createSharedModelByLocalModel(localItem)\n }\n\n /**\n * 在可观察数组中插入稀疏空洞(与 YArray 中 XmlElement 占位对齐)。\n * 仅在远端同步路径调用;先改 raw,再用与 {@link ArrayProxyHandler} `length` 增长一致的原子命令\n * `retain` + `insert`(`undefined` 槽)记录,`unApply` 为 `retain` + `delete`。\n * `runLocalUpdate` 在 `updateFromRemote` 为 true 时会跳过,不会把洞再写回 Y。\n */\n private insertSparseHole(localArray: ProxyModel<any[]>, atIndex: number) {\n const raw = toRaw(localArray) as any[]\n const oldLen = raw.length\n this.applySparseHoleToRaw(raw, atIndex)\n const holeCount = atIndex >= oldLen ? atIndex + 1 - oldLen : 1\n const newTail: any[] = []\n if (atIndex >= oldLen) {\n for (let i = oldLen; i < oldLen + holeCount; i++) {\n newTail.push((raw as any)[i])\n }\n } else {\n newTail.push(undefined)\n }\n const changeMarker = localArray.__changeMarker__\n changeMarker.beforeChange()\n const parentModel = getObserver(raw)!\n const subModels = newTail.map(item => {\n const m = observe(item)\n attachModel(parentModel, m)\n return m\n })\n const retainOffset = atIndex >= oldLen ? oldLen : atIndex\n changeMarker.markAsDirtied({\n paths: [],\n apply: [\n {type: 'retain', offset: retainOffset},\n {type: 'insert', data: valueToJSON(newTail), ref: subModels}\n ],\n unApply: [\n {type: 'retain', offset: retainOffset},\n {type: 'delete', count: holeCount}\n ]\n })\n }\n\n /** 与 Y 洞位对齐的稀疏洞写入,仅操作 raw */\n private applySparseHoleToRaw(raw: any[], atIndex: number) {\n const len = raw.length\n if (atIndex >= len) {\n raw.length = atIndex + 1\n return\n }\n for (let i = len; i > atIndex; i--) {\n if ((i - 1) in raw) {\n raw[i] = raw[i - 1]\n } else {\n delete raw[i]\n }\n }\n delete raw[atIndex]\n }\n\n /**\n * 双向同步数组\n * @param sharedArray\n * @param localArray\n * @private\n */\n private syncArray(sharedArray: YArray<any>, localArray: ProxyModel<any[]>) {\n function logError(type: string) {\n console.error(collaborateErrorFn(`${type} error, length exceeded, path in ${localArray.__changeMarker__.getPaths().join('/')}`))\n }\n\n const sub = localArray.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedArray.doc, !localArray.__changeMarker__.irrevocableUpdate, () => {\n let index = 0\n for (const action of actions) {\n switch (action.type) {\n case 'retain':\n index = action.offset\n break\n case 'insert': {\n const ref = action.ref\n if (!Array.isArray(ref)) {\n throw collaborateErrorFn('The insertion action must have a reference value.')\n }\n const data = ref.map(item => {\n return this.sharedModelForArraySlot(item)\n })\n if (index <= sharedArray.length) {\n sharedArray.insert(index, data)\n } else {\n sharedArray.insert(sharedArray.length, data)\n logError('insert')\n }\n }\n break\n case 'delete':\n if (action.count <= 0) {\n break\n }\n if (index < sharedArray.length) {\n sharedArray.delete(index, action.count)\n } else {\n logError('delete')\n }\n break\n case 'setIndex':\n if (action.index < sharedArray.length) {\n sharedArray.delete(action.index, 1)\n sharedArray.insert(action.index, [this.sharedModelForArraySlot(action.ref)])\n } else {\n sharedArray.insert(sharedArray.length, [this.sharedModelForArraySlot(action.ref)])\n logError('setIndex')\n }\n break\n }\n }\n })\n })\n\n const syncRemote = (ev: YArrayEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n let index = 0\n ev.delta.forEach((action) => {\n if (Reflect.has(action, 'retain')) {\n index += action.retain as number\n } else if (action.insert) {\n let at = index\n for (const item of action.insert as Array<any>) {\n if (this.isArrayHoleElement(item)) {\n this.insertSparseHole(localArray, at)\n } else {\n localArray.splice(at, 0, this.createLocalModelBySharedByModel(item))\n }\n at++\n }\n index = at\n } else if (action.delete) {\n localArray.splice(index, action.delete)\n }\n })\n })\n }\n\n sharedArray.observe(syncRemote)\n localArray.__changeMarker__.addDetachCallback(() => {\n sub.unsubscribe()\n sharedArray.unobserve(syncRemote)\n })\n }\n\n /**\n * 双向同步对象\n * @param sharedObject\n * @param localObject\n * @private\n */\n private syncObject(sharedObject: YMap<any>, localObject: ProxyModel<Record<string, any>>) {\n const syncRemote = (ev: YMapEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n ev.changes.keys.forEach((item, key) => {\n if (item.action === 'add' || item.action === 'update') {\n const value = sharedObject.get(key)\n localObject[key] = this.createLocalModelBySharedByModel(value)\n } else {\n Reflect.deleteProperty(localObject, key)\n }\n })\n })\n }\n\n sharedObject.observe(syncRemote)\n\n const sub = localObject.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedObject.doc, !localObject.__changeMarker__.irrevocableUpdate, () => {\n for (const action of actions) {\n switch (action.type) {\n case 'propSet': {\n const subModel = this.createSharedModelByLocalModel(action.ref)\n sharedObject.set(action.key, subModel)\n if (sharedObject.size === 0) {\n // 奇怪的 bug,设置了子模型,但子模型会标记为 deleted,导致设置后无效\n console.error(collaborateErrorFn(`prop set error, key is ${action.key}`))\n }\n }\n break\n case 'propDelete':\n sharedObject.delete(action.key)\n break\n }\n }\n })\n })\n\n localObject.__changeMarker__.addDetachCallback(function () {\n sharedObject.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n private runLocalUpdate(yDoc: YDoc | null, record: boolean, fn: () => void) {\n if (this.updateFromRemote || !yDoc) {\n return\n }\n let changeList = this.updateRemoteActions.get(yDoc)\n if (!changeList) {\n changeList = []\n this.updateRemoteActions.set(yDoc, changeList)\n }\n changeList.push({\n record,\n action: fn\n })\n }\n\n private runRemoteUpdate(tr: Transaction, fn: () => void) {\n if (tr.origin === tr.doc) {\n return\n }\n this.updateFromRemote = true\n if (tr.origin instanceof UndoManager) {\n this.scheduler.historyApplyTransact(fn)\n } else {\n this.scheduler.remoteUpdateTransact(fn)\n }\n this.updateFromRemote = false\n }\n}\n\nfunction collectStackableValuesInRange(\n slot: Slot,\n formatter: StackableFormatter<any>,\n start: number,\n end: number,\n): FormatValue[] {\n const values: FormatValue[] = []\n slot.getFormatRangesByFormatter(formatter, start, end).forEach(range => {\n const v = range.value\n if (!values.some(existing => Format.equal(existing, v))) {\n values.push(v)\n }\n })\n return values\n}\n\nfunction serializeFormatForYjs(value: FormatValue): FormatValue {\n return valueToJSON(value) as FormatValue\n}\n\nexport function localFormatsToYjsAttributes(\n registry: Registry,\n slot: Slot,\n start: number,\n end: number,\n localFormats: Record<string, FormatValue>,\n): Record<string, FormatValue | FormatValue[] | null> {\n const attrs: Record<string, FormatValue | FormatValue[] | null> = {}\n Object.keys(localFormats).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (!formatter) {\n return\n }\n if (formatter instanceof StackableFormatter) {\n const values = collectStackableValuesInRange(slot, formatter, start, end)\n attrs[key] = values.length ? values.map(serializeFormatForYjs) : null\n } else {\n attrs[key] = localFormats[key]\n }\n })\n return attrs\n}\n\nexport function localFormatsRecordToRemote(\n registry: Registry,\n formats: Record<string, FormatValue> | undefined,\n): Record<string, FormatValue | FormatValue[] | null> | undefined {\n if (!formats) {\n return undefined\n }\n const record: Record<string, FormatValue | FormatValue[] | null> = {}\n Object.keys(formats).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (!formatter) {\n return\n }\n const incoming = formats[key]\n if (formatter instanceof StackableFormatter) {\n if (incoming === null || incoming === undefined) {\n record[key] = null\n } else {\n record[key] = [serializeFormatForYjs(incoming)]\n }\n } else {\n record[key] = incoming\n }\n })\n return Object.keys(record).length ? record : undefined\n}\n\nexport function formatsArrayToRemoteRecord(\n registry: Registry,\n formats: Formats,\n): Record<string, FormatValue | FormatValue[]> | undefined {\n const record: Record<string, FormatValue | FormatValue[]> = {}\n formats.forEach(([formatter, value]) => {\n if (!registry.getFormatter(formatter.name)) {\n return\n }\n if (formatter instanceof StackableFormatter) {\n const serialized = serializeFormatForYjs(value)\n const current = record[formatter.name]\n if (Array.isArray(current)) {\n current.push(serialized)\n } else {\n record[formatter.name] = [serialized]\n }\n } else {\n record[formatter.name] = value\n }\n })\n return Object.keys(record).length ? record : undefined\n}\n\nfunction stackableRemoteRetainToLocal(\n slot: Slot,\n formatter: StackableFormatter<any>,\n start: number,\n end: number,\n raw: FormatValue | FormatValue[] | null | undefined,\n): Formats {\n const formats: Formats = []\n const localValues = collectStackableValuesInRange(slot, formatter, start, end)\n\n if (raw === null || raw === undefined || (Array.isArray(raw) && raw.length === 0)) {\n if (localValues.length > 0) {\n formats.push([formatter, new PendingErasure(true)])\n }\n return formats\n }\n\n const remoteValues = Array.isArray(raw) ? raw : [raw]\n localValues.forEach(localValue => {\n if (!remoteValues.some(remoteValue => Format.equal(localValue, remoteValue))) {\n formats.push([formatter, new PendingErasure(false, localValue)])\n }\n })\n remoteValues.forEach(remoteValue => {\n if (!localValues.some(localValue => Format.equal(localValue, remoteValue))) {\n formats.push([formatter, remoteValue])\n }\n })\n return formats\n}\n\nfunction stackableRemoteInsertToLocal(\n formatter: StackableFormatter<any>,\n raw: FormatValue | FormatValue[] | null | undefined,\n): Formats {\n if (raw === null || raw === undefined || (Array.isArray(raw) && raw.length === 0)) {\n return []\n }\n const remoteValues = Array.isArray(raw) ? raw : [raw]\n return remoteValues.map(value => [formatter, value])\n}\n\n/** 远程插入内容的格式 → 本地 Formats(新内容无旧状态,可堆叠仅展开远程数组) */\nexport function remoteInsertFormatsToLocal(\n registry: Registry,\n attrs?: Record<string, FormatValue | FormatValue[] | null> | null,\n): Formats {\n const formats: Formats = []\n if (!attrs) {\n return formats\n }\n Object.keys(attrs).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (!formatter) {\n return\n }\n const raw = attrs[key]\n if (formatter instanceof StackableFormatter) {\n formats.push(...stackableRemoteInsertToLocal(formatter, raw))\n return\n }\n formats.push([formatter, raw as FormatValue])\n })\n return formats\n}\n\n/** 远程 retain 格式 → 本地 Formats(可堆叠与区间内本地快照做差量对齐) */\nexport function remoteRetainFormatsToLocal(\n registry: Registry,\n slot: Slot,\n start: number,\n end: number,\n attrs?: Record<string, FormatValue | FormatValue[] | null> | null,\n): Formats {\n const formats: Formats = []\n if (!attrs) {\n return formats\n }\n Object.keys(attrs).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (!formatter) {\n return\n }\n const raw = attrs[key]\n if (formatter instanceof StackableFormatter) {\n formats.push(...stackableRemoteRetainToLocal(slot, formatter, start, end, raw))\n return\n }\n formats.push([formatter, raw as FormatValue])\n })\n return formats\n}\n","import { Inject, Injectable, Optional } from '@viewfly/core'\nimport { History, HISTORY_STACK_SIZE, makeError, RootComponentRef, Scheduler } from '@textbus/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n Item,\n Transaction,\n UndoManager\n} from 'yjs'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\n\nexport abstract class CustomUndoManagerConfig {\n abstract captureTimeout?: number\n\n abstract captureTransaction?(arg0: Transaction): boolean\n\n abstract deleteFilter?(arg0: Item): boolean\n}\n\nconst collabHistoryErrorFn = makeError('CollabHistory')\n\n@Injectable()\nexport class CollabHistory implements History {\n onBack: Observable<void>\n onForward: Observable<void>\n onChange: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.manager?.canUndo() || false\n }\n\n get canForward() {\n return this.manager?.canRedo() || false\n }\n\n private manager: UndoManager | null = null\n\n private historyItems: Array<CollaborateHistorySelectionPosition> = []\n private index = 0\n private subscriptions: Subscription[] = []\n\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private changeEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n\n constructor(private rootComponentRef: RootComponentRef,\n private collaborate: Collaborate,\n private scheduler: Scheduler,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onChange = this.changeEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n\n }\n\n listen() {\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n const undoManagerConfig = this.undoManagerConfig || {}\n const manager = new UndoManager(root, {\n captureTimeout: typeof undoManagerConfig.captureTimeout === 'number' ? undoManagerConfig.captureTimeout : 500,\n trackedOrigins: new Set<any>([this.collaborate.yDoc]),\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n this.manager = manager\n\n let beforePosition: CursorPosition | null = null\n this.subscriptions.push(\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n beforePosition = this.collaborate.getRelativeCursorLocation()\n }),\n this.collaborate.onAddSubModel.subscribe(() => {\n throw collabHistoryErrorFn('single document does not support submodels.')\n })\n )\n\n manager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo') {\n if (event.origin === manager) {\n this.index++\n } else {\n this.historyItems.length = this.index\n this.historyItems.push({\n before: beforePosition,\n after: this.collaborate.getRelativeCursorLocation()\n })\n this.index++\n }\n } else {\n this.index--\n }\n if (manager.undoStack.length > this.stackSize) {\n this.historyItems.shift()\n manager.undoStack.shift()\n }\n if (event.origin === this.collaborate.yDoc) {\n this.pushEvent.next()\n }\n this.changeEvent.next()\n })\n manager.on('stack-item-popped', (ev: any) => {\n const index = ev.type === 'undo' ? this.index : this.index - 1\n const position = this.historyItems[index] || null\n const p = ev.type === 'undo' ? position?.before : position?.after\n this.collaborate.restoreCursorPosition(p)\n })\n }\n\n\n back() {\n if (this.canBack) {\n this.manager?.undo()\n this.backEvent.next()\n }\n }\n\n forward() {\n if (this.canForward) {\n this.manager?.redo()\n this.forwardEvent.next()\n }\n }\n\n clear() {\n const last = this.historyItems.pop()\n this.historyItems = last ? [last] : []\n this.index = last ? 1 : 0\n this.manager?.clear()\n this.changeEvent.next()\n }\n\n destroy() {\n this.index = 0\n this.historyItems = []\n this.subscriptions.forEach(i => i.unsubscribe())\n if (this.manager) {\n this.manager.destroy()\n this.manager.captureTransaction = () => true\n this.manager.deleteFilter = () => true\n this.manager.trackedOrigins = new Set([null])\n }\n\n this.manager = null\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\nimport { Textbus } from '@textbus/core'\n\nexport interface Message<T> {\n clientId: number\n message: T\n}\n\n/**\n * 协作消息总线,用于同步各终端消息\n */\nexport abstract class MessageBus<T> {\n onSync: Observable<void>\n protected syncEvent = new Subject<void>()\n\n constructor() {\n this.onSync = this.syncEvent.asObservable()\n }\n\n /**\n * 立即同步消息\n */\n sync() {\n this.syncEvent.next()\n }\n\n /**\n * 当需要同步协作消息是,Textbus 会自动调用,并把返回数据同步到其它终端\n */\n abstract get(textbus: Textbus): T\n\n /**\n * 当远程消息更新时,Textbus 会自动调用\n * @param message\n * @param textbus\n */\n abstract consume(message: Message<T>[], textbus: Textbus): void\n}\n","import { AbstractType, Item, UndoManager, Doc as YDoc } from 'yjs'\nimport { Inject, Injectable, Optional } from '@viewfly/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport { History, HISTORY_STACK_SIZE, RootComponentRef, Scheduler } from '@textbus/core'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\nimport { CustomUndoManagerConfig } from './collab-history'\n\ninterface HistoryStackItem extends CollaborateHistorySelectionPosition {\n undoManagers: UndoManager[]\n}\n\n@Injectable()\nexport class MultipleDocCollabHistory implements History {\n onChange: Observable<void>\n onBack: Observable<void>\n onForward: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.actionStack.length > 0 && this.index > 0\n }\n\n get canForward() {\n return this.actionStack.length > 0 && this.index < this.actionStack.length\n }\n\n isListen = false\n\n private changeEvent = new Subject<void>()\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n private actionStack: HistoryStackItem[] = []\n\n private index = 0\n\n private stackItem: HistoryStackItem | null = null\n private timer: any = null\n private beforePosition: CursorPosition | null = null\n\n private subscription = new Subscription()\n\n private subDocs = new Set<AbstractType<any>>()\n\n private listenerCaches = new Set<UndoManager>()\n\n constructor(private collaborate: Collaborate,\n private scheduler: Scheduler,\n private rootComponentRef: RootComponentRef,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onChange = this.changeEvent.asObservable()\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n }\n\n listen() {\n this.isListen = true\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n this.listenItem(root, this.collaborate.yDoc)\n\n this.subscription.add(\n this.collaborate.onAddSubModel.subscribe(({yType, yDoc}) => {\n if (this.subDocs.has(yType)) {\n return\n }\n this.subDocs.add(yType)\n if (this.isListen) {\n this.listenItem(yType, yDoc)\n }\n }),\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n this.beforePosition = this.collaborate.getRelativeCursorLocation()\n })\n )\n }\n\n forward() {\n if (!this.canForward) {\n return\n }\n clearTimeout(this.timer as any)\n const item = this.actionStack[this.index]\n if (item) {\n for (const i of item.undoManagers) {\n i.redo()\n }\n this.collaborate.restoreCursorPosition(item.after)\n }\n this.index++\n this.forwardEvent.next()\n this.changeEvent.next()\n }\n\n back() {\n if (!this.canBack) {\n return\n }\n clearTimeout(this.timer as any)\n let historyStackItem: HistoryStackItem\n if (this.stackItem) {\n historyStackItem = this.stackItem\n this.stackItem = null\n } else {\n this.index--\n historyStackItem = this.actionStack[this.index]\n }\n let len = historyStackItem.undoManagers.length\n while (len > 0) {\n len--\n historyStackItem.undoManagers[len].undo()\n }\n if (historyStackItem) {\n const beforePosition = historyStackItem.before\n this.collaborate.restoreCursorPosition(beforePosition)\n this.backEvent.next()\n this.changeEvent.next()\n }\n }\n\n clear() {\n this.actionStack = []\n this.stackItem = null\n this.index = 0\n this.beforePosition = null\n clearTimeout(this.timer as any)\n this.listenerCaches.forEach((undoManager) => {\n undoManager.clear()\n })\n this.changeEvent.next()\n }\n\n destroy() {\n this.clear()\n this.beforePosition = this.stackItem = null\n this.subscription.unsubscribe()\n this.listenerCaches.forEach((undoManager) => {\n undoManager.destroy()\n })\n this.subDocs.clear()\n this.listenerCaches.clear()\n }\n\n private listenItem(yType: AbstractType<any>, yDoc: YDoc) {\n const undoManagerConfig = this.undoManagerConfig || {}\n const undoManager = new UndoManager(yType, {\n trackedOrigins: new Set([yDoc]),\n captureTimeout: 0,\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n\n undoManager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo' && !(event.origin instanceof UndoManager)) {\n if (this.index != this.actionStack.length) {\n const redoStack = this.actionStack.slice(this.index)\n redoStack.forEach(item => {\n item.undoManagers.forEach(i => {\n i.clear(false, true)\n })\n })\n this.actionStack.length = this.index\n this.changeEvent.next()\n }\n if (this.stackItem === null) {\n this.stackItem = {\n before: this.beforePosition,\n after: null,\n undoManagers: []\n }\n this.timer = setTimeout(() => {\n if (this.actionStack.length >= this.stackSize) {\n this.actionStack.shift()\n } else {\n this.index++\n }\n // this.beforePosition = this.collaborate.getRelativeCursorLocation()\n this.stackItem!.after = this.beforePosition\n this.actionStack.push(this.stackItem!)\n this.stackItem = null\n this.pushEvent.next()\n this.changeEvent.next()\n }, typeof undoManagerConfig.captureTimeout === 'number' ? undoManagerConfig.captureTimeout : 500)\n }\n\n this.stackItem.undoManagers.push(undoManager)\n }\n })\n\n this.listenerCaches.add(undoManager)\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\n\n/**\n * 协作通信通用接口\n */\nexport abstract class SyncConnector {\n /**\n * 当文档加载完成时触发的观察者\n */\n onLoad: Observable<void>\n /**\n * 当文档 awareness 状态变更时触发的观察者\n */\n onStateChange: Observable<any[]>\n\n protected loadEvent = new Subject<void>()\n protected stateChangeEvent = new Subject<any[]>()\n\n protected constructor() {\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n }\n\n /**\n * 设置 awareness 状态\n * @param key 状态的 key\n * @param data 状态值\n */\n abstract setLocalStateField(key: string, data: Record<string, any>): void\n\n /**\n * 当文档销毁时调用\n */\n abstract onDestroy(): void\n}\n","import { HocuspocusProvider } from '@hocuspocus/provider'\nimport { HocuspocusProviderConfiguration } from '@hocuspocus/provider'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class HocuspocusConnector extends SyncConnector {\n provide: HocuspocusProvider\n\n constructor(config: HocuspocusProviderConfiguration) {\n super()\n this.provide = new HocuspocusProvider({\n ...config,\n onSynced: (data) => {\n config.onSynced?.(data)\n this.loadEvent.next()\n },\n onAwarenessUpdate: (data) => {\n config.onAwarenessUpdate?.(data)\n const states: Message<any>[] = data.states.map(state => {\n return {\n clientId: state.clientId,\n message: state.message as any\n }\n })\n this.stateChangeEvent.next(states)\n },\n })\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.setAwarenessField(key, data)\n }\n\n onDestroy() {\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { Doc as YDoc } from 'yjs'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport interface LocalConnectorOptions {\n /**\n * 与其它连接器一致,会出现在 `onStateChange` 的 `clientId` 中。\n * 多实例场景可传入不同值以模拟多客户端。\n */\n clientId?: number\n}\n\n/**\n * 不经网络的协作连接器,实现与 {@link SyncConnector} 相同的对外行为,\n * 便于在单元测试中配合 {@link CollaborateModule} 使用,无需 WebSocket / Provider。\n *\n * - `onLoad`:在微任务中触发一次,对应远端「已同步可编辑」的时机。\n * - `onStateChange`:在每次 {@link LocalConnector.setLocalStateField} 后发出当前客户端状态,\n * 载荷形状与 `YWebsocketConnector` 一致(`{ clientId, message }`,其中 `message` 为 awareness 上的 `message` 字段)。\n *\n * 第一个参数与 `createConnector(yDoc)` 对齐,便于直接传入 `Collaborate` 的文档;当前实现不读写该 `YDoc`。\n */\nexport class LocalConnector extends SyncConnector {\n readonly clientId: number\n\n private destroyed = false\n private fields: Record<string, any> = {}\n\n constructor(_yDoc?: YDoc, options?: LocalConnectorOptions) {\n super()\n this.clientId = options?.clientId ?? 0\n Promise.resolve().then(() => {\n if (!this.destroyed) {\n this.loadEvent.next()\n }\n })\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n if (this.destroyed) {\n return\n }\n this.fields[key] = data\n this.emitAwarenessStates()\n }\n\n onDestroy() {\n this.destroyed = true\n }\n\n /**\n * 读取当前本地 awareness 字段快照,仅用于测试断言。\n */\n getLocalAwarenessSnapshot(): Readonly<Record<string, any>> {\n return { ...this.fields }\n }\n\n private emitAwarenessStates() {\n const states: Message<any>[] = []\n states.push({\n clientId: this.clientId,\n message: this.fields.message\n })\n this.stateChangeEvent.next(states)\n }\n}\n","import { Doc as YDoc } from 'yjs'\nimport { WebsocketProvider } from 'y-websocket'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class YWebsocketConnector extends SyncConnector {\n provide: WebsocketProvider\n\n private onSync = (is: boolean) => {\n if (is) {\n this.loadEvent.next()\n }\n }\n\n private onUpdate = () => {\n const syncStates: Message<any>[] = []\n this.provide.awareness.getStates().forEach((state, id) => {\n syncStates.push({\n clientId: id,\n message: state.message,\n })\n })\n this.stateChangeEvent.next(syncStates)\n }\n\n constructor(url: string, roomName: string, yDoc: YDoc) {\n super()\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n this.provide = new WebsocketProvider(url, roomName, yDoc)\n\n this.provide.once('sync', this.onSync)\n this.provide.awareness.on('update', this.onUpdate)\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.awareness.setLocalStateField(key, data)\n }\n\n onDestroy() {\n this.provide.awareness.off('update', this.onUpdate)\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Subscription } from '@tanbo/stream'\nimport { Provider } from '@viewfly/core'\nimport { Doc as YDoc } from 'yjs'\n\nimport { CollabHistory, Collaborate, MessageBus, NonSubModelLoader, SubModelLoader, SyncConnector } from './base/_api'\n\nexport interface CollaborateConfig {\n createConnector(yDoc: YDoc): SyncConnector\n\n onlyLoad?: boolean\n}\n\nexport class CollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n CollabHistory,\n {\n provide: History,\n useExisting: CollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useClass: NonSubModelLoader\n }\n ]\n\n private timer: any = null\n\n constructor(public config: CollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Provider } from '@viewfly/core'\nimport { Subscription } from '@tanbo/stream'\n\nimport { Collaborate, SyncConnector, MultipleDocCollabHistory, SubModelLoader, MessageBus } from './base/_api'\nimport { CollaborateConfig } from './collaborate-module'\n\nexport interface MultipleDocCollaborateConfig extends CollaborateConfig {\n subModelLoader: SubModelLoader\n}\n\nexport class MultipleDocumentCollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n MultipleDocCollabHistory,\n {\n provide: History,\n useExisting: MultipleDocCollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useFactory: () => {\n return this.config.subModelLoader\n }\n }\n ]\n\n private timer: any = null\n\n constructor(public config: MultipleDocCollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n"],"names":["subModelLoaderErrorFn","makeError","SubModelLoader","NonSubModelLoader","_call_super","createSubModelBySlot","createSubModelByComponent","loadSubModelByComponent","loadSubModelBySlot","getLoadedModelBySlot","getLoadedModelByComponent","ARRAY_HOLE_ELEMENT_NODE","collaborateErrorFn","SlotMap","_define_property","slotAndYTextMap","WeakMap","yTextAndSlotMap","set","key","value","_instanceof","Slot","get","delete","v","Collaborate","scheduler","subModelLoader","yDoc","slotMap","onAddSubModel","subscriptions","updateFromRemote","addSubModelEvent","updateRemoteActions","noRecord","registry","selection","YDoc","Subject","asObservable","syncRootComponent","sharedComponent","localComponent","initSyncEvent","syncComponent","syncRootSlot","sharedSlot","localSlot","length","retain","cleanAttributes","cleanFormats","initLocalSlotBySharedSlot","transact","initSharedSlotByLocalSlot","syncSlot","getAbstractSelection","position","anchorPosition","createAbsolutePositionFromRelativePosition","anchor","doc","focusPosition","focus","focusSlot","type","anchorSlot","anchorOffset","index","focusOffset","getRelativeCursorLocation","anchorYText","createRelativePositionFromTypeIndex","focusYText","restoreCursorPosition","unSelect","setBaseAndExtent","push","onDocChanged","pipe","map","item","filter","i","from","ChangeOrigin","Remote","subscribe","updates","update","record","actions","action","forEach","fn","state","YMap","syncLocalMapToSharedMap","Object","keys","Reflect","deleteProperty","syncSharedMapToLocalMap","syncRemote","ev","tr","runRemoteUpdate","keysChanged","change","updateType","attribute","getAttribute","setAttribute","removeAttribute","delta","has","attributes","start","end","formats","remoteRetainFormatsToLocal","insert","remoteInsertFormatsToLocal","component","createLocalComponentBySharedComponent","isSelected","origin","UndoManager","setAnchor","setFocus","startOffset","observe","sub","onContentChange","runLocalUpdate","offset","attrs","localFormatsToYjsAttributes","format","toDelta","isEmpty","emptyPlaceholder","content","localFormatsRecordToRemote","createSharedComponentByLocalComponent","ref","insertEmbed","count","name","__changeMarker__","addDetachCallback","unobserve","unsubscribe","destroy","sharedMap","localMap","toRaw","createLocalModelBySharedByModel","syncObject","createLocalMapBySharedMap","createLocalArrayBySharedArray","sharedArray","raw","isArrayHoleElement","localArray","syncArray","entries","createSharedModelByLocalModel","createSharedMapByLocalMap","createSharedArrayByLocalArray","YArray","sharedModelForArraySlot","createArrayHoleXmlElement","createSharedSlotByLocalSlot","YText","isAsyncSlot","AsyncSlot","schema","isDestroyed","sharedMetadata","metadata","then","subDocument","getText","getMap","next","yType","loader","markAsLoaded","sharedSlotState","sharedContent","formatsArrayToRemoteRecord","undefined","getAttributes","createLocalSlotBySharedSlot","contentDelta","slot","loadedSubDocument","subContent","data","onRequestLoad","toPromise","skipCheckHost","localModel","Array","isArray","_type_of","sharedModel","AsyncComponent","sharedState","yMap","componentName","instance","createComponentByData","Component","XmlElement","nodeName","localItem","insertSparseHole","atIndex","oldLen","applySparseHoleToRaw","holeCount","newTail","changeMarker","beforeChange","parentModel","getObserver","subModels","m","attachModel","retainOffset","markAsDirtied","paths","apply","valueToJSON","unApply","len","logError","console","error","getPaths","join","onSelfChange","irrevocableUpdate","at","splice","sharedObject","localObject","changes","subModel","size","changeList","historyApplyTransact","remoteUpdateTransact","collectStackableValuesInRange","formatter","values","getFormatRangesByFormatter","range","some","existing","Format","equal","serializeFormatForYjs","localFormats","getFormatter","StackableFormatter","incoming","serialized","current","stackableRemoteRetainToLocal","localValues","PendingErasure","remoteValues","localValue","remoteValue","stackableRemoteInsertToLocal","CustomUndoManagerConfig","collabHistoryErrorFn","CollabHistory","collaborate","stackSize","onBack","onForward","onChange","onPush","manager","historyItems","backEvent","forwardEvent","changeEvent","pushEvent","rootComponentRef","undoManagerConfig","canBack","canUndo","canForward","canRedo","listen","root","rootComponent","captureTimeout","trackedOrigins","Set","captureTransaction","arg","deleteFilter","beforePosition","onLocalChangeBefore","on","event","before","after","undoStack","shift","p","back","undo","forward","redo","clear","last","pop","MessageBus","onSync","syncEvent","sync","MultipleDocCollabHistory","isListen","actionStack","stackItem","timer","subscription","subDocs","listenerCaches","Subscription","listenItem","add","clearTimeout","undoManagers","historyStackItem","undoManager","redoStack","slice","setTimeout","SyncConnector","onLoad","onStateChange","loadEvent","stateChangeEvent","HocuspocusConnector","config","provide","HocuspocusProvider","_object_spread","onSynced","onAwarenessUpdate","states","clientId","message","setLocalStateField","setAwarenessField","onDestroy","disconnect","LocalConnector","_yDoc","options","destroyed","fields","Promise","resolve","emitAwarenessStates","getLocalAwarenessSnapshot","YWebsocketConnector","url","roomName","is","onUpdate","syncStates","awareness","getStates","id","WebsocketProvider","once","off","CollaborateModule","providers","History","useExisting","useFactory","collab","createConnector","deps","useClass","setup","textbus","messageBus","connector","Selection","consume","onlyLoad","testing","MultipleDocumentCollaborateModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,wBAAwBC,SAAAA,CAAU,qBAAA,CAAA;AAExC;;AAEC,IACM,IAAA,cAAeC,GAAf,SAAeA,cAAAA,GAAAA;AAAAA,IAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,cAAAA,CAAAA;AAoCrB;AAGM,IAAA,iBAAMC,iBAAN,SAAA,cAAA,EAAA;AAAMA,IAAAA,WAAAA,CAAAA,iBAAAA,EAAAA,cAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;AAAAA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,iBAAAA,CAAAA;AAAN,QAAA,OAAAC,aAAA,CAAA,IAAA,EAAMD,iBAAAA,EAAAA,SAAAA,CAAAA;;AAAAA,IAAAA,eAAAA,CAAAA,iBAAAA,EAAAA;;YACXE,GAAAA,EAAAA,sBAAAA;mBAAAA,SAAAA,oBAAAA,GAAAA;AACE,gBAAA,MAAML,qBAAAA,CAAsB,8CAAA,CAAA;AAC9B,YAAA;;;YAEAM,GAAAA,EAAAA,2BAAAA;mBAAAA,SAAAA,yBAAAA,GAAAA;AACE,gBAAA,MAAMN,qBAAAA,CAAsB,mDAAA,CAAA;AAC9B,YAAA;;;YAEAO,GAAAA,EAAAA,yBAAAA;mBAAAA,SAAAA,uBAAAA,GAAAA;AACE,gBAAA,MAAMP,qBAAAA,CAAsB,mDAAA,CAAA;AAC9B,YAAA;;;YAEAQ,GAAAA,EAAAA,oBAAAA;mBAAAA,SAAAA,kBAAAA,GAAAA;AACE,gBAAA,MAAMR,qBAAAA,CAAsB,8CAAA,CAAA;AAC9B,YAAA;;;YAEAS,GAAAA,EAAAA,sBAAAA;mBAAAA,SAAAA,oBAAAA,GAAAA;AACE,gBAAA,MAAMT,qBAAAA,CAAsB,8CAAA,CAAA;AAC9B,YAAA;;;YAEAU,GAAAA,EAAAA,2BAAAA;mBAAAA,SAAAA,yBAAAA,GAAAA;AACE,gBAAA,MAAMV,qBAAAA,CAAsB,mDAAA,CAAA;AAC9B,YAAA;;;AAvBWG,IAAAA,OAAAA,iBAAAA;EAA0BD,cAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNvC,2DACA,IAAMS,uBAAAA,GAA0B,eAAA;AAiBhC,IAAMC,qBAAqBX,SAAAA,CAAU,aAAA,CAAA;AAErC,IAAA,OAAMY,iBAAN,WAAA;AAAMA,IAAAA,SAAAA,OAAAA,GAAAA;AAAAA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA;AACJ,QAAAC,kBAAA,CAAA,IAAA,EAAQC,mBAAkB,IAAIC,OAAAA,EAAAA,CAAAA;AAC9B,QAAAF,kBAAA,CAAA,IAAA,EAAQG,mBAAkB,IAAID,OAAAA,EAAAA,CAAAA;;AAF1BH,IAAAA,eAAAA,CAAAA,OAAAA,EAAAA;;YAMJK,GAAAA,EAAAA,KAAAA;mBAAAA,SAAAA,GAAAA,CAAIC,GAAQ,EAAEC,KAAU,EAAA;gBACtB,IAAOC,aAAA,CAAHF,GAAAA,EAAeG,IAAAA,CAAAA,EAAM;AACvB,oBAAA,IAAI,CAACP,eAAe,CAACG,GAAG,CAACC,GAAAA,EAAKC,KAAAA,CAAAA;AAC9B,oBAAA,IAAI,CAACH,eAAe,CAACC,GAAG,CAACE,KAAAA,EAAOD,GAAAA,CAAAA;gBAClC,CAAA,MAAO;AACL,oBAAA,IAAI,CAACJ,eAAe,CAACG,GAAG,CAACE,KAAAA,EAAOD,GAAAA,CAAAA;AAChC,oBAAA,IAAI,CAACF,eAAe,CAACC,GAAG,CAACC,GAAAA,EAAKC,KAAAA,CAAAA;AAChC,gBAAA;AACF,YAAA;;;YAIAG,GAAAA,EAAAA,KAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,IAAIJ,GAAQ,EAAA;gBACV,IAAOE,aAAA,CAAHF,GAAAA,EAAeG,IAAAA,CAAAA,EAAM;AACvB,oBAAA,OAAO,IAAI,CAACP,eAAe,CAACQ,GAAG,CAACJ,GAAAA,CAAAA,IAAQ,IAAA;AAC1C,gBAAA;AACA,gBAAA,OAAO,IAAI,CAACF,eAAe,CAACM,GAAG,CAACJ,GAAAA,CAAAA,IAAQ,IAAA;AAC1C,YAAA;;;YAEAK,GAAAA,EAAAA,QAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,QAAOL,GAAiB,EAAA;gBACtB,IAAOE,aAAA,CAAHF,GAAAA,EAAeG,IAAAA,CAAAA,EAAM;AACvB,oBAAA,IAAMG,IAAI,IAAI,CAACV,eAAe,CAACQ,GAAG,CAACJ,GAAAA,CAAAA;AACnC,oBAAA,IAAI,CAACJ,eAAe,CAACS,MAAM,CAACL,GAAAA,CAAAA;AAC5B,oBAAA,IAAIM,CAAAA,EAAG;AACL,wBAAA,IAAI,CAACR,eAAe,CAACO,MAAM,CAACC,CAAAA,CAAAA;AAC9B,oBAAA;gBACF,CAAA,MAAO;AACL,oBAAA,IAAMA,KAAI,IAAI,CAACR,eAAe,CAACM,GAAG,CAACJ,GAAAA,CAAAA;AACnC,oBAAA,IAAI,CAACF,eAAe,CAACO,MAAM,CAACL,GAAAA,CAAAA;AAC5B,oBAAA,IAAIM,EAAAA,EAAG;AACL,wBAAA,IAAI,CAACV,eAAe,CAACS,MAAM,CAACC,EAAAA,CAAAA;AAC9B,oBAAA;AACF,gBAAA;AACF,YAAA;;;AAvCIZ,IAAAA,OAAAA,OAAAA;;AA2DC,IAAA,WAAMa,iBAAN,WAAA;aAAMA,WAAAA,CAYSC,SAAoB,EAC5B,QAA0B,EAC1B,SAA4B,EACpBC,cAA8B,EAAA;AAfvCF,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,WAAAA,CAAAA;;;;;AACXG,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,QAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,WAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,iBAAAA,MAAAA,CAAAA;AAEA,QAAAjB,kBAAA,CAAA,IAAA,EAAQkB,iBAAR,MAAA,CAAA;AACA,QAAAlB,kBAAA,CAAA,IAAA,EAAQmB,oBAAR,MAAA,CAAA;AACA,QAAAnB,kBAAA,CAAA,IAAA,EAAQoB,oBAAR,MAAA,CAAA;AAEA,QAAApB,kBAAA,CAAA,IAAA,EAAQqB,uBAAR,MAAA,CAAA;AACA,QAAArB,kBAAA,CAAA,IAAA,EAAQsB,YAAR,MAAA,CAAA;aAEoBT,SAAAA,GAAAA,SAAAA;aACAU,QAAAA,GAAAA,QAAAA;aACAC,SAAAA,GAAAA,SAAAA;aACAV,cAAAA,GAAAA,cAAAA;AAdpBC,QAAAA,IAAAA,CAAAA,IAAAA,GAAO,IAAIU,GAAAA,EAAAA;AACXT,QAAAA,IAAAA,CAAAA,OAAAA,GAAU,IAAIjB,OAAAA,EAAAA;AAGNmB,QAAAA,IAAAA,CAAAA,aAAAA,GAAgC,EAAE;aAClCC,gBAAAA,GAAmB,KAAA;AACnBC,QAAAA,IAAAA,CAAAA,gBAAAA,GAAmB,IAAIM,OAAAA,EAAAA;AAEvBL,QAAAA,IAAAA,CAAAA,mBAAAA,GAAsB,IAAInB,OAAAA,EAAAA;AAC1BoB,QAAAA,IAAAA,CAAAA,QAAAA,GAAW,EAAC;AAMlB,QAAA,IAAI,CAACL,aAAa,GAAG,IAAI,CAACG,gBAAgB,CAACO,YAAY,EAAA;;AAhB9Cf,IAAAA,eAAAA,CAAAA,WAAAA,EAAAA;;YAmBXgB,GAAAA,EAAAA,mBAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,iBAAAA,CAAkBb,IAAU,EAAEc,eAA0B,EAAEC,cAA8B,EAAA;gBACtF,IAAI,CAACC,aAAa,CAAChB,IAAAA,CAAAA;AACnB,gBAAA,IAAI,CAACiB,aAAa,CAACjB,IAAAA,EAAMc,eAAAA,EAAiBC,cAAAA,CAAAA;AAC5C,YAAA;;;YAEAG,GAAAA,EAAAA,cAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,YAAAA,CAAalB,IAAU,EAAEmB,UAAiB,EAAEC,SAAe,EAAA;;gBACzD,IAAID,UAAAA,CAAWE,MAAM,EAAE;AACrBD,oBAAAA,SAAAA,CAAUE,MAAM,CAAC,CAAA,CAAA;oBACjBF,SAAAA,CAAUzB,MAAM,CAACyB,SAAAA,CAAUC,MAAM,CAAA;AACjCD,oBAAAA,SAAAA,CAAUG,eAAe,EAAA;AACzBH,oBAAAA,SAAAA,CAAUI,YAAY,EAAA;oBACtB,IAAI,CAACC,yBAAyB,CAACN,UAAAA,EAAYC,SAAAA,CAAAA;gBAC7C,CAAA,MAAO;AACLpB,oBAAAA,IAAAA,CAAK0B,QAAQ,CAAC,WAAA;wBACZ,KAAA,CAAKC,yBAAyB,CAACR,UAAAA,EAAYC,SAAAA,CAAAA;AAC7C,oBAAA,CAAA,CAAA;AACF,gBAAA;gBACA,IAAI,CAACJ,aAAa,CAAChB,IAAAA,CAAAA;gBACnB,IAAI,CAAC4B,QAAQ,CAACT,UAAAA,EAAYC,SAAAA,CAAAA;AAC5B,YAAA;;;YAEAS,GAAAA,EAAAA,sBAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,qBAAqBC,QAAwB,EAAA;gBAC3C,IAAMC,cAAAA,GAAiBC,0CAAAA,CAA2CF,QAAAA,CAASG,MAAM,CAACH,QAAQ,EAAEA,QAAAA,CAASG,MAAM,CAACC,GAAG,CAAA;gBAC/G,IAAMC,aAAAA,GAAgBH,0CAAAA,CAA2CF,QAAAA,CAASM,KAAK,CAACN,QAAQ,EAAEA,QAAAA,CAASM,KAAK,CAACF,GAAG,CAAA;AAC5G,gBAAA,IAAIH,kBAAkBI,aAAAA,EAAe;oBACnC,IAAME,SAAAA,GAAY,IAAI,CAACpC,OAAO,CAACP,GAAG,CAACyC,cAAcG,IAAI,CAAA;oBACrD,IAAMC,UAAAA,GAAa,IAAI,CAACtC,OAAO,CAACP,GAAG,CAACqC,eAAeO,IAAI,CAAA;AACvD,oBAAA,IAAID,aAAaE,UAAAA,EAAY;wBAC3B,OAAO;4BACLA,UAAAA,EAAAA,UAAAA;AACAC,4BAAAA,YAAAA,EAAcT,eAAeU,KAAK;4BAClCJ,SAAAA,EAAAA,SAAAA;AACAK,4BAAAA,WAAAA,EAAaP,cAAcM;AAC7B,yBAAA;AACF,oBAAA;AACF,gBAAA;gBACA,OAAO,IAAA;AACT,YAAA;;;YAEAE,GAAAA,EAAAA,2BAAAA;mBAAAA,SAAAA,yBAAAA,GAAAA;AACE,gBAAA,IAA2D,eAAA,GAAA,IAAI,CAAClC,SAAS,EAAlE8B,UAAAA,GAAoD,eAAA,CAApDA,UAAAA,EAAYC,YAAAA,GAAwC,gBAAxCA,YAAAA,EAAcH,SAAAA,GAA0B,eAAA,CAA1BA,SAAAA,EAAWK,cAAe,eAAA,CAAfA,WAAAA;AAC5C,gBAAA,IAAIH,UAAAA,EAAY;AACd,oBAAA,IAAMK,cAAc,IAAI,CAAC3C,OAAO,CAACP,GAAG,CAAC6C,UAAAA,CAAAA;AACrC,oBAAA,IAAIK,WAAAA,EAAa;wBACf,IAAMb,cAAAA,GAAiBc,oCAAoCD,WAAAA,EAAaJ,YAAAA,CAAAA;AACxE,wBAAA,IAAIH,SAAAA,EAAW;AACb,4BAAA,IAAMS,aAAa,IAAI,CAAC7C,OAAO,CAACP,GAAG,CAAC2C,SAAAA,CAAAA;AACpC,4BAAA,IAAIS,UAAAA,EAAY;gCACd,IAAMX,aAAAA,GAAgBU,oCAAoCC,UAAAA,EAAYJ,WAAAA,CAAAA;gCACtE,OAAO;oCACLN,KAAAA,EAAO;AACLF,wCAAAA,GAAAA,EAAKY,WAAWZ,GAAG;wCACnBJ,QAAAA,EAAUK;AACZ,qCAAA;oCACAF,MAAAA,EAAQ;AACNC,wCAAAA,GAAAA,EAAKU,YAAYV,GAAG;wCACpBJ,QAAAA,EAAUC;AACZ;AACF,iCAAA;AACF,4BAAA;AACF,wBAAA;AACF,oBAAA;AACF,gBAAA;gBACA,OAAO,IAAA;AACT,YAAA;;;YAEAgB,GAAAA,EAAAA,uBAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,sBAAsBjB,QAA+B,EAAA;AACnD,gBAAA,IAAI,CAACA,QAAAA,EAAU;oBACb,IAAI,CAACrB,SAAS,CAACuC,QAAQ,EAAA;AACvB,oBAAA;AACF,gBAAA;AACA,gBAAA,IAAMvC,SAAAA,GAAY,IAAI,CAACoB,oBAAoB,CAACC,QAAAA,CAAAA;AAC5C,gBAAA,IAAIrB,SAAAA,EAAW;AACb,oBAAA,IAAI,CAACA,SAAS,CAACwC,gBAAgB,CAC7BxC,SAAAA,CAAU8B,UAAU,EACpB9B,SAAAA,CAAU+B,YAAY,EACtB/B,SAAAA,CAAU4B,SAAS,EACnB5B,UAAUiC,WAAW,CAAA;AACzB,gBAAA;AACF,YAAA;;;YAEQ1B,GAAAA,EAAAA,eAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,cAAchB,IAAU,EAAA;;AAC9B,gBAAA,IAAI,CAACG,aAAa,CAAC+C,IAAI,CACrB,IAAI,CAACpD,SAAS,CAACqD,YAAY,CAACC,IAAI,CAC9BC,IAAIC,SAAAA,IAAAA,EAAAA;oBACF,OAAOA,IAAAA,CAAKC,MAAM,CAACC,SAAAA,CAAAA,EAAAA;AACjB,wBAAA,OAAOA,CAAAA,CAAEC,IAAI,KAAKC,YAAAA,CAAaC,MAAM;AACvC,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA,EACAJ,OAAOD,SAAAA,IAAAA,EAAAA;AACL,oBAAA,OAAOA,KAAKjC,MAAM;AACpB,gBAAA,CAAA,CAAA,CAAA,CACAuC,SAAS,CAAC,WAAA;AACV,oBAAA,IAAMC,UAAoB,EAAE;AAE5B,oBAAA,IAAIC,MAAAA,GAAwB,IAAA;AAE5B,oBAAA,IAAMxD,sBAAsB,KAAA,CAAKA,mBAAmB,CAACZ,GAAG,CAACM,SAAS,EAAE;AAE/D,oBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;AAAL,wBAAA,IAAA,IAAK,YAAcM,mBAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAd,KAAA,EAAA,EAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAAmC;AAAnC,4BAAA,IAAMgD,IAAAA,GAAN,KAAA,CAAA,KAAA;AACH,4BAAA,IAAI,CAACQ,MAAAA,EAAQ;gCACXA,MAAAA,GAAS;AACPC,oCAAAA,MAAAA,EAAQT,KAAKS,MAAM;AACnBC,oCAAAA,OAAAA,EAAS;AACX,iCAAA;AACAH,gCAAAA,OAAAA,CAAQX,IAAI,CAACY,MAAAA,CAAAA;AACf,4BAAA;AACA,4BAAA,IAAIA,MAAAA,CAAOC,MAAM,KAAKT,IAAAA,CAAKS,MAAM,EAAE;AACjCD,gCAAAA,MAAAA,CAAOE,OAAO,CAACd,IAAI,CAACI,KAAKW,MAAM,CAAA;4BACjC,CAAA,MAAO;gCACLH,MAAAA,GAAS;AACPC,oCAAAA,MAAAA,EAAQT,KAAKS,MAAM;oCACnBC,OAAAA,EAAS;AAACV,wCAAAA,IAAAA,CAAKW;AAAO;AACxB,iCAAA;AACAJ,gCAAAA,OAAAA,CAAQX,IAAI,CAACY,MAAAA,CAAAA;AACf,4BAAA;AACF,wBAAA;;AAjBK,wBAAA,iBAAA,GAAA,IAAA;AAAA,wBAAA,cAAA,GAAA,GAAA;;;iCAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,gCAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,4BAAA,IAAA,iBAAA,EAAA;AAAA,gCAAA,MAAA,cAAA;;;;oBAmBL,KAAA,CAAKxD,mBAAmB,CAACX,MAAM,CAACK,IAAAA,CAAAA;AAE3B,oBAAA,IAAA,0BAAA,GAAA,IAAA,EAAA,kBAAA,GAAA,KAAA,EAAA,eAAA,GAAA,SAAA;;;AAAA,4BAAA,IAAMsD,IAAAA,GAAN,MAAA,CAAA,KAAA;AACHtD,4BAAAA,IAAAA,CAAK0B,QAAQ,CAAC,WAAA;AACZ4B,gCAAAA,IAAAA,CAAKU,OAAO,CAACE,OAAO,CAACC,SAAAA,EAAAA,EAAAA;AACnBA,oCAAAA,EAAAA,EAAAA;AACF,gCAAA,CAAA,CAAA;AACF,4BAAA,CAAA,EAAGb,IAAAA,CAAKS,MAAM,GAAG/D,IAAAA,GAAO,MAAKO,QAAQ,CAAA;AACvC,wBAAA,CAAA;AANA,wBAAA,IAAA,IAAK,UAAA,GAAcsD,OAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAd,MAAA,EAAA,EAAA,0BAAA,GAAA,CAAA,SAAA,UAAA,CAAA,IAAA,EAAA,EAAA,IAAA,CAAA,EAAA,0BAAA,GAAA,IAAA,CAAA,KAAA,EAAA;;AAAA,wBAAA,kBAAA,GAAA,IAAA;AAAA,wBAAA,eAAA,GAAA,GAAA;;;iCAAA,0BAAA,IAAA,UAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,gCAAA,UAAA,CAAA,MAAA,EAAA;;;AAAA,4BAAA,IAAA,kBAAA,EAAA;AAAA,gCAAA,MAAA,eAAA;;;;AAOP,gBAAA,CAAA,CAAA,CAAA;AAEJ,YAAA;;;YAEQ5C,GAAAA,EAAAA,eAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,aAAAA,CAAcjB,IAAU,EAAEc,eAA0B,EAAEC,cAA8B,EAAA;gBAC1F,IAAIqD,KAAAA,GAAQtD,eAAAA,CAAgBpB,GAAG,CAAC,OAAA,CAAA;AAChC,gBAAA,IAAI,CAAC0E,KAAAA,EAAO;AACVA,oBAAAA,KAAAA,GAAQ,IAAIC,GAAAA,EAAAA;AACZ,oBAAA,IAAI,CAACC,uBAAuB,CAACvD,cAAAA,CAAeqD,KAAK,EAAqCA,KAAAA,CAAAA;AACtFpE,oBAAAA,IAAAA,CAAK0B,QAAQ,CAAC,WAAA;wBACZZ,eAAAA,CAAgBzB,GAAG,CAAC,OAAA,EAAS+E,KAAAA,CAAAA;AAC/B,oBAAA,CAAA,CAAA;gBACF,CAAA,MAAO;AACLG,oBAAAA,MAAAA,CAAOC,IAAI,CAACzD,cAAAA,CAAeqD,KAAK,CAAA,CAAEF,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;AACxCmF,wBAAAA,OAAAA,CAAQC,cAAc,CAAC3D,cAAAA,CAAeqD,KAAK,EAAE9E,GAAAA,CAAAA;AAC/C,oBAAA,CAAA,CAAA;AACA,oBAAA,IAAI,CAACqF,uBAAuB,CAACP,KAAAA,EAAOrD,eAAeqD,KAAK,CAAA;AAC1D,gBAAA;AACF,YAAA;;;YAEQxC,GAAAA,EAAAA,UAAAA;mBAAR,SAAQA,QAAAA,CAAST,UAAiB,EAAEC,SAAe,EAAA;;gBACjD,IAAMwD,UAAAA,GAAa,oBAACC,EAAAA,EAAgBC,EAAAA,EAAAA;oBAClC,KAAA,CAAKC,eAAe,CAACD,EAAAA,EAAI,WAAA;AACvB1D,wBAAAA,SAAAA,CAAUE,MAAM,CAAC,CAAA,CAAA;AACjBuD,wBAAAA,EAAAA,CAAGG,WAAW,CAACd,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;AACrB,4BAAA,IAAM2F,MAAAA,GAASJ,EAAAA,CAAGL,IAAI,CAAC9E,GAAG,CAACJ,GAAAA,CAAAA;AAC3B,4BAAA,IAAI,CAAC2F,MAAAA,EAAQ;AACX,gCAAA;AACF,4BAAA;4BACA,IAAMC,UAAAA,GAAaD,OAAOhB,MAAM;4BAChC,IAAIiB,UAAAA,KAAe,QAAA,IAAYA,UAAAA,KAAe,KAAA,EAAO;AACnD,gCAAA,IAAMC,SAAAA,GAAY,KAAA,CAAK3E,QAAQ,CAAC4E,YAAY,CAAC9F,GAAAA,CAAAA;AAC7C,gCAAA,IAAI6F,SAAAA,EAAW;AACb/D,oCAAAA,SAAAA,CAAUiE,YAAY,CAACF,SAAAA,EAAWhE,UAAAA,CAAWiE,YAAY,CAAC9F,GAAAA,CAAAA,CAAAA;AAC5D,gCAAA;4BACF,CAAA,MAAO,IAAI4F,eAAe,QAAA,EAAU;AAClC,gCAAA,IAAMC,UAAAA,GAAY,KAAA,CAAK3E,QAAQ,CAAC4E,YAAY,CAAC9F,GAAAA,CAAAA;AAC7C,gCAAA,IAAI6F,UAAAA,EAAW;AACb/D,oCAAAA,SAAAA,CAAUkE,eAAe,CAACH,UAAAA,CAAAA;AAC5B,gCAAA;AACF,4BAAA;AACF,wBAAA,CAAA,CAAA;AACAN,wBAAAA,EAAAA,CAAGU,KAAK,CAACrB,OAAO,CAACD,SAAAA,MAAAA,EAAAA;AACf,4BAAA,IAAIQ,OAAAA,CAAQe,GAAG,CAACvB,MAAAA,EAAQ,QAAA,CAAA,EAAW;gCACjC,IAAIA,MAAAA,CAAOwB,UAAU,EAAE;oCACrB,IAAMC,KAAAA,GAAQtE,UAAUqB,KAAK;oCAC7B,IAAMkD,GAAAA,GAAMD,KAAAA,GAAQzB,MAAAA,CAAO3C,MAAM;oCACjC,IAAMsE,OAAAA,GAAUC,2BAA2B,KAAA,CAAKrF,QAAQ,EAAEY,SAAAA,EAAWsE,KAAAA,EAAOC,GAAAA,EAAK1B,MAAAA,CAAOwB,UAAU,CAAA;oCAClG,IAAIG,OAAAA,CAAQvE,MAAM,EAAE;AAClBD,wCAAAA,SAAAA,CAAUE,MAAM,CAAC2C,MAAAA,CAAO3C,MAAM,EAAGsE,OAAAA,CAAAA;AACnC,oCAAA;AACF,gCAAA;AACAxE,gCAAAA,SAAAA,CAAUE,MAAM,CAACF,SAAAA,CAAUqB,KAAK,GAAGwB,OAAO3C,MAAM,CAAA;4BAClD,CAAA,MAAO,IAAI2C,MAAAA,CAAO6B,MAAM,EAAE;gCACxB,IAAMrD,KAAAA,GAAQrB,UAAUqB,KAAK;AAC7B,gCAAA,IAAIpB,MAAAA,GAAS,CAAA;AACb,gCAAA,IAAI,OAAO4C,MAAAA,CAAO6B,MAAM,KAAK,QAAA,EAAU;oCACrCzE,MAAAA,GAAS4C,MAAAA,CAAO6B,MAAM,CAACzE,MAAM;oCAC7BD,SAAAA,CAAU0E,MAAM,CAAC7B,MAAAA,CAAO6B,MAAM,EAAEC,2BAA2B,KAAA,CAAKvF,QAAQ,EAAEyD,MAAAA,CAAOwB,UAAU,CAAA,CAAA;gCAC7F,CAAA,MAAO;oCACL,IAAM3E,eAAAA,GAAkBmD,OAAO6B,MAAM;oCACrC,IAAME,SAAAA,GAAY,KAAA,CAAKC,qCAAqC,CAACnF,eAAAA,CAAAA;AAC7DM,oCAAAA,SAAAA,CAAU0E,MAAM,CAACE,SAAAA,CAAAA;AACnB,gCAAA;gCACA,IAAI,KAAA,CAAKvF,SAAS,CAACyF,UAAU,IAAI,CAAW1G,aAAA,CAATsF,EAAAA,CAAGqB,MAAM,EAAYC,WAAAA,CAAAA,EAAc;oCACpE,IAAIhF,SAAAA,KAAc,KAAA,CAAKX,SAAS,CAAC8B,UAAU,IAAI,KAAA,CAAK9B,SAAS,CAAC+B,YAAY,GAAIC,KAAAA,EAAO;wCACnF,KAAA,CAAKhC,SAAS,CAAC4F,SAAS,CAACjF,WAAW,KAAA,CAAKX,SAAS,CAAC+B,YAAY,GAAInB,MAAAA,CAAAA;AACrE,oCAAA;oCACA,IAAID,SAAAA,KAAc,KAAA,CAAKX,SAAS,CAAC4B,SAAS,IAAI,KAAA,CAAK5B,SAAS,CAACiC,WAAW,GAAID,KAAAA,EAAO;wCACjF,KAAA,CAAKhC,SAAS,CAAC6F,QAAQ,CAAClF,WAAW,KAAA,CAAKX,SAAS,CAACiC,WAAW,GAAIrB,MAAAA,CAAAA;AACnE,oCAAA;AACF,gCAAA;4BACF,CAAA,MAAO,IAAI4C,MAAAA,CAAOtE,MAAM,EAAE;gCACxB,IAAM8C,MAAAA,GAAQrB,UAAUqB,KAAK;gCAC7BrB,SAAAA,CAAUzB,MAAM,CAACsE,MAAAA,CAAOtE,MAAM,CAAA;gCAC9B,IAAI,KAAA,CAAKc,SAAS,CAACyF,UAAU,IAAI,CAAW1G,aAAA,CAATsF,EAAAA,CAAGqB,MAAM,EAAYC,WAAAA,CAAAA,EAAc;oCACpE,IAAIhF,SAAAA,KAAc,KAAA,CAAKX,SAAS,CAAC8B,UAAU,IAAI,KAAA,CAAK9B,SAAS,CAAC+B,YAAY,IAAKC,MAAAA,EAAO;wCACpF,KAAA,CAAKhC,SAAS,CAAC4F,SAAS,CAACjF,SAAAA,EAAW,KAAA,CAAKX,SAAS,CAAC8F,WAAW,GAAItC,MAAAA,CAAOtE,MAAM,CAAA;AACjF,oCAAA;oCACA,IAAIyB,SAAAA,KAAc,KAAA,CAAKX,SAAS,CAAC4B,SAAS,IAAI,KAAA,CAAK5B,SAAS,CAACiC,WAAW,IAAKD,MAAAA,EAAO;wCAClF,KAAA,CAAKhC,SAAS,CAAC6F,QAAQ,CAAClF,SAAAA,EAAW,KAAA,CAAKX,SAAS,CAACiC,WAAW,GAAIuB,MAAAA,CAAOtE,MAAM,CAAA;AAChF,oCAAA;AACF,gCAAA;AACF,4BAAA;AACF,wBAAA,CAAA,CAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA;AACAwB,gBAAAA,UAAAA,CAAWqF,OAAO,CAAC5B,UAAAA,CAAAA;AAEnB,gBAAA,IAAM6B,MAAMrF,SAAAA,CAAUsF,eAAe,CAAC9C,SAAS,CAACI,SAAAA,OAAAA,EAAAA;AAC9C,oBAAA,KAAA,CAAK2C,cAAc,CAACxF,UAAAA,CAAWe,GAAG,EAAE,IAAA,EAAM,WAAA;AACxC,wBAAA,IAAI0E,MAAAA,GAAS,CAAA;AACb,wBAAA,IAAIvF,MAAAA,GAAS,CAAA;AACR,wBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;AAAL,4BAAA,IAAA,IAAK,YAAgB2C,OAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAhB,KAAA,EAAA,EAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAAyB;AAAzB,gCAAA,IAAMC,MAAAA,GAAN,KAAA,CAAA,KAAA;gCACH,IAAIA,MAAAA,CAAO3B,IAAI,KAAK,QAAA,EAAU;oCAC5B,IAAMsD,OAAAA,GAAU3B,OAAO2B,OAAO;AAC9B,oCAAA,IAAIA,OAAAA,EAAS;wCACX,IAAMiB,KAAAA,GAAQC,2BAAAA,CACZ,KAAA,CAAKtG,QAAQ,EACbY,WACAwF,MAAAA,EACAA,MAAAA,GAAS3C,MAAAA,CAAO2C,MAAM,EACtBhB,OAAAA,CAAAA;AAEF,wCAAA,IAAIrB,MAAAA,CAAOC,IAAI,CAACqC,KAAAA,CAAAA,CAAOxF,MAAM,EAAE;AAC7BF,4CAAAA,UAAAA,CAAW4F,MAAM,CAACH,MAAAA,EAAQ3C,MAAAA,CAAO2C,MAAM,EAAEC,KAAAA,CAAAA;AAC3C,wCAAA;oCACF,CAAA,MAAO;AACLD,wCAAAA,MAAAA,GAAS3C,OAAO2C,MAAM;AACxB,oCAAA;AACF,gCAAA,CAAA,MAAO,IAAI3C,MAAAA,CAAO3B,IAAI,KAAK,eAAA,EAAiB;oCAC1C,IAAMiD,KAAAA,GAAQpE,WAAW6F,OAAO,EAAA;AAChC,oCAAA,IAAMC,OAAAA,GAAU1B,KAAAA,CAAMlE,MAAM,KAAK,CAAA,IAAKkE,KAAK,CAAC,CAAA,CAAE,CAACO,MAAM,KAAKrG,IAAAA,CAAKyH,gBAAgB;AAC/E,oCAAA,IAAI,OAAOjD,MAAAA,CAAOkD,OAAO,KAAK,QAAA,EAAU;wCACtC9F,MAAAA,GAAS4C,MAAAA,CAAOkD,OAAO,CAAC9F,MAAM;AAC9BF,wCAAAA,UAAAA,CAAW2E,MAAM,CAACc,MAAAA,EAAQ3C,MAAAA,CAAOkD,OAAO,EAAEC,0BAAAA,CAA2B,KAAA,CAAK5G,QAAQ,EAAEyD,MAAAA,CAAO2B,OAAO,KAAK,EAAC,CAAA;oCAC1G,CAAA,MAAO;wCACLvE,MAAAA,GAAS,CAAA;AACT,wCAAA,IAAMP,eAAAA,GAAkB,KAAA,CAAKuG,qCAAqC,CAACpD,OAAOqD,GAAG,CAAA;wCAC7EnG,UAAAA,CAAWoG,WAAW,CAACX,MAAAA,EAAQ9F,eAAAA,EAAiBsG,0BAAAA,CAA2B,KAAA,CAAK5G,QAAQ,EAAEyD,MAAAA,CAAO2B,OAAO,CAAA,IAAK,EAAC,CAAA;AAChH,oCAAA;oCAEA,IAAIqB,OAAAA,IAAWL,WAAW,CAAA,EAAG;AAC3BzF,wCAAAA,UAAAA,CAAWxB,MAAM,CAACwB,UAAAA,CAAWE,MAAM,GAAG,CAAA,EAAG,CAAA,CAAA;AAC3C,oCAAA;oCACAuF,MAAAA,IAAUvF,MAAAA;AACZ,gCAAA,CAAA,MAAO,IAAI4C,MAAAA,CAAO3B,IAAI,KAAK,QAAA,EAAU;oCACnC,IAAMiD,MAAAA,GAAQpE,WAAW6F,OAAO,EAAA;oCAChC,IAAI7F,UAAAA,CAAWE,MAAM,EAAE;AACrBF,wCAAAA,UAAAA,CAAWxB,MAAM,CAACiH,MAAAA,EAAQ3C,MAAAA,CAAOuD,KAAK,CAAA;AACxC,oCAAA;oCACA,IAAIrG,UAAAA,CAAWE,MAAM,KAAK,CAAA,EAAG;AACAkE,wCAAAA,IAAAA,OAAAA;wCAA3BpE,UAAAA,CAAW2E,MAAM,CAAC,CAAA,EAAG,IAAA,EAAA,CAAMP,OAAAA,GAAAA,MAAK,CAAC,CAAA,CAAE,MAAA,IAAA,IAARA,OAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAUE,UAAU,CAAA;AACjD,oCAAA;AACF,gCAAA,CAAA,MAAO,IAAIxB,MAAAA,CAAO3B,IAAI,KAAK,SAAA,EAAW;AACpCnB,oCAAAA,UAAAA,CAAWkE,YAAY,CAACpB,MAAAA,CAAOwD,IAAI,EAAExD,OAAO1E,KAAK,CAAA;AACnD,gCAAA,CAAA,MAAO,IAAI0E,MAAAA,CAAO3B,IAAI,KAAK,YAAA,EAAc;oCACvCnB,UAAAA,CAAWmE,eAAe,CAACrB,MAAAA,CAAOwD,IAAI,CAAA;AACxC,gCAAA;AACF,4BAAA;;AA9CK,4BAAA,iBAAA,GAAA,IAAA;AAAA,4BAAA,cAAA,GAAA,GAAA;;;qCAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,oCAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,gCAAA,IAAA,iBAAA,EAAA;AAAA,oCAAA,MAAA,cAAA;;;;AA+CP,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;AAEA,gBAAA,IAAI,CAACxH,OAAO,CAACZ,GAAG,CAAC+B,SAAAA,EAAWD,UAAAA,CAAAA;gBAE5BC,SAAAA,CAAUsG,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;oBAC3C,KAAA,CAAK1H,OAAO,CAACN,MAAM,CAACyB,SAAAA,CAAAA;AACpBD,oBAAAA,UAAAA,CAAWyG,SAAS,CAAChD,UAAAA,CAAAA;AACrB6B,oBAAAA,GAAAA,CAAIoB,WAAW,EAAA;AACjB,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAGAC,GAAAA,EAAAA,SAAAA;mBAAAA,SAAAA,OAAAA,GAAAA;AACE,gBAAA,IAAI,CAAC3H,aAAa,CAAC+D,OAAO,CAACV,SAAAA,CAAAA,EAAAA;AAAKA,oBAAAA,OAAAA,CAAAA,CAAEqE,WAAW,EAAA;;gBAC7C,IAAI,CAAC1H,aAAa,GAAG,EAAE;AACzB,YAAA;;;YAEQwE,GAAAA,EAAAA,yBAAAA;mBAAR,SAAQA,uBAAAA,CAAwBoD,SAAoB,EAAEC,QAAyC,EAAA;;gBAC7FD,SAAAA,CAAU7D,OAAO,CAAC,SAAC3E,KAAAA,EAAOD,GAAAA,EAAAA;AACxB0I,oBAAAA,QAAQ,CAAC1I,GAAAA,CAAI,GAAG2I,KAAAA,CAAM,KAAA,CAAKC,+BAA+B,CAAC3I,KAAAA,CAAAA,CAAAA;AAC7D,gBAAA,CAAA,CAAA;gBACA,IAAI,CAAC4I,UAAU,CAACJ,SAAAA,EAAWC,QAAAA,CAAAA;AAC7B,YAAA;;;YAEQI,GAAAA,EAAAA,2BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,0BAA0BL,SAAoB,EAAA;gBACpD,IAAMC,QAAAA,GAAWxB,QAAQ,EAAC,CAAA;gBAC1B,IAAI,CAAC7B,uBAAuB,CAACoD,SAAAA,EAAWC,QAAAA,CAAAA;gBACxC,OAAOA,QAAAA;AACT,YAAA;;;YAEQK,GAAAA,EAAAA,+BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,8BAA8BC,WAAwB,EAAA;AAC5D,gBAAA,IAAMC,MAAa,EAAE;AACrB,gBAAA,IAAK,IAAI/E,CAAAA,GAAI,CAAA,EAAGA,IAAI8E,WAAAA,CAAYjH,MAAM,EAAEmC,CAAAA,EAAAA,CAAK;oBAC3C,IAAMF,IAAAA,GAAOgF,WAAAA,CAAY5I,GAAG,CAAC8D,CAAAA,CAAAA;AAC7B,oBAAA,IAAI,CAAC,IAAI,CAACgF,kBAAkB,CAAClF,IAAAA,CAAAA,EAAO;AAClCiF,wBAAAA,GAAG,CAAC/E,CAAAA,CAAE,GAAGyE,MAAM,IAAI,CAACC,+BAA+B,CAAC5E,IAAAA,CAAAA,CAAAA;AACtD,oBAAA;AACF,gBAAA;gBACAiF,GAAAA,CAAIlH,MAAM,GAAGiH,WAAAA,CAAYjH,MAAM;AAC/B,gBAAA,IAAMoH,aAAajC,OAAAA,CAAQ+B,GAAAA,CAAAA;gBAC3B,IAAI,CAACG,SAAS,CAACJ,WAAAA,EAAaG,UAAAA,CAAAA;gBAC5B,OAAOA,UAAAA;AACT,YAAA;;;YAEQnE,GAAAA,EAAAA,yBAAAA;mBAAR,SAAQA,uBAAAA,CAAwB0D,QAAyC,EAAED,SAAoB,EAAA;;AAC7FxD,gBAAAA,MAAAA,CAAOoE,OAAO,CAACX,QAAAA,CAAAA,CAAU9D,OAAO,CAAC,SAAA,KAAA,EAAA;6DAAE5E,GAAAA,GAAAA,MAAAA,CAAAA,CAAAA,CAAAA,EAAKC,KAAAA,GAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AACtCwI,oBAAAA,SAAAA,CAAU1I,GAAG,CAACC,GAAAA,EAAK,KAAA,CAAKsJ,6BAA6B,CAACrJ,KAAAA,CAAAA,CAAAA;AACxD,gBAAA,CAAA,CAAA;gBACA,IAAI,CAAC4I,UAAU,CAACJ,SAAAA,EAAWC,QAAAA,CAAAA;AAC7B,YAAA;;;YAEQa,GAAAA,EAAAA,2BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,0BAA0Bb,QAAyC,EAAA;AACzE,gBAAA,IAAMD,YAAY,IAAI1D,GAAAA,EAAAA;gBACtB,IAAI,CAACC,uBAAuB,CAAC0D,QAAAA,EAAUD,SAAAA,CAAAA;gBACvC,OAAOA,SAAAA;AACT,YAAA;;;YAEQe,GAAAA,EAAAA,+BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,8BAA8BL,UAA6B,EAAA;AACjE,gBAAA,IAAMH,cAAc,IAAIS,OAAAA,EAAAA;AACxB,gBAAA,IAAK,IAAIvF,CAAAA,GAAI,CAAA,EAAGA,IAAIiF,UAAAA,CAAWpH,MAAM,EAAEmC,CAAAA,EAAAA,CAAK;AAC1C,oBAAA,IAAIA,KAAKiF,UAAAA,EAAY;AACnBH,wBAAAA,WAAAA,CAAYpF,IAAI,CAAC;AAAC,4BAAA,IAAI,CAAC8F,uBAAuB,CAACP,UAAU,CAACjF,CAAAA,CAAE;AAAE,yBAAA,CAAA;oBAChE,CAAA,MAAO;AACL8E,wBAAAA,WAAAA,CAAYpF,IAAI,CAAC;AAAC,4BAAA,IAAI,CAAC+F,yBAAyB;AAAG,yBAAA,CAAA;AACrD,oBAAA;AACF,gBAAA;gBACA,IAAI,CAACP,SAAS,CAACJ,WAAAA,EAAaG,UAAAA,CAAAA;gBAC5B,OAAOH,WAAAA;AACT,YAAA;;;YAEQY,GAAAA,EAAAA,6BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,4BAA4B9H,SAAe,EAAA;;AACjD,gBAAA,IAAMD,aAAa,IAAIgI,IAAAA,EAAAA;gBACvB,IAAMC,WAAAA,GAAchI,aAAS,CAATA,SAAAA,EAAqBiI,SAAAA,CAAAA;AACzClI,gBAAAA,UAAAA,CAAWkE,YAAY,CAAC,QAAA,EAAW,oBAAA,CAAGjE,UAAUkI,MAAM,CAAA,CAAA;AACtDnI,gBAAAA,UAAAA,CAAWkE,YAAY,CAAC,MAAA,EAAQ+D,WAAAA,GAAc,OAAA,GAAU,MAAA,CAAA;AAExD,gBAAA,IAAIA,WAAAA,EAAa;AACf,oBAAA,IAAIG,WAAAA,GAAc,KAAA;AAClB,oBAAA,IAAMC,iBAAiB,IAAI,CAACX,yBAAyB,CAACzH,UAAUqI,QAAQ,CAAA;oBACxEtI,UAAAA,CAAWkE,YAAY,CAAC,UAAA,EAAYmE,cAAAA,CAAAA;oBACpC,IAAI,CAACzJ,cAAc,CAACvB,oBAAoB,CAAC4C,SAAAA,CAAAA,CAAWsI,IAAI,CAACC,SAAAA,WAAAA,EAAAA;AACvD,wBAAA,IAAIJ,WAAAA,EAAa;AACf,4BAAA;AACF,wBAAA;wBACA,IAAMpC,OAAAA,GAAUwC,WAAAA,CAAYC,OAAO,CAAC,SAAA,CAAA;wBACpC,IAAMxF,KAAAA,GAAQuF,WAAAA,CAAYE,MAAM,CAAC,OAAA,CAAA;AACjC,wBAAA,KAAA,CAAKvF,uBAAuB,CAAClD,SAAAA,CAAUgD,KAAK,EAAEA,KAAAA,CAAAA;wBAC9C,KAAA,CAAKzC,yBAAyB,CAACwF,OAAAA,EAAS/F,SAAAA,CAAAA;wBACxC,KAAA,CAAKQ,QAAQ,CAACuF,OAAAA,EAAS/F,SAAAA,CAAAA;wBACvB,KAAA,CAAKf,gBAAgB,CAACyJ,IAAI,CAAC;4BACzB9J,IAAAA,EAAM2J,WAAAA;4BACNI,KAAAA,EAAO5C;AACT,yBAAA,CAAA;AACA,wBAAA,KAAA,CAAKnG,aAAa,CAAC2I,WAAAA,CAAAA;wBACnBvI,SAAAA,CAAU4I,MAAM,CAACC,YAAY,EAAA;AAC/B,oBAAA,CAAA,CAAA;oBACA7I,SAAAA,CAAUsG,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;wBAC3C4B,WAAAA,GAAc,IAAA;AAChB,oBAAA,CAAA,CAAA;oBACA,OAAOpI,UAAAA;AACT,gBAAA;AAEA,gBAAA,IAAM+I,kBAAkB,IAAI7F,GAAAA,EAAAA;AAC5B,gBAAA,IAAI,CAACC,uBAAuB,CAAClD,SAAAA,CAAUgD,KAAK,EAAqC8F,eAAAA,CAAAA;gBACjF/I,UAAAA,CAAWkE,YAAY,CAAC,OAAA,EAAS6E,eAAAA,CAAAA;AAEjC,gBAAA,IAAMC,gBAAgB,IAAIhB,IAAAA,EAAAA;gBAC1B,IAAI,CAACxH,yBAAyB,CAACwI,aAAAA,EAAe/I,SAAAA,CAAAA;gBAC9CD,UAAAA,CAAWoG,WAAW,CAAC,CAAA,EAAG4C,aAAAA,CAAAA;gBAC1B,IAAI,CAACvI,QAAQ,CAACuI,aAAAA,EAAe/I,SAAAA,CAAAA;gBAC7B,OAAOD,UAAAA;AACT,YAAA;;;YAEQQ,GAAAA,EAAAA,2BAAAA;mBAAR,SAAQA,yBAAAA,CAA0BwI,aAAoB,EAAE/I,SAAe,EAAA;;AACrE,gBAAA,IAAIwF,MAAAA,GAAS,CAAA;AACbxF,gBAAAA,SAAAA,CAAU4F,OAAO,EAAA,CAAG9C,OAAO,CAACV,SAAAA,CAAAA,EAAAA;oBAC1B,IAAMoC,OAAAA,GAAUpC,CAAAA,CAAEoC,OAAO,GAAGwE,0BAAAA,CAA2B,MAAK5J,QAAQ,EAAEgD,CAAAA,CAAEoC,OAAO,CAAA,GAAIyE,SAAAA;AACnF,oBAAA,IAAI,OAAO7G,CAAAA,CAAEsC,MAAM,KAAK,QAAA,EAAU;AAChCqE,wBAAAA,aAAAA,CAAcrE,MAAM,CAACc,MAAAA,EAAQpD,CAAAA,CAAEsC,MAAM,EAAEF,OAAAA,CAAAA;oBACzC,CAAA,MAAO;AACL,wBAAA,IAAM9E,eAAAA,GAAkB,KAAA,CAAKuG,qCAAqC,CAAC7D,EAAEsC,MAAM,CAAA;wBAC3EqE,aAAAA,CAAc5C,WAAW,CAACX,MAAAA,EAAQ9F,eAAAA,EAAiB8E,OAAAA,CAAAA;AACrD,oBAAA;oBACAgB,MAAAA,IAAUpD,CAAAA,CAAEsC,MAAM,CAACzE,MAAM;AAC3B,gBAAA,CAAA,CAAA;AACAD,gBAAAA,SAAAA,CAAUkJ,aAAa,EAAA,CAAGpG,OAAO,CAACZ,SAAAA,IAAAA,EAAAA;oBAChC6G,aAAAA,CAAc9E,YAAY,CAAC/B,IAAI,CAAC,CAAA,CAAE,CAACmE,IAAI,EAAEnE,IAAI,CAAC,CAAA,CAAE,CAAA;AAClD,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAEQiH,GAAAA,EAAAA,6BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,4BAA4BpJ,UAAiB,EAAA;;AA6CnCqJ,gBAAAA,IAAAA,cAAAA;gBA5ChB,IAAMlI,IAAAA,GAAOnB,UAAAA,CAAWiE,YAAY,CAAC,MAAA,CAAA;gBACrC,IAAMkE,MAAAA,GAASnI,UAAAA,CAAWiE,YAAY,CAAC,QAAA,CAAA;AAEvC,gBAAA,IAAI9C,SAAS,OAAA,EAAS;oBACpB,IAAMmH,QAAAA,GAAWtI,UAAAA,CAAWiE,YAAY,CAAC,UAAA,CAAA;oBACzC,IAAMqF,IAAAA,GAAO,IAAIpB,SAAAA,CAAUC,MAAAA,IAAU,EAAE,EAAE,IAAI,EAAC,CAAA;AAC9C,oBAAA,IAAI,CAAC3E,uBAAuB,CAAC8E,QAAAA,EAAUgB,KAAKhB,QAAQ,CAAA;AACpD,oBAAA,IAAMiB,oBAAoB,IAAI,CAAC3K,cAAc,CAACnB,oBAAoB,CAAC6L,IAAAA,CAAAA;AACnE,oBAAA,IAAIC,iBAAAA,EAAmB;wBACrB,IAAMC,UAAAA,GAAaD,iBAAAA,CAAkBd,OAAO,CAAC,SAAA,CAAA;wBAC7C,IAAMgB,IAAAA,GAAOF,iBAAAA,CAAkBb,MAAM,CAAC,OAAA,CAAA;AACtC,wBAAA,IAAI,CAAClF,uBAAuB,CAACiG,IAAAA,EAAMH,KAAKrG,KAAK,CAAA;AAC7C,wBAAA,IAAI,CAAClD,YAAY,CAACwJ,iBAAAA,EAAmBC,UAAAA,EAAYF,IAAAA,CAAAA;AACjD,wBAAA,IAAI,CAACpK,gBAAgB,CAACyJ,IAAI,CAAC;4BACzB9J,IAAAA,EAAM0K,iBAAAA;4BACNX,KAAAA,EAAOY;AACT,yBAAA,CAAA;wBACAF,IAAAA,CAAKT,MAAM,CAACC,YAAY,EAAA;wBACxB,OAAOQ,IAAAA;AACT,oBAAA;AACA,oBAAA,IAAIlB,WAAAA,GAAc,KAAA;AAClBkB,oBAAAA,IAAAA,CAAKT,MAAM,CAACa,aAAa,CAACC,SAAS,EAAA,CAAGpB,IAAI,CAAC,WAAA;AACzC,wBAAA,OAAO,KAAA,CAAK3J,cAAc,CAACpB,kBAAkB,CAAC8L,IAAAA,CAAAA;oBAChD,CAAA,CAAA,CAAGf,IAAI,CAACC,SAAAA,WAAAA,EAAAA;AACN,wBAAA,IAAIJ,WAAAA,EAAa;AACf,4BAAA;AACF,wBAAA;wBACA,IAAMoB,UAAAA,GAAahB,WAAAA,CAAYC,OAAO,CAAC,SAAA,CAAA;wBACvC,IAAMxF,KAAAA,GAAQuF,WAAAA,CAAYE,MAAM,CAAC,OAAA,CAAA;AACjC,wBAAA,KAAA,CAAKlF,uBAAuB,CAACP,KAAAA,EAAOqG,IAAAA,CAAKrG,KAAK,CAAA;wBAC9C,KAAA,CAAKlD,YAAY,CAACyI,WAAAA,EAAagB,UAAAA,EAAYF,IAAAA,CAAAA;wBAC3C,KAAA,CAAKpK,gBAAgB,CAACyJ,IAAI,CAAC;4BACzB9J,IAAAA,EAAM2J,WAAAA;4BACNI,KAAAA,EAAOY;AACT,yBAAA,CAAA;wBACAF,IAAAA,CAAKT,MAAM,CAACC,YAAY,EAAA;AAC1B,oBAAA,CAAA,CAAA;oBACAQ,IAAAA,CAAK/C,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;wBACtC4B,WAAAA,GAAc,IAAA;AAChB,oBAAA,CAAA,CAAA;oBACA,OAAOkB,IAAAA;AACT,gBAAA;gBAEA,IAAMD,YAAAA,GAAerJ,WAAW6F,OAAO,EAAA;gBACvC,IAAMG,OAAAA,GAAAA,CAAUqD,iBAAAA,YAAY,CAAC,EAAE,MAAA,IAAA,IAAfA,cAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,eAAiB1E,MAAM;AAEvC,gBAAA,IAAI,CAAStG,aAAA,CAAP2H,OAAAA,EAAmBgC,IAAAA,CAAAA,EAAQ;AAC/B,oBAAA,MAAMpK,kBAAAA,CAAmB,0CAAA,CAAA;AAC3B,gBAAA;AAEA,gBAAA,IAAMqC,YAAY,IAAI3B,IAAAA,CAAK6J,MAAAA,IAAU,EAAE,EAAE,EAAC,CAAA;gBAE1C,IAAMY,eAAAA,GAAkB/I,UAAAA,CAAWiE,YAAY,CAAC,OAAA,CAAA;AAChD,gBAAA,IAAI,CAACT,uBAAuB,CAACuF,eAAAA,EAAiB9I,UAAUgD,KAAK,CAAA;gBAE7D,IAAI,CAAC3C,yBAAyB,CAAC0F,OAAAA,EAAS/F,SAAAA,CAAAA;gBAExC,IAAI,CAACQ,QAAQ,CAACuF,OAAAA,EAAS/F,SAAAA,CAAAA;gBACvB,OAAOA,SAAAA;AACT,YAAA;;;YAEQK,GAAAA,EAAAA,2BAAAA;mBAAR,SAAQA,yBAAAA,CAA0B0F,OAAc,EAAE/F,SAAe,EAAA;;gBAC/D,IAAMmE,KAAAA,GAAQ4B,QAAQH,OAAO,EAAA;gBAE7B,IAAMH,KAAAA,GAAQM,QAAQmD,aAAa,EAAA;AACnC/F,gBAAAA,MAAAA,CAAOC,IAAI,CAACqC,KAAAA,CAAAA,CAAO3C,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;AACzB,oBAAA,IAAM6F,SAAAA,GAAY,KAAA,CAAK3E,QAAQ,CAAC4E,YAAY,CAAC9F,GAAAA,CAAAA;AAC7C,oBAAA,IAAI6F,SAAAA,EAAW;AACb/D,wBAAAA,SAAAA,CAAU2J,aAAa,CAAC,WAAA;AACtB3J,4BAAAA,SAAAA,CAAUiE,YAAY,CAACF,SAAAA,EAAW0B,KAAK,CAACvH,GAAAA,CAAI,CAAA;AAC9C,wBAAA,CAAA,CAAA;AACF,oBAAA;AACF,gBAAA,CAAA,CAAA;AACK,gBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;;AAAA,wBAAA,IAAM2E,MAAAA,GAAN,KAAA,CAAA,KAAA;wBACH,IAAIA,MAAAA,CAAO6B,MAAM,EAAE;AACjB,4BAAA,IAAI,OAAO7B,MAAAA,CAAO6B,MAAM,KAAK,QAAA,EAAU;AACrC,gCAAA,IAAMF,UAAUG,0BAAAA,CAA2B,MAAA,CAAKvF,QAAQ,EAAEyD,OAAOwB,UAAU,CAAA;AAC3ErE,gCAAAA,SAAAA,CAAU2J,aAAa,CAAC,WAAA;AACtB3J,oCAAAA,SAAAA,CAAU0E,MAAM,CAAC7B,MAAAA,CAAO6B,MAAM,EAAEF,OAAAA,CAAAA;AAClC,gCAAA,CAAA,CAAA;4BACF,CAAA,MAAO;gCACL,IAAM9E,eAAAA,GAAkBmD,OAAO6B,MAAM;gCACrC,IAAME,SAAAA,GAAY,MAAA,CAAKC,qCAAqC,CAACnF,eAAAA,CAAAA;AAC7DM,gCAAAA,SAAAA,CAAU2J,aAAa,CAAC,WAAA;oCACtB3J,SAAAA,CAAU0E,MAAM,CAACE,SAAAA,EAAWD,0BAAAA,CAA2B,MAAKvF,QAAQ,EAAEyD,OAAOwB,UAAU,CAAA,CAAA;AACzF,gCAAA,CAAA,CAAA;AACF,4BAAA;wBACF,CAAA,MAAO;AACL,4BAAA,MAAM1G,kBAAAA,CAAmB,0BAAA,CAAA;AAC3B,wBAAA;AACF,oBAAA,CAAA;AAjBA,oBAAA,IAAA,IAAK,SAAA,GAAgBwG,KAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAhB,KAAA,EAAA,EAAA,yBAAA,GAAA,CAAA,QAAA,SAAA,CAAA,IAAA,EAAA,EAAA,IAAA,CAAA,EAAA,yBAAA,GAAA,IAAA,CAAA,MAAA,GAAA,IAAA,EAAA,KAAA,EAAA;;AAAA,oBAAA,iBAAA,GAAA,IAAA;AAAA,oBAAA,cAAA,GAAA,GAAA;;;6BAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,4BAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,wBAAA,IAAA,iBAAA,EAAA;AAAA,4BAAA,MAAA,cAAA;;;;AAkBP,YAAA;;;YAEQqD,GAAAA,EAAAA,+BAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,8BAA8BoC,UAAe,EAAA;gBACnD,IAAcxL,aAAA,CAAVwL,UAAAA,EAAsBvL,IAAAA,CAAAA,EAAM;oBAC9B,OAAO,IAAI,CAACyJ,2BAA2B,CAAC8B,UAAAA,CAAAA;AAC1C,gBAAA;gBACA,IAAIC,KAAAA,CAAMC,OAAO,CAACF,UAAAA,CAAAA,EAAa;oBAC7B,OAAO,IAAI,CAAClC,6BAA6B,CAACkC,UAAAA,CAAAA;AAC5C,gBAAA;gBACA,IAAI,CAAA,OAAOA,UAAAA,KAAAA,WAAAA,GAAAA,WAAAA,GAAPG,UAAA,CAAOH,WAAS,MAAM,QAAA,IAAYA,eAAe,IAAA,EAAM;oBACzD,OAAO,IAAI,CAACnC,yBAAyB,CAACmC,UAAAA,CAAAA;AACxC,gBAAA;gBACA,OAAOA,UAAAA;AACT,YAAA;;;YAEQ9C,GAAAA,EAAAA,iCAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,gCAAgCkD,WAAgB,EAAA;gBACtD,IAAe5L,aAAA,CAAX4L,WAAAA,EAAuB/G,GAAAA,CAAAA,EAAM;oBAC/B,OAAO,IAAI,CAAC+D,yBAAyB,CAACgD,WAAAA,CAAAA;AACxC,gBAAA;gBACA,IAAe5L,aAAA,CAAX4L,WAAAA,EAAuBrC,OAAAA,CAAAA,EAAQ;oBACjC,OAAO,IAAI,CAACV,6BAA6B,CAAC+C,WAAAA,CAAAA;AAC5C,gBAAA;gBACA,IAAe5L,aAAA,CAAX4L,WAAAA,EAAuBjC,IAAAA,CAAAA,EAAO;oBAChC,OAAO,IAAI,CAACoB,2BAA2B,CAACa,WAAAA,CAAAA;AAC1C,gBAAA;gBACA,OAAOA,WAAAA;AACT,YAAA;;;YAGQ/D,GAAAA,EAAAA,uCAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,sCAAsCrB,SAAqC,EAAA;;AACjF,gBAAA,IAAMlF,kBAAkB,IAAIuD,GAAAA,EAAAA;AAC5BvD,gBAAAA,eAAAA,CAAgBzB,GAAG,CAAC,MAAA,EAAQ2G,SAAAA,CAAUyB,IAAI,CAAA;gBAE1C,IAAajI,aAAA,CAATwG,SAAAA,EAAqBqF,cAAAA,CAAAA,EAAgB;oBACvCvK,eAAAA,CAAgBzB,GAAG,CAAC,MAAA,EAAQ,OAAA,CAAA;AAC5B,oBAAA,IAAMmK,iBAAiB,IAAI,CAACX,yBAAyB,CAAC7C,UAAUyD,QAAQ,CAAA;oBACxE3I,eAAAA,CAAgBzB,GAAG,CAAC,UAAA,EAAYmK,cAAAA,CAAAA;oBAChC,IAAMpF,KAAAA,GAAQ4B,UAAU5B,KAAK;AAC7B,oBAAA,IAAImF,WAAAA,GAAc,KAAA;oBAClBnF,KAAAA,CAAMsD,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;wBACvC4B,WAAAA,GAAc,IAAA;AAChB,oBAAA,CAAA,CAAA;oBACA,IAAI,CAACxJ,cAAc,CAACtB,yBAAyB,CAACuH,SAAAA,CAAAA,CAAW0D,IAAI,CAACC,SAAAA,WAAAA,EAAAA;AAC5D,wBAAA,IAAIJ,WAAAA,EAAa;AACf,4BAAA;AACF,wBAAA;wBACA,IAAMnF,KAAAA,GAAQuF,WAAAA,CAAYE,MAAM,CAAC,OAAA,CAAA;wBACjC,KAAA,CAAK5I,aAAa,CAAC0I,WAAAA,EAAavF,KAAAA,EAAO4B,SAAAA,CAAAA;wBACvC,KAAA,CAAK3F,gBAAgB,CAACyJ,IAAI,CAAC;4BACzBC,KAAAA,EAAO3F,KAAAA;4BACPpE,IAAAA,EAAM2J;AACR,yBAAA,CAAA;AACA,wBAAA,KAAA,CAAK3I,aAAa,CAAC2I,WAAAA,CAAAA;wBACnB3D,SAAAA,CAAUgE,MAAM,CAACC,YAAY,EAAA;AAC/B,oBAAA,CAAA,CAAA;oBACA,OAAOnJ,eAAAA;AACT,gBAAA;AAEA,gBAAA,IAAMwK,cAAc,IAAI,CAACzC,yBAAyB,CAAC7C,UAAU5B,KAAK,CAAA;gBAClEtD,eAAAA,CAAgBzB,GAAG,CAAC,OAAA,EAASiM,WAAAA,CAAAA;gBAC7BxK,eAAAA,CAAgBzB,GAAG,CAAC,MAAA,EAAQ,MAAA,CAAA;gBAC5B,OAAOyB,eAAAA;AACT,YAAA;;;YAEQmF,GAAAA,EAAAA,uCAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,sCAAsCsF,IAAe,EAAA;;gBAC3D,IAAMC,aAAAA,GAAgBD,IAAAA,CAAK7L,GAAG,CAAC,MAAA,CAAA;gBAC/B,IAAM4C,IAAAA,GAAOiJ,IAAAA,CAAK7L,GAAG,CAAC,MAAA,CAAA;gBAEtB,IAAI+L,QAAAA;AACJ,gBAAA,IAAInJ,SAAS,OAAA,EAAS;oBACpBmJ,QAAAA,GAAW,IAAI,CAACjL,QAAQ,CAACkL,qBAAqB,CAACF,aAAAA,EAAe,EAAC,EAAG,EAAC,CAAA;oBACnE,IAAYhM,aAAA,CAARiM,QAAAA,EAAoBJ,cAAAA,CAAAA,EAAgB;wBACtC,IAAM7B,cAAAA,GAAiB+B,IAAAA,CAAK7L,GAAG,CAAC,UAAA,CAAA;AAChC,wBAAA,IAAI,CAACiF,uBAAuB,CAAC6E,cAAAA,EAAgBiC,SAAShC,QAAQ,CAAA;AAC9D,wBAAA,IAAMiB,oBAAoB,IAAI,CAAC3K,cAAc,CAAClB,yBAAyB,CAAC4M,QAAAA,CAAAA;AACxE,wBAAA,IAAIf,iBAAAA,EAAmB;4BACrB,IAAMtG,KAAAA,GAAQsG,iBAAAA,CAAkBb,MAAM,CAAC,OAAA,CAAA;AACvC,4BAAA,IAAI,CAAC5I,aAAa,CAACyJ,iBAAAA,EAAmBtG,KAAAA,EAAOqH,QAAAA,CAAAA;AAC7C,4BAAA,IAAI,CAACpL,gBAAgB,CAACyJ,IAAI,CAAC;gCACzBC,KAAAA,EAAO3F,KAAAA;gCACPpE,IAAAA,EAAM0K;AACR,6BAAA,CAAA;4BACAe,QAAAA,CAASzB,MAAM,CAACC,YAAY,EAAA;4BAC5B,OAAOwB,QAAAA;AACT,wBAAA;wBAEA,IAAMrH,MAAAA,GAAQqH,SAASrH,KAAK;AAC5B,wBAAA,IAAImF,WAAAA,GAAc,KAAA;AAClBkC,wBAAAA,QAAAA,CAASzB,MAAM,CAACa,aAAa,CAACC,SAAS,EAAA,CAAGpB,IAAI,CAAC,WAAA;AAC7C,4BAAA,OAAO,KAAA,CAAK3J,cAAc,CAACrB,uBAAuB,CAAC+M,QAAAA,CAAAA;wBACrD,CAAA,CAAA,CACG/B,IAAI,CAACC,SAAAA,WAAAA,EAAAA;AACJ,4BAAA,IAAIJ,WAAAA,EAAa;AACf,gCAAA;AACF,4BAAA;4BACA,IAAMnF,KAAAA,GAAQuF,WAAAA,CAAYE,MAAM,CAAC,OAAA,CAAA;4BACjC,KAAA,CAAK5I,aAAa,CAAC0I,WAAAA,EAAavF,KAAAA,EAAOqH,QAAAA,CAAAA;4BACvC,KAAA,CAAKpL,gBAAgB,CAACyJ,IAAI,CAAC;gCACzBC,KAAAA,EAAO3F,KAAAA;gCACPpE,IAAAA,EAAM2J;AACR,6BAAA,CAAA;4BACE8B,QAAAA,CAA4BzB,MAAM,CAACC,YAAY,EAAA;AACnD,wBAAA,CAAA,CAAA;wBACF7F,MAAAA,CAAMsD,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;4BACvC4B,WAAAA,GAAc,IAAA;AAChB,wBAAA,CAAA,CAAA;AACF,oBAAA,CAAA,MAAO,IAAY/J,aAAA,CAARiM,QAAAA,EAAoBE,SAAAA,CAAAA,EAAW;AACxC,wBAAA,MAAM5M,kBAAAA,CAAoB,kBAAA,CAAiC,MAAA,CAAdyM,aAAAA,EAAc,6BAAA,CAAA,CAAA;AAC7D,oBAAA;gBACF,CAAA,MAAO;oBACL,IAAMF,WAAAA,GAAcC,IAAAA,CAAK7L,GAAG,CAAC,OAAA,CAAA;AAC7B,oBAAA,IAAM0E,MAAAA,GAAQ,IAAI,CAACgE,yBAAyB,CAACkD,WAAAA,CAAAA;AAC7CG,oBAAAA,QAAAA,GAAW,IAAI,CAACjL,QAAQ,CAACkL,qBAAqB,CAACF,aAAAA,EAAepH,MAAAA,CAAAA;AAChE,gBAAA;AACA,gBAAA,IAAIqH,QAAAA,EAAU;oBACZ,OAAOA,QAAAA;AACT,gBAAA;AAEA,gBAAA,MAAM1M,kBAAAA,CAAoB,iCAAA,CAAgD,MAAA,CAAdyM,aAAAA,EAAc,IAAA,CAAA,CAAA;AAC5E,YAAA;;;YAEQvC,GAAAA,EAAAA,2BAAAA;mBAAR,SAAQA,yBAAAA,GAAAA;AACN,gBAAA,OAAO,IAAI2C,UAAAA,CAAW9M,uBAAAA,CAAAA;AACxB,YAAA;;;YAEQ0J,GAAAA,EAAAA,oBAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,mBAAmB4C,WAAgB,EAAA;AACzC,gBAAA,OAAOA,aAAW,CAAXA,WAAAA,EAAuBQ,UAAAA,CAAAA,IAAcR,WAAAA,CAAYS,QAAQ,KAAK/M,uBAAAA;AACvE,YAAA;;;YAKQkK,GAAAA,EAAAA,yBAAAA;;;MAAR,SAAQA,wBAAwB8C,SAAc,EAAA;AAC5C,gBAAA,IAAIA,cAAczB,SAAAA,EAAW;oBAC3B,OAAO,IAAI,CAACpB,yBAAyB,EAAA;AACvC,gBAAA;gBACA,OAAO,IAAI,CAACL,6BAA6B,CAACkD,SAAAA,CAAAA;AAC5C,YAAA;;;YAQQC,GAAAA,EAAAA,kBAAAA;;;;;;AADP,MACD,SAAQA,gBAAAA,CAAiBtD,UAA6B,EAAEuD,OAAe,EAAA;AACrE,gBAAA,IAAMzD,MAAMN,KAAAA,CAAMQ,UAAAA,CAAAA;gBAClB,IAAMwD,MAAAA,GAAS1D,IAAIlH,MAAM;gBACzB,IAAI,CAAC6K,oBAAoB,CAAC3D,GAAAA,EAAKyD,OAAAA,CAAAA;AAC/B,gBAAA,IAAMG,SAAAA,GAAYH,OAAAA,IAAWC,MAAAA,GAASD,OAAAA,GAAU,IAAIC,MAAAA,GAAS,CAAA;AAC7D,gBAAA,IAAMG,UAAiB,EAAE;AACzB,gBAAA,IAAIJ,WAAWC,MAAAA,EAAQ;AACrB,oBAAA,IAAK,IAAIzI,CAAAA,GAAIyI,MAAAA,EAAQzI,CAAAA,GAAIyI,MAAAA,GAASE,WAAW3I,CAAAA,EAAAA,CAAK;AAChD4I,wBAAAA,OAAAA,CAAQlJ,IAAI,CAAC,GAAY,CAACM,CAAAA,CAAE,CAAA;AAC9B,oBAAA;gBACF,CAAA,MAAO;AACL4I,oBAAAA,OAAAA,CAAQlJ,IAAI,CAACmH,SAAAA,CAAAA;AACf,gBAAA;gBACA,IAAMgC,YAAAA,GAAe5D,WAAWf,gBAAgB;AAChD2E,gBAAAA,YAAAA,CAAaC,YAAY,EAAA;AACzB,gBAAA,IAAMC,cAAcC,WAAAA,CAAYjE,GAAAA,CAAAA;AAChC,gBAAA,IAAMkE,SAAAA,GAAYL,OAAAA,CAAQ/I,GAAG,CAACC,SAAAA,IAAAA,EAAAA;AAC5B,oBAAA,IAAMoJ,IAAIlG,OAAAA,CAAQlD,IAAAA,CAAAA;AAClBqJ,oBAAAA,WAAAA,CAAYJ,WAAAA,EAAaG,CAAAA,CAAAA;oBACzB,OAAOA,CAAAA;AACT,gBAAA,CAAA,CAAA;gBACA,IAAME,YAAAA,GAAeZ,OAAAA,IAAWC,MAAAA,GAASA,MAAAA,GAASD,OAAAA;AAClDK,gBAAAA,YAAAA,CAAaQ,aAAa,CAAC;AACzBC,oBAAAA,KAAAA,EAAO,EAAE;oBACTC,KAAAA,EAAO;AACL,wBAAA;4BAACzK,IAAAA,EAAM,QAAA;4BAAUsE,MAAAA,EAAQgG;AAAY,yBAAA;AACrC,wBAAA;4BAACtK,IAAAA,EAAM,QAAA;AAAUsI,4BAAAA,IAAAA,EAAMoC,WAAAA,CAAYZ,OAAAA,CAAAA;4BAAU9E,GAAAA,EAAKmF;AAAS;AAC5D,qBAAA;oBACDQ,OAAAA,EAAS;AACP,wBAAA;4BAAC3K,IAAAA,EAAM,QAAA;4BAAUsE,MAAAA,EAAQgG;AAAY,yBAAA;AACrC,wBAAA;4BAACtK,IAAAA,EAAM,QAAA;4BAAUkF,KAAAA,EAAO2E;AAAS;AAClC;AACH,iBAAA,CAAA;AACF,YAAA;;;YAGQD,GAAAA,EAAAA,sBAAAA;AAAR,YAAA,KAAA,gCAAA,SAAQA,oBAAAA,CAAqB3D,GAAU,EAAEyD,OAAe,EAAA;gBACtD,IAAMkB,GAAAA,GAAM3E,IAAIlH,MAAM;AACtB,gBAAA,IAAI2K,WAAWkB,GAAAA,EAAK;oBAClB3E,GAAAA,CAAIlH,MAAM,GAAG2K,OAAAA,GAAU,CAAA;AACvB,oBAAA;AACF,gBAAA;AACA,gBAAA,IAAK,IAAIxI,CAAAA,GAAI0J,GAAAA,EAAK1J,CAAAA,GAAIwI,SAASxI,CAAAA,EAAAA,CAAK;oBAClC,IAAKA,CAAAA,GAAI,CAAA,IAAM+E,GAAAA,EAAK;AAClBA,wBAAAA,GAAG,CAAC/E,CAAAA,CAAE,GAAG+E,GAAG,CAAC/E,IAAI,CAAA,CAAE;oBACrB,CAAA,MAAO;wBACL,OAAO+E,GAAG,CAAC/E,CAAAA,CAAE;AACf,oBAAA;AACF,gBAAA;gBACA,OAAO+E,GAAG,CAACyD,OAAAA,CAAQ;AACrB,YAAA;;;YAQQtD,GAAAA,EAAAA,WAAAA;;;;;;AADP,MACD,SAAQA,SAAAA,CAAUJ,WAAwB,EAAEG,UAA6B,EAAA;;AACvE,gBAAA,SAAS0E,SAAS7K,IAAY,EAAA;AAC5B8K,oBAAAA,OAAAA,CAAQC,KAAK,CAACtO,kBAAAA,CAAoB,GAA0C0J,MAAAA,CAAxCnG,IAAAA,EAAK,mCAAA,CAAA,CAAoF,MAAA,CAAjDmG,WAAWf,gBAAgB,CAAC4F,QAAQ,EAAA,CAAGC,IAAI,CAAC,GAAA,CAAA,CAAA,CAAA,CAAA;AAC1H,gBAAA;gBAEA,IAAM9G,GAAAA,GAAMgC,WAAWf,gBAAgB,CAAC8F,YAAY,CAAC5J,SAAS,CAAC,SAACI,OAAAA,EAAAA;oBAC9D,KAAA,CAAK2C,cAAc,CAAC2B,WAAAA,CAAYpG,GAAG,EAAE,CAACuG,UAAAA,CAAWf,gBAAgB,CAAC+F,iBAAiB,EAAE,WAAA;AACnF,wBAAA,IAAIhL,KAAAA,GAAQ,CAAA;AACP,wBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;AAAL,4BAAA,IAAA,IAAK,YAAgBuB,OAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAhB,KAAA,EAAA,EAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAAyB;AAAzB,gCAAA,IAAMC,MAAAA,GAAN,KAAA,CAAA,KAAA;AACH,gCAAA,OAAQA,OAAO3B,IAAI;oCACjB,KAAK,QAAA;AACHG,wCAAAA,KAAAA,GAAQwB,OAAO2C,MAAM;AACrB,wCAAA;oCACF,KAAK,QAAA;AAAU,wCAAA;4CACb,IAAMU,GAAAA,GAAMrD,OAAOqD,GAAG;AACtB,4CAAA,IAAI,CAAC2D,KAAAA,CAAMC,OAAO,CAAC5D,GAAAA,CAAAA,EAAM;AACvB,gDAAA,MAAMvI,kBAAAA,CAAmB,mDAAA,CAAA;AAC3B,4CAAA;AACA,4CAAA,IAAM6L,IAAAA,GAAOtD,GAAAA,CAAIjE,GAAG,CAACC,SAAAA,IAAAA,EAAAA;gDACnB,OAAO,KAAA,CAAK0F,uBAAuB,CAAC1F,IAAAA,CAAAA;AACtC,4CAAA,CAAA,CAAA;4CACA,IAAIb,KAAAA,IAAS6F,WAAAA,CAAYjH,MAAM,EAAE;gDAC/BiH,WAAAA,CAAYxC,MAAM,CAACrD,KAAAA,EAAOmI,IAAAA,CAAAA;4CAC5B,CAAA,MAAO;AACLtC,gDAAAA,WAAAA,CAAYxC,MAAM,CAACwC,WAAAA,CAAYjH,MAAM,EAAEuJ,IAAAA,CAAAA;gDACvCuC,QAAAA,CAAS,QAAA,CAAA;AACX,4CAAA;AACF,wCAAA;AACE,wCAAA;oCACF,KAAK,QAAA;wCACH,IAAIlJ,MAAAA,CAAOuD,KAAK,IAAI,CAAA,EAAG;AACrB,4CAAA;AACF,wCAAA;wCACA,IAAI/E,KAAAA,GAAQ6F,WAAAA,CAAYjH,MAAM,EAAE;AAC9BiH,4CAAAA,WAAAA,CAAY3I,MAAM,CAAC8C,KAAAA,EAAOwB,MAAAA,CAAOuD,KAAK,CAAA;wCACxC,CAAA,MAAO;4CACL2F,QAAAA,CAAS,QAAA,CAAA;AACX,wCAAA;AACA,wCAAA;oCACF,KAAK,UAAA;AACH,wCAAA,IAAIlJ,MAAAA,CAAOxB,KAAK,GAAG6F,WAAAA,CAAYjH,MAAM,EAAE;AACrCiH,4CAAAA,WAAAA,CAAY3I,MAAM,CAACsE,MAAAA,CAAOxB,KAAK,EAAE,CAAA,CAAA;AACjC6F,4CAAAA,WAAAA,CAAYxC,MAAM,CAAC7B,MAAAA,CAAOxB,KAAK,EAAE;gDAAC,KAAA,CAAKuG,uBAAuB,CAAC/E,MAAAA,CAAOqD,GAAG;AAAE,6CAAA,CAAA;wCAC7E,CAAA,MAAO;AACLgB,4CAAAA,WAAAA,CAAYxC,MAAM,CAACwC,WAAAA,CAAYjH,MAAM,EAAE;gDAAC,KAAA,CAAK2H,uBAAuB,CAAC/E,MAAAA,CAAOqD,GAAG;AAAE,6CAAA,CAAA;4CACjF6F,QAAAA,CAAS,UAAA,CAAA;AACX,wCAAA;AACA,wCAAA;AACJ;AACF,4BAAA;;AAzCK,4BAAA,iBAAA,GAAA,IAAA;AAAA,4BAAA,cAAA,GAAA,GAAA;;;qCAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,oCAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,gCAAA,IAAA,iBAAA,EAAA;AAAA,oCAAA,MAAA,cAAA;;;;AA0CP,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;gBAEA,IAAMvI,UAAAA,GAAa,oBAACC,EAAAA,EAAsBC,EAAAA,EAAAA;oBACxC,KAAA,CAAKC,eAAe,CAACD,EAAAA,EAAI,WAAA;AACvB,wBAAA,IAAIrC,KAAAA,GAAQ,CAAA;AACZoC,wBAAAA,EAAAA,CAAGU,KAAK,CAACrB,OAAO,CAAC,SAACD,MAAAA,EAAAA;AAChB,4BAAA,IAAIQ,OAAAA,CAAQe,GAAG,CAACvB,MAAAA,EAAQ,QAAA,CAAA,EAAW;AACjCxB,gCAAAA,KAAAA,IAASwB,OAAO3C,MAAM;4BACxB,CAAA,MAAO,IAAI2C,MAAAA,CAAO6B,MAAM,EAAE;AACxB,gCAAA,IAAI4H,EAAAA,GAAKjL,KAAAA;AACJ,gCAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;oCAAL,IAAA,IAAK,SAAA,GAAcwB,OAAO6B,MAAM,CAAA,MAAA,CAAA,QAAA,CAAA,EAAA,EAA3B,SAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAA2C;AAA3C,wCAAA,IAAMxC,IAAAA,GAAN,KAAA,CAAA,KAAA;wCACH,IAAI,KAAA,CAAKkF,kBAAkB,CAAClF,IAAAA,CAAAA,EAAO;4CACjC,KAAA,CAAKyI,gBAAgB,CAACtD,UAAAA,EAAYiF,EAAAA,CAAAA;wCACpC,CAAA,MAAO;AACLjF,4CAAAA,UAAAA,CAAWkF,MAAM,CAACD,EAAAA,EAAI,CAAA,EAAG,KAAA,CAAKxF,+BAA+B,CAAC5E,IAAAA,CAAAA,CAAAA;AAChE,wCAAA;AACAoK,wCAAAA,EAAAA,EAAAA;AACF,oCAAA;;AAPK,oCAAA,iBAAA,GAAA,IAAA;AAAA,oCAAA,cAAA,GAAA,GAAA;;;6CAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,4CAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,wCAAA,IAAA,iBAAA,EAAA;AAAA,4CAAA,MAAA,cAAA;;;;gCAQLjL,KAAAA,GAAQiL,EAAAA;4BACV,CAAA,MAAO,IAAIzJ,MAAAA,CAAOtE,MAAM,EAAE;AACxB8I,gCAAAA,UAAAA,CAAWkF,MAAM,CAAClL,KAAAA,EAAOwB,MAAAA,CAAOtE,MAAM,CAAA;AACxC,4BAAA;AACF,wBAAA,CAAA,CAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA;AAEA2I,gBAAAA,WAAAA,CAAY9B,OAAO,CAAC5B,UAAAA,CAAAA;gBACpB6D,UAAAA,CAAWf,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;AAC5ClB,oBAAAA,GAAAA,CAAIoB,WAAW,EAAA;AACfS,oBAAAA,WAAAA,CAAYV,SAAS,CAAChD,UAAAA,CAAAA;AACxB,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAQQuD,GAAAA,EAAAA,YAAAA;;;;;;AADP,MACD,SAAQA,UAAAA,CAAWyF,YAAuB,EAAEC,WAA4C,EAAA;;gBACtF,IAAMjJ,UAAAA,GAAa,oBAACC,EAAAA,EAAoBC,EAAAA,EAAAA;oBACtC,KAAA,CAAKC,eAAe,CAACD,EAAAA,EAAI,WAAA;AACvBD,wBAAAA,EAAAA,CAAGiJ,OAAO,CAACtJ,IAAI,CAACN,OAAO,CAAC,SAACZ,IAAAA,EAAMhE,GAAAA,EAAAA;AAC7B,4BAAA,IAAIgE,KAAKW,MAAM,KAAK,SAASX,IAAAA,CAAKW,MAAM,KAAK,QAAA,EAAU;gCACrD,IAAM1E,KAAAA,GAAQqO,YAAAA,CAAalO,GAAG,CAACJ,GAAAA,CAAAA;AAC/BuO,gCAAAA,WAAW,CAACvO,GAAAA,CAAI,GAAG,KAAA,CAAK4I,+BAA+B,CAAC3I,KAAAA,CAAAA;4BAC1D,CAAA,MAAO;gCACLkF,OAAAA,CAAQC,cAAc,CAACmJ,WAAAA,EAAavO,GAAAA,CAAAA;AACtC,4BAAA;AACF,wBAAA,CAAA,CAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA;AAEAsO,gBAAAA,YAAAA,CAAapH,OAAO,CAAC5B,UAAAA,CAAAA;gBAErB,IAAM6B,GAAAA,GAAMoH,YAAYnG,gBAAgB,CAAC8F,YAAY,CAAC5J,SAAS,CAAC,SAACI,OAAAA,EAAAA;oBAC/D,KAAA,CAAK2C,cAAc,CAACiH,YAAAA,CAAa1L,GAAG,EAAE,CAAC2L,WAAAA,CAAYnG,gBAAgB,CAAC+F,iBAAiB,EAAE,WAAA;AAChF,wBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;AAAL,4BAAA,IAAA,IAAK,YAAgBzJ,OAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAAAA,EAAAA,EAAhB,KAAA,EAAA,EAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAAyB;AAAzB,gCAAA,IAAMC,MAAAA,GAAN,KAAA,CAAA,KAAA;AACH,gCAAA,OAAQA,OAAO3B,IAAI;oCACjB,KAAK,SAAA;AAAW,wCAAA;AACd,4CAAA,IAAMyL,QAAAA,GAAW,KAAA,CAAKnF,6BAA6B,CAAC3E,OAAOqD,GAAG,CAAA;AAC9DsG,4CAAAA,YAAAA,CAAavO,GAAG,CAAC4E,MAAAA,CAAO3E,GAAG,EAAEyO,QAAAA,CAAAA;4CAC7B,IAAIH,YAAAA,CAAaI,IAAI,KAAK,CAAA,EAAG;;AAE3BZ,gDAAAA,OAAAA,CAAQC,KAAK,CAACtO,kBAAAA,CAAmB,yBAAC,CAAoC,MAAA,CAAXkF,OAAO3E,GAAG,CAAA,CAAA,CAAA;AACvE,4CAAA;AACF,wCAAA;AACE,wCAAA;oCACF,KAAK,YAAA;wCACHsO,YAAAA,CAAajO,MAAM,CAACsE,MAAAA,CAAO3E,GAAG,CAAA;AAC9B,wCAAA;AACJ;AACF,4BAAA;;AAfK,4BAAA,iBAAA,GAAA,IAAA;AAAA,4BAAA,cAAA,GAAA,GAAA;;;qCAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,oCAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,gCAAA,IAAA,iBAAA,EAAA;AAAA,oCAAA,MAAA,cAAA;;;;AAgBP,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;gBAEAuO,WAAAA,CAAYnG,gBAAgB,CAACC,iBAAiB,CAAC,WAAA;AAC7CiG,oBAAAA,YAAAA,CAAahG,SAAS,CAAChD,UAAAA,CAAAA;AACvB6B,oBAAAA,GAAAA,CAAIoB,WAAW,EAAA;AACjB,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAEQlB,GAAAA,EAAAA,gBAAAA;AAAR,YAAA,KAAA,EAAA,SAAQA,cAAAA,CAAe3G,IAAiB,EAAE+D,MAAe,EAAEI,EAAc,EAAA;AACvE,gBAAA,IAAI,IAAI,CAAC/D,gBAAgB,IAAI,CAACJ,IAAAA,EAAM;AAClC,oBAAA;AACF,gBAAA;AACA,gBAAA,IAAIiO,aAAa,IAAI,CAAC3N,mBAAmB,CAACZ,GAAG,CAACM,IAAAA,CAAAA;AAC9C,gBAAA,IAAI,CAACiO,UAAAA,EAAY;AACfA,oBAAAA,UAAAA,GAAa,EAAE;AACf,oBAAA,IAAI,CAAC3N,mBAAmB,CAACjB,GAAG,CAACW,IAAAA,EAAMiO,UAAAA,CAAAA;AACrC,gBAAA;AACAA,gBAAAA,UAAAA,CAAW/K,IAAI,CAAC;oBACda,MAAAA,EAAAA,MAAAA;oBACAE,MAAAA,EAAQE;AACV,iBAAA,CAAA;AACF,YAAA;;;YAEQY,GAAAA,EAAAA,iBAAAA;mBAAR,SAAQA,eAAAA,CAAgBD,EAAe,EAAEX,EAAc,EAAA;AACrD,gBAAA,IAAIW,EAAAA,CAAGqB,MAAM,KAAKrB,EAAAA,CAAG5C,GAAG,EAAE;AACxB,oBAAA;AACF,gBAAA;gBACA,IAAI,CAAC9B,gBAAgB,GAAG,IAAA;AACxB,gBAAA,IAAI0E,aAAS,CAATA,EAAAA,CAAGqB,MAAM,EAAYC,WAAAA,CAAAA,EAAa;AACpC,oBAAA,IAAI,CAACtG,SAAS,CAACoO,oBAAoB,CAAC/J,EAAAA,CAAAA;gBACtC,CAAA,MAAO;AACL,oBAAA,IAAI,CAACrE,SAAS,CAACqO,oBAAoB,CAAChK,EAAAA,CAAAA;AACtC,gBAAA;gBACA,IAAI,CAAC/D,gBAAgB,GAAG,KAAA;AAC1B,YAAA;;;AAv2BWP,IAAAA,OAAAA,WAAAA;AAw2BZ,CAAA;;;;;;;;;;;AAED,SAASuO,8BACP3D,IAAU,EACV4D,SAAkC,EAClC3I,KAAa,EACbC,GAAW,EAAA;AAEX,IAAA,IAAM2I,SAAwB,EAAE;AAChC7D,IAAAA,IAAAA,CAAK8D,0BAA0B,CAACF,SAAAA,EAAW3I,OAAOC,GAAAA,CAAAA,CAAKzB,OAAO,CAACsK,SAAAA,KAAAA,EAAAA;QAC7D,IAAM5O,CAAAA,GAAI4O,MAAMjP,KAAK;AACrB,QAAA,IAAI,CAAC+O,MAAAA,CAAOG,IAAI,CAACC,SAAAA,QAAAA,EAAAA;mBAAYC,MAAAA,CAAOC,KAAK,CAACF,QAAAA,EAAU9O,CAAAA,CAAAA;AAAK,QAAA,CAAA,CAAA,EAAA;AACvD0O,YAAAA,MAAAA,CAAOpL,IAAI,CAACtD,CAAAA,CAAAA;AACd,QAAA;AACF,IAAA,CAAA,CAAA;IACA,OAAO0O,MAAAA;AACT;AAEA,SAASO,sBAAsBtP,KAAkB,EAAA;AAC/C,IAAA,OAAOyN,WAAAA,CAAYzN,KAAAA,CAAAA;AACrB;AAEO,SAASuH,2BAAAA,CACdtG,QAAkB,EAClBiK,IAAU,EACV/E,KAAa,EACbC,GAAW,EACXmJ,YAAyC,EAAA;AAEzC,IAAA,IAAMjI,QAA4D,EAAC;AACnEtC,IAAAA,MAAAA,CAAOC,IAAI,CAACsK,YAAAA,CAAAA,CAAc5K,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;QAChC,IAAM+O,SAAAA,GAAY7N,QAAAA,CAASuO,YAAY,CAACzP,GAAAA,CAAAA;AACxC,QAAA,IAAI,CAAC+O,SAAAA,EAAW;AACd,YAAA;AACF,QAAA;QACA,IAAa7O,aAAA,CAAT6O,SAAAA,EAAqBW,kBAAAA,CAAAA,EAAoB;AAC3C,YAAA,IAAMV,MAAAA,GAASF,6BAAAA,CAA8B3D,IAAAA,EAAM4D,SAAAA,EAAW3I,KAAAA,EAAOC,GAAAA,CAAAA;YACrEkB,KAAK,CAACvH,IAAI,GAAGgP,MAAAA,CAAOjN,MAAM,GAAGiN,MAAAA,CAAOjL,GAAG,CAACwL,qBAAAA,CAAAA,GAAyB,IAAA;QACnE,CAAA,MAAO;AACLhI,YAAAA,KAAK,CAACvH,GAAAA,CAAI,GAAGwP,YAAY,CAACxP,GAAAA,CAAI;AAChC,QAAA;AACF,IAAA,CAAA,CAAA;IACA,OAAOuH,KAAAA;AACT;AAEO,SAASO,0BAAAA,CACd5G,QAAkB,EAClBoF,OAAgD,EAAA;AAEhD,IAAA,IAAI,CAACA,OAAAA,EAAS;QACZ,OAAOyE,SAAAA;AACT,IAAA;AACA,IAAA,IAAMtG,SAA6D,EAAC;AACpEQ,IAAAA,MAAAA,CAAOC,IAAI,CAACoB,OAAAA,CAAAA,CAAS1B,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;QAC3B,IAAM+O,SAAAA,GAAY7N,QAAAA,CAASuO,YAAY,CAACzP,GAAAA,CAAAA;AACxC,QAAA,IAAI,CAAC+O,SAAAA,EAAW;AACd,YAAA;AACF,QAAA;QACA,IAAMY,QAAAA,GAAWrJ,OAAO,CAACtG,GAAAA,CAAI;QAC7B,IAAaE,aAAA,CAAT6O,SAAAA,EAAqBW,kBAAAA,CAAAA,EAAoB;YAC3C,IAAIC,QAAAA,KAAa,IAAA,IAAQA,QAAAA,KAAa5E,SAAAA,EAAW;gBAC/CtG,MAAM,CAACzE,IAAI,GAAG,IAAA;YAChB,CAAA,MAAO;gBACLyE,MAAM,CAACzE,IAAI,GAAG;oBAACuP,qBAAAA,CAAsBI,QAAAA;AAAU,iBAAA;AACjD,YAAA;QACF,CAAA,MAAO;YACLlL,MAAM,CAACzE,IAAI,GAAG2P,QAAAA;AAChB,QAAA;AACF,IAAA,CAAA,CAAA;AACA,IAAA,OAAO1K,OAAOC,IAAI,CAACT,MAAAA,CAAAA,CAAQ1C,MAAM,GAAG0C,MAAAA,GAASsG,SAAAA;AAC/C;AAEO,SAASD,0BAAAA,CACd5J,QAAkB,EAClBoF,OAAgB,EAAA;AAEhB,IAAA,IAAM7B,SAAsD,EAAC;AAC7D6B,IAAAA,OAAAA,CAAQ1B,OAAO,CAAC,SAAA,KAAA,EAAA;iDAAEmK,SAAAA,GAAAA,MAAAA,CAAAA,CAAAA,CAAAA,EAAW9O,KAAAA,GAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AAC3B,QAAA,IAAI,CAACiB,QAAAA,CAASuO,YAAY,CAACV,SAAAA,CAAU5G,IAAI,CAAA,EAAG;AAC1C,YAAA;AACF,QAAA;QACA,IAAajI,aAAA,CAAT6O,SAAAA,EAAqBW,kBAAAA,CAAAA,EAAoB;AAC3C,YAAA,IAAME,aAAaL,qBAAAA,CAAsBtP,KAAAA,CAAAA;AACzC,YAAA,IAAM4P,OAAAA,GAAUpL,MAAM,CAACsK,SAAAA,CAAU5G,IAAI,CAAC;YACtC,IAAIwD,KAAAA,CAAMC,OAAO,CAACiE,OAAAA,CAAAA,EAAU;AAC1BA,gBAAAA,OAAAA,CAAQjM,IAAI,CAACgM,UAAAA,CAAAA;YACf,CAAA,MAAO;AACLnL,gBAAAA,MAAM,CAACsK,SAAAA,CAAU5G,IAAI,CAAC,GAAG;AAACyH,oBAAAA;AAAW,iBAAA;AACvC,YAAA;QACF,CAAA,MAAO;AACLnL,YAAAA,MAAM,CAACsK,SAAAA,CAAU5G,IAAI,CAAC,GAAGlI,KAAAA;AAC3B,QAAA;AACF,IAAA,CAAA,CAAA;AACA,IAAA,OAAOgF,OAAOC,IAAI,CAACT,MAAAA,CAAAA,CAAQ1C,MAAM,GAAG0C,MAAAA,GAASsG,SAAAA;AAC/C;AAEA,SAAS+E,4BAAAA,CACP3E,IAAU,EACV4D,SAAkC,EAClC3I,KAAa,EACbC,GAAW,EACX4C,GAAmD,EAAA;AAEnD,IAAA,IAAM3C,UAAmB,EAAE;AAC3B,IAAA,IAAMyJ,WAAAA,GAAcjB,6BAAAA,CAA8B3D,IAAAA,EAAM4D,SAAAA,EAAW3I,KAAAA,EAAOC,GAAAA,CAAAA;IAE1E,IAAI4C,GAAAA,KAAQ,IAAA,IAAQA,GAAAA,KAAQ8B,SAAAA,IAAcY,KAAAA,CAAMC,OAAO,CAAC3C,GAAAA,CAAAA,IAAQA,GAAAA,CAAIlH,MAAM,KAAK,CAAA,EAAI;QACjF,IAAIgO,WAAAA,CAAYhO,MAAM,GAAG,CAAA,EAAG;AAC1BuE,YAAAA,OAAAA,CAAQ1C,IAAI,CAAC;AAACmL,gBAAAA,SAAAA;AAAW,gBAAA,IAAIiB,cAAAA,CAAe,IAAA;AAAM,aAAA,CAAA;AACpD,QAAA;QACA,OAAO1J,OAAAA;AACT,IAAA;AAEA,IAAA,IAAM2J,YAAAA,GAAetE,KAAAA,CAAMC,OAAO,CAAC3C,OAAOA,GAAAA,GAAM;AAACA,QAAAA;AAAI,KAAA;IACrD8G,WAAAA,CAAYnL,OAAO,CAACsL,SAAAA,UAAAA,EAAAA;AAClB,QAAA,IAAI,CAACD,YAAAA,CAAad,IAAI,CAACgB,SAAAA,WAAAA,EAAAA;mBAAed,MAAAA,CAAOC,KAAK,CAACY,UAAAA,EAAYC,WAAAA,CAAAA;AAAe,QAAA,CAAA,CAAA,EAAA;AAC5E7J,YAAAA,OAAAA,CAAQ1C,IAAI,CAAC;AAACmL,gBAAAA,SAAAA;AAAW,gBAAA,IAAIiB,eAAe,KAAA,EAAOE,UAAAA;AAAY,aAAA,CAAA;AACjE,QAAA;AACF,IAAA,CAAA,CAAA;IACAD,YAAAA,CAAarL,OAAO,CAACuL,SAAAA,WAAAA,EAAAA;AACnB,QAAA,IAAI,CAACJ,WAAAA,CAAYZ,IAAI,CAACe,SAAAA,UAAAA,EAAAA;mBAAcb,MAAAA,CAAOC,KAAK,CAACY,UAAAA,EAAYC,WAAAA,CAAAA;AAAe,QAAA,CAAA,CAAA,EAAA;AAC1E7J,YAAAA,OAAAA,CAAQ1C,IAAI,CAAC;AAACmL,gBAAAA,SAAAA;AAAWoB,gBAAAA;AAAY,aAAA,CAAA;AACvC,QAAA;AACF,IAAA,CAAA,CAAA;IACA,OAAO7J,OAAAA;AACT;AAEA,SAAS8J,4BAAAA,CACPrB,SAAkC,EAClC9F,GAAmD,EAAA;IAEnD,IAAIA,GAAAA,KAAQ,IAAA,IAAQA,GAAAA,KAAQ8B,SAAAA,IAAcY,KAAAA,CAAMC,OAAO,CAAC3C,GAAAA,CAAAA,IAAQA,GAAAA,CAAIlH,MAAM,KAAK,CAAA,EAAI;AACjF,QAAA,OAAO,EAAE;AACX,IAAA;AACA,IAAA,IAAMkO,YAAAA,GAAetE,KAAAA,CAAMC,OAAO,CAAC3C,OAAOA,GAAAA,GAAM;AAACA,QAAAA;AAAI,KAAA;IACrD,OAAOgH,YAAAA,CAAalM,GAAG,CAAC9D,SAAAA,KAAAA,EAAAA;AAAS,QAAA,OAAA;AAAC8O,YAAAA,SAAAA;AAAW9O,YAAAA;AAAM,SAAA;;AACrD;AAEA,kDACO,SAASwG,0BAAAA,CACdvF,QAAkB,EAClBqG,KAAiE,EAAA;AAEjE,IAAA,IAAMjB,UAAmB,EAAE;AAC3B,IAAA,IAAI,CAACiB,KAAAA,EAAO;QACV,OAAOjB,OAAAA;AACT,IAAA;AACArB,IAAAA,MAAAA,CAAOC,IAAI,CAACqC,KAAAA,CAAAA,CAAO3C,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;QACzB,IAAM+O,SAAAA,GAAY7N,QAAAA,CAASuO,YAAY,CAACzP,GAAAA,CAAAA;AACxC,QAAA,IAAI,CAAC+O,SAAAA,EAAW;AACd,YAAA;AACF,QAAA;QACA,IAAM9F,GAAAA,GAAM1B,KAAK,CAACvH,GAAAA,CAAI;QACtB,IAAaE,aAAA,CAAT6O,SAAAA,EAAqBW,kBAAAA,CAAAA,EAAoB;AAC3CpJ,YAAAA,IAAAA,QAAAA;AAAAA,YAAAA,CAAAA,WAAAA,OAAAA,EAAQ1C,IAAI,OAAZ0C,QAAAA,EAAa,oBAAA,CAAG8J,6BAA6BrB,SAAAA,EAAW9F,GAAAA,CAAAA,CAAAA,CAAAA;AACxD,YAAA;AACF,QAAA;AACA3C,QAAAA,OAAAA,CAAQ1C,IAAI,CAAC;AAACmL,YAAAA,SAAAA;AAAW9F,YAAAA;AAAmB,SAAA,CAAA;AAC9C,IAAA,CAAA,CAAA;IACA,OAAO3C,OAAAA;AACT;AAEA,mDACO,SAASC,0BAAAA,CACdrF,QAAkB,EAClBiK,IAAU,EACV/E,KAAa,EACbC,GAAW,EACXkB,KAAiE,EAAA;AAEjE,IAAA,IAAMjB,UAAmB,EAAE;AAC3B,IAAA,IAAI,CAACiB,KAAAA,EAAO;QACV,OAAOjB,OAAAA;AACT,IAAA;AACArB,IAAAA,MAAAA,CAAOC,IAAI,CAACqC,KAAAA,CAAAA,CAAO3C,OAAO,CAAC5E,SAAAA,GAAAA,EAAAA;QACzB,IAAM+O,SAAAA,GAAY7N,QAAAA,CAASuO,YAAY,CAACzP,GAAAA,CAAAA;AACxC,QAAA,IAAI,CAAC+O,SAAAA,EAAW;AACd,YAAA;AACF,QAAA;QACA,IAAM9F,GAAAA,GAAM1B,KAAK,CAACvH,GAAAA,CAAI;QACtB,IAAaE,aAAA,CAAT6O,SAAAA,EAAqBW,kBAAAA,CAAAA,EAAoB;AAC3CpJ,YAAAA,IAAAA,QAAAA;YAAAA,CAAAA,QAAAA,GAAAA,OAAAA,EAAQ1C,IAAI,CAAA,KAAA,CAAZ0C,QAAAA,EAAa,qBAAGwJ,4BAAAA,CAA6B3E,IAAAA,EAAM4D,SAAAA,EAAW3I,KAAAA,EAAOC,GAAAA,EAAK4C,GAAAA,CAAAA,CAAAA,CAAAA;AAC1E,YAAA;AACF,QAAA;AACA3C,QAAAA,OAAAA,CAAQ1C,IAAI,CAAC;AAACmL,YAAAA,SAAAA;AAAW9F,YAAAA;AAAmB,SAAA,CAAA;AAC9C,IAAA,CAAA,CAAA;IACA,OAAO3C,OAAAA;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjpCO,IAAA,uBAAe+J,GAAf,SAAeA,uBAAAA,GAAAA;AAAAA,IAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,uBAAAA,CAAAA;AAMrB;AAED,IAAMC,uBAAuBxR,SAAAA,CAAU,eAAA,CAAA;AAGhC,IAAA,aAAMyR,iBAAN,WAAA;AAAMA,IAAAA,SAAAA,aAAAA,CAyBC,gBAA0C,EAClCC,WAAwB,EAChC,SAA4B,EACQC,SAAiB,EACrD,iBAA8D,EAAA;AA7B/DF,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA;;;;;;AACXG,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,YAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AAUA,QAAAlR,kBAAA,CAAA,IAAA,EAAQmR,WAAR,MAAA,CAAA;AAEA,QAAAnR,kBAAA,CAAA,IAAA,EAAQoR,gBAAR,MAAA,CAAA;AACA,QAAApR,kBAAA,CAAA,IAAA,EAAQwD,SAAR,MAAA,CAAA;AACA,QAAAxD,kBAAA,CAAA,IAAA,EAAQkB,iBAAR,MAAA,CAAA;AAEA,QAAAlB,kBAAA,CAAA,IAAA,EAAQqR,aAAR,MAAA,CAAA;AACA,QAAArR,kBAAA,CAAA,IAAA,EAAQsR,gBAAR,MAAA,CAAA;AACA,QAAAtR,kBAAA,CAAA,IAAA,EAAQuR,eAAR,MAAA,CAAA;AACA,QAAAvR,kBAAA,CAAA,IAAA,EAAQwR,aAAR,MAAA,CAAA;aAEoBC,gBAAAA,GAAAA,gBAAAA;aACAZ,WAAAA,GAAAA,WAAAA;aACAhQ,SAAAA,GAAAA,SAAAA;aAC4BiQ,SAAAA,GAAAA,SAAAA;aAChBY,iBAAAA,GAAAA,iBAAAA;aAfxBP,OAAAA,GAA8B,IAAA;AAE9BC,QAAAA,IAAAA,CAAAA,YAAAA,GAA2D,EAAE;aAC7D5N,KAAAA,GAAQ,CAAA;AACRtC,QAAAA,IAAAA,CAAAA,aAAAA,GAAgC,EAAE;AAElCmQ,QAAAA,IAAAA,CAAAA,SAAAA,GAAY,IAAI3P,OAAAA,EAAAA;AAChB4P,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,IAAI5P,OAAAA,EAAAA;AACnB6P,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAI7P,OAAAA,EAAAA;AAClB8P,QAAAA,IAAAA,CAAAA,SAAAA,GAAY,IAAI9P,OAAAA,EAAAA;AAOtB,QAAA,IAAI,CAACqP,MAAM,GAAG,IAAI,CAACM,SAAS,CAAC1P,YAAY,EAAA;AACzC,QAAA,IAAI,CAACqP,SAAS,GAAG,IAAI,CAACM,YAAY,CAAC3P,YAAY,EAAA;AAC/C,QAAA,IAAI,CAACsP,QAAQ,GAAG,IAAI,CAACM,WAAW,CAAC5P,YAAY,EAAA;AAC7C,QAAA,IAAI,CAACuP,MAAM,GAAG,IAAI,CAACM,SAAS,CAAC7P,YAAY,EAAA;;AAjChCiP,IAAAA,eAAAA,CAAAA,aAAAA,EAAAA;;YAMPe,GAAAA,EAAAA,SAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACS,gBAAA,IAAA,aAAA;gBAAP,OAAO,CAAA,CAAA,gBAAA,IAAI,CAACR,OAAO,MAAA,IAAA,IAAZ,aAAA,KAAA,MAAA,GAAA,MAAA,GAAA,aAAA,CAAcS,OAAO,EAAA,KAAM,KAAA;AACpC,YAAA;;;YAEIC,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACS,gBAAA,IAAA,aAAA;gBAAP,OAAO,CAAA,CAAA,gBAAA,IAAI,CAACV,OAAO,MAAA,IAAA,IAAZ,aAAA,KAAA,MAAA,GAAA,MAAA,GAAA,aAAA,CAAcW,OAAO,EAAA,KAAM,KAAA;AACpC,YAAA;;;YAyBAC,GAAAA,EAAAA,QAAAA;mBAAAA,SAAAA,MAAAA,GAAAA;;gBACE,IAAMC,IAAAA,GAAO,IAAI,CAACnB,WAAW,CAAC9P,IAAI,CAAC6J,MAAM,CAAC,eAAA,CAAA;AAC1C,gBAAA,IAAMqH,aAAAA,GAAgB,IAAI,CAACR,gBAAgB,CAAC1K,SAAS;gBACrD,IAAI,CAAC8J,WAAW,CAACjP,iBAAiB,CAAC,IAAI,CAACiP,WAAW,CAAC9P,IAAI,EAAEiR,IAAAA,EAAMC,aAAAA,CAAAA;AAEhE,gBAAA,IAAMP,iBAAAA,GAAoB,IAAI,CAACA,iBAAiB,IAAI,EAAC;gBACrD,IAAMP,OAAAA,GAAU,IAAIhK,WAAAA,CAAY6K,IAAAA,EAAM;AACpCE,oBAAAA,cAAAA,EAAgB,OAAOR,iBAAAA,CAAkBQ,cAAc,KAAK,QAAA,GAAWR,iBAAAA,CAAkBQ,cAAc,GAAG,GAAA;AAC1GC,oBAAAA,cAAAA,EAAgB,IAAIC,GAAAA,CAAS;wBAAC,IAAI,CAACvB,WAAW,CAAC9P;AAAK,qBAAA,CAAA;oBACpDsR,kBAAAA,EAAAA,SAAAA,mBAAmBC,GAAG,EAAA;wBACpB,IAAIZ,iBAAAA,CAAkBW,kBAAkB,EAAE;4BACxC,OAAOX,iBAAAA,CAAkBW,kBAAkB,CAACC,GAAAA,CAAAA;AAC9C,wBAAA;wBACA,OAAO,IAAA;AACT,oBAAA,CAAA;oBACAC,YAAAA,EAAAA,SAAAA,aAAalO,IAAU,EAAA;wBACrB,IAAIqN,iBAAAA,CAAkBa,YAAY,EAAE;4BAClC,OAAOb,iBAAAA,CAAkBa,YAAY,CAAClO,IAAAA,CAAAA;AACxC,wBAAA;wBACA,OAAO,IAAA;AACT,oBAAA;AACF,iBAAA,CAAA;gBACA,IAAI,CAAC8M,OAAO,GAAGA,OAAAA;AAEf,gBAAA,IAAIqB,cAAAA,GAAwC,IAAA;AAC5C,gBAAA,IAAI,CAACtR,aAAa,CAAC+C,IAAI,CACrB,IAAI,CAACpD,SAAS,CAAC4R,mBAAmB,CAAC9N,SAAS,CAAC,WAAA;oBAC3C6N,cAAAA,GAAiB,KAAA,CAAK3B,WAAW,CAACnN,yBAAyB,EAAA;AAC7D,gBAAA,CAAA,CAAA,EACA,IAAI,CAACmN,WAAW,CAAC5P,aAAa,CAAC0D,SAAS,CAAC,WAAA;AACvC,oBAAA,MAAMgM,oBAAAA,CAAqB,6CAAA,CAAA;AAC7B,gBAAA,CAAA,CAAA,CAAA;gBAGFQ,OAAAA,CAAQuB,EAAE,CAAC,kBAAA,EAAoB,SAACC,KAAAA,EAAAA;oBAC9B,IAAIA,KAAAA,CAAMtP,IAAI,KAAK,MAAA,EAAQ;wBACzB,IAAIsP,KAAAA,CAAMzL,MAAM,KAAKiK,OAAAA,EAAS;AAC5B,4BAAA,KAAA,CAAK3N,KAAK,EAAA;wBACZ,CAAA,MAAO;AACL,4BAAA,KAAA,CAAK4N,YAAY,CAAChP,MAAM,GAAG,MAAKoB,KAAK;4BACrC,KAAA,CAAK4N,YAAY,CAACnN,IAAI,CAAC;gCACrB2O,MAAAA,EAAQJ,cAAAA;gCACRK,KAAAA,EAAO,KAAA,CAAKhC,WAAW,CAACnN,yBAAyB;AACnD,6BAAA,CAAA;AACA,4BAAA,KAAA,CAAKF,KAAK,EAAA;AACZ,wBAAA;oBACF,CAAA,MAAO;AACL,wBAAA,KAAA,CAAKA,KAAK,EAAA;AACZ,oBAAA;AACA,oBAAA,IAAI2N,QAAQ2B,SAAS,CAAC1Q,MAAM,GAAG,KAAA,CAAK0O,SAAS,EAAE;wBAC7C,KAAA,CAAKM,YAAY,CAAC2B,KAAK,EAAA;wBACvB5B,OAAAA,CAAQ2B,SAAS,CAACC,KAAK,EAAA;AACzB,oBAAA;AACA,oBAAA,IAAIJ,MAAMzL,MAAM,KAAK,MAAK2J,WAAW,CAAC9P,IAAI,EAAE;wBAC1C,KAAA,CAAKyQ,SAAS,CAAC3G,IAAI,EAAA;AACrB,oBAAA;oBACA,KAAA,CAAK0G,WAAW,CAAC1G,IAAI,EAAA;AACvB,gBAAA,CAAA,CAAA;gBACAsG,OAAAA,CAAQuB,EAAE,CAAC,mBAAA,EAAqB,SAAC9M,EAAAA,EAAAA;oBAC/B,IAAMpC,KAAAA,GAAQoC,EAAAA,CAAGvC,IAAI,KAAK,MAAA,GAAS,MAAKG,KAAK,GAAG,KAAA,CAAKA,KAAK,GAAG,CAAA;AAC7D,oBAAA,IAAMX,QAAAA,GAAW,KAAA,CAAKuO,YAAY,CAAC5N,MAAM,IAAI,IAAA;AAC7C,oBAAA,IAAMwP,CAAAA,GAAIpN,EAAAA,CAAGvC,IAAI,KAAK,MAAA,GAASR,QAAAA,KAAAA,IAAAA,IAAAA,QAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,QAAAA,CAAU+P,MAAM,GAAG/P,QAAAA,KAAAA,IAAAA,IAAAA,QAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,SAAUgQ,KAAK;oBACjE,KAAA,CAAKhC,WAAW,CAAC/M,qBAAqB,CAACkP,CAAAA,CAAAA;AACzC,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAGAC,GAAAA,EAAAA,MAAAA;mBAAAA,SAAAA,IAAAA,GAAAA;gBACE,IAAI,IAAI,CAACtB,OAAO,EAAE;AAChB,oBAAA,IAAA,aAAA;AAAA,oBAAA,CAAA,aAAA,GAAA,IAAI,CAACR,OAAO,MAAA,IAAA,IAAZ,aAAA,KAAA,MAAA,GAAA,MAAA,GAAA,cAAc+B,IAAI,EAAA;oBAClB,IAAI,CAAC7B,SAAS,CAACxG,IAAI,EAAA;AACrB,gBAAA;AACF,YAAA;;;YAEAsI,GAAAA,EAAAA,SAAAA;mBAAAA,SAAAA,OAAAA,GAAAA;gBACE,IAAI,IAAI,CAACtB,UAAU,EAAE;AACnB,oBAAA,IAAA,aAAA;AAAA,oBAAA,CAAA,aAAA,GAAA,IAAI,CAACV,OAAO,MAAA,IAAA,IAAZ,aAAA,KAAA,MAAA,GAAA,MAAA,GAAA,cAAciC,IAAI,EAAA;oBAClB,IAAI,CAAC9B,YAAY,CAACzG,IAAI,EAAA;AACxB,gBAAA;AACF,YAAA;;;YAEAwI,GAAAA,EAAAA,OAAAA;mBAAAA,SAAAA,KAAAA,GAAAA;AAIE,gBAAA,IAAA,aAAA;AAHA,gBAAA,IAAMC,IAAAA,GAAO,IAAI,CAAClC,YAAY,CAACmC,GAAG,EAAA;gBAClC,IAAI,CAACnC,YAAY,GAAGkC,IAAAA,GAAO;AAACA,oBAAAA;AAAK,iBAAA,GAAG,EAAE;AACtC,gBAAA,IAAI,CAAC9P,KAAK,GAAG8P,IAAAA,GAAO,CAAA,GAAI,CAAA;AACxB,gBAAA,CAAA,aAAA,GAAA,IAAI,CAACnC,OAAO,MAAA,IAAA,IAAZ,aAAA,KAAA,MAAA,GAAA,MAAA,GAAA,cAAckC,KAAK,EAAA;gBACnB,IAAI,CAAC9B,WAAW,CAAC1G,IAAI,EAAA;AACvB,YAAA;;;YAEAhC,GAAAA,EAAAA,SAAAA;mBAAAA,SAAAA,OAAAA,GAAAA;gBACE,IAAI,CAACrF,KAAK,GAAG,CAAA;gBACb,IAAI,CAAC4N,YAAY,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAClQ,aAAa,CAAC+D,OAAO,CAACV,SAAAA,CAAAA,EAAAA;AAAKA,oBAAAA,OAAAA,CAAAA,CAAEqE,WAAW,EAAA;;gBAC7C,IAAI,IAAI,CAACuI,OAAO,EAAE;oBAChB,IAAI,CAACA,OAAO,CAACtI,OAAO,EAAA;AACpB,oBAAA,IAAI,CAACsI,OAAO,CAACkB,kBAAkB,GAAG,WAAA;AAAM,wBAAA,OAAA,IAAA;;AACxC,oBAAA,IAAI,CAAClB,OAAO,CAACoB,YAAY,GAAG,WAAA;AAAM,wBAAA,OAAA,IAAA;;AAClC,oBAAA,IAAI,CAACpB,OAAO,CAACgB,cAAc,GAAG,IAAIC,GAAAA,CAAI;AAAC,wBAAA;AAAK,qBAAA,CAAA;AAC9C,gBAAA;gBAEA,IAAI,CAACjB,OAAO,GAAG,IAAA;AACjB,YAAA;;;AA1IWP,IAAAA,OAAAA,aAAAA;AA2IZ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzJD;;IAGO,IAAe4C,UAAAA,iBAAf,WAAA;AAAeA,IAAAA,SAAAA,UAAAA,GAAAA;AAAAA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,CAAAA;AACpBC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AACA,QAAAzT,kBAAA,CAAA,IAAA,EAAU0T,aAAY,IAAIhS,OAAAA,EAAAA,CAAAA;AAGxB,QAAA,IAAI,CAAC+R,MAAM,GAAG,IAAI,CAACC,SAAS,CAAC/R,YAAY,EAAA;;AALvB6R,IAAAA,eAAAA,CAAAA,UAAAA,EAAAA;;AAQpB;;AAEC,MACDG,GAAAA,EAAAA,MAAAA;mBAAAA,SAAAA,IAAAA,GAAAA;gBACE,IAAI,CAACD,SAAS,CAAC7I,IAAI,EAAA;AACrB,YAAA;;;AAboB2I,IAAAA,OAAAA,UAAAA;AA0BrB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBM,IAAA,wBAAMI,iBAAN,WAAA;AAAMA,IAAAA,SAAAA,wBAAAA,CAkCC,WAAgC,EACxB/S,SAAoB,EAC5B,gBAA0C,EACNiQ,SAAiB,EACrD,iBAA8D,EAAA;AAtC/D8C,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,wBAAAA,CAAAA;;;;;;AACX3C,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,YAAAA,MAAAA,CAAAA;AACAF,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AACAC,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,MAAAA,CAAAA;AACAE,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AAUA2C,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,YAAAA,MAAAA,CAAAA;AAEA,QAAA7T,kBAAA,CAAA,IAAA,EAAQuR,eAAR,MAAA,CAAA;AACA,QAAAvR,kBAAA,CAAA,IAAA,EAAQqR,aAAR,MAAA,CAAA;AACA,QAAArR,kBAAA,CAAA,IAAA,EAAQsR,gBAAR,MAAA,CAAA;AACA,QAAAtR,kBAAA,CAAA,IAAA,EAAQwR,aAAR,MAAA,CAAA;AACA,QAAAxR,kBAAA,CAAA,IAAA,EAAQ8T,eAAR,MAAA,CAAA;AAEA,QAAA9T,kBAAA,CAAA,IAAA,EAAQwD,SAAR,MAAA,CAAA;AAEA,QAAAxD,kBAAA,CAAA,IAAA,EAAQ+T,aAAR,MAAA,CAAA;AACA,QAAA/T,kBAAA,CAAA,IAAA,EAAQgU,SAAR,MAAA,CAAA;AACA,QAAAhU,kBAAA,CAAA,IAAA,EAAQwS,kBAAR,MAAA,CAAA;AAEA,QAAAxS,kBAAA,CAAA,IAAA,EAAQiU,gBAAR,MAAA,CAAA;AAEA,QAAAjU,kBAAA,CAAA,IAAA,EAAQkU,WAAR,MAAA,CAAA;AAEA,QAAAlU,kBAAA,CAAA,IAAA,EAAQmU,kBAAR,MAAA,CAAA;aAEoBtD,WAAAA,GAAAA,WAAAA;aACAhQ,SAAAA,GAAAA,SAAAA;aACA4Q,gBAAAA,GAAAA,gBAAAA;aAC4BX,SAAAA,GAAAA,SAAAA;aAChBY,iBAAAA,GAAAA,iBAAAA;aAxBhCmC,QAAAA,GAAW,KAAA;AAEHtC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAI7P,OAAAA,EAAAA;AAClB2P,QAAAA,IAAAA,CAAAA,SAAAA,GAAY,IAAI3P,OAAAA,EAAAA;AAChB4P,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,IAAI5P,OAAAA,EAAAA;AACnB8P,QAAAA,IAAAA,CAAAA,SAAAA,GAAY,IAAI9P,OAAAA,EAAAA;AAChBoS,QAAAA,IAAAA,CAAAA,WAAAA,GAAkC,EAAE;aAEpCtQ,KAAAA,GAAQ,CAAA;aAERuQ,SAAAA,GAAqC,IAAA;aACrCC,KAAAA,GAAa,IAAA;aACbxB,cAAAA,GAAwC,IAAA;AAExCyB,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,IAAIG,YAAAA,EAAAA;AAEnBF,QAAAA,IAAAA,CAAAA,OAAAA,GAAU,IAAI9B,GAAAA,EAAAA;AAEd+B,QAAAA,IAAAA,CAAAA,cAAAA,GAAiB,IAAI/B,GAAAA,EAAAA;AAO3B,QAAA,IAAI,CAACnB,QAAQ,GAAG,IAAI,CAACM,WAAW,CAAC5P,YAAY,EAAA;AAC7C,QAAA,IAAI,CAACoP,MAAM,GAAG,IAAI,CAACM,SAAS,CAAC1P,YAAY,EAAA;AACzC,QAAA,IAAI,CAACqP,SAAS,GAAG,IAAI,CAACM,YAAY,CAAC3P,YAAY,EAAA;AAC/C,QAAA,IAAI,CAACuP,MAAM,GAAG,IAAI,CAACM,SAAS,CAAC7P,YAAY,EAAA;;AA1ChCiS,IAAAA,eAAAA,CAAAA,wBAAAA,EAAAA;;YAMPjC,GAAAA,EAAAA,SAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACmC,WAAW,CAAC1R,MAAM,GAAG,CAAA,IAAK,IAAI,CAACoB,KAAK,GAAG,CAAA;AACrD,YAAA;;;YAEIqO,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACiC,WAAW,CAAC1R,MAAM,GAAG,CAAA,IAAK,IAAI,CAACoB,KAAK,GAAG,IAAI,CAACsQ,WAAW,CAAC1R,MAAM;AAC5E,YAAA;;;YAiCA2P,GAAAA,EAAAA,QAAAA;mBAAAA,SAAAA,MAAAA,GAAAA;;gBACE,IAAI,CAAC8B,QAAQ,GAAG,IAAA;gBAChB,IAAM7B,IAAAA,GAAO,IAAI,CAACnB,WAAW,CAAC9P,IAAI,CAAC6J,MAAM,CAAC,eAAA,CAAA;AAC1C,gBAAA,IAAMqH,aAAAA,GAAgB,IAAI,CAACR,gBAAgB,CAAC1K,SAAS;gBACrD,IAAI,CAAC8J,WAAW,CAACjP,iBAAiB,CAAC,IAAI,CAACiP,WAAW,CAAC9P,IAAI,EAAEiR,IAAAA,EAAMC,aAAAA,CAAAA;gBAEhE,IAAI,CAACoC,UAAU,CAACrC,IAAAA,EAAM,IAAI,CAACnB,WAAW,CAAC9P,IAAI,CAAA;AAE3C,gBAAA,IAAI,CAACkT,YAAY,CAACK,GAAG,CACnB,IAAI,CAACzD,WAAW,CAAC5P,aAAa,CAAC0D,SAAS,CAAC,SAAA,KAAA,EAAA;AAAEmG,oBAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,OAAO/J,IAAAA,GAAAA,KAAAA,CAAAA,IAAAA;AAChD,oBAAA,IAAI,KAAA,CAAKmT,OAAO,CAAC3N,GAAG,CAACuE,KAAAA,CAAAA,EAAQ;AAC3B,wBAAA;AACF,oBAAA;oBACA,KAAA,CAAKoJ,OAAO,CAACI,GAAG,CAACxJ,KAAAA,CAAAA;oBACjB,IAAI,KAAA,CAAK+I,QAAQ,EAAE;wBACjB,KAAA,CAAKQ,UAAU,CAACvJ,KAAAA,EAAO/J,IAAAA,CAAAA;AACzB,oBAAA;AACF,gBAAA,CAAA,CAAA,EACA,IAAI,CAACF,SAAS,CAAC4R,mBAAmB,CAAC9N,SAAS,CAAC,WAAA;AAC3C,oBAAA,KAAA,CAAK6N,cAAc,GAAG,KAAA,CAAK3B,WAAW,CAACnN,yBAAyB,EAAA;AAClE,gBAAA,CAAA,CAAA,CAAA;AAEJ,YAAA;;;YAEAyP,GAAAA,EAAAA,SAAAA;mBAAAA,SAAAA,OAAAA,GAAAA;AACE,gBAAA,IAAI,CAAC,IAAI,CAACtB,UAAU,EAAE;AACpB,oBAAA;AACF,gBAAA;gBACA0C,YAAAA,CAAa,IAAI,CAACP,KAAK,CAAA;gBACvB,IAAM3P,IAAAA,GAAO,IAAI,CAACyP,WAAW,CAAC,IAAI,CAACtQ,KAAK,CAAC;AACzC,gBAAA,IAAIa,IAAAA,EAAM;AACH,oBAAA,IAAA,yBAAA,GAAA,IAAA,EAAA,iBAAA,GAAA,KAAA,EAAA,cAAA,GAAA,SAAA;;wBAAL,IAAA,IAAK,SAAA,GAAWA,KAAKmQ,YAAY,CAAA,MAAA,CAAA,QAAA,CAAA,EAAA,EAA5B,SAAA,yBAAA,GAAA,CAAA,KAAA,GAAA,yBAAA,yBAAA,GAAA,IAAA,CAA8B;AAA9B,4BAAA,IAAMjQ,CAAAA,GAAN,KAAA,CAAA,KAAA;AACHA,4BAAAA,CAAAA,CAAE6O,IAAI,EAAA;AACR,wBAAA;;AAFK,wBAAA,iBAAA,GAAA,IAAA;AAAA,wBAAA,cAAA,GAAA,GAAA;;;iCAAA,yBAAA,IAAA,SAAA,CAAA,MAAA,IAAA,IAAA,EAAA;AAAA,gCAAA,SAAA,CAAA,MAAA,EAAA;;;AAAA,4BAAA,IAAA,iBAAA,EAAA;AAAA,gCAAA,MAAA,cAAA;;;;AAGL,oBAAA,IAAI,CAACvC,WAAW,CAAC/M,qBAAqB,CAACO,KAAKwO,KAAK,CAAA;AACnD,gBAAA;AACA,gBAAA,IAAI,CAACrP,KAAK,EAAA;gBACV,IAAI,CAAC8N,YAAY,CAACzG,IAAI,EAAA;gBACtB,IAAI,CAAC0G,WAAW,CAAC1G,IAAI,EAAA;AACvB,YAAA;;;YAEAoI,GAAAA,EAAAA,MAAAA;mBAAAA,SAAAA,IAAAA,GAAAA;AACE,gBAAA,IAAI,CAAC,IAAI,CAACtB,OAAO,EAAE;AACjB,oBAAA;AACF,gBAAA;gBACA4C,YAAAA,CAAa,IAAI,CAACP,KAAK,CAAA;gBACvB,IAAIS,gBAAAA;gBACJ,IAAI,IAAI,CAACV,SAAS,EAAE;oBAClBU,gBAAAA,GAAmB,IAAI,CAACV,SAAS;oBACjC,IAAI,CAACA,SAAS,GAAG,IAAA;gBACnB,CAAA,MAAO;AACL,oBAAA,IAAI,CAACvQ,KAAK,EAAA;AACViR,oBAAAA,gBAAAA,GAAmB,IAAI,CAACX,WAAW,CAAC,IAAI,CAACtQ,KAAK,CAAC;AACjD,gBAAA;AACA,gBAAA,IAAIyK,GAAAA,GAAMwG,gBAAAA,CAAiBD,YAAY,CAACpS,MAAM;AAC9C,gBAAA,MAAO6L,MAAM,CAAA,CAAG;AACdA,oBAAAA,GAAAA,EAAAA;AACAwG,oBAAAA,gBAAAA,CAAiBD,YAAY,CAACvG,GAAAA,CAAI,CAACiF,IAAI,EAAA;AACzC,gBAAA;AACA,gBAAA,IAAIuB,gBAAAA,EAAkB;oBACpB,IAAMjC,cAAAA,GAAiBiC,iBAAiB7B,MAAM;AAC9C,oBAAA,IAAI,CAAC/B,WAAW,CAAC/M,qBAAqB,CAAC0O,cAAAA,CAAAA;oBACvC,IAAI,CAACnB,SAAS,CAACxG,IAAI,EAAA;oBACnB,IAAI,CAAC0G,WAAW,CAAC1G,IAAI,EAAA;AACvB,gBAAA;AACF,YAAA;;;YAEAwI,GAAAA,EAAAA,OAAAA;mBAAAA,SAAAA,KAAAA,GAAAA;gBACE,IAAI,CAACS,WAAW,GAAG,EAAE;gBACrB,IAAI,CAACC,SAAS,GAAG,IAAA;gBACjB,IAAI,CAACvQ,KAAK,GAAG,CAAA;gBACb,IAAI,CAACgP,cAAc,GAAG,IAAA;gBACtB+B,YAAAA,CAAa,IAAI,CAACP,KAAK,CAAA;AACvB,gBAAA,IAAI,CAACG,cAAc,CAAClP,OAAO,CAAC,SAACyP,WAAAA,EAAAA;AAC3BA,oBAAAA,WAAAA,CAAYrB,KAAK,EAAA;AACnB,gBAAA,CAAA,CAAA;gBACA,IAAI,CAAC9B,WAAW,CAAC1G,IAAI,EAAA;AACvB,YAAA;;;YAEAhC,GAAAA,EAAAA,SAAAA;mBAAAA,SAAAA,OAAAA,GAAAA;AACE,gBAAA,IAAI,CAACwK,KAAK,EAAA;AACV,gBAAA,IAAI,CAACb,cAAc,GAAG,IAAI,CAACuB,SAAS,GAAG,IAAA;gBACvC,IAAI,CAACE,YAAY,CAACrL,WAAW,EAAA;AAC7B,gBAAA,IAAI,CAACuL,cAAc,CAAClP,OAAO,CAAC,SAACyP,WAAAA,EAAAA;AAC3BA,oBAAAA,WAAAA,CAAY7L,OAAO,EAAA;AACrB,gBAAA,CAAA,CAAA;gBACA,IAAI,CAACqL,OAAO,CAACb,KAAK,EAAA;gBAClB,IAAI,CAACc,cAAc,CAACd,KAAK,EAAA;AAC3B,YAAA;;;YAEQgB,GAAAA,EAAAA,YAAAA;mBAAR,SAAQA,UAAAA,CAAWvJ,KAAwB,EAAE/J,IAAU,EAAA;;AACrD,gBAAA,IAAM2Q,iBAAAA,GAAoB,IAAI,CAACA,iBAAiB,IAAI,EAAC;gBACrD,IAAMgD,WAAAA,GAAc,IAAIvN,WAAAA,CAAY2D,KAAAA,EAAO;AACzCqH,oBAAAA,cAAAA,EAAgB,IAAIC,GAAAA,CAAI;AAACrR,wBAAAA;AAAK,qBAAA,CAAA;oBAC9BmR,cAAAA,EAAgB,CAAA;oBAChBG,kBAAAA,EAAAA,SAAAA,mBAAmBC,GAAG,EAAA;wBACpB,IAAIZ,iBAAAA,CAAkBW,kBAAkB,EAAE;4BACxC,OAAOX,iBAAAA,CAAkBW,kBAAkB,CAACC,GAAAA,CAAAA;AAC9C,wBAAA;wBACA,OAAO,IAAA;AACT,oBAAA,CAAA;oBACAC,YAAAA,EAAAA,SAAAA,aAAalO,IAAU,EAAA;wBACrB,IAAIqN,iBAAAA,CAAkBa,YAAY,EAAE;4BAClC,OAAOb,iBAAAA,CAAkBa,YAAY,CAAClO,IAAAA,CAAAA;AACxC,wBAAA;wBACA,OAAO,IAAA;AACT,oBAAA;AACF,iBAAA,CAAA;gBAEAqQ,WAAAA,CAAYhC,EAAE,CAAC,kBAAA,EAAoB,SAACC,KAAAA,EAAAA;oBAClC,IAAIA,KAAAA,CAAMtP,IAAI,KAAK,MAAA,IAAU,CAAEsP,WAAY,CAAZA,KAAAA,CAAMzL,MAAM,EAAYC,WAAAA,CAAAA,EAAc;AACnE,wBAAA,IAAI,MAAK3D,KAAK,IAAI,MAAKsQ,WAAW,CAAC1R,MAAM,EAAE;AACzC,4BAAA,IAAMuS,YAAY,KAAA,CAAKb,WAAW,CAACc,KAAK,CAAC,MAAKpR,KAAK,CAAA;4BACnDmR,SAAAA,CAAU1P,OAAO,CAACZ,SAAAA,IAAAA,EAAAA;AAChBA,gCAAAA,IAAAA,CAAKmQ,YAAY,CAACvP,OAAO,CAACV,SAAAA,CAAAA,EAAAA;oCACxBA,CAAAA,CAAE8O,KAAK,CAAC,KAAA,EAAO,IAAA,CAAA;AACjB,gCAAA,CAAA,CAAA;AACF,4BAAA,CAAA,CAAA;AACA,4BAAA,KAAA,CAAKS,WAAW,CAAC1R,MAAM,GAAG,MAAKoB,KAAK;4BACpC,KAAA,CAAK+N,WAAW,CAAC1G,IAAI,EAAA;AACvB,wBAAA;wBACA,IAAI,KAAA,CAAKkJ,SAAS,KAAK,IAAA,EAAM;AAC3B,4BAAA,KAAA,CAAKA,SAAS,GAAG;AACfnB,gCAAAA,MAAAA,EAAQ,MAAKJ,cAAc;gCAC3BK,KAAAA,EAAO,IAAA;AACP2B,gCAAAA,YAAAA,EAAc;AAChB,6BAAA;4BACA,KAAA,CAAKR,KAAK,GAAGa,UAAAA,CAAW,WAAA;AACtB,gCAAA,IAAI,MAAKf,WAAW,CAAC1R,MAAM,IAAI,KAAA,CAAK0O,SAAS,EAAE;oCAC7C,KAAA,CAAKgD,WAAW,CAACf,KAAK,EAAA;gCACxB,CAAA,MAAO;AACL,oCAAA,KAAA,CAAKvP,KAAK,EAAA;AACZ,gCAAA;;AAEA,gCAAA,KAAA,CAAKuQ,SAAS,CAAElB,KAAK,GAAG,MAAKL,cAAc;AAC3C,gCAAA,KAAA,CAAKsB,WAAW,CAAC7P,IAAI,CAAC,MAAK8P,SAAS,CAAA;AACpC,gCAAA,KAAA,CAAKA,SAAS,GAAG,IAAA;gCACjB,KAAA,CAAKvC,SAAS,CAAC3G,IAAI,EAAA;gCACnB,KAAA,CAAK0G,WAAW,CAAC1G,IAAI,EAAA;AACvB,4BAAA,CAAA,EAAG,OAAO6G,iBAAAA,CAAkBQ,cAAc,KAAK,QAAA,GAAWR,iBAAAA,CAAkBQ,cAAc,GAAG,GAAA,CAAA;AAC/F,wBAAA;AAEA,wBAAA,KAAA,CAAK6B,SAAS,CAACS,YAAY,CAACvQ,IAAI,CAACyQ,WAAAA,CAAAA;AACnC,oBAAA;AACF,gBAAA,CAAA,CAAA;AAEA,gBAAA,IAAI,CAACP,cAAc,CAACG,GAAG,CAACI,WAAAA,CAAAA;AAC1B,YAAA;;;AAhMWd,IAAAA,OAAAA,wBAAAA;AAiMZ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5MD;;AAEC,IACM,IAAA,aAAekB,GAAf,SAAeA,aAAAA,GAAAA;AAAAA,IAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA;AACpB;;MAGAC,kBAAAA,CAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAAA;AACA;;MAGAC,kBAAAA,CAAAA,IAAAA,EAAAA,iBAAAA,MAAAA,CAAAA;AAEA,IAAAhV,kBAAA,CAAA,IAAA,EAAUiV,aAAY,IAAIvT,OAAAA,EAAAA,CAAAA;AAC1B,IAAA1B,kBAAA,CAAA,IAAA,EAAUkV,oBAAmB,IAAIxT,OAAAA,EAAAA,CAAAA;AAG/B,IAAA,IAAI,CAACqT,MAAM,GAAG,IAAI,CAACE,SAAS,CAACtT,YAAY,EAAA;AACzC,IAAA,IAAI,CAACqT,aAAa,GAAG,IAAI,CAACE,gBAAgB,CAACvT,YAAY,EAAA;AAc1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BM,IAAA,mBAAMwT,iBAAN,SAAA,aAAA,EAAA;AAAMA,IAAAA,WAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAAA;AAAAA,IAAAA,SAAAA,mBAAAA,CAGCC,MAAuC,EAAA;AAHxCD,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,mBAAAA,CAAAA;;gBAIT7V,aAAA,CAAA,IAAA,EAJS6V,mBAAAA,CAAAA,EACXE,kBAAAA,CAAAA,KAAAA,EAAAA,SAAAA,EAAAA,MAAAA,CAAAA;AAIE,QAAA,KAAA,CAAKA,OAAO,GAAG,IAAIC,kBAAAA,CAAmB,oBAAA,CAAAC,gBAAA,CAAA,EAAA,EACjCH,MAAAA,CAAAA,EAAAA;AACHI,YAAAA,QAAAA,EAAU,SAAVA,QAAAA,CAAW7J,IAAAA,EAAAA;AACTyJ,gBAAAA,IAAAA,gBAAAA;AAAAA,gBAAAA,CAAAA,gBAAAA,GAAAA,MAAAA,CAAOI,QAAQ,MAAA,IAAA,IAAfJ,gBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,sBAAAA,MAAAA,EAAkBzJ,IAAAA,CAAAA;gBAClB,KAAA,CAAKsJ,SAAS,CAACpK,IAAI,EAAA;AACrB,YAAA,CAAA;AACA4K,YAAAA,iBAAAA,EAAmB,SAAnBA,iBAAAA,CAAoB9J,IAAAA,EAAAA;AAClByJ,gBAAAA,IAAAA,yBAAAA;AAAAA,gBAAAA,CAAAA,yBAAAA,GAAAA,MAAAA,CAAOK,iBAAiB,MAAA,IAAA,IAAxBL,yBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,+BAAAA,MAAAA,EAA2BzJ,IAAAA,CAAAA;AAC3B,gBAAA,IAAM+J,SAAyB/J,IAAAA,CAAK+J,MAAM,CAACtR,GAAG,CAACe,SAAAA,KAAAA,EAAAA;oBAC7C,OAAO;AACLwQ,wBAAAA,QAAAA,EAAUxQ,MAAMwQ,QAAQ;AACxBC,wBAAAA,OAAAA,EAASzQ,MAAMyQ;AACjB,qBAAA;AACF,gBAAA,CAAA,CAAA;gBACA,KAAA,CAAKV,gBAAgB,CAACrK,IAAI,CAAC6K,MAAAA,CAAAA;AAC7B,YAAA;;;;AApBOP,IAAAA,eAAAA,CAAAA,mBAAAA,EAAAA;;YAwBXU,GAAAA,EAAAA,oBAAAA;mBAAAA,SAAAA,kBAAAA,CAAmBxV,GAAW,EAAEsL,IAAyB,EAAA;AACvD,gBAAA,IAAI,CAAC0J,OAAO,CAACS,iBAAiB,CAACzV,GAAAA,EAAKsL,IAAAA,CAAAA;AACtC,YAAA;;;YAEAoK,GAAAA,EAAAA,WAAAA;mBAAAA,SAAAA,SAAAA,GAAAA;gBACE,IAAI,CAACV,OAAO,CAACW,UAAU,EAAA;gBACvB,IAAI,CAACX,OAAO,CAACxM,OAAO,EAAA;AACtB,YAAA;;;AA/BWsM,IAAAA,OAAAA,mBAAAA;EAA4BL,aAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOzC;;;;;;;;;IAUO,IAAMmB,cAAAA,iBAAN,SAAA,aAAA,EAAA;AAAMA,IAAAA,WAAAA,CAAAA,cAAAA,EAAAA,aAAAA,CAAAA;aAAAA,cAAAA,CAMCC,KAAY,EAAEC,OAA+B,EAAA;AAN9CF,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,cAAAA,CAAAA;;;gBAOT3W,aAAA,CAAA,IAAA,EAPS2W,cAAAA,CAAAA,EACXjW,kBAAA,CAAA,KAAA,EAAS2V,UAAAA,EAAT,MAAA,CAAA,EAEA3V,0BAAQoW,WAAAA,EAAY,KAAA,CAAA,EACpBpW,kBAAA,CAAA,KAAA,EAAQqW,QAAAA,EAA8B,EAAC,CAAA;AAIrC,QAAA,KAAA,CAAKV,QAAQ,GAAA,CAAA,IAAA,GAAGQ,OAAAA,KAAAA,IAAAA,IAAAA,OAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAASR,QAAQ,MAAA,IAAA,IAAA,IAAA,KAAA,MAAA,GAAA,IAAA,GAAI,CAAA;QACrCW,OAAAA,CAAQC,OAAO,EAAA,CAAG9L,IAAI,CAAC,WAAA;YACrB,IAAI,CAAC,KAAA,CAAK2L,SAAS,EAAE;gBACnB,KAAA,CAAKnB,SAAS,CAACpK,IAAI,EAAA;AACrB,YAAA;AACF,QAAA,CAAA,CAAA;;;AAbSoL,IAAAA,eAAAA,CAAAA,cAAAA,EAAAA;;YAgBXJ,GAAAA,EAAAA,oBAAAA;mBAAAA,SAAAA,kBAAAA,CAAmBxV,GAAW,EAAEsL,IAAyB,EAAA;gBACvD,IAAI,IAAI,CAACyK,SAAS,EAAE;AAClB,oBAAA;AACF,gBAAA;AACA,gBAAA,IAAI,CAACC,MAAM,CAAChW,GAAAA,CAAI,GAAGsL,IAAAA;AACnB,gBAAA,IAAI,CAAC6K,mBAAmB,EAAA;AAC1B,YAAA;;;YAEAT,GAAAA,EAAAA,WAAAA;mBAAAA,SAAAA,SAAAA,GAAAA;gBACE,IAAI,CAACK,SAAS,GAAG,IAAA;AACnB,YAAA;;;AAEA;;AAEC,MACDK,GAAAA,EAAAA,2BAAAA;mBAAAA,SAAAA,yBAAAA,GAAAA;gBACE,OAAO,cAAA,CAAA,EAAA,EAAK,IAAI,CAACJ,MAAM,CAAA;AACzB,YAAA;;;YAEQG,GAAAA,EAAAA,qBAAAA;mBAAR,SAAQA,mBAAAA,GAAAA;AACN,gBAAA,IAAMd,SAAyB,EAAE;AACjCA,gBAAAA,MAAAA,CAAOzR,IAAI,CAAC;oBACV0R,QAAAA,EAAU,IAAI,CAACA,QAAQ;AACvBC,oBAAAA,OAAAA,EAAS,IAAI,CAACS,MAAM,CAACT;AACvB,iBAAA,CAAA;AACA,gBAAA,IAAI,CAACV,gBAAgB,CAACrK,IAAI,CAAC6K,MAAAA,CAAAA;AAC7B,YAAA;;;AA1CWO,IAAAA,OAAAA,cAAAA;EAAuBnB,aAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjB7B,IAAA,mBAAM4B,iBAAN,SAAA,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAAA;AAAAA,IAAAA,SAAAA,mBAAAA,CAoBCC,GAAW,EAAEC,QAAgB,EAAE7V,IAAU,EAAA;AApB1C2V,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,mBAAAA,CAAAA;;AAqBT,QAAA,KAAA,GAAA,WAAA,CAAA,IAAA,EArBSA,sBACXrB,kBAAAA,CAAAA,KAAAA,EAAAA,SAAAA,EAAAA,MAAAA,CAAAA,EAEArV,kBAAA,CAAA,KAAA,EAAQyT,UAAS,SAACoD,EAAAA,EAAAA;AAChB,YAAA,IAAIA,EAAAA,EAAI;gBACN,KAAA,CAAK5B,SAAS,CAACpK,IAAI,EAAA;AACrB,YAAA;AACF,QAAA,CAAA,CAAA,EAEA7K,0BAAQ8W,UAAAA,EAAW,WAAA;AACjB,YAAA,IAAMC,aAA6B,EAAE;YACrC,KAAA,CAAK1B,OAAO,CAAC2B,SAAS,CAACC,SAAS,EAAA,CAAGhS,OAAO,CAAC,SAACE,KAAAA,EAAO+R,EAAAA,EAAAA;AACjDH,gBAAAA,UAAAA,CAAW9S,IAAI,CAAC;oBACd0R,QAAAA,EAAUuB,EAAAA;AACVtB,oBAAAA,OAAAA,EAASzQ,MAAMyQ;AACjB,iBAAA,CAAA;AACF,YAAA,CAAA,CAAA;YACA,KAAA,CAAKV,gBAAgB,CAACrK,IAAI,CAACkM,UAAAA,CAAAA;AAC7B,QAAA,CAAA,CAAA;AAIE,QAAA,KAAA,CAAKhC,MAAM,GAAG,KAAA,CAAKE,SAAS,CAACtT,YAAY,EAAA;AACzC,QAAA,KAAA,CAAKqT,aAAa,GAAG,KAAA,CAAKE,gBAAgB,CAACvT,YAAY,EAAA;AACvD,QAAA,KAAA,CAAK0T,OAAO,GAAG,IAAI8B,iBAAAA,CAAkBR,KAAKC,QAAAA,EAAU7V,IAAAA,CAAAA;AAEpD,QAAA,KAAA,CAAKsU,OAAO,CAAC+B,IAAI,CAAC,MAAA,EAAQ,MAAK3D,MAAM,CAAA;QACrC,KAAA,CAAK4B,OAAO,CAAC2B,SAAS,CAACtE,EAAE,CAAC,QAAA,EAAU,MAAKoE,QAAQ,CAAA;;;AA3BxCJ,IAAAA,eAAAA,CAAAA,mBAAAA,EAAAA;;YA8BXb,GAAAA,EAAAA,oBAAAA;mBAAAA,SAAAA,kBAAAA,CAAmBxV,GAAW,EAAEsL,IAAyB,EAAA;AACvD,gBAAA,IAAI,CAAC0J,OAAO,CAAC2B,SAAS,CAACnB,kBAAkB,CAACxV,GAAAA,EAAKsL,IAAAA,CAAAA;AACjD,YAAA;;;YAEAoK,GAAAA,EAAAA,WAAAA;mBAAAA,SAAAA,SAAAA,GAAAA;gBACE,IAAI,CAACV,OAAO,CAAC2B,SAAS,CAACK,GAAG,CAAC,QAAA,EAAU,IAAI,CAACP,QAAQ,CAAA;gBAClD,IAAI,CAACzB,OAAO,CAACW,UAAU,EAAA;gBACvB,IAAI,CAACX,OAAO,CAACxM,OAAO,EAAA;AACtB,YAAA;;;AAtCW6N,IAAAA,OAAAA,mBAAAA;EAA4B5B,aAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOlC,IAAA,iBAAMwC,iBAAN,WAAA;AAAMA,IAAAA,SAAAA,iBAAAA,CAsBC,MAAgC,EAAA;;AAtBjCA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,iBAAAA,CAAAA;;AACX,QAAAtX,kBAAA,CAAA,IAAA,EAAQiU,gBAAR,MAAA,CAAA;AACAsD,QAAAA,kBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,MAAAA,CAAAA;AAkBA,QAAAvX,kBAAA,CAAA,IAAA,EAAQgU,SAAR,MAAA,CAAA;aAEmBoB,MAAAA,GAAAA,MAAAA;AArBXnB,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,IAAIG,YAAAA,EAAAA;aAC3BmD,SAAAA,GAAwB;AACtB3W,YAAAA,WAAAA;AACAgQ,YAAAA,aAAAA;AACA,YAAA;gBACEyE,OAAAA,EAASmC,OAAAA;gBACTC,WAAAA,EAAa7G;AACf,aAAA;AAAG,YAAA;gBACDyE,OAAAA,EAASP,aAAAA;AACT4C,gBAAAA,UAAAA,EAAY,SAAZA,UAAAA,CAAaC,MAAAA,EAAAA;AACX,oBAAA,OAAO,MAAKvC,MAAM,CAACwC,eAAe,CAACD,OAAO5W,IAAI,CAAA;AAChD,gBAAA,CAAA;gBACA8W,IAAAA,EAAM;AAACjX,oBAAAA;AAAY;AACrB,aAAA;AAAG,YAAA;gBACDyU,OAAAA,EAASjW,cAAAA;gBACT0Y,QAAAA,EAAUzY;AACZ;AACD,SAAA;aAEO2U,KAAAA,GAAa,IAAA;;AApBVsD,IAAAA,eAAAA,CAAAA,iBAAAA,EAAAA;;YAyBXS,GAAAA,EAAAA,OAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,MAAMC,OAAgB,EAAA;;AACpB,gBAAA,IAAMC,UAAAA,GAAaD,OAAAA,CAAQvX,GAAG,CAAC+S,UAAAA,EAAY,IAAA,CAAA;gBAC3C,IAAM0E,SAAAA,GAAYF,OAAAA,CAAQvX,GAAG,CAACqU,aAAAA,CAAAA;gBAC9B,IAAM6C,MAAAA,GAASK,OAAAA,CAAQvX,GAAG,CAACG,WAAAA,CAAAA;AAC3B,gBAAA,IAAIqX,UAAAA,EAAY;oBACd,IAAMzW,SAAAA,GAAYwW,OAAAA,CAAQvX,GAAG,CAAC0X,SAAAA,CAAAA;AAC9BD,oBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAWxX,GAAG,CAACuX,OAAAA,CAAAA,CAAAA;oBACvD,IAAI,CAAC/D,YAAY,CAACK,GAAG,CACnB2D,UAAAA,CAAWxE,MAAM,CAAC9O,SAAS,CAAC,WAAA;AAC1BuT,wBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAWxX,GAAG,CAACuX,OAAAA,CAAAA,CAAAA;AACzD,oBAAA,CAAA,CAAA,EACAxW,SAAAA,CAAUyP,QAAQ,CAACtM,SAAS,CAAC,WAAA;AAC3BuT,wBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAWxX,GAAG,CAACuX,OAAAA,CAAAA,CAAAA;AACzD,oBAAA,CAAA,CAAA,EACAE,SAAAA,CAAUlD,aAAa,CAACrQ,SAAS,CAAC,SAAC+Q,MAAAA,EAAAA;wBACjCuC,UAAAA,CAAWG,OAAO,CAAC1C,MAAAA,EAAQsC,OAAAA,CAAAA;AAC7B,oBAAA,CAAA,CAAA,CAAA;AAEJ,gBAAA;AAEA,gBAAA,OAAOE,UAAUnD,MAAM,CAAClJ,SAAS,EAAA,CAAGpB,IAAI,CAAC,WAAA;AACvC,oBAAA,IAAI,CAAC,KAAA,CAAK2K,MAAM,CAACiD,QAAQ,EAAE;AACzB,wBAAA;AACF,oBAAA;AACA,oBAAA,IAAMrG,IAAAA,GAAO2F,MAAAA,CAAO5W,IAAI,CAAC6J,MAAM,CAAC,eAAA,CAAA;oBAChC,IAAIoH,IAAAA,CAAKzL,GAAG,CAAC,OAAA,CAAA,EAAU;AACrB,wBAAA;AACF,oBAAA;oBACA,OAAO,IAAI+P,QAAQC,SAAAA,OAAAA,EAAAA;AACjB,wBAAA,IAAM+B,OAAAA,GAAU,SAAA,QAAA,GAAA;4BACd,IAAItG,IAAAA,CAAKzL,GAAG,CAAC,OAAA,CAAA,EAAU;AACrBgQ,gCAAAA,OAAAA,EAAAA;4BACF,CAAA,MAAO;gCACL,KAAA,CAAKvC,KAAK,GAAGa,UAAAA,CAAWyD,OAAAA,EAAS,IAAA,CAAA;AACnC,4BAAA;AACF,wBAAA,CAAA;wBACA,KAAA,CAAKtE,KAAK,GAAGa,UAAAA,CAAWyD,OAAAA,EAAS,IAAA,CAAA;AACnC,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAEAvC,GAAAA,EAAAA,WAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,UAAUiC,OAAgB,EAAA;gBACxB,IAAI,CAAC/D,YAAY,CAACrL,WAAW,EAAA;gBAC7BoP,OAAAA,CAAQvX,GAAG,CAACG,WAAAA,CAAAA,CAAaiI,OAAO,EAAA;gBAChCmP,OAAAA,CAAQvX,GAAG,CAAC+W,OAAAA,CAAAA,CAAS3O,OAAO,EAAA;gBAC5BmP,OAAAA,CAAQvX,GAAG,CAACqU,aAAAA,CAAAA,CAAeiB,SAAS,EAAA;gBACpCxB,YAAAA,CAAa,IAAI,CAACP,KAAK,CAAA;AACzB,YAAA;;;AAxEWsD,IAAAA,OAAAA,iBAAAA;AAyEZ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3EM,IAAA,iCAAMiB,iBAAN,WAAA;AAAMA,IAAAA,SAAAA,iCAAAA,CAwBC,MAA2C,EAAA;;AAxB5CA,QAAAA,iBAAAA,CAAAA,IAAAA,EAAAA,iCAAAA,CAAAA;;AACX,QAAA,gBAAA,CAAA,IAAA,EAAQtE,gBAAR,MAAA,CAAA;AACAsD,QAAAA,gBAAAA,CAAAA,IAAAA,EAAAA,aAAAA,MAAAA,CAAAA;AAoBA,QAAA,gBAAA,CAAA,IAAA,EAAQvD,SAAR,MAAA,CAAA;aAEmBoB,MAAAA,GAAAA,MAAAA;AAvBXnB,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,IAAIG,YAAAA,EAAAA;aAC3BmD,SAAAA,GAAwB;AACtB3W,YAAAA,WAAAA;AACAgT,YAAAA,wBAAAA;AACA,YAAA;gBACEyB,OAAAA,EAASmC,OAAAA;gBACTC,WAAAA,EAAa7D;AACf,aAAA;AAAG,YAAA;gBACDyB,OAAAA,EAASP,aAAAA;AACT4C,gBAAAA,UAAAA,EAAY,SAAZA,UAAAA,CAAaC,MAAAA,EAAAA;AACX,oBAAA,OAAO,MAAKvC,MAAM,CAACwC,eAAe,CAACD,OAAO5W,IAAI,CAAA;AAChD,gBAAA,CAAA;gBACA8W,IAAAA,EAAM;AAACjX,oBAAAA;AAAY;AACrB,aAAA;AAAG,YAAA;gBACDyU,OAAAA,EAASjW,cAAAA;AACTsY,gBAAAA,UAAAA,EAAY,SAAZA,UAAAA,GAAAA;oBACE,OAAO,KAAA,CAAKtC,MAAM,CAACtU,cAAc;AACnC,gBAAA;AACF;AACD,SAAA;aAEOkT,KAAAA,GAAa,IAAA;;AAtBVuE,IAAAA,aAAAA,CAAAA,iCAAAA,EAAAA;;YA2BXR,GAAAA,EAAAA,OAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,MAAMC,OAAgB,EAAA;;AACpB,gBAAA,IAAMC,UAAAA,GAAaD,OAAAA,CAAQvX,GAAG,CAAC+S,UAAAA,EAAY,IAAA,CAAA;gBAC3C,IAAM0E,SAAAA,GAAYF,OAAAA,CAAQvX,GAAG,CAACqU,aAAAA,CAAAA;gBAC9B,IAAM6C,MAAAA,GAASK,OAAAA,CAAQvX,GAAG,CAACG,WAAAA,CAAAA;AAC3B,gBAAA,IAAIqX,UAAAA,EAAY;oBACd,IAAMzW,SAAAA,GAAYwW,OAAAA,CAAQvX,GAAG,CAAC0X,SAAAA,CAAAA;AAC9BD,oBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAWxX,GAAG,CAACuX,OAAAA,CAAAA,CAAAA;oBACvD,IAAI,CAAC/D,YAAY,CAACK,GAAG,CACnB2D,UAAAA,CAAWxE,MAAM,CAAC9O,SAAS,CAAC,WAAA;AAC1BuT,wBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAWxX,GAAG,CAACuX,OAAAA,CAAAA,CAAAA;AACzD,oBAAA,CAAA,CAAA,EACAxW,SAAAA,CAAUyP,QAAQ,CAACtM,SAAS,CAAC,WAAA;AAC3BuT,wBAAAA,SAAAA,CAAUrC,kBAAkB,CAAC,SAAA,EAAWoC,UAAAA,CAAWxX,GAAG,CAACuX,OAAAA,CAAAA,CAAAA;AACzD,oBAAA,CAAA,CAAA,EACAE,SAAAA,CAAUlD,aAAa,CAACrQ,SAAS,CAAC,SAAC+Q,MAAAA,EAAAA;wBACjCuC,UAAAA,CAAWG,OAAO,CAAC1C,MAAAA,EAAQsC,OAAAA,CAAAA;AAC7B,oBAAA,CAAA,CAAA,CAAA;AAEJ,gBAAA;AACA,gBAAA,OAAOE,UAAUnD,MAAM,CAAClJ,SAAS,EAAA,CAAGpB,IAAI,CAAC,WAAA;AACvC,oBAAA,IAAI,CAAC,KAAA,CAAK2K,MAAM,CAACiD,QAAQ,EAAE;AACzB,wBAAA;AACF,oBAAA;AACA,oBAAA,IAAMrG,IAAAA,GAAO2F,MAAAA,CAAO5W,IAAI,CAAC6J,MAAM,CAAC,eAAA,CAAA;oBAChC,IAAIoH,IAAAA,CAAKzL,GAAG,CAAC,OAAA,CAAA,EAAU;AACrB,wBAAA;AACF,oBAAA;oBACA,OAAO,IAAI+P,QAAQC,SAAAA,OAAAA,EAAAA;AACjB,wBAAA,IAAM+B,OAAAA,GAAU,SAAA,QAAA,GAAA;4BACd,IAAItG,IAAAA,CAAKzL,GAAG,CAAC,OAAA,CAAA,EAAU;AACrBgQ,gCAAAA,OAAAA,EAAAA;4BACF,CAAA,MAAO;gCACL,KAAA,CAAKvC,KAAK,GAAGa,UAAAA,CAAWyD,OAAAA,EAAS,IAAA,CAAA;AACnC,4BAAA;AACF,wBAAA,CAAA;wBACA,KAAA,CAAKtE,KAAK,GAAGa,UAAAA,CAAWyD,OAAAA,EAAS,IAAA,CAAA;AACnC,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA;;;YAEAvC,GAAAA,EAAAA,WAAAA;AAAAA,YAAAA,KAAAA,EAAAA,SAAAA,UAAUiC,OAAgB,EAAA;gBACxB,IAAI,CAAC/D,YAAY,CAACrL,WAAW,EAAA;gBAC7BoP,OAAAA,CAAQvX,GAAG,CAACG,WAAAA,CAAAA,CAAaiI,OAAO,EAAA;gBAChCmP,OAAAA,CAAQvX,GAAG,CAAC+W,OAAAA,CAAAA,CAAS3O,OAAO,EAAA;gBAC5BmP,OAAAA,CAAQvX,GAAG,CAACqU,aAAAA,CAAAA,CAAeiB,SAAS,EAAA;gBACpCxB,YAAAA,CAAa,IAAI,CAACP,KAAK,CAAA;AACzB,YAAA;;;AAzEWuE,IAAAA,OAAAA,iCAAAA;AA0EZ,CAAA;;;;"}
|