@aquera/nile-elements 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +949 -640
- package/dist/nile-segmented-progress-bar/index.cjs.js +2 -0
- package/dist/nile-segmented-progress-bar/index.cjs.js.map +1 -0
- package/dist/nile-segmented-progress-bar/index.esm.js +1 -0
- package/dist/nile-segmented-progress-bar/nile-segmented-progress-bar.cjs.js +2 -0
- package/dist/nile-segmented-progress-bar/nile-segmented-progress-bar.cjs.js.map +1 -0
- package/dist/nile-segmented-progress-bar/nile-segmented-progress-bar.css.cjs.js +2 -0
- package/dist/nile-segmented-progress-bar/nile-segmented-progress-bar.css.cjs.js.map +1 -0
- package/dist/nile-segmented-progress-bar/nile-segmented-progress-bar.css.esm.js +243 -0
- package/dist/nile-segmented-progress-bar/nile-segmented-progress-bar.esm.js +69 -0
- package/dist/nile-wysiwyg-editor/engine/commands.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/engine/commands.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/engine/commands.esm.js +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/nile-segmented-progress-bar/index.d.ts +2 -0
- package/dist/src/nile-segmented-progress-bar/index.js +2 -0
- package/dist/src/nile-segmented-progress-bar/index.js.map +1 -0
- package/dist/src/nile-segmented-progress-bar/nile-segmented-progress-bar.css.d.ts +9 -0
- package/dist/src/nile-segmented-progress-bar/nile-segmented-progress-bar.css.js +252 -0
- package/dist/src/nile-segmented-progress-bar/nile-segmented-progress-bar.css.js.map +1 -0
- package/dist/src/nile-segmented-progress-bar/nile-segmented-progress-bar.d.ts +135 -0
- package/dist/src/nile-segmented-progress-bar/nile-segmented-progress-bar.js +373 -0
- package/dist/src/nile-segmented-progress-bar/nile-segmented-progress-bar.js.map +1 -0
- package/dist/src/nile-segmented-progress-bar/nile-segmented-progress-bar.test.d.ts +1 -0
- package/dist/src/nile-segmented-progress-bar/nile-segmented-progress-bar.test.js +961 -0
- package/dist/src/nile-segmented-progress-bar/nile-segmented-progress-bar.test.js.map +1 -0
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/src/index.ts +5 -0
- package/src/nile-segmented-progress-bar/index.ts +5 -0
- package/src/nile-segmented-progress-bar/nile-segmented-progress-bar.css.ts +254 -0
- package/src/nile-segmented-progress-bar/nile-segmented-progress-bar.test.ts +1298 -0
- package/src/nile-segmented-progress-bar/nile-segmented-progress-bar.ts +437 -0
- package/vscode-html-custom-data.json +113 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.cjs.js","sources":["../../../../../node_modules/prosemirror-commands/dist/index.js","../../../../../node_modules/prosemirror-history/dist/index.js","../../../../src/nile-wysiwyg-editor/engine/commands.ts","../../../../../node_modules/rope-sequence/dist/index.js"],"sourcesContent":["import { liftTarget, replaceStep, ReplaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection, SelectionRange } from 'prosemirror-state';\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it—if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, -1))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n for (let depth = $cursor.depth;; depth--) {\n let delStep = replaceStep(state.doc, $cursor.before(depth), $cursor.after(depth), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\")\n ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n if (depth == 1 || $cursor.node(depth - 1).childCount > 1)\n break;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = replaceStep(state.doc, beforePos, afterPos, Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, 1))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n let { $from, $to } = state.selection;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!$from.depth)\n return false;\n let types = [];\n let splitDepth, deflt, atEnd = false, atStart = false;\n for (let d = $from.depth;; d--) {\n let node = $from.node(d);\n if (node.isBlock) {\n atEnd = $from.end(d) == $from.pos + ($from.depth - d);\n atStart = $from.start(d) == $from.pos - ($from.depth - d);\n deflt = defaultBlockAt($from.node(d - 1).contentMatchAt($from.indexAfter(d - 1)));\n let splitType = splitNode && splitNode($to.parent, atEnd, $from);\n types.unshift(splitType || (atEnd && deflt ? { type: deflt } : null));\n splitDepth = d;\n break;\n }\n else {\n if (d == 1)\n return false;\n types.unshift(null);\n }\n }\n let tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection)\n tr.deleteSelection();\n let splitPos = tr.mapping.map($from.pos);\n let can = canSplit(tr.doc, splitPos, types.length, types);\n if (!can) {\n types[0] = deflt ? { type: deflt } : null;\n can = canSplit(tr.doc, splitPos, types.length, types);\n }\n if (!can)\n return false;\n tr.split(splitPos, types.length, types);\n if (!atEnd && atStart && $from.node(splitDepth).type != deflt) {\n let first = tr.mapping.map($from.before(splitDepth)), $first = tr.doc.resolve(first);\n if (deflt && $from.node(splitDepth - 1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before(splitDepth)), deflt);\n }\n if (dispatch)\n dispatch(tr.scrollIntoView());\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr.join($pos.pos).scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch, dir) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n let isolated = before.type.spec.isolating || after.type.spec.isolating;\n if (!isolated && joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = !isolated && $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap));\n wrap = Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n let $joinAt = tr.doc.resolve(end + 2 * conn.length);\n if ($joinAt.nodeAfter && $joinAt.nodeAfter.type == before.type &&\n canJoin(tr.doc, $joinAt.pos))\n tr.join($joinAt.pos);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = after.type.spec.isolating || (dir > 0 && isolated) ? null : Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type, enterAtoms) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (can || !enterAtoms && node.isAtom && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\nfunction removeInlineAtoms(ranges) {\n let result = [];\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n $from.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (node.isAtom && node.content.size && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos) {\n if (pos + 1 > $from.pos)\n result.push(new SelectionRange($from, $from.doc.resolve(pos + 1)));\n $from = $from.doc.resolve(pos + 1 + node.content.size);\n return false;\n }\n });\n if ($from.pos < $to.pos)\n result.push(new SelectionRange($from, $to));\n }\n return result;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null, options) {\n let removeWhenPresent = (options && options.removeWhenPresent) !== false;\n let enterAtoms = (options && options.enterInlineAtoms) !== false;\n let dropSpace = !(options && options.includeWhitespace);\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType, enterAtoms))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let add, tr = state.tr;\n if (!enterAtoms)\n ranges = removeInlineAtoms(ranges);\n if (removeWhenPresent) {\n add = !ranges.some(r => state.doc.rangeHasMark(r.$from.pos, r.$to.pos, markType));\n }\n else {\n add = !ranges.every(r => {\n let missing = false;\n tr.doc.nodesBetween(r.$from.pos, r.$to.pos, (node, pos, parent) => {\n if (missing)\n return false;\n missing = !markType.isInSet(node.marks) && !!parent && parent.type.allowsMarkType(markType) &&\n !(node.isText && /^\\s*$/.test(node.textBetween(Math.max(0, r.$from.pos - pos), Math.min(node.nodeSize, r.$to.pos - pos))));\n });\n return !missing;\n });\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (!add) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = dropSpace && start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = dropSpace && end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinTextblockBackward, joinTextblockForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockAs, splitBlockKeepMarks, toggleMark, wrapIn };\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(maps) {\n let result = [];\n for (let i = maps.length - 1; i >= 0 && result.length == 0; i--)\n maps[i].forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return null;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n return pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist });\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command || !view.editable)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\nfunction buildCommand(redo, scroll) {\n return (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || (redo ? hist.undone : hist.done).eventCount == 0)\n return false;\n if (dispatch) {\n let tr = histTransaction(hist, state, redo);\n if (tr)\n dispatch(scroll ? tr.scrollIntoView() : tr);\n }\n return true;\n };\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = buildCommand(false, true);\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = buildCommand(true, true);\n/**\nA command function that undoes the last change. Don't scroll the\nselection into view.\n*/\nconst undoNoScroll = buildCommand(false, false);\n/**\nA command function that redoes the last undone change. Don't\nscroll the selection into view.\n*/\nconst redoNoScroll = buildCommand(true, false);\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n/**\nReturns true if the given transaction was generated by the history\nplugin.\n*/\nfunction isHistoryTransaction(tr) {\n return tr.getMeta(historyKey) != null;\n}\n\nexport { closeHistory, history, isHistoryTransaction, redo, redoDepth, redoNoScroll, undo, undoDepth, undoNoScroll };\n","import { toggleMark, setBlockType, wrapIn, lift, chainCommands } from 'prosemirror-commands';\nimport { wrapInList, liftListItem, sinkListItem } from 'prosemirror-schema-list';\nimport { undo, redo } from 'prosemirror-history';\nimport {\n addRowBefore,\n addRowAfter,\n addColumnBefore,\n addColumnAfter,\n deleteRow,\n deleteColumn,\n deleteTable,\n mergeCells,\n splitCell,\n toggleHeaderRow,\n} from 'prosemirror-tables';\nimport { Command, EditorState, TextSelection, NodeSelection } from 'prosemirror-state';\nimport { MarkType, NodeType, ResolvedPos, Attrs, Schema, Node as PMNode, Mark } from 'prosemirror-model';\nimport type { Alignment } from './schema';\nimport { MAX_INDENT, MULTILEVEL_STYLE } from './schema';\n\nexport type CommandName =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'subscript'\n | 'superscript'\n | 'code'\n | 'paragraph'\n | 'heading'\n | 'blockquote'\n | 'align'\n | 'lineHeight'\n | 'bulletList'\n | 'orderedList'\n | 'taskList'\n | 'indent'\n | 'outdent'\n | 'setListStyle'\n | 'setListStart'\n | 'toggleImageCaption'\n | 'setImageAlign'\n | 'setImageWidth'\n | 'deleteImage'\n | 'updateImage'\n | 'setEmbedAlign'\n | 'deleteEmbed'\n | 'link'\n | 'unlink'\n | 'insertBookmark'\n | 'textColor'\n | 'bgColor'\n | 'fontFamily'\n | 'fontSize'\n | 'horizontalRule'\n | 'clearFormatting'\n | 'undo'\n | 'redo'\n | 'codeBlock'\n | 'setCodeBlockLanguage'\n | 'insertEmbed'\n | 'insertImage'\n | 'insertTable'\n | 'addRowBefore'\n | 'addRowAfter'\n | 'addColumnBefore'\n | 'addColumnAfter'\n | 'deleteRow'\n | 'deleteColumn'\n | 'mergeCells'\n | 'splitCell'\n | 'toggleHeaderRow'\n | 'toggleLayoutTable'\n | 'deleteTable'\n | 'changeCase'\n | 'insertMergeField'\n | 'insertMath';\n\nexport interface CommandAttrs {\n level?: number;\n align?: Alignment | null;\n href?: string;\n title?: string;\n target?: string | null;\n color?: string | null;\n family?: string | null;\n size?: string | null;\n /** insertImage / updateImage */\n src?: string;\n alt?: string | null;\n /** insertImage / updateImage: figcaption text; empty/null = plain inline image */\n caption?: string | null;\n /** insertTable */\n rows?: number;\n cols?: number;\n withHeaderRow?: boolean;\n /** codeBlock */\n language?: string | null;\n /** insertEmbed */\n provider?: string | null;\n /** setListStyle: a CSS list-style-type, null = default */\n style?: string | null;\n /** setListStart */\n start?: number;\n /** setImageWidth: px, null = natural size */\n width?: number | null;\n /** lineHeight: unitless multiplier ('1.5'), null = default */\n lineHeight?: string | null;\n /** insertBookmark / insertMergeField: the anchor or field id */\n id?: string;\n /** changeCase: which transform to apply */\n textCase?: 'upper' | 'lower' | 'title' | 'sentence';\n /** insertMergeField: human-readable label */\n label?: string | null;\n /** insertMath: LaTeX source */\n latex?: string;\n /** insertMath: inline vs block presentation */\n mathDisplay?: 'inline' | 'block';\n}\n\n/** Finds the extent of a mark around a resolved position (cursor in a link). */\nexport function getMarkRange(\n $pos: ResolvedPos,\n markType: MarkType\n): { from: number; to: number } | null {\n const { parent, parentOffset } = $pos;\n const start = parent.childAfter(parentOffset);\n if (!start.node || !markType.isInSet(start.node.marks)) return null;\n\n let startIndex = start.index;\n let from = $pos.start() + start.offset;\n while (startIndex > 0 && markType.isInSet(parent.child(startIndex - 1).marks)) {\n startIndex -= 1;\n from -= parent.child(startIndex).nodeSize;\n }\n let endIndex = start.index + 1;\n let to = from + start.node.nodeSize;\n while (endIndex < parent.childCount && markType.isInSet(parent.child(endIndex).marks)) {\n to += parent.child(endIndex).nodeSize;\n endIndex += 1;\n }\n return { from, to };\n}\n\n/**\n * Sets (attrs given) or removes (attrs null) an attribute-carrying mark such\n * as text color or font size. On an empty selection the mark is stored so it\n * applies to the next typed text.\n */\nfunction setAttrMark(markType: MarkType, attrs: Attrs | null): Command {\n return (state, dispatch) => {\n const { empty, ranges, $from } = state.selection;\n if (empty && !(state.selection instanceof TextSelection && state.selection.$cursor)) {\n return false;\n }\n if (!empty && !state.selection.content().content.firstChild) return false;\n if (dispatch) {\n const tr = state.tr;\n if (empty) {\n tr.removeStoredMark(markType);\n if (attrs) tr.addStoredMark(markType.create(attrs));\n } else {\n for (const range of ranges) {\n tr.removeMark(range.$from.pos, range.$to.pos, markType);\n if (attrs) tr.addMark(range.$from.pos, range.$to.pos, markType.create(attrs));\n }\n tr.scrollIntoView();\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Applies a link mark over the selection, or over the link under the cursor. */\nfunction setLink(markType: MarkType, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n if (!attrs.href) return false;\n const { empty, $from, from, to } = state.selection;\n let range = { from, to };\n if (empty) {\n const existing = getMarkRange($from, markType);\n if (!existing) return false;\n range = existing;\n }\n if (dispatch) {\n const tr = state.tr;\n tr.removeMark(range.from, range.to, markType);\n tr.addMark(\n range.from,\n range.to,\n markType.create({\n href: attrs.href,\n title: attrs.title ?? null,\n target: attrs.target ?? null,\n })\n );\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Removes the link mark from the selection or the link under the cursor. */\nfunction unsetLink(markType: MarkType): Command {\n return (state, dispatch) => {\n const { empty, $from, from, to } = state.selection;\n let range = { from, to };\n if (empty) {\n const existing = getMarkRange($from, markType);\n if (!existing) return false;\n range = existing;\n } else if (!state.doc.rangeHasMark(from, to, markType)) {\n return false;\n }\n if (dispatch) {\n dispatch(state.tr.removeMark(range.from, range.to, markType));\n }\n return true;\n };\n}\n\nfunction findParentList(\n state: EditorState\n): { node: import('prosemirror-model').Node; pos: number; depth: number } | null {\n const { $from } = state.selection;\n const { bullet_list: bullet, ordered_list: ordered, task_list: task } = state.schema.nodes;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n const node = $from.node(depth);\n if (node.type === bullet || node.type === ordered || node.type === task) {\n return { node, pos: $from.before(depth), depth };\n }\n }\n return null;\n}\n\n/** The item node type a given list type expects as children. */\nfunction itemTypeFor(listType: NodeType): NodeType {\n const { schema } = listType;\n return listType === schema.nodes.task_list\n ? schema.nodes.task_item\n : schema.nodes.list_item;\n}\n\n/**\n * Toggles a list: wraps when outside, lifts when already in the same list\n * type, converts in place when in another list type. Conversion also remaps\n * the item nodes (list_item <-> task_item) so the content stays valid.\n */\nfunction toggleList(listType: NodeType, itemType: NodeType): Command {\n return (state, dispatch, view) => {\n const parentList = findParentList(state);\n if (parentList) {\n if (parentList.node.type === listType) {\n return liftListItem(itemTypeFor(parentList.node.type))(state, dispatch, view);\n }\n if (dispatch) {\n // Build the fully converted list and swap it in one step — converting\n // the list node or its items separately fails content validation.\n const fromItem = itemTypeFor(parentList.node.type);\n const items: import('prosemirror-model').Node[] = [];\n parentList.node.forEach(child => {\n items.push(\n child.type === fromItem && fromItem !== itemType\n ? itemType.create(null, child.content, child.marks)\n : child\n );\n });\n const converted = listType.create(parentList.node.attrs, items);\n const tr = state.tr;\n const { from, to } = state.selection;\n tr.replaceWith(\n parentList.pos,\n parentList.pos + parentList.node.nodeSize,\n converted\n );\n // Item node sizes are identical, so the old positions stay valid.\n tr.setSelection(TextSelection.create(tr.doc, from, to));\n dispatch(tr);\n }\n return true;\n }\n return wrapInList(listType)(state, dispatch, view);\n };\n}\n\nfunction isInNode(state: EditorState, type: NodeType): boolean {\n const { $from } = state.selection;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n if ($from.node(depth).type === type) return true;\n }\n return false;\n}\n\n/** Wraps in blockquote, or lifts out when already inside one. */\nfunction toggleBlockquote(type: NodeType): Command {\n return (state, dispatch, view) => {\n if (isInNode(state, type)) return lift(state, dispatch, view);\n return wrapIn(type)(state, dispatch, view);\n };\n}\n\n/** Sets the `align` attribute on every textblock in the selection. */\nfunction setAlignment(align: Alignment | null): Command {\n return (state, dispatch) => {\n const { from, to } = state.selection;\n const targets: { pos: number; node: import('prosemirror-model').Node }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && node.type.spec.attrs && 'align' in node.type.spec.attrs) {\n targets.push({ pos, node });\n }\n return true;\n });\n if (targets.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const { pos, node } of targets) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, align });\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Sets the `lineHeight` attribute on every textblock in the selection. */\nfunction setLineHeight(lineHeight: string | null): Command {\n return (state, dispatch) => {\n const { from, to } = state.selection;\n const targets: { pos: number; node: PMNode }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && node.type.spec.attrs && 'lineHeight' in node.type.spec.attrs) {\n targets.push({ pos, node });\n }\n return true;\n });\n if (targets.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const { pos, node } of targets) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, lineHeight });\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Inserts a named in-text anchor (bookmark) at the selection. */\nfunction insertBookmark(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const id = attrs.id?.trim();\n if (!id) return false;\n if (dispatch) {\n const bookmark = schema.nodes.bookmark.create({ id });\n dispatch(state.tr.replaceSelectionWith(bookmark, false).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Toggles the surrounding table between content and layout (presentation) mode. */\nfunction toggleLayoutTable(): Command {\n return (state, dispatch) => {\n const { $from } = state.selection;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n const node = $from.node(depth);\n if (node.type === state.schema.nodes.table) {\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup($from.before(depth), undefined, {\n ...node.attrs,\n layout: !node.attrs.layout,\n })\n );\n }\n return true;\n }\n }\n return false;\n };\n}\n\nfunction insertHorizontalRule(type: NodeType): Command {\n return (state, dispatch) => {\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(type.create()).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Toggles between code block and paragraph. */\nfunction toggleCodeBlock(schema: Schema, language: string | null): Command {\n return (state, dispatch, view) => {\n const { $from } = state.selection;\n if ($from.parent.type === schema.nodes.code_block) {\n return setBlockType(schema.nodes.paragraph)(state, dispatch, view);\n }\n return setBlockType(schema.nodes.code_block, { language })(state, dispatch, view);\n };\n}\n\n/** Updates the language attr of the code block around the selection. */\nfunction setCodeBlockLanguage(schema: Schema, language: string | null): Command {\n return (state, dispatch) => {\n const { $from } = state.selection;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n if ($from.node(depth).type === schema.nodes.code_block) {\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup($from.before(depth), undefined, { language })\n );\n }\n return true;\n }\n }\n return false;\n };\n}\n\n/** Inserts a provider embed. The src must already be an embed URL. */\nfunction insertEmbed(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n if (!attrs.src) return false;\n const embed = schema.nodes.embed.create({\n src: attrs.src,\n provider: attrs.provider ?? null,\n title: attrs.title ?? null,\n });\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(embed).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Inserts an image at the selection. With a non-empty caption it inserts a\n * captioned `figure` (like the alt/caption flow in toggleImageCaption);\n * otherwise a plain inline `image`.\n */\nfunction insertImage(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n if (!attrs.src) return false;\n const src = attrs.src;\n const alt = attrs.alt ?? null;\n const title = attrs.title ?? null;\n const caption = attrs.caption != null ? String(attrs.caption).trim() : '';\n const node = caption\n ? schema.nodes.figure.create({ src, alt, title, width: null, align: null }, schema.text(caption))\n : schema.nodes.image.create({ src, alt, title });\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Updates the selected image/figure's src, alt and caption in place. A\n * non-empty caption promotes an inline image to a captioned figure; an empty\n * caption demotes a figure back to an inline image. Width/alignment are kept.\n */\nfunction updateImage(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info || !attrs.src) return false;\n const src = attrs.src;\n const alt = attrs.alt ?? null;\n const title = attrs.title ?? null;\n const caption = attrs.caption != null ? String(attrs.caption).trim() : '';\n const width = info.node.attrs.width ?? null;\n const align = info.isFigure ? info.node.attrs.align ?? null : null;\n if (dispatch) {\n const tr = state.tr;\n if (caption) {\n const figure = schema.nodes.figure.create(\n { src, alt, title, width, align },\n schema.text(caption)\n );\n if (info.isFigure) {\n tr.replaceWith(info.pos, info.pos + info.node.nodeSize, figure);\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n } else {\n const $pos = state.doc.resolve(info.pos);\n const parent = $pos.parent;\n const replaceWhole = parent.childCount === 1 && parent.type.name === 'paragraph';\n const from = replaceWhole ? $pos.before() : info.pos;\n const to = replaceWhole ? $pos.after() : info.pos + info.node.nodeSize;\n tr.replaceWith(from, to, figure);\n tr.setSelection(NodeSelection.create(tr.doc, from));\n }\n } else if (info.isFigure) {\n const image = schema.nodes.image.create({ src, alt, title, width });\n tr.replaceWith(\n info.pos,\n info.pos + info.node.nodeSize,\n schema.nodes.paragraph.create(null, image)\n );\n tr.setSelection(NodeSelection.create(tr.doc, info.pos + 1));\n } else {\n tr.setNodeMarkup(info.pos, undefined, { src, alt, title, width });\n if (state.selection instanceof NodeSelection) {\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Inserts an empty rows × cols table, optionally with a header row. */\nfunction insertTable(schema: Schema, attrs: CommandAttrs): Command {\n const rows = Math.max(1, attrs.rows ?? 3);\n const cols = Math.max(1, attrs.cols ?? 3);\n const withHeaderRow = attrs.withHeaderRow ?? true;\n return (state, dispatch) => {\n const { table, table_row: tableRow, table_cell: cell, table_header: header } =\n schema.nodes;\n const rowNodes = [];\n for (let r = 0; r < rows; r += 1) {\n const cellType = r === 0 && withHeaderRow ? header : cell;\n const cells = [];\n for (let c = 0; c < cols; c += 1) {\n cells.push(cellType.createAndFill()!);\n }\n rowNodes.push(tableRow.create(null, cells));\n }\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(table.create(null, rowNodes)).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Adjusts the `indent` attr on textblocks in the selection by ±1 step.\n * Returns false when nothing can change (e.g. outdent at level 0), letting\n * chained commands (blockquote lift) take over.\n */\nfunction changeBlockIndent(delta: number): Command {\n return (state, dispatch) => {\n const { from, to } = state.selection;\n const targets: { pos: number; node: PMNode; next: number }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && node.type.spec.attrs && 'indent' in node.type.spec.attrs) {\n const current = (node.attrs.indent as number) ?? 0;\n const next = Math.max(0, Math.min(MAX_INDENT, current + delta));\n if (next !== current) targets.push({ pos, node, next });\n }\n return true;\n });\n if (targets.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const { pos, node, next } of targets) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, indent: next });\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Sets the marker style (list-style-type) on the surrounding list. */\nfunction setListStyle(style: string | null): Command {\n return (state, dispatch) => {\n const parentList = findParentList(state);\n if (!parentList) return false;\n let target = parentList;\n // Multilevel (legal) numbering covers the whole tree from the outermost\n // ordered list: apply it there, and clear it from wherever it sits.\n const { $from } = state.selection;\n const ordered = state.schema.nodes.ordered_list;\n for (let depth = 1; depth <= $from.depth; depth += 1) {\n const node = $from.node(depth);\n if (\n node.type === ordered &&\n (style === MULTILEVEL_STYLE || node.attrs.style === MULTILEVEL_STYLE)\n ) {\n target = { node, pos: $from.before(depth), depth };\n break;\n }\n }\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup(target.pos, undefined, {\n ...target.node.attrs,\n style,\n })\n );\n }\n return true;\n };\n}\n\n/** Sets the start number of the surrounding ordered list. */\nfunction setListStart(start: number): Command {\n return (state, dispatch) => {\n const parentList = findParentList(state);\n if (!parentList || parentList.node.type !== state.schema.nodes.ordered_list) {\n return false;\n }\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup(parentList.pos, undefined, {\n ...parentList.node.attrs,\n order: Math.max(1, Math.round(start)),\n })\n );\n }\n return true;\n };\n}\n\n/**\n * The image (inline `image` or block `figure`) the selection points at:\n * a NodeSelection on either type, or a cursor inside a figure's caption.\n */\nexport function selectedImageInfo(\n state: EditorState\n): { node: PMNode; pos: number; isFigure: boolean } | null {\n const { image, figure } = state.schema.nodes;\n const sel = state.selection;\n if (sel instanceof NodeSelection) {\n if (sel.node.type === image) return { node: sel.node, pos: sel.from, isFigure: false };\n if (sel.node.type === figure) return { node: sel.node, pos: sel.from, isFigure: true };\n }\n const { $from } = sel;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n if ($from.node(depth).type === figure) {\n return { node: $from.node(depth), pos: $from.before(depth), isFigure: true };\n }\n }\n return null;\n}\n\n/**\n * Toggles the caption: inline image → figure (caption prefilled from alt,\n * cursor placed inside), figure → plain inline image (caption dropped).\n */\nfunction toggleImageCaption(schema: Schema): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n if (dispatch) {\n const tr = state.tr;\n if (info.isFigure) {\n const { src, alt, title, width } = info.node.attrs;\n const image = schema.nodes.image.create({ src, alt, title, width });\n tr.replaceWith(\n info.pos,\n info.pos + info.node.nodeSize,\n schema.nodes.paragraph.create(null, image)\n );\n tr.setSelection(NodeSelection.create(tr.doc, info.pos + 1));\n } else {\n const { src, alt, title, width } = info.node.attrs;\n const caption = alt ? schema.text(alt) : null;\n const figure = schema.nodes.figure.create(\n { src, alt, title, width, align: null },\n caption\n );\n // An inline image sits inside a textblock; if it is the block's only\n // child, replace the whole block, otherwise just the image.\n const $pos = state.doc.resolve(info.pos);\n const parent = $pos.parent;\n const replaceWhole = parent.childCount === 1 && parent.type.name === 'paragraph';\n const from = replaceWhole ? $pos.before() : info.pos;\n const to = replaceWhole ? $pos.after() : info.pos + info.node.nodeSize;\n tr.replaceWith(from, to, figure);\n // Cursor into the caption (figure start + 1).\n tr.setSelection(TextSelection.create(tr.doc, from + 1 + figure.content.size));\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Aligns the selected image. Inline images are promoted to a figure first,\n * since alignment is a block concept.\n */\nfunction setImageAlign(schema: Schema, align: string | null): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n const clamped =\n align === 'left' || align === 'center' || align === 'right' ? align : null;\n if (dispatch) {\n const tr = state.tr;\n if (info.isFigure) {\n tr.setNodeMarkup(info.pos, undefined, { ...info.node.attrs, align: clamped });\n if (state.selection instanceof NodeSelection) {\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n }\n } else {\n const { src, alt, title, width } = info.node.attrs;\n const figure = schema.nodes.figure.create({ src, alt, title, width, align: clamped });\n const $pos = state.doc.resolve(info.pos);\n const parent = $pos.parent;\n const replaceWhole = parent.childCount === 1 && parent.type.name === 'paragraph';\n const from = replaceWhole ? $pos.before() : info.pos;\n const to = replaceWhole ? $pos.after() : info.pos + info.node.nodeSize;\n tr.replaceWith(from, to, figure);\n tr.setSelection(NodeSelection.create(tr.doc, from));\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Sets the display width (px) of the selected image or figure. */\nfunction setImageWidth(width: number | null): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n if (dispatch) {\n const tr = state.tr.setNodeMarkup(info.pos, undefined, {\n ...info.node.attrs,\n width: width && width > 0 ? Math.round(width) : null,\n });\n // setNodeMarkup degrades a NodeSelection — restore it so follow-up\n // image commands still see the node as selected.\n if (state.selection instanceof NodeSelection) {\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Deletes the selected image or the figure around the cursor. */\nfunction deleteImage(): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n if (dispatch) {\n dispatch(\n state.tr.delete(info.pos, info.pos + info.node.nodeSize).scrollIntoView()\n );\n }\n return true;\n };\n}\n\n/** The selected embed node (a NodeSelection on an `embed`), or null. */\nexport function selectedEmbedInfo(\n state: EditorState\n): { node: PMNode; pos: number } | null {\n const sel = state.selection;\n if (sel instanceof NodeSelection && sel.node.type === state.schema.nodes.embed) {\n return { node: sel.node, pos: sel.from };\n }\n return null;\n}\n\n/** Aligns the selected video embed (left/center/right, or null to reset). */\nfunction setEmbedAlign(align: string | null): Command {\n return (state, dispatch) => {\n const info = selectedEmbedInfo(state);\n if (!info) return false;\n const clamped =\n align === 'left' || align === 'center' || align === 'right' ? align : null;\n if (dispatch) {\n const tr = state.tr.setNodeMarkup(info.pos, undefined, {\n ...info.node.attrs,\n align: clamped,\n });\n // setNodeMarkup degrades a NodeSelection — restore it so follow-up\n // align commands still see the embed as selected.\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Deletes the selected video embed. */\nfunction deleteEmbed(): Command {\n return (state, dispatch) => {\n const info = selectedEmbedInfo(state);\n if (!info) return false;\n if (dispatch) {\n dispatch(state.tr.delete(info.pos, info.pos + info.node.nodeSize).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Strips all marks and stored marks from the selection. */\nfunction clearFormatting(): Command {\n return (state, dispatch) => {\n const { from, to, empty } = state.selection;\n if (dispatch) {\n const tr = state.tr;\n if (!empty) tr.removeMark(from, to, null);\n tr.setStoredMarks([]);\n // Also reset alignment and line height on touched textblocks.\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (\n node.isTextblock &&\n node.type.spec.attrs &&\n 'align' in node.type.spec.attrs &&\n (node.attrs.align || node.attrs.lineHeight)\n ) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, align: null, lineHeight: null });\n }\n return true;\n });\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Transforms a string per the case mode. Title/sentence are word-aware. */\nfunction transformCase(text: string, mode: 'upper' | 'lower' | 'title' | 'sentence'): string {\n switch (mode) {\n case 'upper':\n return text.toUpperCase();\n case 'lower':\n return text.toLowerCase();\n case 'title':\n // Capitalize the first letter of each word run.\n return text.toLowerCase().replace(/(^|\\s)(\\p{L})/gu, (_m, sep, ch) => sep + ch.toUpperCase());\n case 'sentence':\n // Capitalize the first letter after start or sentence-ending punctuation.\n return text\n .toLowerCase()\n .replace(/(^|[.!?]\\s+)(\\p{L})/gu, (_m, sep, ch) => sep + ch.toUpperCase());\n }\n}\n\n/**\n * Changes the case of the selected text, preserving marks. No-op on an empty\n * selection. Replacements run back-to-front so earlier positions stay valid.\n */\nfunction changeCase(mode: 'upper' | 'lower' | 'title' | 'sentence'): Command {\n return (state, dispatch) => {\n const { from, to, empty } = state.selection;\n if (empty) return false;\n const edits: { from: number; to: number; text: string; marks: readonly Mark[] }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText || !node.text) return;\n const start = Math.max(from, pos);\n const end = Math.min(to, pos + node.nodeSize);\n if (start >= end) return;\n const slice = node.text.slice(start - pos, end - pos);\n const next = transformCase(slice, mode);\n if (next !== slice) edits.push({ from: start, to: end, text: next, marks: node.marks });\n });\n if (edits.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const edit of edits.reverse()) {\n tr.replaceWith(edit.from, edit.to, state.schema.text(edit.text, edit.marks));\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Inserts a merge-field atom at the selection. */\nfunction insertMergeField(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const type = schema.nodes.merge_field;\n if (!type || !attrs.id) return false;\n if (dispatch) {\n const node = type.create({ id: attrs.id, label: attrs.label ?? null });\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Inserts a math atom at the selection. */\nfunction insertMath(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const type = schema.nodes.math;\n const latex = (attrs.latex ?? '').trim();\n if (!type || !latex) return false;\n if (dispatch) {\n const node = type.create({ latex, display: attrs.mathDisplay ?? 'inline' });\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Resolves a named command against a schema. Returns null for unknown names\n * so callers can treat the registry as data.\n */\nexport function getCommand(\n state: EditorState,\n name: CommandName,\n attrs: CommandAttrs = {}\n): Command | null {\n const { schema } = state;\n const { nodes, marks } = schema;\n switch (name) {\n case 'bold':\n return toggleMark(marks.bold);\n case 'italic':\n return toggleMark(marks.italic);\n case 'underline':\n return toggleMark(marks.underline);\n case 'strike':\n return toggleMark(marks.strike);\n case 'subscript':\n return toggleMark(marks.subscript);\n case 'superscript':\n return toggleMark(marks.superscript);\n case 'code':\n return toggleMark(marks.code);\n case 'paragraph':\n return setBlockType(nodes.paragraph);\n case 'heading':\n return setBlockType(nodes.heading, { level: attrs.level ?? 1 });\n case 'blockquote':\n return toggleBlockquote(nodes.blockquote);\n case 'align':\n return setAlignment(attrs.align ?? null);\n case 'lineHeight':\n return setLineHeight(attrs.lineHeight ?? null);\n case 'bulletList':\n return toggleList(nodes.bullet_list, nodes.list_item);\n case 'orderedList':\n return toggleList(nodes.ordered_list, nodes.list_item);\n case 'taskList':\n return toggleList(nodes.task_list, nodes.task_item);\n case 'indent':\n // List item sink first, then paragraph/heading margin indent.\n return chainCommands(\n sinkListItem(nodes.task_item),\n sinkListItem(nodes.list_item),\n changeBlockIndent(1)\n );\n case 'outdent':\n // List lift, then margin outdent, then blockquote lift.\n return chainCommands(\n liftListItem(nodes.task_item),\n liftListItem(nodes.list_item),\n changeBlockIndent(-1),\n lift\n );\n case 'setListStyle':\n return setListStyle(attrs.style ?? null);\n case 'setListStart':\n return setListStart(attrs.start ?? 1);\n case 'toggleImageCaption':\n return toggleImageCaption(schema);\n case 'setImageAlign':\n return setImageAlign(schema, (attrs.align as string | null) ?? null);\n case 'setImageWidth':\n return setImageWidth(attrs.width ?? null);\n case 'deleteImage':\n return deleteImage();\n case 'setEmbedAlign':\n return setEmbedAlign((attrs.align as string | null) ?? null);\n case 'deleteEmbed':\n return deleteEmbed();\n case 'link':\n return setLink(marks.link, attrs);\n case 'unlink':\n return unsetLink(marks.link);\n case 'insertBookmark':\n return insertBookmark(schema, attrs);\n case 'textColor':\n return setAttrMark(marks.text_color, attrs.color ? { color: attrs.color } : null);\n case 'bgColor':\n return setAttrMark(marks.bg_color, attrs.color ? { color: attrs.color } : null);\n case 'fontFamily':\n return setAttrMark(marks.font_family, attrs.family ? { family: attrs.family } : null);\n case 'fontSize':\n return setAttrMark(marks.font_size, attrs.size ? { size: attrs.size } : null);\n case 'horizontalRule':\n return insertHorizontalRule(nodes.horizontal_rule);\n case 'clearFormatting':\n return clearFormatting();\n case 'undo':\n return undo;\n case 'redo':\n return redo;\n case 'codeBlock':\n return toggleCodeBlock(schema, attrs.language ?? null);\n case 'setCodeBlockLanguage':\n return setCodeBlockLanguage(schema, attrs.language ?? null);\n case 'insertEmbed':\n return insertEmbed(schema, attrs);\n case 'insertImage':\n return insertImage(schema, attrs);\n case 'updateImage':\n return updateImage(schema, attrs);\n case 'insertTable':\n return insertTable(schema, attrs);\n case 'addRowBefore':\n return addRowBefore;\n case 'addRowAfter':\n return addRowAfter;\n case 'addColumnBefore':\n return addColumnBefore;\n case 'addColumnAfter':\n return addColumnAfter;\n case 'deleteRow':\n return deleteRow;\n case 'deleteColumn':\n return deleteColumn;\n case 'mergeCells':\n return mergeCells;\n case 'splitCell':\n return splitCell;\n case 'toggleHeaderRow':\n return toggleHeaderRow;\n case 'toggleLayoutTable':\n return toggleLayoutTable();\n case 'deleteTable':\n return deleteTable;\n case 'changeCase':\n return changeCase(attrs.textCase ?? 'upper');\n case 'insertMergeField':\n return insertMergeField(schema, attrs);\n case 'insertMath':\n return insertMath(schema, attrs);\n default:\n return null;\n }\n}\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class<T> A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence<T>\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n"],"names":["textblockAt","node","side","only","scan","firstChild","lastChild","isTextblock","childCount","findCutBefore","$pos","parent","type","spec","isolating","i","depth","index","doc","resolve","before","findCutAfter","after","defaultBlockAt","match","edgeCount","_t$edge","edge","hasRequiredAttrs","deleteBarrier","state","$cut","dispatch","dir","conn","nodeBefore","nodeAfter","isolated","compatibleContent","content","size","canReplace","tr","delete","pos","nodeSize","scrollIntoView","canJoin","join","joinMaybeClear","canDelAfter","contentMatchAt","findWrapping","matchType","validEnd","end","wrap","Fragment","empty","length","from","create","copy","step","ReplaceAroundStep","Slice","$joinAt","selAfter","Selection","findFrom","range","$from","blockRange","$to","target","liftTarget","lift","at","push","afterText","afterDepth","selectTextblockSide","sel","selection","isInline","setSelection","TextSelection","start","setBlockType","nodeType","attrs","arguments","undefined","applicable","ranges","_n$selection$ranges$_","to","nodesBetween","hasMarkup","canReplaceWith","_n$selection$ranges$_2","toggleMark","markType","options","removeWhenPresent","enterAtoms","enterInlineAtoms","dropSpace","includeWhitespace","_r$selection","$cursor","_e$_i","can","inlineContent","allowsMarkType","isAtom","_ret","_loop","v","markApplies","isInSet","storedMarks","marks","removeStoredMark","addStoredMark","add","result","_loop2","_t$_r","SelectionRange","removeInlineAtoms","some","r","rangeHasMark","every","missing","isText","test","textBetween","Math","max","min","_c$_n","spaceStart","exec","text","spaceEnd","addMark","removeMark","chainCommands","commands","view","rangesFor","maps","forEach","_from","_to","mapRanges","mapping","map","mustPreserveItems","plugins","cachedPreserveItemsPlugins","cachedPreserveItems","historyPreserveItems","history","config","newGroupDelay","Plugin","key","historyKey","init","HistoryState","Branch","apply","hist","rebased","historyTr","getMeta","historyState","closeHistoryKey","done","undone","appended","steps","redo","addTransform","prevTime","prevComposition","prevRanges","addMaps","composition","newGroup","time","transform","docChanged","adjacent","isAdjacentTo","getBookmark","applyTransaction","props","handleDOMEvents","beforeinput","e","inputType","command","undo","editable","preventDefault","buildCommand","scroll","getState","eventCount","preserveItems","histOptions","get","pop","popEvent","added","newHist","remaining","setMeta","histTransaction","getMarkRange","parentOffset","childAfter","startIndex","offset","child","endIndex","setAttrMark","_n$selection","_iterator","_createForOfIteratorHelper","s","_step","n","findParentList","schema","nodes","bullet","bullet_list","ordered","ordered_list","task","task_list","itemTypeFor","listType","task_item","list_item","toggleList","itemType","parentList","liftListItem","fromItem","items","converted","replaceWith","wrapInList","toggleBlockquote","isInNode","_r$selection2","wrapping","wrapIn","changeBlockIndent","delta","_e$selection2","targets","_e$attrs$indent","current","indent","next","MAX_INDENT","_iterator2","_step2","setNodeMarkup","selectedImageInfo","_t$schema$nodes2","image","figure","NodeSelection","isFigure","selectedEmbedInfo","embed","getCommand","name","_n$level","_n$align","_n$lineHeight","_n$style","_n$start","_n$align2","_n$width","_n$align3","_n$language","_n$language2","_n$textCase","bold","italic","underline","strike","subscript","superscript","code","paragraph","heading","level","blockquote","align","_t$selection6","_iterator3","_step3","lineHeight","_t$selection7","t","_iterator4","_step4","_objectSpread","sinkListItem","style","MULTILEVEL_STYLE","order","round","info","_r$node$attrs","src","alt","title","width","_r$node$attrs2","caption","replaceWhole","toggleImageCaption","clamped","_i$node$attrs","setImageAlign","setEmbedAlign","href","_n$selection3","existing","_e$title","_e$target","setLink","link","_t$selection8","id","trim","bookmark","replaceSelectionWith","insertBookmark","text_color","color","bg_color","font_family","family","font_size","horizontal_rule","_t$selection9","setStoredMarks","language","code_block","toggleCodeBlock","setCodeBlockLanguage","provider","_e$provider","insertEmbed","String","insertImage","_e$alt2","_i$node$attrs$align","updateImage","rows","_e$rows","cols","_e$cols","withHeaderRow","_e$withHeaderRow","_t$nodes","table","tableRow","table_row","cell","table_cell","header","table_header","rowNodes","cellType","cells","c","createAndFill","insertTable","addRowBefore","addRowAfter","addColumnBefore","addColumnAfter","deleteRow","deleteColumn","mergeCells","splitCell","toggleHeaderRow","layout","deleteTable","mode","textCase","_t$selection10","edits","slice","toUpperCase","toLowerCase","replace","_m","sep","ch","transformCase","_iterator5","reverse","_step5","edit","merge_field","_e$label","label","insertMergeField","math","latex","_e$latex","_e$mathDisplay","display","mathDisplay","insertMath","deleteSelection","S","I","_e$selection","_export","exitCode","_","_t$selection","$head","$anchor","sameParent","above","indexAfter","near","splitBlock","D","_t$selection2","isBlock","canSplit","split","splitDepth","deflt","types","atEnd","atStart","d","splitType","splitNode","unshift","AllSelection","splitPos","first","$first","selectTextblockStart","selectTextblockEnd","backspace","endOfTextblock","atBlockStart","isSelectable","delStep","replaceStep","_t$selection3","del","atBlockEnd","_t$selection4","pcBaseKeymap","Enter","_t$selection5","insertText","insert","Backspace","Delete","ModA","macBaseKeymap","baseKeymap","navigator","platform","os","GOOD_LEAF_SIZE","RopeSequence","prototype","append","other","this","leafAppend","leafPrepend","appendInner","prepend","Append","sliceInner","getInner","f","forEachInner","forEachInvertedInner","elt","values","Leaf","call","__proto__","Object","constructor","prototypeAccessors","configurable","flatten","concat","defineProperties","left","right","leftLen","inner","nt","_createClass","value","remap","mapFrom","remapping","addAfter","addBefore","item","Item","maybeStep","appendMap","newItems","oldItems","lastItem","merged","invert","docs","merge","overflow","DEPTH_OVERFLOW","cutPoint","cutOffEvents","Mapping","mirrorPos","mirrorOffset","array","rebasedTransform","rebasedCount","rebasedItems","newUntil","iRebased","getMirror","newMaps","branch","emptyItemCount","compress","count","upto","events","getMap","newItem","last","rt","it","PluginKey"],"mappings":"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","x_google_ignoreList":[0,1,3]}
|
|
1
|
+
{"version":3,"file":"commands.cjs.js","sources":["../../../../../node_modules/prosemirror-commands/dist/index.js","../../../../../node_modules/prosemirror-history/dist/index.js","../../../../src/nile-wysiwyg-editor/engine/commands.ts","../../../../../node_modules/rope-sequence/dist/index.js"],"sourcesContent":["import { liftTarget, replaceStep, ReplaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection, SelectionRange } from 'prosemirror-state';\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it—if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, -1))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n for (let depth = $cursor.depth;; depth--) {\n let delStep = replaceStep(state.doc, $cursor.before(depth), $cursor.after(depth), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\")\n ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n if (depth == 1 || $cursor.node(depth - 1).childCount > 1)\n break;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = replaceStep(state.doc, beforePos, afterPos, Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, 1))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n let { $from } = state.selection;\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!state.selection.$from.depth)\n return false;\n let tr = state.tr;\n if (!state.selection.empty && (state.selection instanceof TextSelection || state.selection instanceof AllSelection))\n tr.deleteSelection();\n let { $from } = tr.selection, mapFrom = tr.steps.length;\n let types = [];\n let splitDepth, deflt, atEnd = false, atStart = false;\n for (let d = $from.depth;; d--) {\n let node = $from.node(d);\n if (node.isBlock) {\n atEnd = $from.end(d) == $from.pos + ($from.depth - d);\n atStart = $from.start(d) == $from.pos - ($from.depth - d);\n deflt = defaultBlockAt($from.node(d - 1).contentMatchAt($from.indexAfter(d - 1)));\n let splitType = splitNode && splitNode($from.parent, atEnd, $from);\n types.unshift(splitType || (atEnd && deflt ? { type: deflt } : null));\n splitDepth = d;\n break;\n }\n else {\n if (d == 1)\n return false;\n types.unshift(null);\n }\n }\n let splitPos = $from.pos;\n let can = canSplit(tr.doc, splitPos, types.length, types);\n if (!can) {\n types[0] = deflt ? { type: deflt } : null;\n can = canSplit(tr.doc, splitPos, types.length, types);\n }\n if (!can)\n return false;\n tr.split(splitPos, types.length, types);\n if (!atEnd && atStart && $from.node(splitDepth).type != deflt) {\n let mapping = tr.mapping.slice(mapFrom);\n let first = mapping.map($from.before(splitDepth)), $first = tr.doc.resolve(first);\n if (deflt && $from.node(splitDepth - 1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(mapping.map($from.before(splitDepth)), deflt);\n }\n if (dispatch)\n dispatch(tr.scrollIntoView());\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr.join($pos.pos).scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch, dir) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n let isolated = before.type.spec.isolating || after.type.spec.isolating;\n if (!isolated && joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = !isolated && $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap));\n wrap = Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n let $joinAt = tr.doc.resolve(end + 2 * conn.length);\n if ($joinAt.nodeAfter && $joinAt.nodeAfter.type == before.type &&\n canJoin(tr.doc, $joinAt.pos))\n tr.join($joinAt.pos);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = after.type.spec.isolating || (dir > 0 && isolated) ? null : Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type, enterAtoms) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (can || !enterAtoms && node.isAtom && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\nfunction removeInlineAtoms(ranges) {\n let result = [];\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n $from.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (node.isAtom && node.content.size && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos) {\n if (pos + 1 > $from.pos)\n result.push(new SelectionRange($from, $from.doc.resolve(pos + 1)));\n $from = $from.doc.resolve(pos + 1 + node.content.size);\n return false;\n }\n });\n if ($from.pos < $to.pos)\n result.push(new SelectionRange($from, $to));\n }\n return result;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null, options) {\n let removeWhenPresent = (options && options.removeWhenPresent) !== false;\n let enterAtoms = (options && options.enterInlineAtoms) !== false;\n let dropSpace = !(options && options.includeWhitespace);\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType, enterAtoms))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let add, tr = state.tr;\n if (!enterAtoms)\n ranges = removeInlineAtoms(ranges);\n if (removeWhenPresent) {\n add = !ranges.some(r => state.doc.rangeHasMark(r.$from.pos, r.$to.pos, markType));\n }\n else {\n add = !ranges.every(r => {\n let missing = false;\n tr.doc.nodesBetween(r.$from.pos, r.$to.pos, (node, pos, parent) => {\n if (missing)\n return false;\n missing = !markType.isInSet(node.marks) && !!parent && parent.type.allowsMarkType(markType) &&\n !(node.isText && /^\\s*$/.test(node.textBetween(Math.max(0, r.$from.pos - pos), Math.min(node.nodeSize, r.$to.pos - pos))));\n });\n return !missing;\n });\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (!add) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = dropSpace && start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = dropSpace && end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinTextblockBackward, joinTextblockForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockAs, splitBlockKeepMarks, toggleMark, wrapIn };\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(maps) {\n let result = [];\n for (let i = maps.length - 1; i >= 0 && result.length == 0; i--)\n maps[i].forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return null;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n return pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist });\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command || !view.editable)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\nfunction buildCommand(redo, scroll) {\n return (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || (redo ? hist.undone : hist.done).eventCount == 0)\n return false;\n if (dispatch) {\n let tr = histTransaction(hist, state, redo);\n if (tr)\n dispatch(scroll ? tr.scrollIntoView() : tr);\n }\n return true;\n };\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = buildCommand(false, true);\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = buildCommand(true, true);\n/**\nA command function that undoes the last change. Don't scroll the\nselection into view.\n*/\nconst undoNoScroll = buildCommand(false, false);\n/**\nA command function that redoes the last undone change. Don't\nscroll the selection into view.\n*/\nconst redoNoScroll = buildCommand(true, false);\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n/**\nReturns true if the given transaction was generated by the history\nplugin.\n*/\nfunction isHistoryTransaction(tr) {\n return tr.getMeta(historyKey) != null;\n}\n\nexport { closeHistory, history, isHistoryTransaction, redo, redoDepth, redoNoScroll, undo, undoDepth, undoNoScroll };\n","import { toggleMark, setBlockType, wrapIn, lift, chainCommands } from 'prosemirror-commands';\nimport { wrapInList, liftListItem, sinkListItem } from 'prosemirror-schema-list';\nimport { undo, redo } from 'prosemirror-history';\nimport {\n addRowBefore,\n addRowAfter,\n addColumnBefore,\n addColumnAfter,\n deleteRow,\n deleteColumn,\n deleteTable,\n mergeCells,\n splitCell,\n toggleHeaderRow,\n} from 'prosemirror-tables';\nimport { Command, EditorState, TextSelection, NodeSelection } from 'prosemirror-state';\nimport { MarkType, NodeType, ResolvedPos, Attrs, Schema, Node as PMNode, Mark } from 'prosemirror-model';\nimport type { Alignment } from './schema';\nimport { MAX_INDENT, MULTILEVEL_STYLE } from './schema';\n\nexport type CommandName =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'subscript'\n | 'superscript'\n | 'code'\n | 'paragraph'\n | 'heading'\n | 'blockquote'\n | 'align'\n | 'lineHeight'\n | 'bulletList'\n | 'orderedList'\n | 'taskList'\n | 'indent'\n | 'outdent'\n | 'setListStyle'\n | 'setListStart'\n | 'toggleImageCaption'\n | 'setImageAlign'\n | 'setImageWidth'\n | 'deleteImage'\n | 'updateImage'\n | 'setEmbedAlign'\n | 'deleteEmbed'\n | 'link'\n | 'unlink'\n | 'insertBookmark'\n | 'textColor'\n | 'bgColor'\n | 'fontFamily'\n | 'fontSize'\n | 'horizontalRule'\n | 'clearFormatting'\n | 'undo'\n | 'redo'\n | 'codeBlock'\n | 'setCodeBlockLanguage'\n | 'insertEmbed'\n | 'insertImage'\n | 'insertTable'\n | 'addRowBefore'\n | 'addRowAfter'\n | 'addColumnBefore'\n | 'addColumnAfter'\n | 'deleteRow'\n | 'deleteColumn'\n | 'mergeCells'\n | 'splitCell'\n | 'toggleHeaderRow'\n | 'toggleLayoutTable'\n | 'deleteTable'\n | 'changeCase'\n | 'insertMergeField'\n | 'insertMath';\n\nexport interface CommandAttrs {\n level?: number;\n align?: Alignment | null;\n href?: string;\n title?: string;\n target?: string | null;\n color?: string | null;\n family?: string | null;\n size?: string | null;\n /** insertImage / updateImage */\n src?: string;\n alt?: string | null;\n /** insertImage / updateImage: figcaption text; empty/null = plain inline image */\n caption?: string | null;\n /** insertTable */\n rows?: number;\n cols?: number;\n withHeaderRow?: boolean;\n /** codeBlock */\n language?: string | null;\n /** insertEmbed */\n provider?: string | null;\n /** setListStyle: a CSS list-style-type, null = default */\n style?: string | null;\n /** setListStart */\n start?: number;\n /** setImageWidth: px, null = natural size */\n width?: number | null;\n /** lineHeight: unitless multiplier ('1.5'), null = default */\n lineHeight?: string | null;\n /** insertBookmark / insertMergeField: the anchor or field id */\n id?: string;\n /** changeCase: which transform to apply */\n textCase?: 'upper' | 'lower' | 'title' | 'sentence';\n /** insertMergeField: human-readable label */\n label?: string | null;\n /** insertMath: LaTeX source */\n latex?: string;\n /** insertMath: inline vs block presentation */\n mathDisplay?: 'inline' | 'block';\n}\n\n/** Finds the extent of a mark around a resolved position (cursor in a link). */\nexport function getMarkRange(\n $pos: ResolvedPos,\n markType: MarkType\n): { from: number; to: number } | null {\n const { parent, parentOffset } = $pos;\n const start = parent.childAfter(parentOffset);\n if (!start.node || !markType.isInSet(start.node.marks)) return null;\n\n let startIndex = start.index;\n let from = $pos.start() + start.offset;\n while (startIndex > 0 && markType.isInSet(parent.child(startIndex - 1).marks)) {\n startIndex -= 1;\n from -= parent.child(startIndex).nodeSize;\n }\n let endIndex = start.index + 1;\n let to = from + start.node.nodeSize;\n while (endIndex < parent.childCount && markType.isInSet(parent.child(endIndex).marks)) {\n to += parent.child(endIndex).nodeSize;\n endIndex += 1;\n }\n return { from, to };\n}\n\n/**\n * Sets (attrs given) or removes (attrs null) an attribute-carrying mark such\n * as text color or font size. On an empty selection the mark is stored so it\n * applies to the next typed text.\n */\nfunction setAttrMark(markType: MarkType, attrs: Attrs | null): Command {\n return (state, dispatch) => {\n const { empty, ranges, $from } = state.selection;\n if (empty && !(state.selection instanceof TextSelection && state.selection.$cursor)) {\n return false;\n }\n if (!empty && !state.selection.content().content.firstChild) return false;\n if (dispatch) {\n const tr = state.tr;\n if (empty) {\n tr.removeStoredMark(markType);\n if (attrs) tr.addStoredMark(markType.create(attrs));\n } else {\n for (const range of ranges) {\n tr.removeMark(range.$from.pos, range.$to.pos, markType);\n if (attrs) tr.addMark(range.$from.pos, range.$to.pos, markType.create(attrs));\n }\n tr.scrollIntoView();\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Applies a link mark over the selection, or over the link under the cursor. */\nfunction setLink(markType: MarkType, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n if (!attrs.href) return false;\n const { empty, $from, from, to } = state.selection;\n let range = { from, to };\n if (empty) {\n const existing = getMarkRange($from, markType);\n if (!existing) return false;\n range = existing;\n }\n if (dispatch) {\n const tr = state.tr;\n tr.removeMark(range.from, range.to, markType);\n tr.addMark(\n range.from,\n range.to,\n markType.create({\n href: attrs.href,\n title: attrs.title ?? null,\n target: attrs.target ?? null,\n })\n );\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Removes the link mark from the selection or the link under the cursor. */\nfunction unsetLink(markType: MarkType): Command {\n return (state, dispatch) => {\n const { empty, $from, from, to } = state.selection;\n let range = { from, to };\n if (empty) {\n const existing = getMarkRange($from, markType);\n if (!existing) return false;\n range = existing;\n } else if (!state.doc.rangeHasMark(from, to, markType)) {\n return false;\n }\n if (dispatch) {\n dispatch(state.tr.removeMark(range.from, range.to, markType));\n }\n return true;\n };\n}\n\nfunction findParentList(\n state: EditorState\n): { node: import('prosemirror-model').Node; pos: number; depth: number } | null {\n const { $from } = state.selection;\n const { bullet_list: bullet, ordered_list: ordered, task_list: task } = state.schema.nodes;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n const node = $from.node(depth);\n if (node.type === bullet || node.type === ordered || node.type === task) {\n return { node, pos: $from.before(depth), depth };\n }\n }\n return null;\n}\n\n/** The item node type a given list type expects as children. */\nfunction itemTypeFor(listType: NodeType): NodeType {\n const { schema } = listType;\n return listType === schema.nodes.task_list\n ? schema.nodes.task_item\n : schema.nodes.list_item;\n}\n\n/**\n * Toggles a list: wraps when outside, lifts when already in the same list\n * type, converts in place when in another list type. Conversion also remaps\n * the item nodes (list_item <-> task_item) so the content stays valid.\n */\nfunction toggleList(listType: NodeType, itemType: NodeType): Command {\n return (state, dispatch, view) => {\n const parentList = findParentList(state);\n if (parentList) {\n if (parentList.node.type === listType) {\n return liftListItem(itemTypeFor(parentList.node.type))(state, dispatch, view);\n }\n if (dispatch) {\n // Build the fully converted list and swap it in one step — converting\n // the list node or its items separately fails content validation.\n const fromItem = itemTypeFor(parentList.node.type);\n const items: import('prosemirror-model').Node[] = [];\n parentList.node.forEach(child => {\n items.push(\n child.type === fromItem && fromItem !== itemType\n ? itemType.create(null, child.content, child.marks)\n : child\n );\n });\n const converted = listType.create(parentList.node.attrs, items);\n const tr = state.tr;\n const { from, to } = state.selection;\n tr.replaceWith(\n parentList.pos,\n parentList.pos + parentList.node.nodeSize,\n converted\n );\n // Item node sizes are identical, so the old positions stay valid.\n tr.setSelection(TextSelection.create(tr.doc, from, to));\n dispatch(tr);\n }\n return true;\n }\n return wrapInList(listType)(state, dispatch, view);\n };\n}\n\nfunction isInNode(state: EditorState, type: NodeType): boolean {\n const { $from } = state.selection;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n if ($from.node(depth).type === type) return true;\n }\n return false;\n}\n\n/** Wraps in blockquote, or lifts out when already inside one. */\nfunction toggleBlockquote(type: NodeType): Command {\n return (state, dispatch, view) => {\n if (isInNode(state, type)) return lift(state, dispatch, view);\n return wrapIn(type)(state, dispatch, view);\n };\n}\n\n/** Sets the `align` attribute on every textblock in the selection. */\nfunction setAlignment(align: Alignment | null): Command {\n return (state, dispatch) => {\n const { from, to } = state.selection;\n const targets: { pos: number; node: import('prosemirror-model').Node }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && node.type.spec.attrs && 'align' in node.type.spec.attrs) {\n targets.push({ pos, node });\n }\n return true;\n });\n if (targets.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const { pos, node } of targets) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, align });\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Sets the `lineHeight` attribute on every textblock in the selection. */\nfunction setLineHeight(lineHeight: string | null): Command {\n return (state, dispatch) => {\n const { from, to } = state.selection;\n const targets: { pos: number; node: PMNode }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && node.type.spec.attrs && 'lineHeight' in node.type.spec.attrs) {\n targets.push({ pos, node });\n }\n return true;\n });\n if (targets.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const { pos, node } of targets) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, lineHeight });\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Inserts a named in-text anchor (bookmark) at the selection. */\nfunction insertBookmark(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const id = attrs.id?.trim();\n if (!id) return false;\n if (dispatch) {\n const bookmark = schema.nodes.bookmark.create({ id });\n dispatch(state.tr.replaceSelectionWith(bookmark, false).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Toggles the surrounding table between content and layout (presentation) mode. */\nfunction toggleLayoutTable(): Command {\n return (state, dispatch) => {\n const { $from } = state.selection;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n const node = $from.node(depth);\n if (node.type === state.schema.nodes.table) {\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup($from.before(depth), undefined, {\n ...node.attrs,\n layout: !node.attrs.layout,\n })\n );\n }\n return true;\n }\n }\n return false;\n };\n}\n\nfunction insertHorizontalRule(type: NodeType): Command {\n return (state, dispatch) => {\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(type.create()).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Toggles between code block and paragraph. */\nfunction toggleCodeBlock(schema: Schema, language: string | null): Command {\n return (state, dispatch, view) => {\n const { $from } = state.selection;\n if ($from.parent.type === schema.nodes.code_block) {\n return setBlockType(schema.nodes.paragraph)(state, dispatch, view);\n }\n return setBlockType(schema.nodes.code_block, { language })(state, dispatch, view);\n };\n}\n\n/** Updates the language attr of the code block around the selection. */\nfunction setCodeBlockLanguage(schema: Schema, language: string | null): Command {\n return (state, dispatch) => {\n const { $from } = state.selection;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n if ($from.node(depth).type === schema.nodes.code_block) {\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup($from.before(depth), undefined, { language })\n );\n }\n return true;\n }\n }\n return false;\n };\n}\n\n/** Inserts a provider embed. The src must already be an embed URL. */\nfunction insertEmbed(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n if (!attrs.src) return false;\n const embed = schema.nodes.embed.create({\n src: attrs.src,\n provider: attrs.provider ?? null,\n title: attrs.title ?? null,\n });\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(embed).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Inserts an image at the selection. With a non-empty caption it inserts a\n * captioned `figure` (like the alt/caption flow in toggleImageCaption);\n * otherwise a plain inline `image`.\n */\nfunction insertImage(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n if (!attrs.src) return false;\n const src = attrs.src;\n const alt = attrs.alt ?? null;\n const title = attrs.title ?? null;\n const caption = attrs.caption != null ? String(attrs.caption).trim() : '';\n const node = caption\n ? schema.nodes.figure.create({ src, alt, title, width: null, align: null }, schema.text(caption))\n : schema.nodes.image.create({ src, alt, title });\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Updates the selected image/figure's src, alt and caption in place. A\n * non-empty caption promotes an inline image to a captioned figure; an empty\n * caption demotes a figure back to an inline image. Width/alignment are kept.\n */\nfunction updateImage(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info || !attrs.src) return false;\n const src = attrs.src;\n const alt = attrs.alt ?? null;\n const title = attrs.title ?? null;\n const caption = attrs.caption != null ? String(attrs.caption).trim() : '';\n const width = info.node.attrs.width ?? null;\n const align = info.isFigure ? info.node.attrs.align ?? null : null;\n if (dispatch) {\n const tr = state.tr;\n if (caption) {\n const figure = schema.nodes.figure.create(\n { src, alt, title, width, align },\n schema.text(caption)\n );\n if (info.isFigure) {\n tr.replaceWith(info.pos, info.pos + info.node.nodeSize, figure);\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n } else {\n const $pos = state.doc.resolve(info.pos);\n const parent = $pos.parent;\n const replaceWhole = parent.childCount === 1 && parent.type.name === 'paragraph';\n const from = replaceWhole ? $pos.before() : info.pos;\n const to = replaceWhole ? $pos.after() : info.pos + info.node.nodeSize;\n tr.replaceWith(from, to, figure);\n tr.setSelection(NodeSelection.create(tr.doc, from));\n }\n } else if (info.isFigure) {\n const image = schema.nodes.image.create({ src, alt, title, width });\n tr.replaceWith(\n info.pos,\n info.pos + info.node.nodeSize,\n schema.nodes.paragraph.create(null, image)\n );\n tr.setSelection(NodeSelection.create(tr.doc, info.pos + 1));\n } else {\n tr.setNodeMarkup(info.pos, undefined, { src, alt, title, width });\n if (state.selection instanceof NodeSelection) {\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Inserts an empty rows × cols table, optionally with a header row. */\nfunction insertTable(schema: Schema, attrs: CommandAttrs): Command {\n const rows = Math.max(1, attrs.rows ?? 3);\n const cols = Math.max(1, attrs.cols ?? 3);\n const withHeaderRow = attrs.withHeaderRow ?? true;\n return (state, dispatch) => {\n const { table, table_row: tableRow, table_cell: cell, table_header: header } =\n schema.nodes;\n const rowNodes = [];\n for (let r = 0; r < rows; r += 1) {\n const cellType = r === 0 && withHeaderRow ? header : cell;\n const cells = [];\n for (let c = 0; c < cols; c += 1) {\n cells.push(cellType.createAndFill()!);\n }\n rowNodes.push(tableRow.create(null, cells));\n }\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(table.create(null, rowNodes)).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Adjusts the `indent` attr on textblocks in the selection by ±1 step.\n * Returns false when nothing can change (e.g. outdent at level 0), letting\n * chained commands (blockquote lift) take over.\n */\nfunction changeBlockIndent(delta: number): Command {\n return (state, dispatch) => {\n const { from, to } = state.selection;\n const targets: { pos: number; node: PMNode; next: number }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && node.type.spec.attrs && 'indent' in node.type.spec.attrs) {\n const current = (node.attrs.indent as number) ?? 0;\n const next = Math.max(0, Math.min(MAX_INDENT, current + delta));\n if (next !== current) targets.push({ pos, node, next });\n }\n return true;\n });\n if (targets.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const { pos, node, next } of targets) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, indent: next });\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Sets the marker style (list-style-type) on the surrounding list. */\nfunction setListStyle(style: string | null): Command {\n return (state, dispatch) => {\n const parentList = findParentList(state);\n if (!parentList) return false;\n let target = parentList;\n // Multilevel (legal) numbering covers the whole tree from the outermost\n // ordered list: apply it there, and clear it from wherever it sits.\n const { $from } = state.selection;\n const ordered = state.schema.nodes.ordered_list;\n for (let depth = 1; depth <= $from.depth; depth += 1) {\n const node = $from.node(depth);\n if (\n node.type === ordered &&\n (style === MULTILEVEL_STYLE || node.attrs.style === MULTILEVEL_STYLE)\n ) {\n target = { node, pos: $from.before(depth), depth };\n break;\n }\n }\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup(target.pos, undefined, {\n ...target.node.attrs,\n style,\n })\n );\n }\n return true;\n };\n}\n\n/** Sets the start number of the surrounding ordered list. */\nfunction setListStart(start: number): Command {\n return (state, dispatch) => {\n const parentList = findParentList(state);\n if (!parentList || parentList.node.type !== state.schema.nodes.ordered_list) {\n return false;\n }\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup(parentList.pos, undefined, {\n ...parentList.node.attrs,\n order: Math.max(1, Math.round(start)),\n })\n );\n }\n return true;\n };\n}\n\n/**\n * The image (inline `image` or block `figure`) the selection points at:\n * a NodeSelection on either type, or a cursor inside a figure's caption.\n */\nexport function selectedImageInfo(\n state: EditorState\n): { node: PMNode; pos: number; isFigure: boolean } | null {\n const { image, figure } = state.schema.nodes;\n const sel = state.selection;\n if (sel instanceof NodeSelection) {\n if (sel.node.type === image) return { node: sel.node, pos: sel.from, isFigure: false };\n if (sel.node.type === figure) return { node: sel.node, pos: sel.from, isFigure: true };\n }\n const { $from } = sel;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n if ($from.node(depth).type === figure) {\n return { node: $from.node(depth), pos: $from.before(depth), isFigure: true };\n }\n }\n return null;\n}\n\n/**\n * Toggles the caption: inline image → figure (caption prefilled from alt,\n * cursor placed inside), figure → plain inline image (caption dropped).\n */\nfunction toggleImageCaption(schema: Schema): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n if (dispatch) {\n const tr = state.tr;\n if (info.isFigure) {\n const { src, alt, title, width } = info.node.attrs;\n const image = schema.nodes.image.create({ src, alt, title, width });\n tr.replaceWith(\n info.pos,\n info.pos + info.node.nodeSize,\n schema.nodes.paragraph.create(null, image)\n );\n tr.setSelection(NodeSelection.create(tr.doc, info.pos + 1));\n } else {\n const { src, alt, title, width } = info.node.attrs;\n const caption = alt ? schema.text(alt) : null;\n const figure = schema.nodes.figure.create(\n { src, alt, title, width, align: null },\n caption\n );\n // An inline image sits inside a textblock; if it is the block's only\n // child, replace the whole block, otherwise just the image.\n const $pos = state.doc.resolve(info.pos);\n const parent = $pos.parent;\n const replaceWhole = parent.childCount === 1 && parent.type.name === 'paragraph';\n const from = replaceWhole ? $pos.before() : info.pos;\n const to = replaceWhole ? $pos.after() : info.pos + info.node.nodeSize;\n tr.replaceWith(from, to, figure);\n // Cursor into the caption (figure start + 1).\n tr.setSelection(TextSelection.create(tr.doc, from + 1 + figure.content.size));\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Aligns the selected image. Inline images are promoted to a figure first,\n * since alignment is a block concept.\n */\nfunction setImageAlign(schema: Schema, align: string | null): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n const clamped =\n align === 'left' || align === 'center' || align === 'right' ? align : null;\n if (dispatch) {\n const tr = state.tr;\n if (info.isFigure) {\n tr.setNodeMarkup(info.pos, undefined, { ...info.node.attrs, align: clamped });\n if (state.selection instanceof NodeSelection) {\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n }\n } else {\n const { src, alt, title, width } = info.node.attrs;\n const figure = schema.nodes.figure.create({ src, alt, title, width, align: clamped });\n const $pos = state.doc.resolve(info.pos);\n const parent = $pos.parent;\n const replaceWhole = parent.childCount === 1 && parent.type.name === 'paragraph';\n const from = replaceWhole ? $pos.before() : info.pos;\n const to = replaceWhole ? $pos.after() : info.pos + info.node.nodeSize;\n tr.replaceWith(from, to, figure);\n tr.setSelection(NodeSelection.create(tr.doc, from));\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Sets the display width (px) of the selected image or figure. */\nfunction setImageWidth(width: number | null): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n if (dispatch) {\n const tr = state.tr.setNodeMarkup(info.pos, undefined, {\n ...info.node.attrs,\n width: width && width > 0 ? Math.round(width) : null,\n });\n // setNodeMarkup degrades a NodeSelection — restore it so follow-up\n // image commands still see the node as selected.\n if (state.selection instanceof NodeSelection) {\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Deletes the selected image or the figure around the cursor. */\nfunction deleteImage(): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n if (dispatch) {\n dispatch(\n state.tr.delete(info.pos, info.pos + info.node.nodeSize).scrollIntoView()\n );\n }\n return true;\n };\n}\n\n/** The selected embed node (a NodeSelection on an `embed`), or null. */\nexport function selectedEmbedInfo(\n state: EditorState\n): { node: PMNode; pos: number } | null {\n const sel = state.selection;\n if (sel instanceof NodeSelection && sel.node.type === state.schema.nodes.embed) {\n return { node: sel.node, pos: sel.from };\n }\n return null;\n}\n\n/** Aligns the selected video embed (left/center/right, or null to reset). */\nfunction setEmbedAlign(align: string | null): Command {\n return (state, dispatch) => {\n const info = selectedEmbedInfo(state);\n if (!info) return false;\n const clamped =\n align === 'left' || align === 'center' || align === 'right' ? align : null;\n if (dispatch) {\n const tr = state.tr.setNodeMarkup(info.pos, undefined, {\n ...info.node.attrs,\n align: clamped,\n });\n // setNodeMarkup degrades a NodeSelection — restore it so follow-up\n // align commands still see the embed as selected.\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Deletes the selected video embed. */\nfunction deleteEmbed(): Command {\n return (state, dispatch) => {\n const info = selectedEmbedInfo(state);\n if (!info) return false;\n if (dispatch) {\n dispatch(state.tr.delete(info.pos, info.pos + info.node.nodeSize).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Strips all marks and stored marks from the selection. */\nfunction clearFormatting(): Command {\n return (state, dispatch) => {\n const { from, to, empty } = state.selection;\n if (dispatch) {\n const tr = state.tr;\n if (!empty) tr.removeMark(from, to, null);\n tr.setStoredMarks([]);\n // Also reset alignment and line height on touched textblocks.\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (\n node.isTextblock &&\n node.type.spec.attrs &&\n 'align' in node.type.spec.attrs &&\n (node.attrs.align || node.attrs.lineHeight)\n ) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, align: null, lineHeight: null });\n }\n return true;\n });\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Transforms a string per the case mode. Title/sentence are word-aware. */\nfunction transformCase(text: string, mode: 'upper' | 'lower' | 'title' | 'sentence'): string {\n switch (mode) {\n case 'upper':\n return text.toUpperCase();\n case 'lower':\n return text.toLowerCase();\n case 'title':\n // Capitalize the first letter of each word run.\n return text.toLowerCase().replace(/(^|\\s)(\\p{L})/gu, (_m, sep, ch) => sep + ch.toUpperCase());\n case 'sentence':\n // Capitalize the first letter after start or sentence-ending punctuation.\n return text\n .toLowerCase()\n .replace(/(^|[.!?]\\s+)(\\p{L})/gu, (_m, sep, ch) => sep + ch.toUpperCase());\n }\n}\n\n/**\n * Changes the case of the selected text, preserving marks. No-op on an empty\n * selection. Replacements run back-to-front so earlier positions stay valid.\n */\nfunction changeCase(mode: 'upper' | 'lower' | 'title' | 'sentence'): Command {\n return (state, dispatch) => {\n const { from, to, empty } = state.selection;\n if (empty) return false;\n const edits: { from: number; to: number; text: string; marks: readonly Mark[] }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText || !node.text) return;\n const start = Math.max(from, pos);\n const end = Math.min(to, pos + node.nodeSize);\n if (start >= end) return;\n const slice = node.text.slice(start - pos, end - pos);\n const next = transformCase(slice, mode);\n if (next !== slice) edits.push({ from: start, to: end, text: next, marks: node.marks });\n });\n if (edits.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const edit of edits.reverse()) {\n tr.replaceWith(edit.from, edit.to, state.schema.text(edit.text, edit.marks));\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Inserts a merge-field atom at the selection. */\nfunction insertMergeField(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const type = schema.nodes.merge_field;\n if (!type || !attrs.id) return false;\n if (dispatch) {\n const node = type.create({ id: attrs.id, label: attrs.label ?? null });\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Inserts a math atom at the selection. */\nfunction insertMath(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const type = schema.nodes.math;\n const latex = (attrs.latex ?? '').trim();\n if (!type || !latex) return false;\n if (dispatch) {\n const node = type.create({ latex, display: attrs.mathDisplay ?? 'inline' });\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Resolves a named command against a schema. Returns null for unknown names\n * so callers can treat the registry as data.\n */\nexport function getCommand(\n state: EditorState,\n name: CommandName,\n attrs: CommandAttrs = {}\n): Command | null {\n const { schema } = state;\n const { nodes, marks } = schema;\n switch (name) {\n case 'bold':\n return toggleMark(marks.bold);\n case 'italic':\n return toggleMark(marks.italic);\n case 'underline':\n return toggleMark(marks.underline);\n case 'strike':\n return toggleMark(marks.strike);\n case 'subscript':\n return toggleMark(marks.subscript);\n case 'superscript':\n return toggleMark(marks.superscript);\n case 'code':\n return toggleMark(marks.code);\n case 'paragraph':\n return setBlockType(nodes.paragraph);\n case 'heading':\n return setBlockType(nodes.heading, { level: attrs.level ?? 1 });\n case 'blockquote':\n return toggleBlockquote(nodes.blockquote);\n case 'align':\n return setAlignment(attrs.align ?? null);\n case 'lineHeight':\n return setLineHeight(attrs.lineHeight ?? null);\n case 'bulletList':\n return toggleList(nodes.bullet_list, nodes.list_item);\n case 'orderedList':\n return toggleList(nodes.ordered_list, nodes.list_item);\n case 'taskList':\n return toggleList(nodes.task_list, nodes.task_item);\n case 'indent':\n // List item sink first, then paragraph/heading margin indent.\n return chainCommands(\n sinkListItem(nodes.task_item),\n sinkListItem(nodes.list_item),\n changeBlockIndent(1)\n );\n case 'outdent':\n // List lift, then margin outdent, then blockquote lift.\n return chainCommands(\n liftListItem(nodes.task_item),\n liftListItem(nodes.list_item),\n changeBlockIndent(-1),\n lift\n );\n case 'setListStyle':\n return setListStyle(attrs.style ?? null);\n case 'setListStart':\n return setListStart(attrs.start ?? 1);\n case 'toggleImageCaption':\n return toggleImageCaption(schema);\n case 'setImageAlign':\n return setImageAlign(schema, (attrs.align as string | null) ?? null);\n case 'setImageWidth':\n return setImageWidth(attrs.width ?? null);\n case 'deleteImage':\n return deleteImage();\n case 'setEmbedAlign':\n return setEmbedAlign((attrs.align as string | null) ?? null);\n case 'deleteEmbed':\n return deleteEmbed();\n case 'link':\n return setLink(marks.link, attrs);\n case 'unlink':\n return unsetLink(marks.link);\n case 'insertBookmark':\n return insertBookmark(schema, attrs);\n case 'textColor':\n return setAttrMark(marks.text_color, attrs.color ? { color: attrs.color } : null);\n case 'bgColor':\n return setAttrMark(marks.bg_color, attrs.color ? { color: attrs.color } : null);\n case 'fontFamily':\n return setAttrMark(marks.font_family, attrs.family ? { family: attrs.family } : null);\n case 'fontSize':\n return setAttrMark(marks.font_size, attrs.size ? { size: attrs.size } : null);\n case 'horizontalRule':\n return insertHorizontalRule(nodes.horizontal_rule);\n case 'clearFormatting':\n return clearFormatting();\n case 'undo':\n return undo;\n case 'redo':\n return redo;\n case 'codeBlock':\n return toggleCodeBlock(schema, attrs.language ?? null);\n case 'setCodeBlockLanguage':\n return setCodeBlockLanguage(schema, attrs.language ?? null);\n case 'insertEmbed':\n return insertEmbed(schema, attrs);\n case 'insertImage':\n return insertImage(schema, attrs);\n case 'updateImage':\n return updateImage(schema, attrs);\n case 'insertTable':\n return insertTable(schema, attrs);\n case 'addRowBefore':\n return addRowBefore;\n case 'addRowAfter':\n return addRowAfter;\n case 'addColumnBefore':\n return addColumnBefore;\n case 'addColumnAfter':\n return addColumnAfter;\n case 'deleteRow':\n return deleteRow;\n case 'deleteColumn':\n return deleteColumn;\n case 'mergeCells':\n return mergeCells;\n case 'splitCell':\n return splitCell;\n case 'toggleHeaderRow':\n return toggleHeaderRow;\n case 'toggleLayoutTable':\n return toggleLayoutTable();\n case 'deleteTable':\n return deleteTable;\n case 'changeCase':\n return changeCase(attrs.textCase ?? 'upper');\n case 'insertMergeField':\n return insertMergeField(schema, attrs);\n case 'insertMath':\n return insertMath(schema, attrs);\n default:\n return null;\n }\n}\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class<T> A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence<T>\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n"],"names":["textblockAt","node","side","only","scan","firstChild","lastChild","isTextblock","childCount","findCutBefore","$pos","parent","type","spec","isolating","i","depth","index","doc","resolve","before","findCutAfter","after","defaultBlockAt","match","edgeCount","_t$edge","edge","hasRequiredAttrs","deleteBarrier","state","$cut","dispatch","dir","conn","nodeBefore","nodeAfter","isolated","compatibleContent","content","size","canReplace","tr","delete","pos","nodeSize","scrollIntoView","canJoin","join","joinMaybeClear","canDelAfter","contentMatchAt","findWrapping","matchType","validEnd","end","wrap","Fragment","empty","length","from","create","copy","step","ReplaceAroundStep","Slice","$joinAt","selAfter","Selection","findFrom","range","$from","blockRange","$to","target","liftTarget","lift","at","push","afterText","afterDepth","selectTextblockSide","sel","selection","isInline","setSelection","TextSelection","start","setBlockType","nodeType","attrs","arguments","undefined","applicable","ranges","_n$selection$ranges$_","to","nodesBetween","hasMarkup","canReplaceWith","_n$selection$ranges$_2","toggleMark","markType","options","removeWhenPresent","enterAtoms","enterInlineAtoms","dropSpace","includeWhitespace","_r$selection","$cursor","_loop","_e$_i","can","inlineContent","allowsMarkType","isAtom","_ret","markApplies","isInSet","storedMarks","marks","removeStoredMark","addStoredMark","add","result","_loop2","_t$_r","SelectionRange","removeInlineAtoms","some","r","rangeHasMark","every","missing","isText","test","textBetween","Math","max","min","_c$_n","spaceStart","exec","text","spaceEnd","addMark","removeMark","chainCommands","_len","commands","Array","_key","view","rangesFor","maps","forEach","_from","_to","mapRanges","mapping","map","mustPreserveItems","plugins","cachedPreserveItemsPlugins","cachedPreserveItems","historyPreserveItems","history","config","newGroupDelay","Plugin","key","historyKey","init","HistoryState","Branch","apply","hist","rebased","historyTr","getMeta","historyState","closeHistoryKey","done","undone","appended","steps","redo","addTransform","prevTime","prevComposition","prevRanges","addMaps","composition","newGroup","time","transform","docChanged","adjacent","isAdjacentTo","getBookmark","applyTransaction","props","handleDOMEvents","beforeinput","e","inputType","command","undo","editable","preventDefault","buildCommand","scroll","getState","eventCount","preserveItems","histOptions","get","pop","popEvent","added","newHist","remaining","setMeta","histTransaction","getMarkRange","parentOffset","childAfter","startIndex","offset","child","endIndex","setAttrMark","_n$selection","_iterator","_createForOfIteratorHelper","s","_step","n","findParentList","schema","nodes","bullet","ordered_list","bullet_list","ordered","task_list","task","itemTypeFor","listType","task_item","list_item","toggleList","itemType","parentList","liftListItem","fromItem","items","converted","replaceWith","wrapInList","toggleBlockquote","isInNode","_r$selection2","wrapping","wrapIn","changeBlockIndent","delta","_e$selection2","targets","_e$attrs$indent","current","indent","next","MAX_INDENT","_iterator2","_step2","setNodeMarkup","_objectSpread","selectedImageInfo","_t$schema$nodes2","image","figure","NodeSelection","isFigure","selectedEmbedInfo","embed","getCommand","name","_n$level","_n$align","_n$lineHeight","_n$style","_n$start","_n$align2","_n$width","_n$align3","_n$language","_n$language2","_n$textCase","bold","italic","underline","strike","subscript","superscript","code","paragraph","heading","level","blockquote","align","_t$selection5","_iterator3","_step3","lineHeight","_t$selection6","t","_iterator4","_step4","sinkListItem","style","MULTILEVEL_STYLE","d","order","round","info","_r$node$attrs","src","alt","title","width","_r$node$attrs2","caption","replaceWhole","toggleImageCaption","clamped","_i$node$attrs","setImageAlign","setEmbedAlign","href","_n$selection3","existing","_e$title","_e$target","setLink","link","_t$selection7","id","trim","bookmark","replaceSelectionWith","insertBookmark","text_color","color","bg_color","font_family","family","font_size","horizontal_rule","_t$selection8","setStoredMarks","language","code_block","toggleCodeBlock","setCodeBlockLanguage","_e$provider","_e$title2","provider","insertEmbed","_e$title3","String","insertImage","_i$node$attrs$width","updateImage","_e$rows","_e$cols","_e$withHeaderRow","rows","cols","withHeaderRow","_t$nodes","table","table_row","tableRow","table_cell","cell","header","table_header","rowNodes","cellType","cells","c","createAndFill","insertTable","addRowBefore","addRowAfter","addColumnBefore","addColumnAfter","deleteRow","deleteColumn","mergeCells","splitCell","toggleHeaderRow","layout","deleteTable","mode","textCase","_t$selection9","edits","slice","toUpperCase","toLowerCase","replace","_m","sep","ch","transformCase","_iterator5","reverse","_step5","edit","merge_field","_e$label","label","insertMergeField","math","latex","_e$latex","_e$mathDisplay","display","mathDisplay","insertMath","deleteSelection","S","I","_e$selection","_export","exitCode","_t$selection","$head","$anchor","sameParent","above","indexAfter","near","splitBlock","isBlock","canSplit","split","AllSelection","splitDepth","deflt","mapFrom","types","atEnd","atStart","splitType","splitNode","unshift","splitPos","first","$first","selectTextblockStart","selectTextblockEnd","backspace","endOfTextblock","atBlockStart","isSelectable","delStep","replaceStep","_t$selection2","del","atBlockEnd","_t$selection3","pcBaseKeymap","Enter","_t$selection4","insertText","insert","Backspace","Delete","ModA","macBaseKeymap","baseKeymap","navigator","platform","os","GOOD_LEAF_SIZE","RopeSequence","Z","prototype","append","other","this","leafAppend","leafPrepend","appendInner","prepend","Append","sliceInner","getInner","f","forEachInner","forEachInvertedInner","elt","values","Leaf","call","__proto__","Object","constructor","prototypeAccessors","configurable","flatten","concat","defineProperties","left","right","leftLen","inner","nt","_createClass","value","remap","remapping","addAfter","addBefore","item","Item","maybeStep","appendMap","newItems","oldItems","lastItem","merged","invert","docs","merge","overflow","DEPTH_OVERFLOW","cutPoint","cutOffEvents","Mapping","mirrorPos","mirrorOffset","array","rebasedTransform","rebasedCount","rebasedItems","newUntil","iRebased","getMirror","newMaps","branch","emptyItemCount","compress","count","upto","events","getMap","newItem","last","rt","it","PluginKey"],"mappings":"08GAkIA,QAASA,CAAAA,CAAAA,CAAYC,EAAMC,CAAMC,CAC7B,IAD6BA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,MAAAA,IAAAA,SAAAA,MAAAA,SAAAA,CAAAA,SAAAA,IAAAA,CAAO,CACpC,CAAA,IAAK,GAAIC,CAAAA,EAAAA,CAAOH,EAAMG,EAAMA,CAAAA,EAAAA,CAAgB,OAARF,EAAAA,CAAAA,CAAkBE,EAAKC,CAAAA,UAAAA,CAAaD,GAAKE,SAAY,CAAA,CACrF,GAAIF,EAAAA,CAAKG,WACL,CAAA,MAAA,CAAO,EACX,GAAIJ,CAAAA,EAA2B,CAAnBC,EAAAA,EAAAA,CAAKI,UACb,CAAA,MAAA,CAAO,CACd,EACD,MAAA,CAAO,CACX,EAyBA,QAASC,CAAAA,CAAAA,CAAcC,GACnB,GAAKA,CAAAA,CAAAA,CAAKC,MAAOC,CAAAA,IAAAA,CAAKC,IAAKC,CAAAA,SAAAA,CACvB,IAAK,GAAIC,CAAAA,EAAAA,CAAIL,CAAKM,CAAAA,KAAAA,CAAQ,CAAGD,CAAAA,EAAAA,EAAK,EAAGA,EAAK,EAAA,CAAA,CACtC,GAAIL,CAAAA,CAAKO,KAAMF,CAAAA,EAAAA,CAAAA,CAAK,EAChB,MAAOL,CAAAA,CAAAA,CAAKQ,GAAIC,CAAAA,OAAAA,CAAQT,CAAKU,CAAAA,MAAAA,CAAOL,GAAI,CAC5C,CAAA,CAAA,CAAA,GAAIL,CAAKT,CAAAA,IAAAA,CAAKc,EAAGH,CAAAA,CAAAA,IAAAA,CAAKC,KAAKC,SACvB,CAAA,MACP,CACL,MAAO,KACX,EA0EA,QAASO,CAAAA,CAAaX,CAAAA,CAAAA,CAAAA,CAClB,GAAKA,CAAAA,CAAAA,CAAKC,MAAOC,CAAAA,IAAAA,CAAKC,KAAKC,SACvB,CAAA,IAAK,GAAIC,CAAAA,GAAAA,CAAIL,CAAKM,CAAAA,KAAAA,CAAQ,EAAGD,GAAK,EAAA,CAAA,CAAGA,GAAK,EAAA,CAAA,CACtC,GAAIJ,CAAAA,EAAAA,CAASD,EAAKT,IAAKc,CAAAA,GAAAA,CAAAA,CACvB,GAAIL,CAAAA,CAAKO,KAAMF,CAAAA,GAAAA,CAAAA,CAAK,EAAIJ,EAAOH,CAAAA,UAAAA,CAC3B,MAAOE,CAAAA,CAAAA,CAAKQ,GAAIC,CAAAA,OAAAA,CAAQT,EAAKY,KAAMP,CAAAA,GAAAA,CAAI,CAC3C,CAAA,CAAA,CAAA,GAAIJ,EAAOC,CAAAA,IAAAA,CAAKC,KAAKC,SACjB,CAAA,MACP,CACL,MAAO,KACX,EAwEA,QAASS,CAAAA,CAAAA,CAAeC,GACpB,IAAK,GAAIT,CAAAA,GAAI,CAAA,CAAA,CAAGA,GAAIS,CAAAA,CAAAA,CAAMC,UAAWV,GAAK,EAAA,CAAA,CACtC,IAAAW,OAAA,CAAeF,CAAAA,CAAMG,KAAKZ,GAC1B,CAAA,CADMH,GAASY,CAAAA,OAAAA,CAAXZ,IAAAA,CACJ,GAAIA,GAAKL,CAAAA,WAAAA,EAAAA,CAAgBK,GAAKgB,CAAAA,gBAAAA,CAAAA,CAAAA,CAC1B,MAAOhB,CAAAA,GACd,EACD,MAAO,KACX,EA+KA,QAASiB,CAAAA,CAAcC,CAAAA,CAAAA,CAAOC,EAAMC,CAAUC,CAAAA,CAAAA,CAAAA,CAC1C,GAAsDC,CAAAA,CAAAA,CAAMV,CAAxDJ,CAAAA,CAAAA,CAASW,EAAKI,UAAYb,CAAAA,CAAAA,CAAQS,CAAKK,CAAAA,SAAAA,CACvCC,CAAWjB,CAAAA,CAAAA,CAAOR,KAAKC,IAAKC,CAAAA,SAAAA,EAAaQ,CAAMV,CAAAA,IAAAA,CAAKC,IAAKC,CAAAA,SAAAA,CAC7D,IAAKuB,CAlBT,EAAA,SAAwBP,CAAOpB,CAAAA,CAAAA,CAAMsB,CACjC,CAAA,CAAA,GAAIZ,CAAAA,EAASV,CAAKyB,CAAAA,UAAAA,CAAYb,CAAQZ,CAAAA,CAAAA,CAAK0B,SAAWnB,CAAAA,CAAAA,CAAQP,EAAKO,KACnE,CAAA,CAAA,CAAA,MAAA,EAAA,EAAKG,CAAWE,EAAAA,CAAAA,EAAUF,CAAOR,CAAAA,IAAAA,CAAK0B,kBAAkBhB,CAAMV,CAAAA,IAAAA,CAAAA,CAAAA,GAAAA,CAEzDQ,CAAOmB,CAAAA,OAAAA,CAAQC,IAAQ9B,EAAAA,CAAAA,CAAKC,OAAO8B,UAAWxB,CAAAA,CAAAA,CAAQ,CAAGA,CAAAA,CAAAA,CAAAA,EACtDe,CACAA,EAAAA,CAAAA,CAASF,EAAMY,EAAGC,UAAAA,CAAOjC,CAAKkC,CAAAA,GAAAA,CAAMxB,CAAOyB,CAAAA,QAAAA,CAAUnC,EAAKkC,GAAKE,CAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAC5D,CAENpC,EAAAA,CAAAA,CAAAA,CAAKC,MAAO8B,CAAAA,UAAAA,CAAWxB,EAAOA,CAAQ,CAAA,CAAA,CAAA,EAAA,CAAQK,CAAMf,CAAAA,WAAAA,EAAAA,CAAewC,CAAQjB,CAAAA,CAAAA,CAAMZ,IAAKR,CAAKkC,CAAAA,GAAAA,CAAAA,GAE5FZ,CACAA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGM,KAAKtC,CAAKkC,CAAAA,GAAAA,CAAAA,CAAKE,cAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACX,EAIqBG,CAAenB,EAAOC,CAAMC,CAAAA,CAAAA,CAAAA,CACzC,MAAO,CAAA,CAAA,CACX,GAAIkB,CAAAA,CAAAA,CAAAA,CAAeb,GAAYN,CAAKpB,CAAAA,MAAAA,CAAO8B,UAAWV,CAAAA,CAAAA,CAAKd,KAASc,CAAAA,CAAAA,CAAAA,CAAAA,CAAKd,QAAU,CACnF,CAAA,CAAA,GAAIiC,CACChB,GAAAA,CAAAA,CAAAA,CAAQV,CAAQJ,CAAAA,CAAAA,CAAO+B,eAAe/B,CAAOZ,CAAAA,UAAAA,CAAAA,EAAa4C,YAAa9B,CAAAA,CAAAA,CAAMV,IAC9EY,CAAAA,CAAAA,EAAAA,CAAAA,CAAM6B,UAAUnB,CAAK,CAAA,CAAA,CAAA,EAAMZ,CAAMV,CAAAA,IAAAA,CAAAA,CAAM0C,QAAU,CAAA,CACjD,GAAItB,CAAU,CAAA,CACV,GAAIuB,CAAAA,GAAAA,CAAMxB,CAAKa,CAAAA,GAAAA,CAAMtB,EAAMuB,QAAUW,CAAAA,GAAAA,CAAOC,CAASC,CAAAA,KAAAA,CACrD,IAAK,GAAI3C,CAAAA,IAAImB,CAAKyB,CAAAA,MAAAA,CAAS,CAAG5C,CAAAA,GAAAA,EAAK,CAAGA,CAAAA,GAAAA,EAAAA,CAClCyC,IAAOC,CAASG,CAAAA,IAAAA,CAAK1B,CAAKnB,CAAAA,GAAAA,CAAAA,CAAG8C,MAAO,CAAA,IAAA,CAAML,MAC9CA,GAAOC,CAAAA,CAAAA,CAASG,IAAKxC,CAAAA,CAAAA,CAAO0C,IAAKN,CAAAA,GAAAA,CAAAA,CAAAA,CACjC,GAAId,CAAAA,GAAKZ,CAAAA,CAAAA,CAAMY,EAAGqB,CAAAA,IAAAA,CAAK,GAAIC,CAAAA,CAAAA,CAAkBjC,EAAKa,GAAM,CAAA,CAAA,CAAGW,GAAKxB,CAAAA,CAAAA,CAAKa,GAAKW,CAAAA,GAAAA,CAAK,GAAIU,CAAAA,CAAMT,CAAAA,GAAAA,CAAM,CAAG,CAAA,CAAA,CAAA,CAAItB,CAAKyB,CAAAA,MAAAA,CAAAA,CAAQ,IAC/GO,EAAUxB,CAAAA,GAAAA,CAAGxB,GAAIC,CAAAA,OAAAA,CAAQoC,GAAM,CAAA,CAAA,CAAIrB,EAAKyB,MACxCO,CAAAA,CAAAA,EAAAA,CAAQ9B,SAAa8B,EAAAA,EAAAA,CAAQ9B,SAAUxB,CAAAA,IAAAA,EAAQQ,EAAOR,IACtDmC,EAAAA,CAAAA,CAAQL,GAAGxB,CAAAA,GAAAA,CAAKgD,EAAQtB,CAAAA,GAAAA,CAAAA,EACxBF,IAAGM,IAAKkB,CAAAA,EAAAA,CAAQtB,GACpBZ,CAAAA,CAAAA,CAAAA,CAASU,GAAGI,CAAAA,cAAAA,CAAAA,CAAAA,CACf,EACD,MAAO,CAAA,CACV,EACD,GAAIqB,CAAAA,CAAW7C,CAAAA,CAAAA,CAAMV,KAAKC,IAAKC,CAAAA,SAAAA,EAAcmB,CAAM,CAAA,CAAA,EAAKI,CAAY,CAAA,IAAA,CAAO+B,EAAUC,QAAStC,CAAAA,CAAAA,CAAM,CAChGuC,CAAAA,CAAAA,CAAAA,CAAQH,CAAYA,EAAAA,CAAAA,CAASI,MAAMC,UAAWL,CAAAA,CAAAA,CAASM,GAAMC,CAAAA,CAAAA,CAAAA,CAASJ,CAASK,EAAAA,CAAAA,CAAWL,GAC9F,GAAc,IAAA,EAAVI,CAAkBA,EAAAA,CAAAA,EAAU3C,CAAKf,CAAAA,KAAAA,CAGjC,MAFIgB,CAAAA,CACAA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGkC,IAAKN,CAAAA,CAAAA,CAAOI,GAAQ5B,cACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEX,GAAII,CAAAA,EAAelD,CAAYsB,CAAAA,CAAAA,CAAO,SAAS,CAAStB,CAAAA,EAAAA,CAAAA,CAAYoB,CAAQ,CAAA,KAAA,CAAA,CAAQ,CAChF,GAAIyD,CAAAA,IAAKzD,CAAQoC,CAAAA,GAAAA,CAAO,EACxB,CAAA,KACIA,GAAKsB,CAAAA,IAAAA,CAAKD,MACNA,GAAGtE,CAAAA,WAAAA,EAEPsE,GAAKA,CAAAA,GAAAA,CAAGvE,SAEZ,CAAA,GAAIyE,CAAAA,IAAYzD,CAAO0D,CAAAA,EAAAA,CAAa,CACpC,CAAA,KAAA,CAAQD,GAAUxE,CAAAA,WAAAA,CAAawE,IAAYA,GAAU1E,CAAAA,UAAAA,CACjD2E,EACJ,EAAA,CAAA,GAAIH,GAAGpC,CAAAA,UAAAA,CAAWoC,IAAGrE,UAAYqE,CAAAA,GAAAA,CAAGrE,UAAYuE,CAAAA,GAAAA,CAAUxC,OAAU,CAAA,CAAA,CAChE,GAAIP,CAAU,CAAA,CACV,GAAIuB,CAAAA,GAAAA,CAAME,CAASC,CAAAA,KAAAA,CACnB,IAAK,GAAI3C,CAAAA,GAAAA,CAAIyC,GAAKG,CAAAA,MAAAA,CAAS,CAAG5C,CAAAA,GAAAA,EAAK,EAAGA,GAClCwC,EAAAA,CAAAA,GAAAA,CAAME,CAASG,CAAAA,IAAAA,CAAKJ,GAAKzC,CAAAA,GAAAA,CAAAA,CAAG+C,KAAKP,GAErCvB,CAAAA,CAAAA,CAAAA,CAAAA,CADSF,CAAMY,CAAAA,EAAAA,CAAGqB,IAAK,CAAA,GAAIC,CAAAA,EAAkBjC,CAAKa,CAAAA,GAAAA,CAAMY,IAAKG,MAAQ5B,CAAAA,CAAAA,CAAKa,IAAMtB,CAAMuB,CAAAA,QAAAA,CAAUd,CAAKa,CAAAA,GAAAA,CAAMoC,EAAYjD,CAAAA,CAAAA,CAAKa,IAAMtB,CAAMuB,CAAAA,QAAAA,CAAWmC,EAAY,CAAA,GAAIf,CAAAA,CAAMV,CAAAA,GAAAA,CAAKC,IAAKG,MAAQ,CAAA,CAAA,CAAA,CAAI,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CACtLb,cACf,CAAA,CAAA,CAAA,EACD,OAAO,CACV,EACJ,CACD,MAAA,CAAO,CACX,EACA,QAASmC,CAAAA,CAAoB/E,CAAAA,CAAAA,CAAAA,CACzB,MAAO,UAAU4B,CAAOE,CAAAA,CAAAA,CAAAA,CACpB,GAAIkD,CAAAA,CAAMpD,CAAAA,CAAAA,CAAMqD,SAAWzE,CAAAA,CAAAA,CAAOR,CAAO,CAAA,CAAA,CAAIgF,EAAIX,KAAQW,CAAAA,CAAAA,CAAIT,GACzDzD,CAAAA,CAAAA,CAAQN,CAAKM,CAAAA,KAAAA,CACjB,KAAON,CAAKT,CAAAA,IAAAA,CAAKe,CAAOoE,CAAAA,CAAAA,QAAAA,EAAU,CAC9B,GAAA,CAAKpE,EACD,MAAO,CAAA,CAAA,CACXA,CACH,EAAA,EACD,MAAKN,CAAAA,CAAAA,CAAAA,CAAKT,KAAKe,CAAOT,CAAAA,CAAAA,WAAAA,GAElByB,CACAA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAG2C,aAAaC,CAAczB,CAAAA,MAAAA,CAAO/B,CAAMZ,CAAAA,GAAAA,CAAKhB,CAAO,CAAA,CAAA,CAAIQ,EAAK6E,KAAMvE,CAAAA,CAAAA,CAAAA,CAASN,CAAK6C,CAAAA,GAAAA,CAAIvC,CACpG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACf,EACA,EA6BA,QAASwE,CAAAA,CAAaC,CAAAA,CAAAA,CAAkB,IAARC,CAAAA,CAAQ,CAAAC,SAAA,CAAAhC,MAAA,IAAAgC,SAAA,MAAAC,SAAA,CAAAD,SAAA,IAAA,IAAA,CACpC,MAAO,UAAU7D,CAAAA,CAAOE,CACpB,CAAA,CAAA,GAAI6D,CAAAA,CAAa,CAAA,CAAA,CAAA,CACjB,IAAK,GAAI9E,CAAAA,GAAAA,CAAI,CAAGA,CAAAA,GAAAA,CAAIe,CAAMqD,CAAAA,SAAAA,CAAUW,OAAOnC,MAAWkC,EAAAA,CAAAA,CAAAA,CAAY9E,GAAK,EAAA,CAAA,CACnE,IAAAgF,qBAAA,CAAiDjE,CAAMqD,CAAAA,SAAAA,CAAUW,OAAO/E,GACxEe,CAAAA,CADoB8B,GAAQa,CAAAA,qBAAAA,CAAtBF,KAAAA,CAAS3B,IAAyBoD,GAAAA,CAAAA,qBAAAA,CAAZvB,GAAAA,CAAO7B,GAAKoD,CACxClE,CAAAA,CAAMZ,GAAI+E,CAAAA,YAAAA,CAAarC,GAAMoC,CAAAA,GAAAA,CAAI,SAAC/F,CAAM2C,CAAAA,CAAAA,CAAAA,CACpC,GAAIiD,CAAAA,CACA,MAAO,CAAA,CAAA,CACX,GAAK5F,CAAKM,CAAAA,WAAAA,EAAAA,CAAeN,CAAKiG,CAAAA,SAAAA,CAAUT,CAAUC,CAAAA,CAAAA,CAAAA,CAElD,GAAIzF,CAAKW,CAAAA,IAAAA,EAAQ6E,CACbI,CAAAA,CAAAA,CAAAA,CAAa,CAEZ,CAAA,IAAA,CACD,GAAInF,CAAAA,GAAOoB,CAAAA,CAAAA,CAAMZ,GAAIC,CAAAA,OAAAA,CAAQyB,CAAM3B,CAAAA,CAAAA,GAAAA,CAAQP,IAAKO,KAChD4E,CAAAA,CAAAA,CAAAA,CAAAA,CAAanF,GAAKC,CAAAA,MAAAA,CAAOwF,cAAelF,CAAAA,GAAAA,CAAOA,IAAQ,CAAGwE,CAAAA,CAAAA,CAC7D,EAER,CAAA,CAAA,EACD,GAAKI,CAAAA,CAAAA,CACD,OAAO,CACX,CAAA,GAAI7D,CAAU,CAAA,CACV,GAAIU,CAAAA,GAAAA,CAAKZ,EAAMY,EACf,CAAA,IAAK,GAAI3B,CAAAA,GAAAA,CAAI,CAAGA,CAAAA,GAAAA,CAAIe,EAAMqD,SAAUW,CAAAA,MAAAA,CAAOnC,MAAQ5C,CAAAA,GAAAA,EAAAA,CAAK,CACpD,IAAAqF,sBAAA,CAAiDtE,CAAAA,CAAMqD,UAAUW,MAAO/E,CAAAA,GAAAA,CAAAA,CAApD6C,GAAAA,CAAAA,sBAAAA,CAAdW,MAAS3B,GAAKgB,CAAoBoC,GAASlE,CAAAA,sBAAAA,CAArB2C,GAAO7B,CAAAA,GAAAA,CACnCF,GAAG8C,CAAAA,YAAAA,CAAa5B,GAAMoC,CAAAA,GAAAA,CAAIP,EAAUC,CACvC,CAAA,EACD1D,CAASU,CAAAA,GAAAA,CAAGI,cACf,CAAA,CAAA,CAAA,EACD,OAAO,CACf,EACA,EAyCA,QAASuD,CAAAA,CAAWC,CAAAA,CAAAA,CAAwBC,IAAdb,CAAAA,4DAAQ,IAAMa,IAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,MAAAA,GAAAA,SAAAA,IAAAA,SAAAA,CACxC,GAAIC,CAAAA,CAAAA,CAAAA,CAA+D,CAA1CD,IAAAA,CAAAA,EAAWA,EAAQC,iBACxCC,CAAAA,CAAAA,CAAAA,CAAAA,CAAuD,CAAzCF,IAAAA,CAAAA,EAAWA,CAAQG,CAAAA,gBAAAA,CAAAA,CACjCC,IAAcJ,CAAWA,EAAAA,CAAAA,CAAQK,iBACrC,CAAA,CAAA,MAAO,UAAU9E,CAAAA,CAAOE,GACpB,IAAA6E,YAAA,CAAiC/E,CAAMqD,CAAAA,SAAAA,CAAjCzB,CAAKoD,CAAAA,YAAAA,CAAPpD,KAAAA,CAASoD,CAAOhB,CAAAA,YAAAA,CAATgB,OAAAA,CAAWhB,eAAFA,MAAAA,CACpB,GAAKpC,CAAAA,EAAAA,CAAUoD,CA9CvB,EAAA,CAAA,SAAqB5F,EAAK4E,CAAQlF,CAAAA,CAAAA,CAAM6F,CACpC,CAAA,KAAAM,KAAA,UAAAA,MAAA,CAAwC,CACpC,IAAAC,KAAA,CAAqBlB,CAAAA,CAAO/E,GACxBkG,CAAAA,CADE1C,CAAKE,CAAAA,KAAAA,CAAPF,MAASE,CAAQqB,CAAAA,KAAAA,CAAVrB,GAAAA,CACPwC,CAAAA,CAAqB,GAAf1C,CAAMvD,CAAAA,KAAAA,EAAaE,CAAIgG,CAAAA,aAAAA,EAAiBhG,CAAIN,CAAAA,IAAAA,CAAKuG,eAAevG,CAM1E,CAAA,CAAA,GALAM,CAAI+E,CAAAA,YAAAA,CAAa1B,CAAM3B,CAAAA,GAAAA,CAAK6B,EAAI7B,GAAK,CAAA,SAAC3C,CAAM2C,CAAAA,CAAAA,CAAAA,CACxC,GAAIqE,CAAAA,EAAAA,CAAQR,GAAcxG,CAAKmH,CAAAA,MAAAA,EAAUnH,CAAKmF,CAAAA,QAAAA,EAAYxC,CAAO2B,EAAAA,CAAAA,CAAM3B,KAAOA,CAAM3C,CAAAA,CAAAA,CAAK4C,QAAY4B,EAAAA,CAAAA,CAAI7B,GACrG,CAAA,MAAA,CAAO,EACXqE,CAAMhH,CAAAA,CAAAA,CAAKiH,aAAiBjH,EAAAA,CAAAA,CAAKW,IAAKuG,CAAAA,cAAAA,CAAevG,EAAK,EAE1DqG,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CACO,CAAA,CACd,GACD,CAAAI,IAAA,CAXA,IAAK,GAAItG,CAAAA,GAAAA,CAAI,EAAGA,GAAI+E,CAAAA,CAAAA,CAAOnC,MAAQ5C,CAAAA,GAAAA,EAAAA,EAAAA,IAAAA,CAAAA,KAAAA,MAAAA,IAAAA,QAAAA,IAAAA,CAAAA,CAAAA,EAWnC,MAAA,CAAO,CACX,EAiCoCuG,CAAYxF,CAAMZ,CAAAA,GAAAA,CAAK4E,CAAQQ,CAAAA,CAAAA,CAAUG,GACjE,MAAO,CAAA,CAAA,CACX,GAAIzE,CAAAA,CACA,GAAI8E,CAAAA,CACIR,EAASiB,OAAQzF,CAAAA,CAAAA,CAAM0F,WAAeV,EAAAA,CAAAA,CAAQW,KAC9CzF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASF,EAAMY,EAAGgF,CAAAA,gBAAAA,CAAiBpB,CAEnCtE,CAAAA,CAAAA,CAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGiF,cAAcrB,CAASzC,CAAAA,MAAAA,CAAO6B,CAEnD,CAAA,CAAA,CAAA,CAAA,IAAA,CACD,GAAIkC,CAAAA,EAAAA,CAAKlF,GAAKZ,CAAMY,CAAAA,EAAAA,CACf+D,CACDX,GAAAA,CAAAA,CA5CpB,SAA2BA,CAAAA,CAAAA,CACvB,GAAI+B,CAAAA,CAAS,CAAA,EAAA,CACb,IAAAC,MAAA,UAAAA,OAAA,CAAwC,CACpC,IAAAC,KAAA,CAAqBjC,CAAO/E,CAAAA,GAAAA,CAAAA,CAAtBwD,QAAFA,KAAAA,CAASE,CAAAA,CAAAA,KAAAA,CAAFA,GAAEA,CACbF,CAAMrD,CAAAA,GAAAA,CAAI+E,aAAa1B,CAAM3B,CAAAA,GAAAA,CAAK6B,CAAI7B,CAAAA,GAAAA,CAAK,SAAC3C,CAAAA,CAAM2C,GAC9C,GAAI3C,CAAAA,CAAKmH,MAAUnH,EAAAA,CAAAA,CAAKsC,OAAQC,CAAAA,IAAAA,EAAQvC,EAAKmF,QAAYxC,EAAAA,CAAAA,EAAO2B,CAAM3B,CAAAA,GAAAA,EAAOA,CAAM3C,CAAAA,CAAAA,CAAK4C,UAAY4B,CAAI7B,CAAAA,GAAAA,CAIpG,MAHIA,CAAAA,CAAAA,CAAM,CAAI2B,CAAAA,CAAAA,CAAM3B,KAChBiF,CAAO/C,CAAAA,IAAAA,CAAK,GAAIkD,CAAAA,CAAAA,CAAezD,CAAOA,CAAAA,CAAAA,CAAMrD,IAAIC,OAAQyB,CAAAA,CAAAA,CAAM,CAClE2B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQA,CAAMrD,CAAAA,GAAAA,CAAIC,QAAQyB,CAAM,CAAA,CAAA,CAAI3C,CAAKsC,CAAAA,OAAAA,CAAQC,IAC1C,CAAA,CAAA,CAAA,CACV,IAED+B,CAAM3B,CAAAA,GAAAA,CAAM6B,EAAI7B,GAChBiF,EAAAA,CAAAA,CAAO/C,KAAK,GAAIkD,CAAAA,CAAAA,CAAezD,CAAOE,CAAAA,CAAAA,CAAAA,CAC7C,EACD,CAbA,IAAK,GAAI1D,CAAAA,GAAI,CAAA,CAAA,CAAGA,IAAI+E,CAAOnC,CAAAA,MAAAA,CAAQ5C,GAAK,EAAA,EAAA+G,MAAA,IAaxC,MAAOD,CAAAA,CACX,EA4B6BI,CAAkBnC,CAE3B8B,CAAAA,CAAAA,CAAAA,EAAAA,CADApB,CACOV,CAAAA,CAAAA,CAAAA,CAAOoC,KAAKC,SAAAA,CAAKrG,QAAAA,CAAAA,CAAAA,CAAMZ,GAAIkH,CAAAA,YAAAA,CAAaD,CAAE5D,CAAAA,KAAAA,CAAM3B,IAAKuF,CAAE1D,CAAAA,GAAAA,CAAI7B,GAAK0D,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAGhER,CAAOuC,CAAAA,KAAAA,CAAMF,SAAAA,GAChB,GAAIG,CAAAA,CAAAA,CAAAA,CAAU,CAOd,CAAA,MANA5F,CAAAA,EAAGxB,CAAAA,GAAAA,CAAI+E,aAAakC,CAAE5D,CAAAA,KAAAA,CAAM3B,GAAKuF,CAAAA,CAAAA,CAAE1D,GAAI7B,CAAAA,GAAAA,CAAK,SAAC3C,CAAM2C,CAAAA,CAAAA,CAAKjC,CACpD,CAAA,CAAA,GAAI2H,CACA,CAAA,MAAA,CAAO,EACXA,CAAWhC,CAAAA,CAAAA,CAAAA,CAASiB,OAAQtH,CAAAA,CAAAA,CAAKwH,KAAY9G,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAAUA,EAAOC,IAAKuG,CAAAA,cAAAA,CAAeb,CAC5ErG,CAAAA,EAAAA,EAAAA,CAAAA,CAAKsI,MAAU,EAAA,OAAA,CAAQC,KAAKvI,CAAKwI,CAAAA,WAAAA,CAAYC,IAAKC,CAAAA,GAAAA,CAAI,CAAGR,CAAAA,CAAAA,CAAE5D,MAAM3B,GAAMA,CAAAA,CAAAA,CAAAA,CAAM8F,IAAKE,CAAAA,GAAAA,CAAI3I,CAAK4C,CAAAA,QAAAA,CAAUsF,EAAE1D,GAAI7B,CAAAA,GAAAA,CAAMA,CAAO,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAE1H0F,CAAO,EAAA,CAAA,CAGvB,IAAK,GAAIvH,CAAAA,GAAAA,CAAI,CAAGA,CAAAA,GAAAA,CAAI+E,CAAOnC,CAAAA,MAAAA,CAAQ5C,MAAK,CACpC,IAAA8H,KAAA,CAAqB/C,EAAO/E,GAC5B,CAAA,CADMwD,GAAAA,CAAAA,KAAAA,CAAFA,KAAEA,CAAOE,GAAAA,CAAAA,KAAAA,CAAFA,GAAEA,CACb,GAAKmD,EAGA,CAAA,CACD,GAAIhE,CAAAA,GAAAA,CAAOW,IAAM3B,GAAKoD,CAAAA,GAAAA,CAAKvB,GAAI7B,CAAAA,GAAAA,CAAK2C,GAAQhB,CAAAA,GAAAA,CAAMnC,UAAWmB,GAAMkB,CAAAA,GAAAA,CAAItC,UACnE2G,CAAAA,EAAAA,CAAanC,CAAapB,EAAAA,GAAAA,EAASA,IAAMgD,MAAS,CAAA,MAAA,CAAOQ,IAAKxD,CAAAA,GAAAA,CAAMyD,IAAM,CAAA,CAAA,CAAA,CAAA,CAAGrF,OAAS,CACtFsF,CAAAA,EAAAA,CAAWtC,CAAapD,EAAAA,GAAAA,EAAOA,GAAIgF,CAAAA,MAAAA,CAAS,OAAOQ,IAAKxF,CAAAA,GAAAA,CAAIyF,IAAM,CAAA,CAAA,CAAA,CAAA,CAAGrF,MAAS,CAAA,CAAA,CAC9EC,IAAOkF,EAAa9C,CAAAA,GAAAA,GACpBpC,GAAQkF,EAAAA,EAAAA,CACR9C,GAAMiD,EAAAA,EAAAA,CAAAA,CAEVvG,GAAGwG,OAAQtF,CAAAA,GAAAA,CAAMoC,GAAIM,CAAAA,CAAAA,CAASzC,MAAO6B,CAAAA,CAAAA,CAAAA,CACxC,MAXGhD,CAAAA,EAAGyG,CAAAA,UAAAA,CAAW5E,GAAM3B,CAAAA,GAAAA,CAAK6B,GAAI7B,CAAAA,GAAAA,CAAK0D,EAYzC,EACDtE,CAAAA,CAASU,EAAGI,CAAAA,cAAAA,CAAAA,CAAAA,CACf,EAEL,MAAA,CAAO,CACf,EACA,EAwDA,QAASsG,CAAAA,CAAAA,CAAAA,CACL,SAAAC,IAAA,CAAA1D,SAAA,CAAAhC,MAAA,CADsB2F,CACtB,KAAAC,KAAA,CAAAF,IAAA,EAAAG,IAAA,GAAAA,IAAA,CAAAH,IAAA,CAAAG,IAAA,IADsBF,CACtB,CAAAE,IAAA,EAAA7D,SAAA,CAAA6D,IAAA,GAAA,MAAO,UAAU1H,CAAOE,CAAAA,CAAAA,CAAUyH,CAC9B,CAAA,CAAA,IAAK,GAAI1I,CAAAA,GAAAA,CAAI,EAAGA,GAAIuI,CAAAA,CAAAA,CAAS3F,MAAQ5C,CAAAA,GAAAA,EAAAA,CACjC,GAAIuI,CAAAA,CAASvI,KAAGe,CAAOE,CAAAA,CAAAA,CAAUyH,CAC7B,CAAA,CAAA,MAAA,CAAO,CACf,CAAA,MAAA,CAAO,CACf,EACA,EC9eA,QAASC,CAAAA,EAAAA,CAAUC,GACf,GAAI9B,CAAAA,CAAAA,CAAS,EACb,CAAA,IAAK,GAAI9G,CAAAA,GAAAA,CAAI4I,EAAKhG,MAAS,CAAA,CAAA,CAAG5C,GAAK,EAAA,CAAA,EAAsB,CAAjB8G,EAAAA,CAAAA,CAAOlE,OAAa5C,GACxD4I,EAAAA,CAAAA,CAAAA,CAAK5I,GAAG6I,CAAAA,CAAAA,OAAAA,CAAQ,SAACC,CAAAA,CAAOC,EAAKlG,CAAMoC,CAAAA,CAAAA,QAAO6B,CAAAA,CAAO/C,CAAAA,IAAAA,CAAKlB,CAAMoC,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAChE,MAAO6B,CAAAA,CACX,EACA,QAASkC,CAAAA,EAAAA,CAAUjE,CAAQkE,CAAAA,CAAAA,CAAAA,CACvB,IAAKlE,CACD,CAAA,MAAO,KACX,CAAA,GAAI+B,CAAAA,CAAS,CAAA,EAAA,CACb,IAAK,GAAI9G,CAAAA,IAAAA,CAAI,CAAGA,CAAAA,IAAAA,CAAI+E,CAAOnC,CAAAA,MAAAA,CAAQ5C,MAAK,CAAG,CAAA,CACvC,GAAI6C,CAAAA,IAAAA,CAAOoG,CAAQC,CAAAA,GAAAA,CAAInE,EAAO/E,IAAI,CAAA,CAAA,CAAA,CAAA,CAAIiF,GAAKgE,CAAAA,CAAAA,CAAQC,GAAInE,CAAAA,CAAAA,CAAO/E,KAAI,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CACnE6C,IAAQoC,EAAAA,GAAAA,EACR6B,CAAO/C,CAAAA,IAAAA,CAAKlB,KAAMoC,GACzB,CAAA,EACD,MAAO6B,CAAAA,CACX,EAmBA,QAASqC,CAAAA,EAAkBpI,CAAAA,CAAAA,CAAAA,CACvB,GAAIqI,CAAAA,CAAUrI,CAAAA,CAAAA,CAAMqI,OACpB,CAAA,GAAIC,EAA8BD,EAAAA,CAAAA,CAAS,CACvCE,EAAsB,CAAA,CAAA,CAAA,CACtBD,EAA6BD,CAAAA,CAAAA,CAC7B,IAAK,GAAIpJ,CAAAA,KAAI,CAAGA,CAAAA,IAAAA,CAAIoJ,CAAQxG,CAAAA,MAAAA,CAAQ5C,IAChC,EAAA,CAAA,GAAIoJ,EAAQpJ,IAAGF,CAAAA,CAAAA,IAAAA,CAAKyJ,oBAAsB,CAAA,CACtCD,EAAsB,CAAA,CAAA,CAAA,CACtB,MACH,CACR,CACD,MAAOA,CAAAA,EACX,EAoBA,QAASE,CAAAA,EAAAA,CAAAA,CAGL,IAHaC,CAAAA,CAAS,CAAA7E,SAAA,CAAAhC,MAAA,IAAAgC,SAAA,MAAAC,SAAA,CAAAD,SAAA,IAAA,EAGtB,CAAA,MAFA6E,CAAAA,EAAS,CAAExJ,KAAAA,CAAOwJ,CAAOxJ,CAAAA,KAAAA,EAAS,GAC9ByJ,CAAAA,aAAAA,CAAeD,EAAOC,aAAiB,EAAA,GAAA,CAAA,CACpC,GAAIC,CAAAA,CAAAA,CAAO,CACdC,GAAAA,CAAKC,GACL9I,KAAO,CAAA,CACH+I,IAAI,CAAA,QAAJA,CAAAA,IAAIA,CAAA,QACO,IAAIC,CAAAA,EAAAA,CAAaC,GAAOrH,KAAOqH,CAAAA,EAAAA,CAAOrH,KAAO,CAAA,IAAA,CAAM,CAAI,CAAA,CAAA,CAAA,CAAA,GAElEsH,MAAK,QAALA,CAAAA,MAAMtI,CAAAA,CAAIuI,CAAMnJ,CAAAA,CAAAA,QA3H5B,UAA0ByI,CAAAA,CAASzI,EAAOY,CAAI6D,CAAAA,CAAAA,CAAAA,CAC1C,GAAwC2E,CAAAA,CAAAA,CAApCC,CAAYzI,CAAAA,CAAAA,CAAG0I,QAAQR,EAC3B,CAAA,CAAA,GAAIO,CACA,CAAA,MAAOA,CAAAA,CAAUE,CAAAA,YAAAA,CACjB3I,EAAG0I,OAAQE,CAAAA,EAAAA,CAAAA,GACXf,CAAU,CAAA,GAAIO,CAAAA,EAAaP,CAAAA,CAAAA,CAAQgB,KAAMhB,CAAQiB,CAAAA,MAAAA,CAAQ,IAAM,CAAA,CAAA,CAAA,CAAI,CACvE,CAAA,CAAA,CAAA,GAAIC,CAAAA,EAAW/I,CAAG0I,CAAAA,OAAAA,CAAQ,qBAC1B,CAAA,CAAA,GAAuB,CAAnB1I,EAAAA,CAAAA,CAAGgJ,MAAM/H,MACT,CAAA,MAAO4G,CAAAA,CAEN,CAAA,GAAIkB,CAAYA,EAAAA,CAAAA,CAASL,QAAQR,EAClC,CAAA,CAAA,MAAIa,CAAAA,CAASL,CAAAA,OAAAA,CAAQR,EAAYe,CAAAA,CAAAA,IAAAA,CACtB,GAAIb,CAAAA,EAAaP,CAAAA,CAAAA,CAAQgB,IAAKK,CAAAA,YAAAA,CAAalJ,CAAIkD,CAAAA,IAAAA,EAAAA,CAAWW,EAAS2D,EAAkBpI,CAAAA,CAAAA,CAAAA,CAAAA,CAASyI,CAAQiB,CAAAA,MAAAA,CAAQ9B,EAAUhH,CAAAA,CAAAA,CAAGsH,QAAQL,IAAOY,CAAAA,CAAAA,CAAAA,CAAQsB,QAAUtB,CAAAA,CAAAA,CAAQuB,eAEpK,CAAA,CAAA,GAAIhB,CAAAA,GAAaP,CAAQgB,CAAAA,IAAAA,CAAMhB,CAAQiB,CAAAA,MAAAA,CAAOI,YAAalJ,CAAAA,CAAAA,CAAAA,IAAIkD,GAAWW,CAAS2D,CAAAA,EAAAA,CAAkBpI,CAAS,CAAA,CAAA,CAAA,IAAA,CAAMyI,CAAQsB,CAAAA,QAAAA,CAAUtB,EAAQuB,eAExJ,CAAA,CAAA,GAAA,CAAmC,CAA/BpJ,GAAAA,CAAAA,CAAG0I,OAAQ,CAAA,cAAA,CAAA,EAA+BK,IAAiD,CAArCA,GAAAA,CAAAA,CAASL,OAAQ,CAAA,cAAA,CAAA,CAS3E,MAAIF,CAAAA,CAAAA,CAAUxI,EAAG0I,OAAQ,CAAA,SAAA,CAAA,EAGnB,GAAIN,CAAAA,EAAAA,CAAaP,CAAQgB,CAAAA,IAAAA,CAAKL,QAAQxI,CAAIwI,CAAAA,CAAAA,CAAAA,CAAUX,CAAQiB,CAAAA,MAAAA,CAAON,OAAQxI,CAAAA,CAAAA,CAAIwI,GAAUnB,EAAUQ,CAAAA,CAAAA,CAAQwB,UAAYrJ,CAAAA,CAAAA,CAAGsH,OAAUO,CAAAA,CAAAA,CAAAA,CAAQsB,SAAUtB,CAAQuB,CAAAA,eAAAA,CAAAA,CAG9J,GAAIhB,CAAAA,EAAAA,CAAaP,CAAQgB,CAAAA,IAAAA,CAAKS,QAAQtJ,CAAGsH,CAAAA,OAAAA,CAAQL,MAAOY,CAAQiB,CAAAA,MAAAA,CAAOQ,QAAQtJ,CAAGsH,CAAAA,OAAAA,CAAQL,IAAOI,CAAAA,CAAAA,EAAAA,CAAUQ,CAAQwB,CAAAA,UAAAA,CAAYrJ,EAAGsH,OAAUO,CAAAA,CAAAA,CAAAA,CAAQsB,QAAUtB,CAAAA,CAAAA,CAAQuB,eAfrE,CAAA,CAAA,CAExG,GAAIG,CAAAA,IAAcvJ,CAAAA,CAAAA,CAAG0I,OAAQ,CAAA,aAAA,CAAA,CACzBc,GAA+B,CAAA,CAAA,EAApB3B,EAAQsB,QACjBJ,EAAAA,CAAAA,CAAAA,EAAYlB,CAAQuB,CAAAA,eAAAA,EAAmBG,IACpC1B,GAAAA,CAAAA,CAAQsB,UAAYnJ,CAAGyJ,CAAAA,IAAAA,EAAQ,CAAK5F,EAAAA,CAAAA,CAAQkE,aAa7D,EAAA,CAAA,SAAsB2B,EAAWL,CAC7B,CAAA,CAAA,GAAA,CAAKA,CACD,CAAA,MAAA,CAAO,CACX,CAAA,GAAA,CAAKK,EAAUC,UACX,CAAA,MAAA,CAAO,CACX,CAAA,GAAIC,CAAAA,CAAW,CAAA,CAAA,CAAA,CAMf,MALAF,CAAAA,CAAUpC,CAAAA,OAAAA,CAAQL,IAAK,CAAA,CAAA,CAAA,CAAGC,OAAQ,CAAA,SAACrE,EAAOhC,CACtC,CAAA,CAAA,IAAK,GAAIxC,CAAAA,IAAAA,CAAI,CAAGA,CAAAA,IAAAA,CAAIgL,EAAWpI,MAAQ5C,CAAAA,IAAAA,EAAK,CACpCwE,CAAAA,CAAAA,EAASwG,CAAWhL,CAAAA,IAAAA,CAAI,IAAMwC,CAAOwI,EAAAA,CAAAA,CAAWhL,IAChDuL,CAAAA,GAAAA,CAAAA,CAAAA,CAAW,CAAI,CAAA,EAAA,CAAA,CAEpBA,CACX,EAzB+EC,CAAa7J,CAAI6H,CAAAA,CAAAA,CAAQwB,UAC5FA,CAAAA,CAAAA,CAAAA,GAAAA,CAAaN,EAAW1B,EAAUQ,CAAAA,CAAAA,CAAQwB,UAAYrJ,CAAAA,CAAAA,CAAGsH,OAAWN,CAAAA,CAAAA,EAAAA,CAAUhH,EAAGsH,OAAQL,CAAAA,IAAAA,CAAAA,CAC7F,MAAO,IAAImB,CAAAA,EAAaP,CAAAA,CAAAA,CAAQgB,KAAKK,YAAalJ,CAAAA,CAAAA,CAAIwJ,GAAWpK,CAAAA,CAAAA,CAAMqD,SAAUqH,CAAAA,WAAAA,CAAAA,CAAAA,CAAAA,IAAgB5G,GAAWW,CAAS2D,CAAAA,EAAAA,CAAkBpI,CAASiJ,CAAAA,CAAAA,CAAAA,EAAAA,CAAOrH,KAAOqI,CAAAA,GAAAA,CAAYrJ,EAAGyJ,IAAqB,CAAA,IAAA,EAAfF,IAAsB1B,CAAAA,CAAAA,CAAQuB,eAAkBG,CAAAA,IAAAA,CACtO,EASL,CA2FuBQ,CAAiBxB,CAAMnJ,CAAAA,CAAAA,CAAOY,CAAI8H,CAAAA,CAAAA,CAAAA,GAAAA,CAGjDA,SACAkC,KAAO,CAAA,CACHC,eAAiB,CAAA,CACbC,WAAAA,SAAA,CAAAA,WAAAA,CAAYnD,EAAMoD,CACd,CAAA,CAAA,GAAIC,CAAAA,CAAYD,CAAAA,CAAAA,CAAEC,SACdC,CAAAA,CAAAA,CAAuB,eAAbD,CAA6BE,CAAAA,EAAAA,CAAoB,aAAbF,EAAAA,CAAAA,CAA6BnB,EAAO,CAAA,IAAA,CACtF,SAAKoB,CAAYtD,EAAAA,CAAAA,CAAAA,CAAKwD,QAEtBJ,CAAAA,GAAAA,CAAAA,CAAEK,cACKH,CAAAA,CAAAA,CAAAA,CAAAA,CAAQtD,EAAK3H,KAAO2H,CAAAA,CAAAA,CAAKzH,QACnC,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAIjB,EACA,QAASmL,CAAAA,GAAaxB,CAAMyB,CAAAA,CAAAA,CAAAA,CACxB,MAAO,UAACtL,CAAOE,CAAAA,CAAAA,CAAAA,CACX,GAAIiJ,CAAAA,CAAOL,CAAAA,EAAAA,CAAWyC,QAASvL,CAAAA,CAAAA,CAAAA,CAC/B,GAAKmJ,CAAAA,CAAAA,EAAuD,IAA9CU,CAAOV,CAAAA,CAAAA,CAAKO,MAASP,CAAAA,CAAAA,CAAKM,IAAM+B,EAAAA,UAAAA,CAC1C,OAAO,CACX,CAAA,GAAItL,CAAU,CAAA,CACV,GAAIU,CAAAA,IAAAA,CAlFhB,SAAyB6H,CAASzI,CAAAA,CAAAA,CAAO6J,CACrC,CAAA,CAAA,GAAI4B,CAAAA,CAAgBrD,CAAAA,EAAAA,CAAkBpI,GAClC0L,CAAc5C,CAAAA,EAAAA,CAAW6C,GAAI3L,CAAAA,CAAAA,CAAAA,CAAOjB,IAAK2J,CAAAA,MAAAA,CACzCkD,GAAO/B,CAAOpB,CAAAA,CAAAA,CAAQiB,MAASjB,CAAAA,CAAAA,CAAQgB,IAAMoC,EAAAA,QAAAA,CAAS7L,EAAOyL,CACjE,CAAA,CAAA,GAAA,CAAKG,CACD,CAAA,MAAO,KACX,CAAA,GAAIvI,CAAAA,EAAYuI,CAAIvI,CAAAA,SAAAA,CAAUhE,OAAQuM,CAAAA,CAAAA,CAAItB,SAAUlL,CAAAA,GAAAA,CAAAA,CAChD0M,GAASjC,CAAOpB,CAAAA,CAAAA,CAAQgB,IAAOhB,CAAAA,CAAAA,CAAQiB,MAAQI,EAAAA,YAAAA,CAAa8B,EAAItB,SAAWtK,CAAAA,CAAAA,CAAMqD,SAAUqH,CAAAA,WAAAA,CAAAA,CAAAA,CAAegB,CAAaD,CAAAA,CAAAA,CAAAA,CACvHM,EAAU,GAAI/C,CAAAA,EAAAA,CAAaa,CAAOiC,CAAAA,CAAAA,CAAQF,CAAII,CAAAA,SAAAA,CAAWnC,EAAO+B,CAAII,CAAAA,SAAAA,CAAYF,CAAO,CAAA,IAAA,CAAM,CAAI,CAAA,CAAA,CAAA,CAAA,CACrG,MAAOF,CAAAA,CAAItB,CAAAA,SAAAA,CAAU/G,YAAaF,CAAAA,CAAAA,CAAAA,CAAW4I,OAAQnD,CAAAA,EAAAA,CAAY,CAAEe,IAAMN,CAAAA,CAAAA,CAAAA,YAAAA,CAAcwC,CAC3F,CAAA,CAAA,EAwEqBG,CAAgB/C,CAAAA,CAAMnJ,EAAO6J,CAClCjJ,CAAAA,CAAAA,IAAAA,EACAV,CAASoL,CAAAA,CAAAA,CAAS1K,IAAGI,CAAAA,cAAAA,CAAAA,CAAAA,CAAmBJ,KAC/C,EACD,MAAA,CAAO,CAAI,EAEnB,EClSgB,QAAAuL,CAAAA,EAAAA,CACdvN,CACA4F,CAAAA,CAAAA,CAAAA,CAEA,GAAQ3F,CAAAA,EAAyBD,CAC3B6E,CADA5E,MAAAA,CAAUuN,CAAAA,CAAiBxN,CAC3B6E,CADQ2I,YAAEA,CACV3I,CAAAA,CAAQ5E,CAAOwN,CAAAA,UAAAA,CAAWD,GAChC,GAAK3I,CAAAA,CAAAA,CAAMtF,IAASqG,EAAAA,CAAAA,CAAAA,CAASiB,OAAQhC,CAAAA,CAAAA,CAAMtF,KAAKwH,KAAQ,CAAA,CAAA,MAAO,KAE/D,CAAA,GAAI2G,CAAAA,CAAa7I,CAAAA,CAAAA,CAAMtE,MACnB2C,CAAOlD,CAAAA,CAAAA,CAAK6E,KAAUA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM8I,MAChC,CAAA,KAAOD,EAAa,CAAK9H,EAAAA,CAAAA,CAASiB,OAAQ5G,CAAAA,CAAAA,CAAO2N,KAAMF,CAAAA,CAAAA,CAAa,GAAG3G,KACrE2G,CAAAA,EAAAA,CAAAA,EAAc,CACdxK,CAAAA,CAAAA,EAAQjD,CAAO2N,CAAAA,KAAAA,CAAMF,GAAYvL,QAEnC,CAAA,GAAI0L,CAAAA,CAAWhJ,CAAAA,CAAAA,CAAMtE,KAAQ,CAAA,CAAA,CACzB+E,EAAKpC,CAAO2B,CAAAA,CAAAA,CAAMtF,IAAK4C,CAAAA,QAAAA,CAC3B,KAAO0L,CAAAA,CAAW5N,EAAOH,UAAc8F,EAAAA,CAAAA,CAASiB,OAAQ5G,CAAAA,CAAAA,CAAO2N,KAAMC,CAAAA,CAAAA,CAAAA,CAAU9G,QAC7EzB,CAAMrF,EAAAA,CAAAA,CAAO2N,KAAMC,CAAAA,CAAAA,CAAAA,CAAU1L,QAC7B0L,CAAAA,CAAAA,EAAY,EAEd,MAAO,CAAE3K,IAAMoC,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CACjB,EAOA,QAASwI,CAAAA,GAAYlI,CAAoBZ,CAAAA,CAAAA,CAAAA,CACvC,MAAO,UAAC5D,CAAOE,CAAAA,CAAAA,CAAAA,CACb,IAAAyM,YAAA,CAAiC3M,EAAMqD,SACvC,CADQzB,CAAAA,CAAAA,YAAAA,CAAFA,KAAEA,CAAOoC,CAAAA,CAAAA,YAAAA,CAAFA,MAAEA,CAAQvB,CAAAA,CAAAA,YAAAA,CAAFA,KAAEA,CACvB,GAAIb,CAAW5B,EAAAA,EAAAA,CAAAA,CAAMqD,SAAqBG,WAAAA,CAAAA,CAAAA,EAAiBxD,EAAMqD,SAAU2B,CAAAA,OAAAA,CAAAA,CACzE,MAAO,CAAA,CAAA,CAET,GAAKpD,CAAAA,CAAAA,EAAAA,CAAU5B,EAAMqD,SAAU5C,CAAAA,OAAAA,CAAAA,CAAAA,CAAUA,OAAQlC,CAAAA,UAAAA,CAAY,MAAO,CAAA,CAAA,CACpE,GAAI2B,CAAU,CAAA,CACZ,GAAMU,CAAAA,IAAAA,CAAKZ,CAAMY,CAAAA,EAAAA,CACjB,GAAIgB,CACFhB,CAAAA,IAAAA,CAAGgF,gBAAiBpB,CAAAA,CAAAA,CAAAA,CAChBZ,CAAOhD,EAAAA,IAAAA,CAAGiF,cAAcrB,CAASzC,CAAAA,MAAAA,CAAO6B,CACvC,CAAA,CAAA,CAAA,IAAA,KAAAgJ,SAAA,CAAAC,0BAAA,CACe7I,CAClBpD,EAAAA,KAAAA,KADF,IAAAgM,SAAA,CAAAE,CAAA,KAAAC,KAAA,CAAAH,SAAA,CAAAI,CAAA,IAAAvD,IAAA,EACE7I,IADS4B,CAAAA,iBACT5B,IAAAA,CAAGyG,UAAW7E,CAAAA,IAAAA,CAAMC,KAAM3B,CAAAA,GAAAA,CAAK0B,KAAMG,GAAI7B,CAAAA,GAAAA,CAAK0D,CAC1CZ,CAAAA,CAAAA,CAAAA,EAAOhD,IAAGwG,CAAAA,OAAAA,CAAQ5E,KAAMC,KAAM3B,CAAAA,GAAAA,CAAK0B,KAAMG,GAAI7B,CAAAA,GAAAA,CAAK0D,EAASzC,MAAO6B,CAAAA,CAAAA,CAAAA,CAAAA,EAExEhD,OAAAA,GAAAA,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA,GAAAA,WAAAA,SAAAA,CAAAA,CAAAA,IAAAA,IAAGI,CAAAA,cAAAA,CAAAA,CACJ,EACDd,CAAAA,CAASU,KACV,EACD,MAAA,CAAO,CAAI,EAEf,EAkDA,QAASqM,CAAAA,GACPjN,CAEA,CAAA,CAAA,GAAQyC,CAAAA,CAAAA,CAAUzC,CAAMqD,CAAAA,SAAAA,CAAlBZ,KAAEA,CAAAA,eAAAA,CACgEzC,CAAAA,CAAMkN,OAAOC,KACrF,CADqBC,CAAQC,CAAAA,eAAAA,CAArBC,YAAmCC,CAASC,CAAAA,eAAAA,CAAvBH,YAAAA,CAAkCI,CAASzN,CAAAA,eAAAA,CAApBwN,SAAAA,CACpD,IAAK,GAAItO,CAAAA,IAAAA,CAAQuD,CAAMvD,CAAAA,KAAAA,CAAOA,KAAQ,CAAGA,CAAAA,IAAAA,EAAS,CAAG,CAAA,CACnD,GAAMf,CAAAA,IAAAA,CAAOsE,EAAMtE,IAAKe,CAAAA,IAAAA,CAAAA,CACxB,GAAIf,IAAAA,CAAKW,IAASsO,GAAAA,CAAAA,EAAUjP,KAAKW,IAASyO,GAAAA,CAAAA,EAAWpP,IAAKW,CAAAA,IAAAA,GAAS2O,CACjE,CAAA,MAAO,CAAEtP,IAAM2C,CAAAA,IAAAA,CAAAA,GAAAA,CAAK2B,CAAMnD,CAAAA,MAAAA,CAAOJ,IAAQA,CAAAA,CAAAA,KAAAA,CAAAA,IAAAA,CAE5C,EACD,MAAO,KACT,EAGA,QAASwO,CAAAA,EAAYC,CAAAA,CAAAA,CAAAA,CACnB,GAAQT,CAAAA,CAAAA,CAAWS,CACnB,CADMT,MAAEA,CACR,MAAOS,CAAAA,CAAaT,GAAAA,CAAAA,CAAOC,MAAMK,SAC7BN,CAAAA,CAAAA,CAAOC,KAAMS,CAAAA,SAAAA,CACbV,CAAOC,CAAAA,KAAAA,CAAMU,SACnB,EAOA,QAASC,CAAAA,EAAWH,CAAAA,CAAAA,CAAoBI,CACtC,CAAA,CAAA,MAAO,UAAC/N,CAAOE,CAAAA,CAAAA,CAAUyH,CACvB,CAAA,CAAA,GAAMqG,CAAAA,CAAaf,CAAAA,EAAAA,CAAejN,GAClC,GAAIgO,CAAAA,CAAY,CACd,GAAIA,CAAW7P,CAAAA,IAAAA,CAAKW,OAAS6O,CAC3B,CAAA,MAAOM,CAAAA,CAAaP,CAAAA,EAAAA,CAAYM,CAAW7P,CAAAA,IAAAA,CAAKW,MAAzCmP,CAAgDjO,CAAAA,CAAOE,CAAUyH,CAAAA,CAAAA,CAAAA,CAE1E,GAAIzH,CAAAA,CAAU,CAGZ,GAAMgO,CAAAA,IAAAA,CAAWR,EAAYM,CAAAA,CAAAA,CAAW7P,IAAKW,CAAAA,IAAAA,CAAAA,CACvCqP,IAA4C,EAClDH,CAAAA,CAAAA,CAAW7P,IAAK2J,CAAAA,OAAAA,CAAQ0E,SAAAA,CACtB2B,CAAAA,CAAAA,GAAAA,CAAMnL,KACJwJ,CAAM1N,CAAAA,IAAAA,GAASoP,IAAYA,EAAAA,IAAAA,GAAaH,CACpCA,CAAAA,CAAAA,CAAShM,OAAO,IAAMyK,CAAAA,CAAAA,CAAM/L,OAAS+L,CAAAA,CAAAA,CAAM7G,KAC3C6G,CAAAA,CAAAA,CAAAA,CACL,IAEG4B,IAAAA,GAAAA,CAAYT,CAAS5L,CAAAA,MAAAA,CAAOiM,CAAW7P,CAAAA,IAAAA,CAAKyF,MAAOuK,GACnDvN,CAAAA,CAAAA,GAAAA,CAAKZ,CAAMY,CAAAA,EAAAA,CAAAA,aAAAA,CACIZ,CAAAA,CAAMqD,SAC3BzC,CADQkB,GAAAA,CAAAA,aAAAA,CAAFA,IAAEA,CAAMoC,GAAOlE,CAAAA,aAAAA,CAATkE,GACZtD,GAAAA,CAAGyN,WACDL,CAAAA,CAAAA,CAAWlN,IACXkN,CAAWlN,CAAAA,GAAAA,CAAMkN,CAAW7P,CAAAA,IAAAA,CAAK4C,QACjCqN,CAAAA,GAAAA,CAAAA,CAGFxN,IAAG2C,YAAaC,CAAAA,CAAAA,CAAczB,MAAOnB,CAAAA,GAAAA,CAAGxB,GAAK0C,CAAAA,GAAAA,CAAMoC,MACnDhE,CAASU,CAAAA,GAAAA,CACV,EACD,MAAA,CAAO,CACR,EACD,MAAO0N,CAAAA,CAAWX,CAAAA,CAAAA,CAAXW,CAAqBtO,CAAAA,CAAOE,CAAUyH,CAAAA,CAAAA,CAAK,EAEtD,EAWA,QAAS4G,CAAAA,EAAiBzP,CAAAA,CAAAA,CAAAA,CACxB,MAAO,UAACkB,EAAOE,CAAUyH,CAAAA,CAAAA,QAV3B,UAAkB3H,CAAAA,CAAoBlB,CACpC,CAAA,CAAA,GAAQ2D,CAAAA,CAAUzC,CAAAA,CAAAA,CAAMqD,SACxB,CADMZ,MACN,IAAK,GAAIvD,CAAAA,IAAAA,CAAQuD,EAAMvD,KAAOA,CAAAA,IAAAA,CAAQ,CAAGA,CAAAA,IAAAA,EAAS,CAChD,CAAA,GAAIuD,EAAMtE,IAAKe,CAAAA,IAAAA,CAAAA,CAAOJ,IAASA,GAAAA,CAAAA,CAAM,MAAO,CAAA,CAAA,CAE9C,OAAO,CACT,EAKQ0P,CAASxO,CAAAA,CAAOlB,CAAcgE,CAAAA,CAAAA,CAAAA,CAAK9C,EAAOE,CFwSlD,CAAA,CAAA,SAAgByD,CAAUC,CACtB,IADsBA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,MAAAA,IAAAA,SAAAA,MAAAA,SAAAA,CAAAA,SAAAA,IAAQ,IAC9B,CAAA,MAAO,UAAU5D,CAAOE,CAAAA,CAAAA,CAAAA,CACpB,IAAAuO,aAAA,CAAqBzO,CAAMqD,CAAAA,SAAAA,CAArBZ,CAAKE,CAAAA,aAAAA,CAAPF,KAAAA,CAASE,gBAAFA,GAAAA,CACPH,CAAQC,CAAAA,CAAAA,CAAMC,UAAWC,CAAAA,CAAAA,CAAAA,CAAM+L,EAAWlM,CAASlB,EAAAA,CAAAA,CAAakB,CAAOmB,CAAAA,CAAAA,CAAUC,CACrF,CAAA,CAAA,MAAA,CAAA,CAAK8K,IAEDxO,CACAA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGc,IAAKc,CAAAA,CAAAA,CAAOkM,GAAU1N,cACrC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACf,EACA,EEjTW2N,CAAO7P,CAAAA,CAAP6P,CAAa3O,CAAOE,CAAAA,CAAAA,CAAUyH,CAEzC,CAAA,IAkPA,QAASiH,CAAAA,EAAAA,CAAkBC,GACzB,MAAO,UAAC7O,CAAOE,CAAAA,CAAAA,CAAAA,CACb,IAAA4O,aAAA,CAAqB9O,CAAMqD,CAAAA,SAAAA,CAAnBvB,gBAAFA,IAAAA,CAAQoC,CAAAA,CAAAA,aAAAA,CAAFA,EAAEA,CACR6K,CAAyD,CAAA,EAAA,CAS/D,GARA/O,CAAMZ,CAAAA,GAAAA,CAAI+E,YAAarC,CAAAA,CAAAA,CAAMoC,CAAI,CAAA,SAAC/F,EAAM2C,CACtC,CAAA,CAAA,GAAI3C,CAAKM,CAAAA,WAAAA,EAAeN,CAAKW,CAAAA,IAAAA,CAAKC,KAAK6E,KAAS,EAAA,QAAA,EAAYzF,CAAAA,CAAKW,CAAAA,IAAAA,CAAKC,IAAK6E,CAAAA,KAAAA,CAAO,KAAAoL,eAAA,CAChF,GAAMC,CAAAA,IAAAA,EAAAA,eAAAA,CAAW9Q,CAAKyF,CAAAA,KAAAA,CAAMsL,MAAqB,UAAAF,eAAA,UAAAA,eAAA,CAAA,CAAA,CAC3CG,KAAOvI,IAAKC,CAAAA,GAAAA,CAAI,CAAGD,CAAAA,IAAAA,CAAKE,GAAIsI,CAAAA,CAAAA,CAAYH,KAAUJ,CACpDM,CAAAA,CAAAA,CAAAA,IAAAA,GAASF,IAASF,EAAAA,CAAAA,CAAQ/L,IAAK,CAAA,CAAElC,MAAK3C,IAAMgR,CAAAA,CAAAA,CAAAA,IAAAA,CAAAA,IAAAA,CAAAA,CACjD,EACD,MAAA,CAAO,CAAI,EAAA,CAAA,CAEU,IAAnBJ,CAAQlN,CAAAA,MAAAA,CAAc,MAAO,CAAA,CAAA,CACjC,GAAI3B,CAAAA,CAAU,CACZ,GAAMU,CAAAA,IAAAA,CAAKZ,CAAMY,CAAAA,EAAAA,CACjB,IAAAyO,UAAA,CAAAxC,0BAAA,CAAkCkC,CAAAA,EAAAA,MAAAA,KAAlC,IAAAM,UAAA,CAAAvC,CAAA,KAAAwC,MAAA,CAAAD,UAAA,CAAArC,CAAA,IAAAvD,IAAA,EACE7I,KAAAA,YAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CADWE,IAAG3C,CAAAA,YAAAA,CAAL2C,IAAO3C,IAAIgR,CAAAA,YAAAA,CAANhR,IAAAA,CAAQgR,IAAUJ,CAAAA,YAAAA,CAAZI,IAAAA,CACpBvO,KAAG2O,aAAczO,CAAAA,IAAAA,CAAAA,IAAKgD,EAAW,CAAA0L,aAAA,CAAAA,aAAA,IAAKrR,IAAKyF,CAAAA,KAAAA,MAAOsL,OAAQC,IAE5DjP,EAAAA,CAAAA,EAAAA,OAAAA,GAAAA,EAAAA,UAAAA,CAAAA,CAAAA,CAAAA,GAAAA,WAAAA,UAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAASU,IACV,CAAA,EACD,MAAO,CAAA,CAAI,EAEf,EAyDM,QAAU6O,CAAAA,EACdzP,CAAAA,CAAAA,CAAAA,CAEA,IAAA0P,gBAAA,CAA0B1P,CAAMkN,CAAAA,MAAAA,CAAOC,KACjC/J,CADEuM,mBAAFA,KAAAA,CAASC,CAAAA,CAAAA,gBAAAA,CAAFA,MAAEA,CACTxM,CAAAA,CAAMpD,EAAMqD,SAClB,CAAA,GAAID,CAAeyM,WAAAA,CAAAA,CAAAA,CAAe,CAChC,GAAIzM,EAAIjF,IAAKW,CAAAA,IAAAA,GAAS6Q,CAAO,CAAA,MAAO,CAAExR,IAAAA,CAAMiF,EAAIjF,IAAM2C,CAAAA,GAAAA,CAAKsC,CAAItB,CAAAA,IAAAA,CAAMgO,QAAU,CAAA,CAAA,CAAA,CAAA,CAC/E,GAAI1M,CAAIjF,CAAAA,IAAAA,CAAKW,IAAS8Q,GAAAA,CAAAA,CAAQ,MAAO,CAAEzR,KAAMiF,CAAIjF,CAAAA,IAAAA,CAAM2C,GAAKsC,CAAAA,CAAAA,CAAItB,IAAMgO,CAAAA,QAAAA,CAAAA,CAAU,EACjF,EACD,GAAQrN,CAAAA,CAAAA,CAAUW,CAClB,CADMX,KAAEA,CACR,IAAK,GAAIvD,CAAAA,IAAQuD,CAAAA,CAAAA,CAAMvD,MAAOA,IAAQ,CAAA,CAAA,CAAGA,MAAS,CAChD,CAAA,GAAIuD,CAAMtE,CAAAA,IAAAA,CAAKe,IAAOJ,CAAAA,CAAAA,IAAAA,GAAS8Q,EAC7B,MAAO,CAAEzR,IAAMsE,CAAAA,CAAAA,CAAMtE,IAAKe,CAAAA,IAAAA,CAAAA,CAAQ4B,IAAK2B,CAAMnD,CAAAA,MAAAA,CAAOJ,IAAQ4Q,CAAAA,CAAAA,QAAAA,CAAAA,CAAU,CAG1E,CAAA,CAAA,MAAO,KACT,EAmHM,QAAUC,CAAAA,EACd/P,CAAAA,CAAAA,CAAAA,CAEA,GAAMoD,CAAAA,CAAAA,CAAMpD,EAAMqD,SAClB,CAAA,MAAID,CAAAA,CAAeyM,WAAAA,CAAAA,CAAAA,EAAiBzM,CAAIjF,CAAAA,IAAAA,CAAKW,OAASkB,CAAMkN,CAAAA,MAAAA,CAAOC,KAAM6C,CAAAA,KAAAA,CAChE,CAAE7R,IAAAA,CAAMiF,EAAIjF,IAAM2C,CAAAA,GAAAA,CAAKsC,CAAItB,CAAAA,IAAAA,CAAAA,CAE7B,IACT,EA4IM,QAAUmO,CAAAA,EACdjQ,CAAAA,CAAAA,CACAkQ,CACAtM,CAAsB,KAAAuM,QAAA,CAAAC,QAAA,CAAAC,aAAA,CAAAC,QAAA,CAAAC,QAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAC,SAAA,CAAAC,WAAA,CAAAC,YAAA,CAAAC,WAAA,IAAtBjN,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,MAAAA,IAAAA,SAAAA,MAAAA,SAAAA,CAAAA,SAAAA,IAAsB,CAAA,CAAA,IAEdsJ,CAAAA,CAAAA,CAAWlN,CACbmN,CADAD,MAAEA,CACAC,CAAKxH,CAAYuH,CACzB,CADMC,KAAAA,CAASxH,EAAUuH,CACzB,CADavH,KAAAA,CACb,OAAQuK,CACN,EAAA,IAAK,MACH,CAAA,MAAO3L,CAAAA,EAAWoB,CAAMmL,CAAAA,IAAAA,CAAAA,CAC1B,IAAK,QAAA,CACH,MAAOvM,CAAAA,CAAAA,CAAWoB,EAAMoL,MAC1B,CAAA,CAAA,IAAK,WACH,CAAA,MAAOxM,CAAAA,CAAWoB,CAAAA,CAAAA,CAAMqL,WAC1B,IAAK,QAAA,CACH,MAAOzM,CAAAA,CAAAA,CAAWoB,CAAMsL,CAAAA,MAAAA,CAAAA,CAC1B,IAAK,WACH,CAAA,MAAO1M,CAAAA,CAAWoB,CAAAA,CAAAA,CAAMuL,SAC1B,CAAA,CAAA,IAAK,cACH,MAAO3M,CAAAA,CAAAA,CAAWoB,CAAMwL,CAAAA,WAAAA,CAAAA,CAC1B,IAAK,MAAA,CACH,MAAO5M,CAAAA,CAAWoB,CAAAA,CAAAA,CAAMyL,IAC1B,CAAA,CAAA,IAAK,WACH,CAAA,MAAO1N,CAAAA,EAAayJ,CAAMkE,CAAAA,SAAAA,CAAAA,CAC5B,IAAK,SAAA,CACH,MAAO3N,CAAAA,CAAAA,CAAayJ,EAAMmE,OAAS,CAAA,CAAEC,KAAO3N,EAAAA,QAAAA,CAAAA,CAAAA,CAAM2N,KAAS,UAAApB,QAAA,UAAAA,QAAA,CAAA,CAAA,CAAA,CAAA,CAC7D,IAAK,YACH,CAAA,MAAO5B,CAAAA,EAAiBpB,CAAAA,CAAAA,CAAMqE,UAChC,CAAA,CAAA,IAAK,QACH,MAlnBgBC,CAAAA,CAAAA,EAAAA,QAAAA,CAknBI7N,CAAM6N,CAAAA,KAAAA,UAAAA,QAAAA,UAAAA,QAAAA,CAAS,IAjnBhC,CAAA,SAACzR,EAAOE,CACb,CAAA,CAAA,IAAAwR,aAAA,CAAqB1R,EAAMqD,SACrB0L,CADEjN,CAAAA,CAAAA,aAAAA,CAAFA,IAAEA,CAAMoC,CAAAA,CAAAA,aAAAA,CAAFA,EAAEA,CACR6K,CAAAA,CAAqE,EAO3E,CAAA,GANA/O,CAAMZ,CAAAA,GAAAA,CAAI+E,aAAarC,CAAMoC,CAAAA,CAAAA,CAAI,SAAC/F,CAAAA,CAAM2C,CAClC3C,QAAAA,CAAAA,CAAAA,CAAKM,aAAeN,CAAKW,CAAAA,IAAAA,CAAKC,IAAK6E,CAAAA,KAAAA,EAAS,OAAWzF,EAAAA,CAAAA,CAAAA,CAAKW,KAAKC,IAAK6E,CAAAA,KAAAA,EACxEmL,CAAQ/L,CAAAA,IAAAA,CAAK,CAAElC,GAAAA,CAAAA,CAAAA,CAAK3C,UAEf,CAEc,EAAA,CAAA,CAAA,CAAA,GAAnB4Q,CAAQlN,CAAAA,MAAAA,CAAc,MAAO,CAAA,CAAA,CACjC,GAAI3B,CAAU,CAAA,CACZ,GAAMU,CAAAA,IAAAA,CAAKZ,CAAMY,CAAAA,EAAAA,CACjB,IAAA+Q,UAAA,CAAA9E,0BAAA,CAA4BkC,CAAAA,EAAAA,MAAAA,KAA5B,IAAA4C,UAAA,CAAA7E,CAAA,KAAA8E,MAAA,CAAAD,UAAA,CAAA3E,CAAA,IAAAvD,IAAA,EACE7I,KAAAA,YAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CADWE,IAAG3C,CAAAA,YAAAA,CAAL2C,GAAAA,CAAO3C,IAAU4Q,CAAAA,YAAAA,CAAZ5Q,IAAAA,CACdyC,KAAG2O,aAAczO,CAAAA,IAAAA,CAAAA,IAAKgD,EAAW,CAAA0L,aAAA,CAAAA,aAAA,IAAKrR,IAAKyF,CAAAA,KAAAA,MAAO6N,YAEpDvR,OAAAA,GAAAA,EAAAA,UAAAA,CAAAA,CAAAA,CAAAA,GAAAA,WAAAA,UAAAA,CAAAA,CAAAA,IAAAA,CAASU,CAAAA,IAAAA,CACV,EACD,MAAA,CAAO,CAAI,EAAA,CAimBX,IAAK,YACH,CAAA,MA7lBiBiR,CAAAA,CA6lBIjO,EAAAA,aAAAA,CAAAA,CAAAA,CAAMiO,UAAc,UAAAxB,aAAA,UAAAA,aAAA,CAAA,IAAA,CA5lBtC,SAACrQ,CAAOE,CAAAA,CAAAA,CAAAA,CACb,IAAA4R,aAAA,CAAqB9R,CAAMqD,CAAAA,SAAAA,CAAnBvB,CAAIoC,CAAAA,aAAAA,CAANpC,IAAAA,CAAQoC,gBAAFA,EAAAA,CACN6K,CAA2C,CAAA,EAAA,CAOjD,GANA/O,CAAAA,CAAMZ,IAAI+E,YAAarC,CAAAA,CAAAA,CAAMoC,CAAI,CAAA,SAAC/F,CAAM2C,CAAAA,CAAAA,QAClC3C,CAAAA,EAAKM,WAAeN,EAAAA,CAAAA,CAAKW,IAAKC,CAAAA,IAAAA,CAAK6E,KAAS,EAAA,YAAA,EAAgBzF,CAAAA,EAAKW,IAAKC,CAAAA,IAAAA,CAAK6E,KAC7EmL,EAAAA,CAAAA,CAAQ/L,IAAK,CAAA,CAAElC,MAAK3C,IAEf,CAAA4T,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAEc,CAAnBhD,GAAAA,CAAAA,CAAQlN,MAAc,CAAA,MAAA,CAAO,EACjC,GAAI3B,CAAAA,CAAU,CACZ,GAAMU,CAAAA,IAAKZ,CAAAA,CAAAA,CAAMY,GACjB,IAAAoR,UAAA,CAAAnF,0BAAA,CAA4BkC,cAA5B,IAAAiD,UAAA,CAAAlF,CAAA,KAAAmF,MAAA,CAAAD,UAAA,CAAAhF,CAAA,IAAAvD,IAAA,EACE7I,KAAAA,YAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CADWE,IAAAA,CAAAA,YAAAA,CAAFA,GAAEA,CAAK3C,IAAAA,CAAAA,YAAAA,CAAFA,IAAEA,CAChByC,IAAG2O,CAAAA,aAAAA,CAAczO,IAAKgD,CAAAA,IAAAA,EAAAA,CAAAA,aAAAA,CAAAA,aAAAA,IAAgB3F,IAAAA,CAAKyF,WAAOiO,UAEpD3R,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,OAAAA,GAAAA,EAAAA,UAAAA,CAAAA,CAAAA,CAAAA,GAAAA,WAAAA,UAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAASU,IACV,CAAA,EACD,MAAO,CAAA,CAAI,GA4kBX,IAAK,YAAA,CACH,MAAOkN,CAAAA,EAAAA,CAAWX,CAAMG,CAAAA,WAAAA,CAAaH,EAAMU,SAC7C,CAAA,CAAA,IAAK,aACH,CAAA,MAAOC,CAAAA,EAAWX,CAAAA,CAAAA,CAAME,aAAcF,CAAMU,CAAAA,SAAAA,CAAAA,CAC9C,IAAK,UAAA,CACH,MAAOC,CAAAA,EAAAA,CAAWX,EAAMK,SAAWL,CAAAA,CAAAA,CAAMS,SAC3C,CAAA,CAAA,IAAK,QAEH,CAAA,MAAOtG,CAAAA,EACL4K,CAAa/E,CAAAA,CAAAA,CAAMS,SACnBsE,CAAAA,CAAAA,CAAAA,CAAa/E,CAAMU,CAAAA,SAAAA,CAAAA,CACnBe,GAAkB,CAEtB,CAAA,CAAA,CAAA,IAAK,SAEH,CAAA,MAAOtH,CAAAA,CACL2G,CAAAA,CAAAA,CAAad,EAAMS,SACnBK,CAAAA,CAAAA,CAAAA,CAAad,CAAMU,CAAAA,SAAAA,CAAAA,CACnBe,EAAmB,CAAA,CAAA,CAAA,CAAA,CACnB9L,GAEJ,IAAK,cAAA,CACH,MAnYgBqP,CAAAA,CAAAA,EAAAA,QAAAA,CAmYIvO,CAAMuO,CAAAA,KAAAA,UAAAA,QAAAA,UAAAA,QAAAA,CAAS,KAlYhC,SAACnS,CAAAA,CAAOE,CACb,CAAA,CAAA,GAAM8N,CAAAA,CAAaf,CAAAA,EAAAA,CAAejN,GAClC,GAAKgO,CAAAA,CAAAA,CAAY,MAAO,CAAA,CAAA,CACxB,GAAIpL,CAAAA,CAAAA,CAASoL,EAGPvL,GAAEA,CAAAA,CAAUzC,CAAAA,CAAAA,CAAMqD,SAClBkK,CADA9K,KAAAA,CACA8K,CAAAA,CAAUvN,EAAMkN,MAAOC,CAAAA,KAAAA,CAAME,YACnC,CAAA,IAAK,GAAInO,CAAAA,IAAAA,CAAQ,EAAGA,IAASuD,EAAAA,CAAAA,CAAMvD,KAAOA,CAAAA,IAAAA,EAAS,CAAG,CAAA,CACpD,GAAMf,CAAAA,IAAOsE,CAAAA,CAAAA,CAAMtE,IAAKe,CAAAA,IAAAA,CAAAA,CACxB,GACEf,IAAAA,CAAKW,OAASyO,CACb4E,GAAAA,CAAAA,GAAUC,CAAoBjU,EAAAA,IAAAA,CAAKyF,KAAMuO,CAAAA,KAAAA,GAAUC,GACpD,CACAxP,CAAAA,CAAS,CAAEzE,IAAAA,CAAAA,IAAAA,CAAM2C,GAAK2B,CAAAA,CAAAA,CAAMnD,OAAOJ,IAAQA,CAAAA,CAAAA,KAAAA,CAAAA,IAAAA,CAAAA,CAC3C,MACD,CACF,CASD,MARIgB,CAAAA,GACFA,CACEF,CAAAA,CAAAA,CAAMY,EAAG2O,CAAAA,aAAAA,CAAc3M,CAAO9B,CAAAA,GAAAA,CAAAA,IAAKgD,kCAC9BlB,CAAAA,CAAOzE,IAAKyF,CAAAA,KAAAA,MACfuO,KAIC,CAAAE,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAI,GAyWX,IAAK,cAAA,CACH,MArWgB5O,CAAAA,CAAAA,EAAAA,QAAAA,CAqWIG,CAAMH,CAAAA,KAAAA,UAAAA,QAAAA,UAAAA,QAAAA,CAAS,EApWhC,SAACzD,CAAAA,CAAOE,CACb,CAAA,CAAA,GAAM8N,CAAAA,CAAaf,CAAAA,EAAAA,CAAejN,GAClC,MAAKgO,EAAAA,CAAAA,CAAAA,EAAcA,CAAW7P,CAAAA,IAAAA,CAAKW,IAASkB,GAAAA,CAAAA,CAAMkN,OAAOC,KAAME,CAAAA,YAAAA,GAG3DnN,GACFA,CACEF,CAAAA,CAAAA,CAAMY,GAAG2O,aAAcvB,CAAAA,CAAAA,CAAWlN,GAAKgD,CAAAA,IAAAA,EAAAA,CAAAA,aAAAA,CAAAA,aAAAA,IAClCkK,CAAAA,CAAW7P,KAAKyF,KACnB0O,MAAAA,KAAAA,CAAO1L,IAAKC,CAAAA,GAAAA,CAAI,CAAGD,CAAAA,IAAAA,CAAK2L,MAAM9O,CAI7B,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,EAwVX,CAAA,IAAK,oBACH,CAAA,MA3TN,UAA4ByJ,CAC1B,CAAA,CAAA,MAAO,UAAClN,CAAAA,CAAOE,CACb,CAAA,CAAA,GAAMsS,CAAAA,EAAO/C,EAAkBzP,CAAAA,CAAAA,CAAAA,CAC/B,GAAKwS,CAAAA,CAAAA,CAAM,MAAO,CAAA,CAAA,CAClB,GAAItS,CAAU,CAAA,CACZ,GAAMU,CAAAA,IAAAA,CAAKZ,CAAMY,CAAAA,EAAAA,CACjB,GAAI4R,CAAK1C,CAAAA,QAAAA,CAAU,CACjB,IAAA2C,aAAA,CAAmCD,CAAAA,CAAKrU,KAAKyF,KACvC+L,CADE+C,IAAAA,CAAAA,aAAAA,CAAFA,GAAEA,CAAKC,IAAGC,CAAAA,aAAAA,CAALD,IAAOC,IAAKC,CAAAA,aAAAA,CAAPD,KAAAA,CAASC,GAAUL,CAAAA,aAAAA,CAAZK,KAAAA,CACjBlD,GAAAA,CAAQzC,CAAOC,CAAAA,KAAAA,CAAMwC,KAAM5N,CAAAA,MAAAA,CAAO,CAAE2Q,GAAKC,CAAAA,IAAAA,CAAAA,GAAAA,CAAAA,IAAAA,CAAKC,KAAOC,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAC3DjS,IAAGyN,CAAAA,WAAAA,CACDmE,EAAK1R,GACL0R,CAAAA,CAAAA,CAAK1R,GAAM0R,CAAAA,CAAAA,CAAKrU,IAAK4C,CAAAA,QAAAA,CACrBmM,EAAOC,KAAMkE,CAAAA,SAAAA,CAAUtP,MAAO,CAAA,IAAA,CAAM4N,GAEtC/O,CAAAA,CAAAA,CAAAA,IAAAA,CAAG2C,aAAasM,CAAc9N,CAAAA,MAAAA,CAAOnB,IAAGxB,CAAAA,GAAAA,CAAKoT,CAAK1R,CAAAA,GAAAA,CAAM,GACzD,EAAM,IAAA,CACL,IAAAgS,cAAA,CAAmCN,CAAKrU,CAAAA,IAAAA,CAAKyF,MAArC8O,IAAGC,CAAAA,cAAAA,CAALD,GAAAA,CAAOC,mBAAFA,GAAAA,CAAOC,GAAAA,CAAAA,cAAAA,CAAFA,KAAEA,CAAOC,GAAAA,CAAAA,cAAAA,CAAFA,KAAEA,CACnBE,GAAUJ,CAAAA,GAAAA,CAAMzF,CAAOhG,CAAAA,IAAAA,CAAKyL,GAAO,CAAA,CAAA,IAAA,CACnC/C,IAAS1C,CAAOC,CAAAA,KAAAA,CAAMyC,MAAO7N,CAAAA,MAAAA,CACjC,CAAE2Q,GAAAA,CAAAA,IAAAA,CAAKC,QAAKC,KAAOC,CAAAA,GAAAA,CAAAA,KAAAA,CAAAA,GAAAA,CAAOpB,KAAO,CAAA,IAAA,CAAA,CACjCsB,GAIInU,CAAAA,CAAAA,GAAAA,CAAOoB,EAAMZ,GAAIC,CAAAA,OAAAA,CAAQmT,CAAK1R,CAAAA,GAAAA,CAAAA,CAC9BjC,EAASD,CAAAA,GAAAA,CAAKC,OACdmU,EAAqC,CAAA,CAAA,GAAtBnU,EAAOH,CAAAA,UAAAA,EAAyC,WAArBG,GAAAA,EAAAA,CAAOC,KAAKoR,IACtDpO,CAAAA,EAAAA,CAAOkR,EAAepU,CAAAA,GAAAA,CAAKU,MAAWkT,CAAAA,CAAAA,CAAAA,CAAAA,CAAK1R,IAC3CoD,EAAK8O,CAAAA,EAAAA,CAAepU,GAAKY,CAAAA,KAAAA,CAAAA,CAAAA,CAAUgT,CAAK1R,CAAAA,GAAAA,CAAM0R,EAAKrU,IAAK4C,CAAAA,QAAAA,CAC9DH,IAAGyN,CAAAA,WAAAA,CAAYvM,EAAMoC,CAAAA,EAAAA,CAAI0L,KAEzBhP,IAAG2C,CAAAA,YAAAA,CAAaC,CAAczB,CAAAA,MAAAA,CAAOnB,IAAGxB,CAAAA,GAAAA,CAAK0C,GAAO,CAAI8N,CAAAA,GAAAA,CAAOnP,OAAQC,CAAAA,IAAAA,CAAAA,CACxE,EACDR,CAAAA,CAASU,KAAGI,cACb,CAAA,CAAA,CAAA,EACD,MAAO,CAAA,CAAI,EAEf,EAsRaiS,CAAmB/F,CAC5B,CAAA,CAAA,IAAK,eACH,CAAA,MAlRN,UAAuBA,CAAAA,CAAgBuE,GACrC,MAAO,UAACzR,CAAOE,CAAAA,CAAAA,CAAAA,CACb,GAAMsS,CAAAA,CAAAA,CAAO/C,GAAkBzP,CAC/B,CAAA,CAAA,GAAA,CAAKwS,CAAM,CAAA,MAAA,CAAO,CAClB,CAAA,GAAMU,CAAAA,EACM,MAAVzB,GAAAA,CAAAA,EAA8B,QAAVA,GAAAA,CAAAA,EAAgC,OAAVA,GAAAA,CAAAA,CAAoBA,EAAQ,IACxE,CAAA,GAAIvR,CAAU,CAAA,CACZ,GAAMU,CAAAA,IAAAA,CAAKZ,EAAMY,EACjB,CAAA,GAAI4R,CAAK1C,CAAAA,QAAAA,CACPlP,IAAG2O,CAAAA,aAAAA,CAAciD,EAAK1R,GAAKgD,CAAAA,IAAAA,EAAAA,CAAAA,aAAAA,CAAAA,aAAAA,IAAgB0O,CAAAA,CAAKrU,IAAKyF,CAAAA,KAAAA,MAAO6N,MAAOyB,CAC/DlT,EAAAA,CAAAA,CAAAA,CAAAA,CAAMqD,SAAqBwM,WAAAA,CAAAA,CAAAA,EAC7BjP,IAAG2C,CAAAA,YAAAA,CAAasM,EAAc9N,MAAOnB,CAAAA,IAAAA,CAAGxB,GAAKoT,CAAAA,CAAAA,CAAK1R,GAE/C,CAAA,CAAA,CAAA,IAAA,CACL,IAAAqS,aAAA,CAAmCX,CAAAA,CAAKrU,IAAKyF,CAAAA,KAAAA,CAArC8O,IAAAA,CAAAA,aAAAA,CAAFA,GAAEA,CAAKC,GAAAA,CAAAA,aAAAA,CAAFA,GAAEA,CAAKC,GAAAA,CAAAA,aAAAA,CAAFA,KAAEA,CAAOC,GAAUL,CAAAA,aAAAA,CAAZK,MACjBjD,GAAS1C,CAAAA,CAAAA,CAAOC,MAAMyC,MAAO7N,CAAAA,MAAAA,CAAO,CAAE2Q,GAAAA,CAAAA,IAAAA,CAAKC,GAAKC,CAAAA,GAAAA,CAAAA,KAAAA,CAAAA,GAAAA,CAAOC,UAAOpB,KAAOyB,CAAAA,CAAAA,CAAAA,CAAAA,CACrEtU,GAAOoB,CAAAA,CAAAA,CAAMZ,GAAIC,CAAAA,OAAAA,CAAQmT,EAAK1R,GAC9BjC,CAAAA,CAAAA,GAAAA,CAASD,GAAKC,CAAAA,MAAAA,CACdmU,GAAqC,CAAA,CAAA,GAAtBnU,IAAOH,UAAyC,EAAA,WAAA,GAArBG,GAAOC,CAAAA,IAAAA,CAAKoR,IACtDpO,CAAAA,GAAAA,CAAOkR,IAAepU,GAAKU,CAAAA,MAAAA,CAAAA,CAAAA,CAAWkT,CAAK1R,CAAAA,GAAAA,CAC3CoD,GAAK8O,CAAAA,GAAAA,CAAepU,IAAKY,KAAUgT,CAAAA,CAAAA,CAAAA,CAAAA,CAAK1R,GAAM0R,CAAAA,CAAAA,CAAKrU,IAAK4C,CAAAA,QAAAA,CAC9DH,KAAGyN,WAAYvM,CAAAA,GAAAA,CAAMoC,GAAI0L,CAAAA,GAAAA,CAAAA,CACzBhP,IAAG2C,CAAAA,YAAAA,CAAasM,EAAc9N,MAAOnB,CAAAA,IAAAA,CAAGxB,GAAK0C,CAAAA,GAAAA,CAAAA,CAC9C,EACD5B,CAAAA,CAASU,KAAGI,cACb,CAAA,CAAA,CAAA,EACD,MAAO,CAAA,CAAI,EAEf,EAsPaoS,CAAclG,CAAStJ,EAAAA,SAAAA,CAAAA,CAAAA,CAAM6N,KAA2B,UAAAjB,SAAA,UAAAA,SAAA,CAAA,IAAA,CAAA,CACjE,IAAK,eAAA,CACH,MArPiBqC,CAAAA,CAqPIjP,EAAAA,QAAAA,CAAAA,CAAAA,CAAMiP,KAAS,UAAApC,QAAA,UAAAA,QAAA,CAAA,IAAA,CApPjC,SAACzQ,CAAAA,CAAOE,GACb,GAAMsS,CAAAA,CAAAA,CAAO/C,EAAkBzP,CAAAA,CAAAA,CAAAA,CAC/B,GAAKwS,CAAAA,CAAAA,CAAM,OAAO,CAClB,CAAA,GAAItS,CAAU,CAAA,CACZ,GAAMU,CAAAA,IAAAA,CAAKZ,EAAMY,EAAG2O,CAAAA,aAAAA,CAAciD,CAAK1R,CAAAA,GAAAA,CAAAA,IAAKgD,EAAW,CAAA0L,aAAA,CAAAA,aAAA,IAClDgD,EAAKrU,IAAKyF,CAAAA,KAAAA,MACbiP,KAAOA,CAAAA,CAAAA,EAASA,CAAQ,CAAA,CAAA,CAAIjM,KAAK2L,KAAMM,CAAAA,CAAAA,CAAAA,CAAS,IAI9C7S,EAAAA,CAAAA,CAAAA,CAAAA,CAAMqD,SAAqBwM,WAAAA,CAAAA,CAAAA,EAC7BjP,KAAG2C,YAAasM,CAAAA,CAAAA,CAAc9N,MAAOnB,CAAAA,IAAAA,CAAGxB,GAAKoT,CAAAA,CAAAA,CAAK1R,MAEpDZ,CAASU,CAAAA,IAAAA,CACV,EACD,MAAA,CAAO,CAAI,EAAA,CAsOX,IAAK,aACH,CAAA,MAjOG,UAACZ,CAAAA,CAAOE,CACb,CAAA,CAAA,GAAMsS,CAAAA,EAAO/C,EAAkBzP,CAAAA,CAAAA,CAAAA,CAC/B,MAAKwS,CAAAA,CAAAA,CAAAA,GACDtS,CACFA,EAAAA,CAAAA,CACEF,EAAMY,EAAGC,UAAAA,CAAO2R,CAAK1R,CAAAA,GAAAA,CAAK0R,CAAK1R,CAAAA,GAAAA,CAAM0R,EAAKrU,IAAK4C,CAAAA,QAAAA,CAAAA,CAAUC,cAGtD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,EA0NX,CAAA,IAAK,gBACH,MA3MN,UAAuByQ,CACrB,CAAA,CAAA,MAAO,UAACzR,CAAAA,CAAOE,GACb,GAAMsS,CAAAA,CAAAA,CAAOzC,EAAkB/P,CAAAA,CAAAA,CAAAA,CAC/B,GAAKwS,CAAAA,CAAAA,CAAM,OAAO,CAClB,CAAA,GAAMU,CAAAA,CACM,CAAA,MAAA,GAAVzB,CAA8B,EAAA,QAAA,GAAVA,GAAgC,OAAVA,GAAAA,CAAAA,CAAoBA,CAAQ,CAAA,IAAA,CACxE,GAAIvR,CAAAA,CAAU,CACZ,GAAMU,CAAAA,IAAAA,CAAKZ,EAAMY,EAAG2O,CAAAA,aAAAA,CAAciD,EAAK1R,GAAKgD,CAAAA,IAAAA,EAAAA,CAAAA,aAAAA,CAAAA,aAAAA,IACvC0O,CAAAA,CAAKrU,IAAKyF,CAAAA,KAAAA,MACb6N,MAAOyB,CAITtS,EAAAA,CAAAA,CAAAA,IAAAA,CAAG2C,YAAasM,CAAAA,CAAAA,CAAc9N,MAAOnB,CAAAA,IAAAA,CAAGxB,IAAKoT,CAAK1R,CAAAA,GAAAA,CAAAA,CAAAA,CAClDZ,CAASU,CAAAA,IAAAA,CAAGI,cACb,CAAA,CAAA,CAAA,EACD,OAAO,CAAI,EAEf,EAyLaqS,EAAAA,SAAAA,CAAezP,CAAM6N,CAAAA,KAAAA,UAAAA,SAAAA,UAAAA,SAAAA,CAA2B,MACzD,IAAK,aAAA,CACH,MAvLG,UAACzR,CAAOE,CAAAA,CAAAA,CAAAA,CACb,GAAMsS,CAAAA,CAAOzC,CAAAA,EAAAA,CAAkB/P,CAC/B,CAAA,CAAA,MAAA,CAAA,CAAKwS,CACDtS,GAAAA,CAAAA,EACFA,EAASF,CAAMY,CAAAA,EAAAA,UAAU4R,CAAAA,CAAAA,CAAK1R,GAAK0R,CAAAA,CAAAA,CAAK1R,IAAM0R,CAAKrU,CAAAA,IAAAA,CAAK4C,QAAUC,CAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAE7D,CAAI,CAAA,EAAA,CAkLX,IAAK,MACH,CAAA,MA3xBN,UAAiBwD,CAAAA,CAAoBZ,CACnC,CAAA,CAAA,MAAO,UAAC5D,CAAOE,CAAAA,CAAAA,CAAAA,CACb,GAAK0D,CAAAA,CAAAA,CAAM0P,IAAM,CAAA,MAAA,CAAO,EACxB,IAAAC,aAAA,CAAmCvT,CAAMqD,CAAAA,SAAAA,CAAjCzB,CAAKa,CAAAA,aAAAA,CAAPb,KAAAA,CAASa,CAAKX,CAAAA,aAAAA,CAAPW,KAAAA,CAASX,gBAAFA,IAAAA,CAAQoC,CAAAA,CAAAA,aAAAA,CAAFA,EAAEA,CAC5B,GAAI1B,CAAAA,CAAAA,CAAQ,CAAEV,IAAMoC,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CACpB,GAAItC,CAAAA,CAAO,CACT,GAAM4R,CAAAA,KAAWrH,EAAa1J,CAAAA,CAAAA,CAAO+B,CACrC,CAAA,CAAA,GAAA,CAAKgP,IAAU,CAAA,MAAA,CAAO,EACtBhR,CAAQgR,CAAAA,IACT,EACD,GAAItT,CAAU,CAAA,KAAAuT,QAAA,CAAAC,SAAA,CACZ,GAAM9S,CAAAA,IAAKZ,CAAAA,CAAAA,CAAMY,EACjBA,CAAAA,IAAAA,CAAGyG,UAAW7E,CAAAA,CAAAA,CAAMV,KAAMU,CAAM0B,CAAAA,EAAAA,CAAIM,CACpC5D,CAAAA,CAAAA,IAAAA,CAAGwG,OACD5E,CAAAA,CAAAA,CAAMV,KACNU,CAAM0B,CAAAA,EAAAA,CACNM,CAASzC,CAAAA,MAAAA,CAAO,CACduR,IAAAA,CAAM1P,EAAM0P,IACZV,CAAAA,KAAAA,EAAAA,QAAAA,CAAOhP,CAAMgP,CAAAA,KAAAA,UAAAA,QAAAA,UAAAA,QAAAA,CAAS,IACtBhQ,CAAAA,MAAAA,EAAAA,SAAAA,CAAQgB,EAAMhB,MAAU,UAAA8Q,SAAA,UAAAA,SAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAG5BxT,CAASU,CAAAA,IAAAA,CAAGI,cACb,CAAA,CAAA,CAAA,EACD,OAAO,CAAI,EAEf,EAiwBa2S,CAAQhO,CAAMiO,CAAAA,IAAAA,CAAMhQ,GAC7B,IAAK,QAAA,CACH,MAhwBaY,CAAAA,CAAAA,CAgwBImB,CAAMiO,CAAAA,IAAAA,CA/vBpB,SAAC5T,CAAOE,CAAAA,CAAAA,CAAAA,CACb,IAAA2T,aAAA,CAAmC7T,CAAMqD,CAAAA,SAAAA,CAAjCzB,CAAKa,CAAAA,aAAAA,CAAPb,KAAAA,CAASa,gBAAFA,KAAAA,CAASX,CAAAA,CAAAA,aAAAA,CAAFA,IAAEA,CAAMoC,CAAAA,CAAAA,aAAAA,CAAFA,EAAEA,CAC5B,GAAI1B,CAAAA,CAAQ,CAAA,CAAEV,IAAMoC,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CACpB,GAAItC,CAAAA,CAAO,CACT,GAAM4R,CAAAA,IAAAA,CAAWrH,EAAa1J,CAAAA,CAAAA,CAAO+B,CACrC,CAAA,CAAA,GAAA,CAAKgP,KAAU,MAAO,CAAA,CAAA,CACtBhR,CAAQgR,CAAAA,IACT,EAAM,IAAA,IAAA,CAAKxT,EAAMZ,GAAIkH,CAAAA,YAAAA,CAAaxE,CAAMoC,CAAAA,CAAAA,CAAIM,CAC3C,CAAA,CAAA,MAAA,CAAO,EAKT,MAHItE,CAAAA,CAAAA,EACFA,CAASF,CAAAA,CAAAA,CAAMY,EAAGyG,CAAAA,UAAAA,CAAW7E,EAAMV,IAAMU,CAAAA,CAAAA,CAAM0B,EAAIM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAE9C,CAAI,EAAA,CAmvBX,IAAK,gBACH,CAAA,MAjnBN,UAAwB0I,CAAAA,CAAgBtJ,CACtC,CAAA,CAAA,MAAO,UAAC5D,CAAOE,CAAAA,CAAAA,CAAAA,KAAAA,KAAAA,CACb,GAAM4T,CAAAA,CAAAA,EAAAA,KAAAA,CAAKlQ,CAAMkQ,CAAAA,EAAAA,UAAAA,KAAAA,iBAANlQ,KAAAA,CAAUmQ,OACrB,GAAKD,CAAAA,CAAAA,CAAI,MAAO,CAAA,CAAA,CAChB,GAAI5T,CAAAA,CAAU,CACZ,GAAM8T,CAAAA,IAAAA,CAAW9G,CAAOC,CAAAA,KAAAA,CAAM6G,QAASjS,CAAAA,MAAAA,CAAO,CAAE+R,EAChD5T,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGqT,oBAAqBD,CAAAA,IAAAA,CAAAA,CAAU,GAAOhT,cACzD,CAAA,CAAA,CAAA,EACD,MAAO,CAAA,CAAI,EAEf,EAumBakT,CAAehH,CAAQtJ,CAAAA,CAAAA,CAAAA,CAChC,IAAK,WAAA,CACH,MAAO8I,CAAAA,EAAAA,CAAY/G,EAAMwO,UAAYvQ,CAAAA,CAAAA,CAAMwQ,KAAQ,CAAA,CAAEA,KAAOxQ,CAAAA,CAAAA,CAAMwQ,OAAU,IAC9E,CAAA,CAAA,IAAK,SACH,CAAA,MAAO1H,CAAAA,EAAY/G,CAAAA,CAAAA,CAAM0O,SAAUzQ,CAAMwQ,CAAAA,KAAAA,CAAQ,CAAEA,KAAAA,CAAOxQ,CAAMwQ,CAAAA,KAAAA,CAAAA,CAAU,MAC5E,IAAK,YAAA,CACH,MAAO1H,CAAAA,EAAAA,CAAY/G,CAAM2O,CAAAA,WAAAA,CAAa1Q,EAAM2Q,MAAS,CAAA,CAAEA,MAAQ3Q,CAAAA,CAAAA,CAAM2Q,MAAW,CAAA,CAAA,IAAA,CAAA,CAClF,IAAK,UACH,CAAA,MAAO7H,CAAAA,EAAY/G,CAAAA,CAAAA,CAAM6O,SAAW5Q,CAAAA,CAAAA,CAAMlD,KAAO,CAAEA,IAAAA,CAAMkD,CAAMlD,CAAAA,IAAAA,CAAAA,CAAS,IAC1E,CAAA,CAAA,IAAK,iBACH,MAzlBwB5B,CAAAA,CAAAA,CAylBIqO,CAAMsH,CAAAA,eAAAA,CAxlB/B,SAACzU,CAAAA,CAAOE,SACTA,CAAAA,CACFA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGqT,oBAAqBnV,CAAAA,CAAAA,CAAKiD,UAAUf,cAEjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAqlBP,IAAK,iBAAA,CACH,MA7LG,UAAChB,EAAOE,CACb,CAAA,CAAA,IAAAwU,aAAA,CAA4B1U,CAAAA,CAAMqD,SAClC,CADQvB,CAAAA,CAAAA,aAAAA,CAAFA,IAAEA,CAAMoC,CAAAA,CAAAA,aAAAA,CAAFA,EAAEA,CAAItC,CAAU5B,CAAAA,aAAAA,CAAZ4B,MAChB,GAAI1B,CAAU,CAAA,CACZ,GAAMU,CAAAA,IAAKZ,CAAAA,CAAAA,CAAMY,EACZgB,CAAAA,CAAAA,EAAOhB,IAAGyG,CAAAA,UAAAA,CAAWvF,EAAMoC,CAAI,CAAA,IAAA,CAAA,CACpCtD,IAAG+T,CAAAA,cAAAA,CAAe,EAElB3U,CAAAA,CAAAA,CAAAA,CAAMZ,IAAI+E,YAAarC,CAAAA,CAAAA,CAAMoC,CAAI,CAAA,SAAC/F,CAAM2C,CAAAA,CAAAA,QAEpC3C,CAAAA,EAAKM,WACLN,EAAAA,CAAAA,CAAKW,IAAKC,CAAAA,IAAAA,CAAK6E,KACf,EAAA,OAAA,EAAWzF,CAAAA,EAAKW,IAAKC,CAAAA,IAAAA,CAAK6E,KACzBzF,GAAAA,CAAAA,CAAKyF,KAAM6N,CAAAA,KAAAA,EAAStT,EAAKyF,KAAMiO,CAAAA,UAAAA,CAAAA,EAEhCjR,IAAG2O,CAAAA,aAAAA,CAAczO,CAAKgD,CAAAA,IAAAA,EAAAA,CAAAA,aAAAA,CAAAA,aAAAA,IAAgB3F,CAAKyF,CAAAA,KAAAA,MAAO6N,KAAO,CAAA,IAAA,CAAMI,UAAY,CAAA,IAAA,EAAA,CAAA,CAAA,CAEtE,KAET3R,CAASU,CAAAA,IAAAA,CACV,EACD,MAAA,CAAO,CAAI,EAAA,CA0KX,IAAK,MACH,CAAA,MAAOsK,CAAAA,EACT,CAAA,IAAK,MACH,CAAA,MAAOrB,CAAAA,GACT,IAAK,WAAA,CACH,MAvlBN,UAAyBqD,CAAgB0H,CAAAA,CAAAA,CAAAA,CACvC,MAAO,UAAC5U,CAAAA,CAAOE,CAAUyH,CAAAA,CAAAA,CAAAA,CACvB,GAAQlF,CAAAA,EAAUzC,CAAMqD,CAAAA,SAAAA,CAAlBZ,KAAAA,CACN,MAAIA,CAAAA,CAAAA,CAAM5D,MAAOC,CAAAA,IAAAA,GAASoO,EAAOC,KAAM0H,CAAAA,UAAAA,CAC9BnR,CAAawJ,CAAAA,CAAAA,CAAOC,KAAMkE,CAAAA,SAAAA,CAA1B3N,CAAqC1D,CAAOE,CAAAA,CAAAA,CAAUyH,CAExDjE,CAAAA,CAAAA,CAAAA,CAAawJ,CAAOC,CAAAA,KAAAA,CAAM0H,WAAY,CAAED,QAAAA,CAAAA,CAAAA,CAAAA,CAAxClR,CAAoD1D,CAAOE,CAAAA,CAAAA,CAAUyH,EAAK,EAErF,EA+kBamN,CAAgB5H,CAAAA,EAAAA,WAAAA,CAAQtJ,CAAMgR,CAAAA,QAAAA,UAAAA,WAAAA,UAAAA,WAAAA,CAAY,MACnD,IAAK,sBAAA,CACH,MA9kBN,UAA8B1H,CAAgB0H,CAAAA,CAAAA,CAAAA,CAC5C,MAAO,UAAC5U,CAAAA,CAAOE,CACb,CAAA,CAAA,GAAQuC,CAAAA,CAAAA,CAAUzC,EAAMqD,SACxB,CADMZ,KAAEA,CACR,IAAK,GAAIvD,CAAAA,IAAAA,CAAQuD,CAAMvD,CAAAA,KAAAA,CAAOA,KAAQ,CAAGA,CAAAA,IAAAA,EAAS,CAChD,CAAA,GAAIuD,CAAMtE,CAAAA,IAAAA,CAAKe,MAAOJ,IAASoO,GAAAA,CAAAA,CAAOC,KAAM0H,CAAAA,UAAAA,CAM1C,MALI3U,CAAAA,CAAAA,EACFA,EACEF,CAAMY,CAAAA,EAAAA,CAAG2O,aAAc9M,CAAAA,CAAAA,CAAMnD,MAAOJ,CAAAA,IAAAA,CAAAA,CAAAA,IAAQ4E,GAAW,CAAE8Q,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAGtD,CAGX,CAAA,MAAA,CAAO,CAAK,EAEhB,EA+jBaG,CAAqB7H,CAAAA,EAAAA,YAAAA,CAAQtJ,CAAMgR,CAAAA,QAAAA,UAAAA,YAAAA,UAAAA,YAAAA,CAAY,IACxD,CAAA,CAAA,IAAK,cACH,MA9jBN,UAAqB1H,CAAgBtJ,CAAAA,CAAAA,CAAAA,CACnC,MAAO,UAAC5D,EAAOE,CACb,CAAA,KAAA8U,WAAA,CAAAC,SAAA,CAAA,GAAA,CAAKrR,CAAM8O,CAAAA,GAAAA,CAAK,MAAO,CAAA,CAAA,CACvB,GAAM1C,CAAAA,CAAQ9C,CAAAA,CAAAA,CAAOC,KAAM6C,CAAAA,KAAAA,CAAMjO,MAAO,CAAA,CACtC2Q,IAAK9O,CAAM8O,CAAAA,GAAAA,CACXwC,QAAUtR,EAAAA,WAAAA,CAAAA,CAAAA,CAAMsR,QAAY,UAAAF,WAAA,UAAAA,WAAA,CAAA,IAAA,CAC5BpC,iBAAOhP,CAAMgP,CAAAA,KAAAA,UAAAA,SAAAA,UAAAA,SAAAA,CAAS,IAKxB,CAAA,CAAA,CAAA,MAHI1S,CAAAA,CACFA,EAAAA,CAAAA,CAASF,EAAMY,EAAGqT,CAAAA,oBAAAA,CAAqBjE,CAAOhP,CAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEzC,CAAI,EAEf,EAijBamU,CAAYjI,CAAAA,CAAQtJ,CAC7B,CAAA,CAAA,IAAK,aACH,CAAA,MA5iBN,UAAqBsJ,CAAgBtJ,CAAAA,CAAAA,CAAAA,CACnC,MAAO,UAAC5D,CAAOE,CAAAA,CAAAA,CAAAA,KAAAA,MAAAA,CAAAA,SAAAA,CACb,IAAK0D,CAAM8O,CAAAA,GAAAA,CAAK,MAAO,CAAA,CAAA,CACvB,GAAMA,CAAAA,CAAAA,CAAM9O,EAAM8O,GACZC,CAAAA,CAAAA,EAAAA,MAAAA,CAAM/O,CAAM+O,CAAAA,GAAAA,UAAAA,MAAAA,UAAAA,MAAAA,CAAO,IACnBC,CAAAA,CAAAA,EAAAA,SAAAA,CAAQhP,EAAMgP,KAAS,UAAAwC,SAAA,UAAAA,SAAA,CAAA,IAAA,CACvBrC,CAA2B,CAAA,IAAA,EAAjBnP,CAAMmP,CAAAA,OAAAA,CAAkBsC,OAAOzR,CAAMmP,CAAAA,OAAAA,CAAAA,CAASgB,IAAS,CAAA,CAAA,CAAA,EAAA,CACjE5V,CAAO4U,CAAAA,CAAAA,CACT7F,EAAOC,KAAMyC,CAAAA,MAAAA,CAAO7N,MAAO,CAAA,CAAE2Q,GAAKC,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAAKC,QAAOC,KAAO,CAAA,IAAA,CAAMpB,KAAO,CAAA,IAAA,CAAA,CAAQvE,CAAOhG,CAAAA,IAAAA,CAAK6L,IACtF7F,CAAOC,CAAAA,KAAAA,CAAMwC,KAAM5N,CAAAA,MAAAA,CAAO,CAAE2Q,GAAAA,CAAAA,CAAAA,CAAKC,MAAKC,KAI1C,CAAA9F,CAAA,CAAA,CAAA,CAAA,MAHI5M,CAAAA,CACFA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGqT,qBAAqB9V,CAAM6C,CAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAExC,CAAI,EAEf,EA6hBasU,CAAYpI,EAAQtJ,CAC7B,CAAA,CAAA,IAAK,aACH,CAAA,MAxhBN,UAAqBsJ,CAAAA,CAAgBtJ,GACnC,MAAO,UAAC5D,CAAOE,CAAAA,CAAAA,CAAAA,KAAAA,OAAAA,CAAAA,SAAAA,CAAAA,mBAAAA,CAAAA,mBAAAA,CACb,GAAMsS,CAAAA,CAAAA,CAAO/C,GAAkBzP,CAC/B,CAAA,CAAA,GAAA,CAAKwS,CAAS5O,EAAAA,CAAAA,CAAAA,CAAM8O,GAAK,CAAA,MAAA,CAAO,EAChC,GAAMA,CAAAA,CAAAA,CAAM9O,CAAM8O,CAAAA,GAAAA,CACZC,CAAM/O,EAAAA,OAAAA,CAAAA,CAAAA,CAAM+O,sCAAO,IACnBC,CAAAA,CAAAA,EAAAA,SAAAA,CAAQhP,CAAMgP,CAAAA,KAAAA,UAAAA,SAAAA,UAAAA,SAAAA,CAAS,IACvBG,CAAAA,CAAAA,CAA2B,MAAjBnP,CAAMmP,CAAAA,OAAAA,CAAkBsC,MAAOzR,CAAAA,CAAAA,CAAMmP,OAASgB,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAS,GACjElB,CAAQL,EAAAA,mBAAAA,CAAAA,CAAAA,CAAKrU,IAAKyF,CAAAA,KAAAA,CAAMiP,KAAS,UAAA0C,mBAAA,UAAAA,mBAAA,CAAA,IAAA,CACjC9D,EAAQe,CAAK1C,CAAAA,QAAAA,EAAAA,mBAAAA,CAAW0C,CAAKrU,CAAAA,IAAAA,CAAKyF,KAAM6N,CAAAA,KAAAA,UAAAA,mBAAAA,UAAAA,mBAAAA,CAAS,KAAO,IAC9D,CAAA,GAAIvR,CAAU,CAAA,CACZ,GAAMU,CAAAA,IAAAA,CAAKZ,EAAMY,EACjB,CAAA,GAAImS,CAAS,CAAA,CACX,GAAMnD,CAAAA,IAAAA,CAAS1C,EAAOC,KAAMyC,CAAAA,MAAAA,CAAO7N,MACjC,CAAA,CAAE2Q,GAAKC,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAAKC,QAAOC,KAAOpB,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAC1BvE,CAAOhG,CAAAA,IAAAA,CAAK6L,CAEd,CAAA,CAAA,CAAA,GAAIP,EAAK1C,QACPlP,CAAAA,IAAAA,CAAGyN,WAAYmE,CAAAA,CAAAA,CAAK1R,GAAK0R,CAAAA,CAAAA,CAAK1R,IAAM0R,CAAKrU,CAAAA,IAAAA,CAAK4C,QAAU6O,CAAAA,IAAAA,CAAAA,CACxDhP,IAAG2C,CAAAA,YAAAA,CAAasM,EAAc9N,MAAOnB,CAAAA,IAAAA,CAAGxB,GAAKoT,CAAAA,CAAAA,CAAK1R,GAC7C,CAAA,CAAA,CAAA,IAAA,CACL,GAAMlC,CAAAA,IAAOoB,CAAAA,CAAAA,CAAMZ,GAAIC,CAAAA,OAAAA,CAAQmT,CAAK1R,CAAAA,GAAAA,CAAAA,CAC9BjC,KAASD,IAAKC,CAAAA,MAAAA,CACdmU,GAAqC,CAAA,CAAA,GAAtBnU,IAAOH,CAAAA,UAAAA,EAAyC,cAArBG,IAAOC,CAAAA,IAAAA,CAAKoR,IACtDpO,CAAAA,GAAAA,CAAOkR,GAAepU,CAAAA,IAAAA,CAAKU,SAAWkT,CAAK1R,CAAAA,GAAAA,CAC3CoD,GAAK8O,CAAAA,GAAAA,CAAepU,IAAKY,CAAAA,KAAAA,CAAAA,CAAAA,CAAUgT,EAAK1R,GAAM0R,CAAAA,CAAAA,CAAKrU,IAAK4C,CAAAA,QAAAA,CAC9DH,IAAGyN,CAAAA,WAAAA,CAAYvM,IAAMoC,GAAI0L,CAAAA,IAAAA,CAAAA,CACzBhP,IAAG2C,CAAAA,YAAAA,CAAasM,CAAc9N,CAAAA,MAAAA,CAAOnB,KAAGxB,GAAK0C,CAAAA,GAAAA,CAAAA,CAC9C,EACF,CAAA,IAAM,IAAI0Q,CAAAA,CAAK1C,SAAU,CACxB,GAAMH,CAAAA,IAAQzC,CAAAA,CAAAA,CAAOC,KAAMwC,CAAAA,KAAAA,CAAM5N,OAAO,CAAE2Q,GAAAA,CAAAA,CAAAA,CAAKC,GAAKC,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAOC,KAC3DjS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAGyN,YACDmE,CAAK1R,CAAAA,GAAAA,CACL0R,CAAK1R,CAAAA,GAAAA,CAAM0R,CAAKrU,CAAAA,IAAAA,CAAK4C,SACrBmM,CAAOC,CAAAA,KAAAA,CAAMkE,SAAUtP,CAAAA,MAAAA,CAAO,IAAM4N,CAAAA,IAAAA,CAAAA,CAAAA,CAEtC/O,KAAG2C,YAAasM,CAAAA,CAAAA,CAAc9N,MAAOnB,CAAAA,IAAAA,CAAGxB,GAAKoT,CAAAA,CAAAA,CAAK1R,IAAM,CACzD,CAAA,CAAA,EAAA,IACCF,CAAAA,IAAG2O,CAAAA,aAAAA,CAAciD,CAAK1R,CAAAA,GAAAA,CAAAA,IAAKgD,GAAW,CAAE4O,GAAAA,CAAAA,CAAAA,CAAKC,GAAKC,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAOC,KACrD7S,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMqD,oBAAqBwM,CAAAA,CAC7BjP,EAAAA,IAAAA,CAAG2C,YAAasM,CAAAA,CAAAA,CAAc9N,MAAOnB,CAAAA,IAAAA,CAAGxB,IAAKoT,CAAK1R,CAAAA,GAAAA,CAAAA,CAAAA,CAGtDZ,CAASU,CAAAA,IAAAA,CAAGI,cACb,CAAA,CAAA,CAAA,EACD,OAAO,CAAI,EAEf,EAyeawU,CAAYtI,CAAQtJ,CAAAA,CAAAA,CAAAA,CAC7B,IAAK,aACH,CAAA,MAxeN,UAAqBsJ,CAAAA,CAAgBtJ,CACnC,CAAA6R,OAAA,CAAAC,OAAA,CAAAC,gBAAA,CAAA,CAAA,GAAMC,CAAAA,EAAOhP,IAAKC,CAAAA,GAAAA,CAAI,CAAGjD,EAAAA,OAAAA,CAAAA,CAAAA,CAAMgS,IAAQ,UAAAH,OAAA,UAAAA,OAAA,CAAA,CAAA,CAAA,CACjCI,EAAOjP,IAAKC,CAAAA,GAAAA,CAAI,CAAGjD,EAAAA,OAAAA,CAAAA,CAAAA,CAAMiS,IAAQ,UAAAH,OAAA,UAAAA,OAAA,CAAA,CAAA,CAAA,CACjCI,oBAAgBlS,CAAMkS,CAAAA,aAAAA,UAAAA,gBAAAA,UAAAA,gBAAAA,CAAAA,CAAiB,CAC7C,CAAA,MAAO,UAAC9V,CAAAA,CAAOE,GACb,IAAA6V,QAAA,CACE7I,CAAOC,CAAAA,KAAAA,CADD6I,CAAOC,CAAAA,QAAAA,CAATD,KAAAA,CAAoBE,CAAUC,CAAAA,QAAAA,CAArBF,SAAAA,CAAiCG,WAAZD,UAAAA,CAAgCE,CAAAA,CAAAA,QAAAA,CAAdC,YAAcD,CAE9DE,CAAW,CAAA,EAAA,CACjB,IAAK,GAAIlQ,CAAAA,IAAAA,CAAI,CAAGA,CAAAA,IAAAA,CAAIuP,CAAMvP,CAAAA,IAAAA,EAAK,EAAG,CAChC,GAAMmQ,CAAAA,IAAiB,CAAA,CAAA,GAANnQ,IAAWyP,EAAAA,CAAAA,CAAgBO,EAASD,CAC/CK,CAAAA,IAAAA,CAAQ,EACd,CAAA,IAAK,GAAIC,CAAAA,IAAAA,CAAI,EAAGA,IAAIb,CAAAA,CAAAA,CAAMa,IAAK,EAAA,CAAA,CAC7BD,IAAMzT,CAAAA,IAAAA,CAAKwT,KAASG,aAEtBJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASvT,IAAKkT,CAAAA,CAAAA,CAASnU,MAAO,CAAA,IAAA,CAAM0U,MACrC,EAID,MAHIvW,CAAAA,CACFA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGqT,qBAAqB+B,CAAMjU,CAAAA,MAAAA,CAAO,IAAMwU,CAAAA,CAAAA,CAAAA,CAAAA,CAAWvV,cAEhE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,EAEf,EAmda4V,CAAY1J,CAAQtJ,CAAAA,CAAAA,CAAAA,CAC7B,IAAK,cAAA,CACH,MAAOiT,CAAAA,CACT,CAAA,IAAK,aACH,CAAA,MAAOC,CAAAA,CACT,CAAA,IAAK,kBACH,MAAOC,CAAAA,CAAAA,CACT,IAAK,gBAAA,CACH,MAAOC,CAAAA,CAAAA,CACT,IAAK,WACH,CAAA,MAAOC,CAAAA,CACT,CAAA,IAAK,cACH,CAAA,MAAOC,CAAAA,EACT,IAAK,YAAA,CACH,MAAOC,CAAAA,CAAAA,CACT,IAAK,WAAA,CACH,MAAOC,CAAAA,CACT,CAAA,IAAK,iBACH,CAAA,MAAOC,CAAAA,CACT,CAAA,IAAK,oBACH,MAnpBG,UAACrX,CAAOE,CAAAA,CAAAA,CAAAA,CACb,GAAQuC,CAAAA,EAAUzC,CAAMqD,CAAAA,SAAAA,CAAlBZ,KAAAA,CACN,IAAK,GAAIvD,CAAAA,IAAQuD,CAAAA,CAAAA,CAAMvD,MAAOA,IAAQ,CAAA,CAAA,CAAGA,IAAS,EAAA,CAAA,CAAG,CACnD,GAAMf,CAAAA,KAAOsE,CAAMtE,CAAAA,IAAAA,CAAKe,IACxB,CAAA,CAAA,GAAIf,IAAKW,CAAAA,IAAAA,GAASkB,EAAMkN,MAAOC,CAAAA,KAAAA,CAAM6I,KASnC,CAAA,MARI9V,CAAAA,CACFA,EAAAA,CAAAA,CACEF,EAAMY,EAAG2O,CAAAA,aAAAA,CAAc9M,CAAMnD,CAAAA,MAAAA,CAAOJ,IAAQ4E,CAAAA,CAAAA,IAAAA,EAAAA,CAAAA,aAAAA,CAAAA,aAAAA,IACvC3F,IAAKyF,CAAAA,KAAAA,MACR0T,MAASnZ,CAAAA,CAAAA,IAAAA,CAAKyF,KAAM0T,CAAAA,MAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAInB,CAEV,EACD,MAAA,CAAO,CAAK,EAAA,CAooBZ,IAAK,aAAA,CACH,MAAOC,CAAAA,CACT,CAAA,IAAK,YACH,CAAA,MAvLcC,CAAAA,CAuLI5T,EAAAA,WAAAA,CAAAA,CAAAA,CAAM6T,mDAAY,OAtLjC,CAAA,SAACzX,CAAOE,CAAAA,CAAAA,CAAAA,CACb,IAAAwX,aAAA,CAA4B1X,CAAMqD,CAAAA,SAAAA,CAA1BvB,gBAAFA,IAAAA,CAAQoC,CAAAA,CAAAA,aAAAA,CAAFA,EAAEA,CAAItC,CAAAA,CAAAA,aAAAA,CAAFA,KAAEA,CAClB,GAAIA,CAAO,CAAA,MAAA,CAAO,CAClB,CAAA,GAAM+V,CAAAA,CAA8E,CAAA,EAAA,CAUpF,GATA3X,CAAMZ,CAAAA,GAAAA,CAAI+E,YAAarC,CAAAA,CAAAA,CAAMoC,CAAI,CAAA,SAAC/F,EAAM2C,CACtC,CAAA,CAAA,GAAA,CAAK3C,CAAKsI,CAAAA,MAAAA,EAAAA,CAAWtI,CAAK+I,CAAAA,IAAAA,CAAM,OAChC,GAAMzD,CAAAA,CAAAA,CAAQmD,IAAKC,CAAAA,GAAAA,CAAI/E,CAAMhB,CAAAA,CAAAA,CAAAA,CACvBW,EAAMmF,IAAKE,CAAAA,GAAAA,CAAI5C,CAAIpD,CAAAA,CAAAA,CAAM3C,CAAK4C,CAAAA,QAAAA,CAAAA,CACpC,GAAI0C,CAAShC,EAAAA,CAAAA,CAAK,OAClB,GAAMmW,CAAAA,CAAQzZ,CAAAA,CAAAA,CAAK+I,KAAK0Q,KAAMnU,CAAAA,CAAAA,CAAQ3C,CAAKW,CAAAA,CAAAA,CAAMX,CAC3CqO,CAAAA,CAAAA,CAAAA,CAhCZ,SAAuBjI,CAAcsQ,CAAAA,CAAAA,CAAAA,CACnC,OAAQA,CAAAA,EACN,IAAK,OAAA,CACH,MAAOtQ,CAAAA,CAAK2Q,CAAAA,WAAAA,CAAAA,CAAAA,CACd,IAAK,OAAA,CACH,MAAO3Q,CAAAA,CAAAA,CAAK4Q,cACd,IAAK,OAAA,CAEH,MAAO5Q,CAAAA,CAAAA,CAAK4Q,WAAcC,CAAAA,CAAAA,CAAAA,OAAAA,CAAQ,qpQAAmB,SAACC,CAAAA,CAAIC,CAAKC,CAAAA,CAAAA,QAAOD,CAAAA,CAAMC,CAAAA,CAAAA,CAAGL,iBACjF,IAAK,UAAA,CAEH,MAAO3Q,CAAAA,CAAAA,CACJ4Q,WACAC,CAAAA,CAAAA,CAAAA,OAAAA,CAAQ,6pQAAyB,SAACC,CAAAA,CAAIC,CAAKC,CAAAA,CAAAA,QAAOD,CAAAA,CAAMC,CAAAA,CAAAA,CAAGL,kBAEpE,CAiBmBM,CAAcP,CAAOJ,CAAAA,CAAAA,CAAAA,CAC9BrI,CAASyI,GAAAA,CAAAA,EAAOD,EAAM3U,IAAK,CAAA,CAAElB,IAAM2B,CAAAA,CAAAA,CAAOS,EAAIzC,CAAAA,CAAAA,CAAKyF,KAAMiI,CAAMxJ,CAAAA,KAAAA,CAAOxH,CAAKwH,CAAAA,KAAAA,CAAAA,CAAQ,EAEpE,CAAA,CAAA,CAAA,GAAjBgS,EAAM9V,MAAc,CAAA,MAAA,CAAO,CAC/B,CAAA,GAAI3B,CAAU,CAAA,CACZ,GAAMU,CAAAA,IAAKZ,CAAAA,CAAAA,CAAMY,EACjB,CAAA,IAAAwX,UAAA,CAAAvL,0BAAA,CAAmB8K,EAAMU,OACvBzX,CAAAA,CAAAA,EAAAA,MAAAA,KADF,IAAAwX,UAAA,CAAAtL,CAAA,KAAAwL,MAAA,CAAAF,UAAA,CAAApL,CAAA,IAAAvD,IAAA,EACE7I,IADS2X,CAAAA,IAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CACT3X,IAAAA,CAAGyN,WAAYkK,CAAAA,IAAAA,CAAKzW,IAAMyW,CAAAA,IAAAA,CAAKrU,GAAIlE,CAAMkN,CAAAA,MAAAA,CAAOhG,IAAKqR,CAAAA,IAAAA,CAAKrR,IAAMqR,CAAAA,IAAAA,CAAK5S,SAEvEzF,OAAAA,GAAAA,EAAAA,UAAAA,CAAAA,CAAAA,CAAAA,GAAAA,WAAAA,UAAAA,CAAAA,CAAAA,IAAAA,CAASU,CAAAA,IAAAA,CAAGI,cACb,CAAA,CAAA,CAAA,EACD,MAAO,CAAA,CAAI,GAkKX,IAAK,kBAAA,CACH,MA9JN,UAA0BkM,CAAgBtJ,CAAAA,CAAAA,CAAAA,CACxC,MAAO,UAAC5D,CAAAA,CAAOE,CACb,CAAA,CAAA,GAAMpB,CAAAA,CAAOoO,CAAAA,CAAAA,CAAOC,MAAMqL,WAC1B,CAAA,GAAA,CAAK1Z,CAAS8E,EAAAA,CAAAA,CAAAA,CAAMkQ,EAAI,CAAA,MAAA,CAAO,EAC/B,GAAI5T,CAAAA,CAAU,KAAAuY,QAAA,CACZ,GAAMta,CAAAA,IAAOW,CAAAA,CAAAA,CAAKiD,OAAO,CAAE+R,EAAAA,CAAIlQ,CAAMkQ,CAAAA,EAAAA,CAAI4E,KAAO9U,EAAAA,QAAAA,CAAAA,CAAAA,CAAM8U,0CAAS,IAC/DxY,CAAAA,CAAAA,CAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGqT,oBAAqB9V,CAAAA,IAAAA,CAAAA,CAAM6C,iBAC9C,EACD,MAAA,CAAO,CAAI,EAEf,EAoJa2X,CAAiBzL,EAAQtJ,CAClC,CAAA,CAAA,IAAK,YACH,CAAA,MAnJN,UAAoBsJ,CAAAA,CAAgBtJ,GAClC,MAAO,UAAC5D,CAAOE,CAAAA,CAAAA,CAAAA,KAAAA,QAAAA,CACb,GAAMpB,CAAAA,CAAAA,CAAOoO,EAAOC,KAAMyL,CAAAA,IAAAA,CACpBC,CAASjV,CAAAA,EAAAA,QAAAA,CAAAA,CAAAA,CAAMiV,KAAS,UAAAC,QAAA,UAAAA,QAAA,CAAA,EAAA,EAAI/E,OAClC,GAAKjV,CAAAA,CAAAA,EAAAA,CAAS+Z,CAAO,CAAA,MAAA,CAAO,CAC5B,CAAA,GAAI3Y,EAAU,KAAA6Y,cAAA,CACZ,GAAM5a,CAAAA,IAAOW,CAAAA,CAAAA,CAAKiD,MAAO,CAAA,CAAE8W,QAAOG,OAASpV,EAAAA,cAAAA,CAAAA,CAAAA,CAAMqV,WAAe,UAAAF,cAAA,UAAAA,cAAA,CAAA,QAAA,CAAA,CAAA,CAChE7Y,CAASF,CAAAA,CAAAA,CAAMY,GAAGqT,oBAAqB9V,CAAAA,IAAAA,CAAAA,CAAM6C,cAC9C,CAAA,CAAA,CAAA,EACD,MAAO,CAAA,CAAI,EAEf,EAwIakY,CAAWhM,CAAQtJ,CAAAA,CAAAA,CAAAA,CAC5B,QACE,MAAO,OA7Lb,GAAoB4T,CAAAA,CAAAA,CA5cU1Y,CAnLX0F,CAAAA,CAAAA,CAigBIqO,CAtHDpP,CAAAA,CAAAA,CAhCA0O,EAjPCN,CAvBDJ,CAAAA,CA2tBtB,8zBFngCM0H,CAAkB,CAAA,QAAlBA,CAAAA,CAAkBC,CAACpZ,EAAOE,CACxBF,QAAAA,CAAAA,CAAAA,CAAMqD,SAAUzB,CAAAA,KAAAA,GAEhB1B,CACAA,EAAAA,CAAAA,CAASF,EAAMY,EAAGuY,CAAAA,eAAAA,CAAAA,CAAAA,CAAkBnY,cACjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAsSL8B,CAAO,CAAA,QAAPA,CAAAA,CAAOuW,CAACrZ,CAAOE,CAAAA,CAAAA,CAAAA,CACjB,IAAAoZ,YAAA,CAAqBtZ,CAAMqD,CAAAA,SAAAA,CAArBZ,eAAFA,KAAAA,CAASE,CAAAA,CAAAA,YAAAA,CAAFA,GAAEA,CACTH,CAAQC,CAAAA,CAAAA,CAAMC,WAAWC,CAAMC,CAAAA,CAAAA,CAAAA,CAASJ,CAASK,EAAAA,CAAAA,CAAWL,CAChE,CAAA,CAAA,MAAc,OAAVI,CAEA1C,GAAAA,CAAAA,EACAA,CAASF,CAAAA,CAAAA,CAAMY,EAAGkC,CAAAA,IAAAA,CAAKN,EAAOI,CAAQ5B,CAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACnC,CAAI,CAAA,EAAA,CAAAuY,OAAA,KA4BTC,EAAW,QAAXA,CAAAA,EAAYxZ,CAAAA,CAAOE,CACrB,CAAA,CAAA,IAAAuZ,YAAA,CAAyBzZ,CAAAA,CAAMqD,SAC/B,CADMqW,CAAAA,CAAAA,YAAAA,CAAFA,KAAEA,CAAOC,CAAY3Z,CAAAA,YAAAA,CAAd2Z,QACX,GAAA,CAAKD,CAAM7a,CAAAA,MAAAA,CAAOC,KAAKC,IAAKqS,CAAAA,IAAAA,EAAAA,CAASsI,CAAME,CAAAA,UAAAA,CAAWD,CAClD,CAAA,CAAA,MAAA,CAAO,EACX,GAAIE,CAAAA,CAAAA,CAAQH,CAAMvb,CAAAA,IAAAA,CAAAA,CAAM,CAAIqB,CAAAA,CAAAA,CAAAA,CAAQka,EAAMI,UAAY,CAAA,CAAA,CAAA,CAAA,CAAIhb,CAAOW,CAAAA,CAAAA,CAAeoa,CAAMxY,CAAAA,cAAAA,CAAe7B,IACrG,GAAKV,CAAAA,CAAAA,EAAAA,CAAS+a,CAAMxV,CAAAA,cAAAA,CAAe7E,CAAOA,CAAAA,CAAAA,CAAOV,GAC7C,MAAO,CAAA,CAAA,CACX,GAAIoB,CAAAA,CAAU,CACV,GAAIY,CAAAA,GAAM4Y,CAAMla,CAAAA,KAAAA,CAAAA,CAAAA,CAASoB,EAAKZ,CAAAA,CAAAA,CAAMY,EAAGyN,CAAAA,WAAAA,CAAYvN,GAAKA,EAAKhC,CAAAA,CAAAA,CAAK6X,aAClE/V,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAG2C,YAAajB,CAAAA,CAAAA,CAAUyX,KAAKnZ,EAAGxB,CAAAA,GAAAA,CAAIC,OAAQyB,CAAAA,EAAAA,CAAAA,CAAM,CACpDZ,CAAAA,CAAAA,CAAAA,CAAAA,CAASU,GAAGI,cACf,CAAA,CAAA,CAAA,EACD,MAAO,CAAA,CAAI,EA2Gf,EAAMgZ,EA1DK,QA0DLA,CAAAA,EA1DMha,CAAAA,CAAOE,CACX,CAAA,CAAA,GAAIF,CAAMqD,CAAAA,SAAAA,WAAqBwM,CAAAA,GAAiB7P,CAAMqD,CAAAA,SAAAA,CAAUlF,IAAK8b,CAAAA,OAAAA,CAAS,CAC1E,GAAMxX,CAAAA,GAAUzC,CAAAA,CAAAA,CAAMqD,SACtB,CADIZ,MACJ,MAAA,EAAA,CAAKA,GAAM2J,CAAAA,YAAAA,EAAAA,CAAiB8N,EAASla,CAAMZ,CAAAA,GAAAA,CAAKqD,GAAM3B,CAAAA,GAAAA,CAAAA,GAElDZ,CACAA,EAAAA,CAAAA,CAASF,EAAMY,EAAGuZ,CAAAA,KAAAA,CAAM1X,GAAM3B,CAAAA,GAAAA,CAAAA,CAAKE,cAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACV,EACD,GAAKhB,CAAAA,CAAAA,CAAMqD,SAAUZ,CAAAA,KAAAA,CAAMvD,KACvB,CAAA,MAAA,CAAO,EACX,GAAI0B,CAAAA,CAAAA,CAAKZ,CAAMY,CAAAA,EAAAA,CAAAA,CACVZ,CAAMqD,CAAAA,SAAAA,CAAUzB,QAAU5B,CAAMqD,CAAAA,SAAAA,WAAqBG,CAAAA,CAAiBxD,EAAAA,CAAAA,CAAMqD,SAAqB+W,WAAAA,CAAAA,CAAAA,CAAAA,EAClGxZ,EAAGuY,eACP,CAAA,CAAA,CAEIkB,IAAAA,CAAYC,CAAAA,CAAAA,CAFV7X,CAAAA,CAAU7B,EAAGyC,SAAWkX,CAA1B9X,KAAEA,CAAwB8X,CAAAA,CAAU3Z,CAAGgJ,CAAAA,KAAAA,CAAM/H,MAC7C2Y,CAAAA,CAAAA,CAAQ,GACWC,CAAQ,CAAA,CAAA,CAAA,CAAOC,CAAU,CAAA,CAAA,CAAA,CAChD,IAAK,GAAIrI,CAAAA,GAAI5P,CAAMvD,CAAAA,KAAAA,EAAQmT,EAAK,EAAA,CAAA,CAE5B,GADW5P,CAAAA,CAAMtE,KAAKkU,EACb4H,CAAAA,CAAAA,OAAAA,CAAS,CACdQ,CAAAA,CAAQhY,CAAMhB,CAAAA,GAAAA,CAAI4Q,KAAM5P,CAAM3B,CAAAA,GAAAA,EAAO2B,CAAMvD,CAAAA,KAAAA,CAAQmT,EACnDqI,CAAAA,CAAAA,CAAAA,CAAUjY,EAAMgB,KAAM4O,CAAAA,EAAAA,CAAAA,EAAM5P,CAAM3B,CAAAA,GAAAA,EAAO2B,CAAMvD,CAAAA,KAAAA,CAAQmT,IACvDiI,CAAQ7a,CAAAA,CAAAA,CAAegD,CAAMtE,CAAAA,IAAAA,CAAKkU,EAAI,CAAA,CAAA,CAAA,CAAGhR,eAAeoB,CAAMqX,CAAAA,UAAAA,CAAWzH,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAC7E,GAAIsI,CAAAA,GAAAA,CAAYC,GAAaA,CAAUnY,CAAAA,CAAAA,CAAM5D,MAAQ4b,CAAAA,CAAAA,CAAOhY,CAC5D+X,CAAAA,CAAAA,CAAAA,CAAMK,QAAQF,GAAcF,GAAAA,CAAAA,EAASH,EAAQ,CAAExb,IAAAA,CAAMwb,GAAU,IAC/DD,CAAAA,CAAAA,CAAAA,CAAAA,CAAahI,EACb,CAAA,MACH,CAEG,GAAS,GAALA,EACA,CAAA,MAAA,CAAO,CACXmI,CAAAA,CAAAA,CAAMK,OAAQ,CAAA,IAAA,CAErB,EACD,GAAIC,CAAAA,CAAAA,CAAWrY,CAAM3B,CAAAA,GAAAA,CACjBqE,CAAM+U,CAAAA,CAAAA,CAAStZ,EAAGxB,GAAK0b,CAAAA,CAAAA,CAAUN,CAAM3Y,CAAAA,MAAAA,CAAQ2Y,CAKnD,CAAA,CAAA,GAJKrV,IACDqV,CAAM,CAAA,CAAA,CAAA,CAAKF,CAAQ,CAAA,CAAExb,IAAMwb,CAAAA,CAAAA,CAAAA,CAAU,KACrCnV,CAAM+U,CAAAA,CAAAA,CAAStZ,CAAGxB,CAAAA,GAAAA,CAAK0b,CAAUN,CAAAA,CAAAA,CAAM3Y,OAAQ2Y,CAE9CrV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACD,MAAO,CAAA,CAAA,CAEX,GADAvE,CAAAA,CAAGuZ,MAAMW,CAAUN,CAAAA,CAAAA,CAAM3Y,MAAQ2Y,CAAAA,CAAAA,CAAAA,CAAAA,CAC5BC,CAASC,EAAAA,CAAAA,EAAWjY,EAAMtE,IAAKkc,CAAAA,CAAAA,CAAAA,CAAYvb,IAAQwb,EAAAA,CAAAA,CAAO,CAC3D,GAAIpS,CAAAA,IAAUtH,CAAGsH,CAAAA,OAAAA,CAAQ0P,KAAM2C,CAAAA,CAAAA,CAAAA,CAC3BQ,GAAQ7S,CAAAA,GAAAA,CAAQC,IAAI1F,CAAMnD,CAAAA,MAAAA,CAAO+a,CAAcW,CAAAA,CAAAA,CAAAA,GAAAA,CAASpa,CAAGxB,CAAAA,GAAAA,CAAIC,QAAQ0b,GACvET,CAAAA,CAAAA,CAAAA,EAAS7X,CAAMtE,CAAAA,IAAAA,CAAKkc,CAAa,CAAA,CAAA,CAAA,CAAGhW,eAAe2W,GAAO7b,CAAAA,KAAAA,CAAAA,CAAAA,CAAS6b,GAAO7b,CAAAA,KAAAA,CAAAA,CAAAA,CAAU,CAAGmb,CAAAA,CAAAA,CAAAA,EACvF1Z,EAAG2O,aAAcrH,CAAAA,GAAAA,CAAQC,GAAI1F,CAAAA,CAAAA,CAAMnD,MAAO+a,CAAAA,CAAAA,CAAAA,CAAAA,CAAcC,EAC/D,EAGD,MAFIpa,CAAAA,CACAA,EAAAA,CAAAA,CAASU,CAAGI,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACT,CAAI,EApDnB,CAsLMia,CAAuB9X,CAAAA,CAAAA,CAAAA,CAAqB,CAI5C+X,CAAAA,CAAAA,CAAAA,CAAqB/X,EAAoB,CAqB/C,CAAA,CA+LIgY,CAAAA,CAAY7T,CAAc6R,CAAAA,CAAAA,CAjwBT,SAACnZ,CAAOE,CAAAA,CAAAA,CAAUyH,CACnC,CAAA,CAAA,GAAI3C,CAAAA,CAjBR,CAAA,SAAsBhF,EAAO2H,CACzB,CAAA,CAAA,GAAM3C,CAAAA,CAAAA,CAAYhF,CAAMqD,CAAAA,SAAAA,CAApB2B,OAAEA,CACN,OAAKA,CAAY2C,GAAAA,CAAAA,CAAAA,CAAQA,CAAKyT,CAAAA,cAAAA,CAAe,UAAYpb,CAAAA,CAAAA,CAAAA,CACnDgF,EAAQoH,YAAe,CAAA,CAAA,CAAA,CAClB,IACJpH,CAAAA,CACX,EAWkBqW,CAAarb,EAAO2H,CAClC,CAAA,CAAA,GAAA,CAAK3C,CACD,CAAA,MAAA,CAAO,CACX,CAAA,GAAI/E,CAAAA,EAAOtB,CAAcqG,CAAAA,CAAAA,CAAAA,CAEzB,GAAK/E,CAAAA,CAAAA,CAAM,CACP,GAAIuC,CAAAA,IAAQwC,CAAQtC,CAAAA,UAAAA,CAAAA,CAAAA,CAAcE,GAASJ,CAAAA,GAAAA,EAASK,CAAWL,CAAAA,GAAAA,CAAAA,CAC/D,MAAc,KAAVI,EAAAA,GAAAA,GAEA1C,CACAA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGkC,KAAKN,GAAOI,CAAAA,GAAAA,CAAAA,CAAQ5B,cACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACV,EACD,GAAI1B,CAAAA,EAASW,CAAKI,CAAAA,UAAAA,CAElB,GAAIN,CAAAA,CAAcC,CAAOC,CAAAA,CAAAA,CAAMC,GAAW,CACtC,CAAA,CAAA,MAAA,CAAO,CAGX,CAAA,GAAmC,CAA/B8E,EAAAA,CAAAA,CAAQnG,OAAO4B,OAAQC,CAAAA,IAAAA,GACtBxC,CAAYoB,CAAAA,CAAAA,CAAQ,KAAUuQ,CAAAA,EAAAA,CAAAA,CAAcyL,aAAahc,CAC1D,CAAA,CAAA,CAAA,IAAK,GAAIJ,CAAAA,GAAAA,CAAQ8F,CAAQ9F,CAAAA,KAAAA,EAAQA,MAAS,CACtC,GAAIqc,CAAAA,GAAUC,CAAAA,CAAAA,CAAYxb,CAAMZ,CAAAA,GAAAA,CAAK4F,EAAQ1F,MAAOJ,CAAAA,GAAAA,CAAAA,CAAQ8F,CAAQxF,CAAAA,KAAAA,CAAMN,GAAQiD,CAAAA,CAAAA,CAAAA,CAAMP,OACxF,GAAI2Z,GAAAA,EAAWA,GAAQ3D,CAAAA,KAAAA,CAAMlX,IAAO6a,CAAAA,GAAAA,CAAQrX,GAAKqX,GAAQzZ,CAAAA,IAAAA,CAAM,CAC3D,GAAI5B,CAAU,CAAA,CACV,GAAIU,CAAAA,GAAKZ,CAAAA,CAAAA,CAAMY,EAAGqB,CAAAA,IAAAA,CAAKsZ,GACvB3a,CAAAA,CAAAA,GAAAA,CAAG2C,aAAarF,CAAYoB,CAAAA,CAAAA,CAAQ,KAC9BgD,CAAAA,CAAAA,CAAAA,CAAUC,QAAS3B,CAAAA,GAAAA,CAAGxB,IAAIC,OAAQuB,CAAAA,GAAAA,CAAGsH,OAAQC,CAAAA,GAAAA,CAAIlI,CAAKa,CAAAA,GAAAA,CAAAA,CAAM,KAAM,CAClE+O,CAAAA,CAAAA,CAAAA,CAAc9N,MAAOnB,CAAAA,GAAAA,CAAGxB,GAAKa,CAAAA,CAAAA,CAAKa,IAAMxB,CAAOyB,CAAAA,QAAAA,CAAAA,CAAAA,CACrDb,CAASU,CAAAA,GAAAA,CAAGI,cACf,CAAA,CAAA,CAAA,EACD,OAAO,CACV,EACD,GAAa,CAAA,EAAT9B,GAAc8F,EAAAA,CAAAA,CAAQ7G,KAAKe,GAAQ,CAAA,CAAA,CAAA,CAAGR,UAAa,CAAA,CAAA,CACnD,MACP,CAGL,SAAIY,CAAOgG,CAAAA,MAAAA,EAAUrF,CAAKf,CAAAA,KAAAA,EAAS8F,CAAQ9F,CAAAA,KAAAA,CAAQ,KAC3CgB,CACAA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,UAAUX,CAAAA,CAAAA,CAAKa,IAAMxB,CAAOyB,CAAAA,QAAAA,CAAUd,CAAKa,CAAAA,GAAAA,CAAAA,CAAKE,cAC5D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEC,GAyEW,SAAChB,CAAAA,CAAOE,CAAUyH,CAAAA,CAAAA,CAAAA,CACzC,IAAA8T,aAAA,CAAuBzb,CAAMqD,CAAAA,SAAAA,CAAvBqW,gBAAFA,KAAAA,CAAS9X,CAAAA,CAAAA,aAAAA,CAAFA,KAAEA,CAA2B3B,CAAOyZ,CAAAA,CAAAA,CAC/C,IAAK9X,CACD,CAAA,MAAA,CAAO,CACX,CAAA,GAAI8X,CAAM7a,CAAAA,MAAAA,CAAOJ,YAAa,CAC1B,GAAIkJ,CAAQA,CAAAA,CAAAA,CAAAA,CAAKyT,cAAe,CAAA,UAAA,CAAYpb,GAAS0Z,CAAMtN,CAAAA,YAAAA,CAAe,CACtE,CAAA,MAAA,CAAO,CACXnM,CAAAA,CAAAA,CAAOtB,EAAc+a,CACxB,CAAA,EACD,GAAIvb,CAAAA,CAAAA,CAAO8B,CAAQA,EAAAA,CAAAA,CAAKI,WACxB,MAAKlC,EAAAA,CAAAA,CAAAA,EAAAA,CAAS0R,CAAcyL,CAAAA,YAAAA,CAAand,CAErC+B,CAAAA,CAAAA,GAAAA,CAAAA,EACAA,EAASF,CAAMY,CAAAA,EAAAA,CAAG2C,aAAasM,CAAc9N,CAAAA,MAAAA,CAAO/B,EAAMZ,GAAKa,CAAAA,CAAAA,CAAKa,GAAM3C,CAAAA,CAAAA,CAAK4C,QAAWC,CAAAA,CAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACvF,EAAI,EA+nBX0a,CAAAA,CAAAA,CAAAA,CAAMpU,CAAc6R,CAAAA,CAAAA,CArmBJ,SAACnZ,CAAAA,CAAOE,EAAUyH,CAClC,CAAA,CAAA,GAAI3C,CAAAA,CAfR,CAAA,SAAoBhF,CAAO2H,CAAAA,CAAAA,CAAAA,CACvB,GAAM3C,CAAAA,CAAAA,CAAYhF,CAAMqD,CAAAA,SAAAA,CAApB2B,OAAEA,CACN,MAAKA,CAAAA,CAAAA,GAAY2C,GAAQA,CAAKyT,CAAAA,cAAAA,CAAe,SAAWpb,CAAAA,CAAAA,CAAAA,CAClDgF,CAAQoH,CAAAA,YAAAA,CAAepH,EAAQnG,MAAO4B,CAAAA,OAAAA,CAAQC,IACzC,CAAA,CAAA,IAAA,CACJsE,CACX,EASkB2W,CAAW3b,CAAO2H,CAAAA,CAAAA,CAAAA,CAChC,GAAK3C,CAAAA,CAAAA,CACD,MAAO,CAAA,CAAA,CACX,GAAI/E,CAAAA,CAAOV,CAAAA,CAAAA,CAAayF,CAExB,CAAA,CAAA,GAAA,CAAK/E,CACD,CAAA,MAAA,CAAO,EACX,GAAIT,CAAAA,CAAAA,CAAQS,CAAKK,CAAAA,SAAAA,CAEjB,GAAIP,CAAAA,CAAcC,EAAOC,CAAMC,CAAAA,CAAAA,CAAU,CACrC,CAAA,CAAA,MAAA,CAAO,CAGX,CAAA,GAAmC,GAA/B8E,CAAQnG,CAAAA,MAAAA,CAAO4B,OAAQC,CAAAA,IAAAA,GACtBxC,CAAYsB,CAAAA,CAAAA,CAAO,UAAYqQ,CAAcyL,CAAAA,YAAAA,CAAa9b,CAAS,CAAA,CAAA,CAAA,CACpE,GAAI+b,CAAAA,GAAAA,CAAUC,EAAYxb,CAAMZ,CAAAA,GAAAA,CAAK4F,CAAQ1F,CAAAA,MAAAA,CAAAA,CAAAA,CAAU0F,CAAQxF,CAAAA,KAAAA,CAAAA,CAAAA,CAAS2C,EAAMP,KAC9E,CAAA,CAAA,GAAI2Z,GAAWA,EAAAA,GAAAA,CAAQ3D,KAAMlX,CAAAA,IAAAA,CAAO6a,IAAQrX,EAAKqX,CAAAA,GAAAA,CAAQzZ,IAAM,CAAA,CAC3D,GAAI5B,CAAAA,CAAU,CACV,GAAIU,CAAAA,GAAAA,CAAKZ,CAAMY,CAAAA,EAAAA,CAAGqB,IAAKsZ,CAAAA,GAAAA,CAAAA,CACvB3a,IAAG2C,YAAarF,CAAAA,CAAAA,CAAYsB,CAAO,CAAA,OAAA,CAAA,CAAW8C,CAAUC,CAAAA,QAAAA,CAAS3B,IAAGxB,GAAIC,CAAAA,OAAAA,CAAQuB,GAAGsH,CAAAA,OAAAA,CAAQC,GAAIlI,CAAAA,CAAAA,CAAKa,MAAO,CACrG+O,CAAAA,CAAAA,CAAAA,CAAc9N,MAAOnB,CAAAA,GAAAA,CAAGxB,GAAKwB,CAAAA,GAAAA,CAAGsH,QAAQC,GAAIlI,CAAAA,CAAAA,CAAKa,GACvDZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASU,GAAGI,CAAAA,cAAAA,CAAAA,CAAAA,CACf,EACD,MAAO,CAAA,CACV,EACJ,CAED,MAAIxB,EAAAA,CAAAA,CAAAA,CAAM8F,QAAUrF,CAAKf,CAAAA,KAAAA,EAAS8F,CAAQ9F,CAAAA,KAAAA,CAAQ,CAC1CgB,CAAAA,GAAAA,CAAAA,EACAA,EAASF,CAAMY,CAAAA,EAAAA,UAAUX,CAAAA,CAAAA,CAAKa,GAAKb,CAAAA,CAAAA,CAAKa,IAAMtB,CAAMuB,CAAAA,QAAAA,CAAAA,CAAUC,cAC3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEC,EAUU,CAAA,SAAChB,EAAOE,CAAUyH,CAAAA,CAAAA,CAAAA,CACxC,IAAAiU,aAAA,CAAuB5b,CAAMqD,CAAAA,SAAAA,CAAvBqW,CAAK9X,CAAAA,aAAAA,CAAP8X,KAAAA,CAAS9X,gBAAFA,KAAAA,CAA6B3B,CAAOyZ,CAAAA,CAAAA,CAC/C,GAAK9X,CAAAA,CAAAA,CACD,OAAO,CACX,CAAA,GAAI8X,CAAM7a,CAAAA,MAAAA,CAAOJ,WAAa,CAAA,CAC1B,GAAIkJ,CAAQA,CAAAA,CAAAA,CAAAA,CAAKyT,cAAe,CAAA,SAAA,CAAWpb,CAAS0Z,CAAAA,CAAAA,CAAAA,CAAMtN,aAAesN,CAAM7a,CAAAA,MAAAA,CAAO4B,OAAQC,CAAAA,IAAAA,CAC1F,MAAO,CAAA,CAAA,CACXT,EAAOV,CAAama,CAAAA,CAAAA,CACvB,EACD,GAAIvb,CAAAA,CAAO8B,CAAAA,CAAAA,EAAQA,EAAKK,SACxB,CAAA,MAAA,EAAA,CAAKnC,CAAS0R,EAAAA,CAAAA,CAAAA,CAAcyL,YAAand,CAAAA,CAAAA,CAAAA,CAAAA,GAErC+B,GACAA,CAASF,CAAAA,CAAAA,CAAMY,EAAG2C,CAAAA,YAAAA,CAAasM,CAAc9N,CAAAA,MAAAA,CAAO/B,EAAMZ,GAAKa,CAAAA,CAAAA,CAAKa,GAAME,CAAAA,CAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACvE,CAAI,CAAA,EAAA,CAAA,CAyjBT6a,CAAe,CAAA,CACjBC,KAASxU,CAAAA,CAAAA,CA9eS,SAACtH,CAAAA,CAAOE,GAC1B,IAAA6b,aAAA,CAAyB/b,CAAAA,CAAMqD,UAAzBqW,CAAKC,CAAAA,aAAAA,CAAPD,KAAAA,CAASC,CAAY3Z,CAAAA,aAAAA,CAAd2Z,OAAAA,CACX,MAAKD,EAAAA,CAAAA,CAAAA,CAAM7a,MAAOC,CAAAA,IAAAA,CAAKC,IAAKqS,CAAAA,IAAAA,EAAAA,CAASsI,EAAME,UAAWD,CAAAA,CAAAA,CAAAA,CAAAA,GAElDzZ,CACAA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGob,WAAW,IAAMhb,CAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAChC,CAAI,CAAA,EAAA,CAiCa,SAAChB,CAAAA,CAAOE,GAC5BkD,IAAAA,CAAAA,CAAMpD,CAAMqD,CAAAA,SAAAA,CAAaZ,CAAAA,CAAeW,CAAAA,CAAjBX,KAAEA,CAAOE,CAAQS,CAAAA,CAAAA,CAAVT,IAClC,GAAIS,CAAAA,WAAegX,CAAAA,CAAgB3X,EAAAA,CAAAA,CAAM5D,OAAOuG,aAAiBzC,EAAAA,CAAAA,CAAI9D,MAAOuG,CAAAA,aAAAA,CACxE,MAAO,CAAA,CAAA,CACX,GAAItG,CAAAA,CAAOW,CAAAA,CAAAA,CAAekD,CAAI9D,CAAAA,MAAAA,CAAOwC,cAAesB,CAAAA,CAAAA,CAAImX,eACxD,GAAKhb,CAAAA,CAAAA,EAAAA,CAASA,CAAKL,CAAAA,WAAAA,CACf,MAAO,CAAA,CAAA,CACX,GAAIyB,CAAU,CAAA,CACV,GAAI9B,CAAAA,GAAAA,CAAAA,CAAAA,CAASqE,CAAM2J,CAAAA,YAAAA,EAAgBzJ,EAAIxD,KAAUwD,CAAAA,CAAAA,CAAAA,CAAAA,CAAI9D,MAAOH,CAAAA,UAAAA,CAAa+D,CAAQE,CAAAA,CAAAA,EAAK7B,IAClFF,IAAKZ,CAAAA,CAAAA,CAAMY,EAAGqb,CAAAA,MAAAA,CAAO7d,GAAMU,CAAAA,CAAAA,CAAK6X,iBACpC/V,IAAG2C,CAAAA,YAAAA,CAAaC,CAAczB,CAAAA,MAAAA,CAAOnB,IAAGxB,CAAAA,GAAAA,CAAKhB,IAAO,CACpD8B,CAAAA,CAAAA,CAAAA,CAAAA,CAASU,IAAGI,CAAAA,cAAAA,CAAAA,CAAAA,CACf,EACD,MAAA,CAAO,CAAI,EAMQ,CAAA,SAAChB,CAAOE,CAAAA,CAAAA,CAAAA,CAC3B,GAAM8E,CAAAA,EAAYhF,CAAMqD,CAAAA,SAAAA,CAApB2B,OAAAA,CACJ,GAAKA,CAAAA,CAAAA,EAAWA,CAAQnG,CAAAA,MAAAA,CAAO4B,QAAQC,IACnC,CAAA,MAAA,CAAO,CACX,CAAA,GAAIsE,CAAQ9F,CAAAA,KAAAA,CAAQ,GAAK8F,CAAQxF,CAAAA,KAAAA,CAAAA,CAAAA,EAAWwF,CAAQvD,CAAAA,GAAAA,CAAAA,CAAK,CAAI,CAAA,CAAA,CACzD,GAAInC,CAAAA,GAAS0F,CAAAA,CAAAA,CAAQ1F,MACrB,CAAA,CAAA,CAAA,GAAI4a,CAASla,CAAAA,CAAAA,CAAMZ,IAAKE,GAGpB,CAAA,CAAA,MAFIY,CAAAA,CACAA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAGuZ,MAAM7a,GAAQ0B,CAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAC7B,CAEd,EACD,GAAIwB,CAAAA,CAAAA,CAAQwC,EAAQtC,UAAcE,CAAAA,CAAAA,CAAAA,CAAAA,CAASJ,CAASK,EAAAA,CAAAA,CAAWL,CAC/D,CAAA,CAAA,MAAc,OAAVI,CAEA1C,GAAAA,CAAAA,EACAA,CAASF,CAAAA,CAAAA,CAAMY,EAAGkC,CAAAA,IAAAA,CAAKN,EAAOI,CAAQ5B,CAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACnC,CAAI,CAAA,EAAA,CAmagEgZ,CAC3E,CAAA,CAAA,WAAA,CAAaR,EACb0C,SAAaf,CAAAA,CAAAA,CACb,eAAiBA,CAAAA,CAAAA,CACjB,iBAAmBA,CAAAA,CAAAA,CACnBgB,OAAUT,CACV,CAAA,YAAA,CAAcA,CACd,CAAA,OAAA,CA3Uc,QA2Ud,CAAAU,IAAAA,CA3Uepc,CAAAA,CAAOE,SAClBA,CAAAA,CACAA,EAAAA,CAAAA,CAASF,CAAMY,CAAAA,EAAAA,CAAG2C,YAAa,CAAA,GAAI6W,CAAAA,EAAapa,CAAMZ,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACnD,CAgVLid,EAAAA,CAAAA,CAAAA,CAAAA,CAAgB,CAClB,QAAA,CAAUR,EAAwBK,SAClC,CAAA,eAAA,CAAiBL,CAAa,CAAA,eAAA,CAAA,CAC9B,QAAUA,CAAAA,CAAAA,CAAqBM,OAC/B,oBAAsBN,CAAAA,CAAAA,CAAa,cACnC,YAAcA,CAAAA,CAAAA,CAAa,cAC3B,OAASA,CAAAA,CAAAA,CAAa,YACtB,CAAA,CAAA,QAAA,CAAUZ,CACV,CAAA,QAAA,CAAUC,GAEd,IAASrS,IAAOgT,GAAAA,CAAAA,CAAAA,CACZQ,CAAcxT,CAAAA,IAAAA,CAAAA,CAAOgT,EAAahT,IACtC,CAAA,CAAA0Q,OAAA,KAQM+C,CAR0B,CAAA,CAAA,WAAA,EAAA,MAAbC,CAAAA,SAA2B,CAAA,oBAAA,CAAqB7V,KAAK6V,SAAUC,CAAAA,QAAAA,CAAAA,CAAAA,EAE/D,WAANC,EAAAA,MAAAA,CAAAA,EAAAA,EAAAA,CAAqBA,EAAGD,CAAAA,QAAAA,CAAAA,EAA4B,UAAjBC,EAAGD,CAAAA,QAAAA,CAAAA,CAAAA,EAM1BH,CAAgBR,CAAAA,CAAAA,EGj1BrCa,CAAAA,CAAiB,IAKjBC,CAAe,CAAA,QAAfA,CAAAA,CAAeC,CAAA,CAAA,EAEnBD,CAAAA,CAAAA,CAAaE,SAAUC,CAAAA,MAAAA,CAAS,SAAiBC,CAC/C,CAAA,CAAA,MAAKA,CAAAA,CAAMlb,CAAAA,MAAAA,EACXkb,CAAQJ,CAAAA,CAAAA,CAAa7a,KAAKib,CAEjBC,CAAAA,CAAAA,CAAAA,IAAAA,CAAKnb,MAAUkb,EAAAA,CAAAA,EACrBA,CAAMlb,CAAAA,MAAAA,CAAS6a,GAAkBM,IAAKC,CAAAA,UAAAA,CAAWF,CACjDC,CAAAA,EAAAA,IAAAA,CAAKnb,MAAS6a,CAAAA,CAAAA,EAAkBK,EAAMG,WAAYF,CAAAA,IAAAA,CAAAA,EACnDA,IAAKG,CAAAA,WAAAA,CAAYJ,CANSC,CAAAA,EAAAA,IAO9B,GAIAL,CAAaE,CAAAA,SAAAA,CAAUO,OAAU,CAAA,SAAkBL,CACjD,CAAA,CAAA,MAAKA,CAAAA,EAAMlb,MACJ8a,CAAAA,CAAAA,CAAa7a,IAAKib,CAAAA,CAAAA,CAAAA,CAAOD,MAAOE,CAAAA,IAAAA,CAAAA,CADXA,IAE9B,EAEAL,CAAAA,CAAAA,CAAaE,SAAUM,CAAAA,WAAAA,CAAc,SAAsBJ,CAAAA,CAAAA,CACzD,MAAO,IAAIM,CAAAA,EAAAA,CAAOL,IAAMD,CAAAA,CAAAA,CAC1B,EAIAJ,CAAAA,CAAAA,CAAaE,UAAUjF,KAAQ,CAAA,SAAgB9V,CAAMoC,CAAAA,CAAAA,CAAAA,CAInD,MAHgB,KAAA,EAAA,GAATpC,IAAkBA,CAAO,CAAA,CAAA,CAAA,CAAA,IAClB,EAAPoC,GAAAA,CAAAA,GAAgBA,CAAK8Y,CAAAA,IAAAA,CAAKnb,QAE7BC,CAAQoC,EAAAA,CAAAA,CAAayY,CAAa/a,CAAAA,KAAAA,CAC/Bob,IAAKM,CAAAA,UAAAA,CAAW1W,KAAKC,GAAI,CAAA,CAAA,CAAG/E,CAAO8E,CAAAA,CAAAA,IAAAA,CAAKE,GAAIkW,CAAAA,IAAAA,CAAKnb,OAAQqC,CAClE,CAAA,CAAA,EAAA,CAIAyY,CAAaE,CAAAA,SAAAA,CAAUlR,GAAM,CAAA,SAAc1M,GACzC,GAAIA,EAAAA,CAAAA,CAAI,CAAKA,EAAAA,CAAAA,EAAK+d,IAAKnb,CAAAA,MAAAA,CAAAA,CACvB,MAAOmb,KAAKO,CAAAA,QAAAA,CAASte,CACvB,CAAA,EAAA,CAOA0d,CAAaE,CAAAA,SAAAA,CAAU/U,QAAU,SAAkB0V,CAAAA,CAAG1b,CAAMoC,CAAAA,CAAAA,CAAAA,CAAAA,IAC1C,EAATpC,GAAAA,CAAAA,GAAkBA,EAAO,CAClB,CAAA,CAAA,IAAA,EAAA,GAAPoC,CAAgBA,GAAAA,CAAAA,CAAK8Y,IAAKnb,CAAAA,MAAAA,CAAAA,CAE7BC,GAAQoC,CACR8Y,CAAAA,IAAAA,CAAKS,YAAaD,CAAAA,CAAAA,CAAG1b,CAAMoC,CAAAA,CAAAA,CAAI,GAE/B8Y,IAAKU,CAAAA,oBAAAA,CAAqBF,CAAG1b,CAAAA,CAAAA,CAAMoC,CAAI,CAAA,CAAA,CAC7C,GAKAyY,CAAaE,CAAAA,SAAAA,CAAU1U,GAAM,CAAA,SAAcqV,CAAG1b,CAAAA,CAAAA,CAAMoC,OAClC,EAATpC,GAAAA,CAAAA,GAAkBA,CAAO,CAAA,CAAA,CAAA,CAAA,IAClB,EAAPoC,GAAAA,CAAAA,GAAgBA,EAAK8Y,IAAKnb,CAAAA,MAAAA,CAAAA,CAEjC,GAAIkE,CAAAA,CAAAA,CAAS,EAEb,CAAA,MADAiX,MAAKlV,OAAQ,CAAA,SAAU6V,CAAK1e,CAAAA,CAAAA,CAAAA,CAAK,MAAO8G,CAAAA,CAAAA,CAAO/C,KAAKwa,CAAEG,CAAAA,CAAAA,CAAK1e,CAAI,CAAA,CAAA,EAAA,CAAI6C,CAAMoC,CAAAA,CAAAA,CAAAA,CAClE6B,CACT,EAKA4W,CAAAA,CAAAA,CAAa7a,IAAO,CAAA,SAAe8b,CACjC,CAAA,CAAA,MAAIA,CAAAA,YAAkBjB,CAAAA,CAAuBiB,CAAAA,CAAAA,CACtCA,CAAUA,EAAAA,CAAAA,CAAO/b,MAAS,CAAA,GAAIgc,CAAAA,GAAKD,CAAUjB,CAAAA,CAAAA,CAAAA,CAAa/a,KACnE,EAAA,CAEIic,EAAAA,CAAqB,SAAUlB,CACjC,CAAA,CAAA,QAASkB,CAAAA,CAAKD,CAAAA,CAAAA,CAAAA,CACZjB,CAAamB,CAAAA,IAAAA,CAAKd,MAClBA,IAAKY,CAAAA,MAAAA,CAASA,CACf,EAEIjB,CAAekB,GAAAA,CAAAA,CAAKE,UAAYpB,CACrCkB,CAAAA,CAAAA,CAAAA,CAAKhB,SAAYmB,CAAAA,MAAAA,CAAOjc,MAAQ4a,CAAAA,CAAAA,EAAgBA,EAAaE,SAC7DgB,CAAAA,CAAAA,CAAAA,CAAKhB,SAAUoB,CAAAA,WAAAA,CAAcJ,CAE7B,CAAA,GAAIK,CAAAA,EAAqB,CAAErc,MAAAA,CAAQ,CAAEsc,YAAAA,CAAAA,CAAc,CAAOjf,CAAAA,CAAAA,KAAAA,CAAO,CAAEif,YAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAyCjF,MAvCAN,CAAAA,CAAAA,CAAKhB,SAAUuB,CAAAA,OAAAA,CAAU,WACvB,MAAOpB,KAAAA,CAAKY,MAChB,EAAA,CAEEC,CAAKhB,CAAAA,SAAAA,CAAUS,WAAa,SAAqBxb,CAAAA,CAAMoC,CACrD,CAAA,CAAA,MAAY,EAARpC,EAAAA,CAAAA,EAAaoC,GAAM8Y,IAAKnb,CAAAA,MAAAA,CAAiBmb,IACtC,CAAA,GAAIa,CAAAA,CAAKb,CAAAA,IAAAA,CAAKY,OAAOhG,KAAM9V,CAAAA,CAAAA,CAAMoC,CAC5C,CAAA,CAAA,EAAA,CAEE2Z,CAAKhB,CAAAA,SAAAA,CAAUU,SAAW,SAAmBte,CAAAA,CAAAA,CAC3C,MAAO+d,KAAAA,CAAKY,MAAO3e,CAAAA,CAAAA,CACvB,GAEE4e,CAAKhB,CAAAA,SAAAA,CAAUY,YAAe,CAAA,SAAuBD,CAAG1b,CAAAA,CAAAA,CAAMoC,EAAIT,CAChE,CAAA,CAAA,IAAK,GAAIxE,CAAAA,CAAAA,CAAI6C,CAAM7C,CAAAA,CAAAA,CAAIiF,EAAIjF,CACvB,EAAA,CAAA,GAAA,CAAqC,CAAjCue,GAAAA,CAAAA,CAAER,IAAKY,CAAAA,MAAAA,CAAO3e,GAAIwE,CAAQxE,CAAAA,CAAAA,CAAAA,CAAgB,MAAO,CAAA,CAC7D,EAEE4e,CAAAA,CAAAA,CAAKhB,UAAUa,oBAAuB,CAAA,SAA+BF,CAAG1b,CAAAA,CAAAA,CAAMoC,CAAIT,CAAAA,CAAAA,CAAAA,CAChF,IAAK,GAAIxE,CAAAA,CAAAA,CAAI6C,CAAO,CAAA,CAAA,CAAG7C,CAAKiF,EAAAA,CAAAA,CAAIjF,IAC5B,GAAqC,CAAA,CAAA,GAAjCue,CAAER,CAAAA,IAAAA,CAAKY,MAAO3e,CAAAA,CAAAA,CAAAA,CAAIwE,EAAQxE,CAAgB,CAAA,CAAA,MAAA,CAAO,CAC7D,EAAA,CAEE4e,CAAKhB,CAAAA,SAAAA,CAAUI,WAAa,SAAqBF,CAAAA,CAAAA,CAC/C,GAAIC,IAAAA,CAAKnb,MAASkb,CAAAA,CAAAA,CAAMlb,QAAU6a,CAC9B,CAAA,MAAO,IAAImB,CAAAA,CAAAA,CAAKb,IAAKY,CAAAA,MAAAA,CAAOS,OAAOtB,CAAMqB,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CACjD,EAEEP,CAAAA,CAAAA,CAAKhB,SAAUK,CAAAA,WAAAA,CAAc,SAAsBH,CACjD,CAAA,CAAA,GAAIC,IAAKnb,CAAAA,MAAAA,CAASkb,CAAMlb,CAAAA,MAAAA,EAAU6a,EAC9B,MAAO,IAAImB,CAAAA,CAAKd,CAAAA,CAAAA,CAAMqB,OAAUC,CAAAA,CAAAA,CAAAA,MAAAA,CAAOrB,KAAKY,MACpD,CAAA,CAAA,EAAA,CAEEM,CAAmBrc,CAAAA,MAAAA,CAAO8J,GAAM,CAAA,UAAA,CAAc,MAAOqR,KAAKY,CAAAA,MAAAA,CAAO/b,SAEjEqc,CAAmBhf,CAAAA,KAAAA,CAAMyM,IAAM,UAAc,CAAA,MAAO,EAAC,EAAA,CAErDqS,MAAOM,CAAAA,gBAAAA,CAAkBT,EAAKhB,SAAWqB,CAAAA,CAAAA,CAAAA,CAElCL,CACT,EApDQ,CAoDNlB,CAAAA,CAAAA,CAIFA,EAAa/a,KAAQ,CAAA,GAAIic,CAAAA,EAAK,CAAA,EAAA,CAAA,CAE1BR,EAAAA,CAAuB,SAAUV,CACnC,CAAA,CAAA,QAASU,CAAAA,CAAOkB,CAAAA,CAAAA,CAAMC,CACpB7B,CAAAA,CAAAA,CAAAA,CAAamB,KAAKd,IAClBA,CAAAA,CAAAA,IAAAA,CAAKuB,KAAOA,CACZvB,CAAAA,IAAAA,CAAKwB,MAAQA,CACbxB,CAAAA,IAAAA,CAAKnb,MAAS0c,CAAAA,CAAAA,CAAK1c,MAAS2c,CAAAA,CAAAA,CAAM3c,OAClCmb,IAAK9d,CAAAA,KAAAA,CAAQ0H,IAAKC,CAAAA,GAAAA,CAAI0X,CAAKrf,CAAAA,KAAAA,CAAOsf,EAAMtf,KAAS,CAAA,CAAA,CAClD,EA0DD,MAxDKyd,CAAAA,CAAeU,GAAAA,CAAAA,CAAOU,UAAYpB,CACvCU,CAAAA,CAAAA,CAAAA,CAAOR,SAAYmB,CAAAA,MAAAA,CAAOjc,MAAQ4a,CAAAA,CAAAA,EAAgBA,EAAaE,SAC/DQ,CAAAA,CAAAA,CAAAA,CAAOR,SAAUoB,CAAAA,WAAAA,CAAcZ,CAE/BA,CAAAA,CAAAA,CAAOR,UAAUuB,OAAU,CAAA,UAAA,CACzB,MAAOpB,KAAAA,CAAKuB,IAAKH,CAAAA,OAAAA,CAAAA,CAAAA,CAAUC,OAAOrB,IAAKwB,CAAAA,KAAAA,CAAMJ,OACjD,CAAA,CAAA,CAAA,EAAA,CAEEf,CAAOR,CAAAA,SAAAA,CAAUU,SAAW,SAAmBte,CAAAA,CAAAA,CAC7C,MAAOA,CAAAA,CAAAA,CAAI+d,IAAKuB,CAAAA,IAAAA,CAAK1c,OAASmb,IAAKuB,CAAAA,IAAAA,CAAK5S,GAAI1M,CAAAA,CAAAA,CAAAA,CAAK+d,IAAKwB,CAAAA,KAAAA,CAAM7S,IAAI1M,CAAI+d,CAAAA,IAAAA,CAAKuB,IAAK1c,CAAAA,MAAAA,CAClF,EAEEwb,CAAAA,CAAAA,CAAOR,UAAUY,YAAe,CAAA,SAAuBD,CAAG1b,CAAAA,CAAAA,CAAMoC,CAAIT,CAAAA,CAAAA,CAAAA,CAClE,GAAIgb,CAAAA,CAAUzB,CAAAA,IAAAA,CAAKuB,IAAK1c,CAAAA,MAAAA,CACxB,MAAIC,EAAAA,CAAAA,CAAO2c,IAC2D,CAAlEzB,GAAAA,IAAAA,CAAKuB,IAAKd,CAAAA,YAAAA,CAAaD,CAAG1b,CAAAA,CAAAA,CAAM8E,KAAKE,GAAI5C,CAAAA,CAAAA,CAAIua,CAAUhb,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,EAEvDS,CAAKua,CAAAA,CAAAA,EAAAA,CAC6G,IAAlHzB,IAAKwB,CAAAA,KAAAA,CAAMf,YAAaD,CAAAA,CAAAA,CAAG5W,IAAKC,CAAAA,GAAAA,CAAI/E,EAAO2c,CAAS,CAAA,CAAA,CAAA,CAAI7X,IAAKE,CAAAA,GAAAA,CAAIkW,IAAKnb,CAAAA,MAAAA,CAAQqC,GAAMua,CAAShb,CAAAA,CAAAA,CAAQgb,CADzG,CAAA,CAAA,EAAA,IAAA,EAGJ,EAEEpB,CAAAA,CAAAA,CAAOR,UAAUa,oBAAuB,CAAA,SAA+BF,CAAG1b,CAAAA,CAAAA,CAAMoC,CAAIT,CAAAA,CAAAA,CAAAA,CAClF,GAAIgb,CAAAA,CAAUzB,CAAAA,IAAAA,CAAKuB,IAAK1c,CAAAA,MAAAA,CACxB,MAAIC,EAAAA,CAAAA,CAAO2c,IACkG,CAAzGzB,GAAAA,IAAAA,CAAKwB,KAAMd,CAAAA,oBAAAA,CAAqBF,CAAG1b,CAAAA,CAAAA,CAAO2c,EAAS7X,IAAKC,CAAAA,GAAAA,CAAI3C,CAAIua,CAAAA,CAAAA,CAAAA,CAAWA,CAAShb,CAAAA,CAAAA,CAAQgb,OAE5Fva,CAAKua,CAAAA,CAAAA,EAAAA,CACqE,CAA1EzB,GAAAA,IAAAA,CAAKuB,IAAKb,CAAAA,oBAAAA,CAAqBF,EAAG5W,IAAKE,CAAAA,GAAAA,CAAIhF,CAAM2c,CAAAA,CAAAA,CAAAA,CAAUva,CAAIT,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,IADnE,EAGJ,EAEE4Z,CAAAA,CAAAA,CAAOR,SAAUS,CAAAA,UAAAA,CAAa,SAAqBxb,CAAAA,CAAMoC,GACvD,GAAY,CAAA,EAARpC,CAAaoC,EAAAA,CAAAA,EAAM8Y,IAAKnb,CAAAA,MAAAA,CAAU,MAAOmb,KAC7C,CAAA,GAAIyB,CAAAA,CAAUzB,CAAAA,IAAAA,CAAKuB,IAAK1c,CAAAA,MAAAA,CACxB,MAAIqC,CAAAA,CAAMua,EAAAA,CAAAA,CAAkBzB,IAAKuB,CAAAA,IAAAA,CAAK3G,KAAM9V,CAAAA,CAAAA,CAAMoC,GAC9CpC,CAAQ2c,EAAAA,CAAAA,CAAkBzB,IAAKwB,CAAAA,KAAAA,CAAM5G,KAAM9V,CAAAA,CAAAA,CAAO2c,EAASva,CAAKua,CAAAA,CAAAA,CAAAA,CAC7DzB,IAAKuB,CAAAA,IAAAA,CAAK3G,KAAM9V,CAAAA,CAAAA,CAAM2c,GAAS3B,MAAOE,CAAAA,IAAAA,CAAKwB,KAAM5G,CAAAA,KAAAA,CAAM,CAAG1T,CAAAA,CAAAA,CAAKua,GAC1E,EAEEpB,CAAAA,CAAAA,CAAOR,SAAUI,CAAAA,UAAAA,CAAa,SAAqBF,CAAAA,CAAAA,CACjD,GAAI2B,CAAAA,CAAQ1B,CAAAA,IAAAA,CAAKwB,KAAMvB,CAAAA,UAAAA,CAAWF,CAClC,CAAA,CAAA,GAAI2B,EAAS,MAAO,IAAIrB,CAAAA,CAAOL,CAAAA,IAAAA,CAAKuB,IAAMG,CAAAA,CAAAA,CAC9C,GAEErB,CAAOR,CAAAA,SAAAA,CAAUK,WAAc,CAAA,SAAsBH,CACnD,CAAA,CAAA,GAAI2B,CAAAA,EAAQ1B,IAAKuB,CAAAA,IAAAA,CAAKrB,WAAYH,CAAAA,CAAAA,CAAAA,CAClC,GAAI2B,CAAAA,CAAS,MAAO,IAAIrB,CAAAA,CAAAA,CAAOqB,CAAO1B,CAAAA,IAAAA,CAAKwB,KAC/C,CAAA,EAAA,CAEEnB,EAAOR,SAAUM,CAAAA,WAAAA,CAAc,SAAsBJ,CAAAA,CAAAA,CACnD,MAAIC,KAAAA,CAAKuB,KAAKrf,KAAS0H,EAAAA,IAAAA,CAAKC,GAAImW,CAAAA,IAAAA,CAAKwB,KAAMtf,CAAAA,KAAAA,CAAO6d,EAAM7d,KAAS,CAAA,CAAA,CAAA,CACtD,GAAIme,CAAAA,CAAAA,CAAOL,IAAKuB,CAAAA,IAAAA,CAAM,GAAIlB,CAAAA,CAAOL,CAAAA,IAAAA,CAAKwB,KAAOzB,CAAAA,CAAAA,CAAAA,CAAAA,CACjD,GAAIM,CAAAA,CAAAA,CAAOL,KAAMD,CAC5B,CAAA,EAAA,CAESM,CACT,EAlEU,CAkERV,CAAAA,CAAAA,CFvLI1T,EACF,yBAAA,SAAA0V,GAAYxQ,CAAAA,CAAO3C,CACfwR,CAAAA,CAAAA,eAAAA,MAAAA,EAAAA,EAAAA,IAAAA,CAAK7O,MAAQA,CACb6O,CAAAA,IAAAA,CAAKxR,UAAaA,CAAAA,CACrB,EAGD,OAAAoT,YAAA,CAAAD,EAAA,GAAA9V,GAAA,YAAAgW,KAAA,UAAAhT,QAAAA,CAAS7L,CAAOyL,CAAAA,CAAAA,CAAAA,KAAAA,KAAAA,MACZ,GAAuB,CAAA,EAAnBuR,IAAKxR,CAAAA,UAAAA,CACL,MAAO,KACX,CAAA,GAQIsT,CAAAA,CAAOvE,CAAAA,CAAAA,CARP9Y,CAAMub,CAAAA,IAAAA,CAAK7O,MAAMtM,MACrB,CAAA,MAAQJ,CAAO,EAAA,CAAA,CAEX,GADWub,IAAAA,CAAK7O,MAAMxC,GAAIlK,CAAAA,CAAAA,CAAM,CACvB4B,CAAAA,CAAAA,SAAAA,CAAW,CACd5B,EAAAA,CAAAA,CACF,MACH,CACJ,CAEGgK,CACAqT,GAAAA,CAAAA,CAAQ9B,IAAK+B,CAAAA,SAAAA,CAAUtd,EAAKub,IAAK7O,CAAAA,KAAAA,CAAMtM,MACvC0Y,CAAAA,CAAAA,CAAAA,CAAUuE,CAAMjX,CAAAA,IAAAA,CAAKhG,QAEzB,GACIwB,CAAAA,CAAAA,CAAW2I,CADX1B,CAAAA,CAAAA,CAAYtK,CAAMY,CAAAA,EAAAA,CAElBoe,EAAW,EAAIC,CAAAA,CAAAA,CAAY,EA+B/B,CAAA,MA9BAjC,KAAK7O,CAAAA,KAAAA,CAAMrG,QAAQ,SAACoX,CAAAA,CAAMjgB,CACtB,CAAA,CAAA,GAAA,CAAKigB,CAAKjd,CAAAA,IAAAA,CAON,MANK6c,CAAAA,CACDA,GAAAA,CAAAA,CAAQ9B,KAAK+B,CAAAA,SAAAA,CAAUtd,CAAKxC,CAAAA,CAAAA,CAAI,GAChCsb,CAAUuE,CAAAA,CAAAA,CAAMjX,IAAKhG,CAAAA,MAAAA,CAAAA,CAEzB0Y,CACA0E,EAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAUjc,KAAKkc,CAGnB,CAAA,CAAA,GAAIJ,CAAO,CAAA,CACPG,CAAUjc,CAAAA,IAAAA,CAAK,GAAImc,CAAAA,EAAKD,CAAAA,CAAAA,CAAK/W,GAC7B,CAAA,CAAA,CAAA,GAAgDA,CAAAA,GAA5ClG,CAAAA,IAAAA,CAAOid,EAAKjd,IAAKkG,CAAAA,GAAAA,CAAI2W,CAAMlH,CAAAA,KAAAA,CAAM2C,CACjCtY,CAAAA,CAAAA,CAAAA,IAAAA,EAAQqI,EAAU8U,SAAUnd,CAAAA,IAAAA,CAAAA,CAAM7C,GAClC+I,GAAAA,GAAAA,CAAMmC,CAAUpC,CAAAA,OAAAA,CAAQL,KAAKyC,CAAUpC,CAAAA,OAAAA,CAAQL,IAAKhG,CAAAA,MAAAA,CAAS,CAC7Dmd,CAAAA,CAAAA,CAAAA,CAAShc,KAAK,GAAImc,CAAAA,EAAAA,CAAKhX,GAAKrE,CAAAA,IAAAA,EAAAA,CAAAA,IAAWA,EAAWkb,CAAAA,CAAAA,CAASnd,OAASod,CAAUpd,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAElF0Y,CACIpS,EAAAA,CAAAA,GAAAA,EACA2W,CAAMO,CAAAA,SAAAA,CAAUlX,IAAKoS,CAC5B,CAAA,EAAA,IAEGjQ,CAAAA,CAAU8U,CAAAA,SAAAA,CAAUF,CAAKjd,CAAAA,IAAAA,CAAAA,CAE7B,MAAIid,CAAAA,CAAK7b,CAAAA,SAAAA,EACLA,CAAYyb,CAAAA,CAAAA,CAAQI,CAAK7b,CAAAA,SAAAA,CAAU8E,IAAI2W,CAAMlH,CAAAA,KAAAA,CAAM2C,CAAY2E,CAAAA,CAAAA,CAAAA,CAAAA,CAAK7b,SACpE2I,CAAAA,CAAAA,CAAY,GAAI/C,CAAAA,EAAO+T,CAAAA,KAAAA,CAAK7O,KAAMyJ,CAAAA,KAAAA,CAAM,CAAGnW,CAAAA,CAAAA,CAAAA,CAAKqb,OAAOmC,CAAU5G,CAAAA,OAAAA,CAAAA,CAAAA,CAAUgG,MAAOW,CAAAA,CAAAA,CAAAA,CAAAA,CAAYhC,KAAKxR,CAAAA,UAAAA,CAAa,IACzG,CAHX,EAAA,IAAA,EAIC,EACFwR,CAAAA,IAAAA,CAAK7O,KAAMtM,CAAAA,MAAAA,CAAQ,GACf,CAAEmK,SAAAA,CAAWA,CAAW1B,CAAAA,SAAAA,CAAAA,CAAAA,CAAWjH,SAAWA,CAAAA,CAAAA,CACxD,EAED,GAAAwF,GAAA,gBAAAgW,KAAA,UAAA/U,YAAAA,CAAaQ,CAAWjH,CAAAA,CAAAA,CAAWqI,CAAaD,CAAAA,CAAAA,CAAAA,CAC5C,GAAI6T,CAAAA,CAAW,CAAA,EAAA,CAAI9T,CAAawR,CAAAA,IAAAA,CAAKxR,UACjC+T,CAAAA,CAAAA,CAAWvC,KAAK7O,KAAOqR,CAAAA,CAAAA,CAAAA,CAAY/T,CAAiB8T,EAAAA,CAAAA,CAAS1d,MAAS0d,CAAAA,CAAAA,CAAS5T,IAAI4T,CAAS1d,CAAAA,MAAAA,CAAS,CAAK,CAAA,CAAA,IAAA,CAC9G,IAAK,GAAI5C,CAAAA,IAAI,CAAGA,CAAAA,GAAAA,CAAIqL,CAAUV,CAAAA,KAAAA,CAAM/H,MAAQ5C,CAAAA,GAAAA,EAAAA,CAAK,CAC7C,GACiEwgB,CAAAA,GAAAA,QAD7Dxd,GAAOqI,CAAAA,CAAAA,CAAUV,KAAM3K,CAAAA,GAAAA,CAAAA,CAAGygB,OAAOpV,CAAUqV,CAAAA,IAAAA,CAAK1gB,GAChDigB,CAAAA,CAAAA,CAAAA,GAAAA,CAAO,GAAIC,CAAAA,EAAAA,CAAK7U,EAAUpC,OAAQL,CAAAA,IAAAA,CAAK5I,GAAIgD,CAAAA,CAAAA,GAAAA,CAAMoB,CACjDoc,CAAAA,CAAAA,CAAAA,GAAAA,CAASD,GAAYA,CAASI,CAAAA,KAAAA,CAAMV,GACpCA,CAAAA,IAAAA,GAAAA,CAAOO,GACHxgB,CAAAA,GAAAA,CACAqgB,EAAS1T,GAET2T,CAAAA,CAAAA,CAAAA,CAAAA,CAAWA,CAAS3H,CAAAA,KAAAA,CAAM,CAAG2H,CAAAA,CAAAA,CAAS1d,OAAS,CAEvDyd,CAAAA,CAAAA,CAAAA,CAAAA,CAAStc,IAAKkc,CAAAA,GAAAA,CAAAA,CACV7b,CACAmI,GAAAA,CAAAA,EAAAA,CACAnI,MAAYS,EAEX2H,CAAAA,CAAAA,CAAAA,GACD+T,CAAWN,CAAAA,GAAAA,CAClB,EACD,GAAIW,CAAAA,EAAWrU,CAAaE,CAAAA,CAAAA,CAAYxM,KAKxC,CAAA,MAJI2gB,CAAAA,CAAWC,CAAAA,EAAAA,GACXP,EAwGZ,SAAsBpR,CAAAA,CAAOnB,CACzB,CAAA,CAAA,GAAI+S,CAAAA,CAOJ,CAAA,MANA5R,CAAAA,EAAMrG,OAAQ,CAAA,SAACoX,CAAMjgB,CAAAA,CAAAA,CAAAA,CACjB,GAAIigB,CAAAA,CAAK7b,WAAqB,CAAP2J,EAAAA,CAAAA,EAAAA,CAEnB,MADA+S,CAAAA,CAAAA,CAAW9gB,CACJ,CAAA,CAAA,CACV,IAEEkP,CAAMyJ,CAAAA,KAAAA,CAAMmI,CACvB,CAAA,EAjHuBC,CAAaT,CAAAA,CAAUM,GAClCrU,CAAcqU,EAAAA,CAAAA,CAAAA,CAEX,GAAI5W,CAAAA,EAAAA,CAAOsW,CAASzC,CAAAA,MAAAA,CAAOwC,GAAW9T,CAChD,CAAA,EACD,GAAA3C,GAAA,aAAAgW,KAAA,UAAAE,SAAAA,CAAUjd,CAAMoC,CAAAA,CAAAA,CAAAA,CACZ,GAAI2D,CAAAA,CAAO,CAAA,GAAIoY,CAAAA,CAMf,CANeA,CAMf,CAAA,MALAjD,KAAK7O,CAAAA,KAAAA,CAAMrG,QAAQ,SAACoX,CAAAA,CAAMjgB,CACtB,CAAA,CAAA,GAAIihB,CAAAA,CAAiC,CAAA,IAAA,EAArBhB,EAAKiB,YAAwBlhB,EAAAA,CAAAA,CAAIigB,CAAKiB,CAAAA,YAAAA,EAAgBre,CAChE+F,CAAAA,CAAAA,CAAKA,KAAKhG,MAASqd,CAAAA,CAAAA,CAAKiB,YAAerc,CAAAA,IAAAA,EAAAA,CAC7C+D,CAAKwX,CAAAA,SAAAA,CAAUH,EAAK/W,GAAK+X,CAAAA,CAAAA,CAAU,EACpCpe,CAAAA,CAAAA,CAAMoC,CACF2D,CAAAA,CAAAA,CACV,EACD,GAAAgB,GAAA,WAAAgW,KAAA,UAAA3U,OAAAA,CAAQkW,CACJ,CAAA,CAAA,MAAuB,EAAnBpD,EAAAA,IAAAA,CAAKxR,WACEwR,IACJ,CAAA,GAAI/T,CAAAA,EAAO+T,CAAAA,IAAAA,CAAK7O,KAAM2O,CAAAA,MAAAA,CAAOsD,EAAMjY,GAAIA,CAAAA,SAAAA,CAAAA,QAAO,IAAIgX,CAAAA,EAAAA,CAAKhX,CAAQ6U,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKxR,WAC9E,EAKD,GAAA3C,GAAA,WAAAgW,KAAA,UAAAzV,OAAAA,CAAQiX,CAAAA,CAAkBC,CACtB,CAAA,CAAA,GAAA,CAAKtD,KAAKxR,UACN,CAAA,MAAOwR,KACX,CAAA,GAAIuD,CAAAA,CAAe,CAAA,EAAA,CAAI9c,EAAQmD,IAAKC,CAAAA,GAAAA,CAAI,CAAGmW,CAAAA,IAAAA,CAAK7O,KAAMtM,CAAAA,MAAAA,CAASye,GAC3DpY,CAAUmY,CAAAA,CAAAA,CAAiBnY,OAC3BsY,CAAAA,CAAAA,CAAWH,CAAiBzW,CAAAA,KAAAA,CAAM/H,OAClC2J,CAAawR,CAAAA,IAAAA,CAAKxR,UACtBwR,CAAAA,IAAAA,CAAK7O,KAAMrG,CAAAA,OAAAA,CAAQoX,SAAAA,GAAcA,CAAK7b,CAAAA,SAAAA,EAClCmI,CAAY,EAAA,EAAA,CAAK/H,CACrB,CAAA,CAAA,GAAIgd,CAAAA,EAAWH,CACftD,CAAAA,IAAAA,CAAK7O,KAAMrG,CAAAA,OAAAA,CAAQoX,SAAAA,CACf,CAAA,CAAA,GAAIpe,CAAAA,EAAMoH,CAAQwY,CAAAA,SAAAA,CAAAA,EAAYD,CAC9B,CAAA,CAAA,GAAW,IAAP3f,EAAAA,CAAAA,CACA,OACJ0f,CAAW5Z,CAAAA,IAAAA,CAAKE,GAAI0Z,CAAAA,CAAAA,CAAU1f,CAC9B,CAAA,CAAA,GAAIqH,CAAAA,EAAMD,CAAQL,CAAAA,IAAAA,CAAK/G,CACvB,CAAA,CAAA,GAAIoe,CAAKjd,CAAAA,IAAAA,CAAM,CACX,GAAIA,CAAAA,GAAAA,CAAOoe,CAAiBzW,CAAAA,KAAAA,CAAM9I,CAAK4e,CAAAA,CAAAA,MAAAA,CAAOW,EAAiBV,IAAK7e,CAAAA,CAAAA,CAAAA,CAAAA,CAChEuC,GAAY6b,CAAAA,CAAAA,CAAK7b,SAAa6b,EAAAA,CAAAA,CAAK7b,UAAU8E,GAAID,CAAAA,CAAAA,CAAQ0P,KAAM6I,CAAAA,CAAAA,CAAW,CAAG3f,CAAAA,CAAAA,CAAAA,CAAAA,CAC7EuC,KACAmI,CACJ+U,EAAAA,CAAAA,CAAAA,CAAavd,IAAK,CAAA,GAAImc,CAAAA,EAAKhX,CAAAA,CAAAA,CAAKlG,IAAMoB,GACzC,CAAA,CAAA,EAAA,IAEGkd,CAAAA,CAAavd,CAAAA,IAAAA,CAAK,GAAImc,CAAAA,EAAAA,CAAKhX,GAC9B,EACF1E,CAAAA,CAAAA,CAAAA,CACH,GAAIkd,CAAAA,CAAAA,CAAU,EACd,CAAA,IAAK,GAAI1hB,CAAAA,IAAIqhB,CAAAA,CAAAA,CAAcrhB,IAAIuhB,CAAAA,CAAAA,CAAUvhB,IACrC0hB,EAAAA,CAAAA,CAAAA,CAAQ3d,KAAK,GAAImc,CAAAA,EAAAA,CAAKjX,CAAQL,CAAAA,IAAAA,CAAK5I,IACvC,CAAA,CAAA,CAAA,CAAA,GAAIkP,CAAAA,EAAQ6O,IAAK7O,CAAAA,KAAAA,CAAMyJ,KAAM,CAAA,CAAA,CAAGnU,CAAOqZ,CAAAA,CAAAA,MAAAA,CAAO6D,GAAS7D,MAAOyD,CAAAA,CAAAA,CAAAA,CAC1DK,CAAS,CAAA,GAAI3X,CAAAA,EAAOkF,CAAAA,CAAAA,CAAO3C,GAG/B,MAFIoV,CAAAA,CAAAA,CAAOC,cA1IK,CAAA,CAAA,CAAA,GAAA,GA2IZD,CAASA,CAAAA,CAAAA,CAAOE,SAAS9D,IAAK7O,CAAAA,KAAAA,CAAMtM,MAAS0e,CAAAA,CAAAA,CAAa1e,MACvD+e,CAAAA,CAAAA,CAAAA,CACV,EACD,GAAA/X,GAAA,kBAAAgW,KAAA,UAAAgC,cAAAA,CAAAA,CAAAA,CACI,GAAIE,CAAAA,CAAAA,CAAQ,CAGZ,CAAA,MAFA/D,MAAK7O,KAAMrG,CAAAA,OAAAA,CAAQoX,SAAAA,CAAeA,CAAAA,CAAAA,CAAAA,CAAKjd,IACnC8e,EAAAA,CAAAA,EAAO,IACJA,CACV,EAOD,GAAAlY,GAAA,YAAAgW,KAAA,UAAAiC,QAAAA,CAAAA,CACI,IADKE,CAAAA,CAAOhE,CAAAA,SAAAA,CAAAA,MAAAA,IAAAA,SAAAA,MAAAA,SAAAA,CAAAA,SAAAA,IAAAA,IAAAA,CAAK7O,MAAMtM,MACvB,CAAA,GAAIid,CAAAA,CAAQ9B,CAAAA,IAAAA,CAAK+B,SAAU,CAAA,CAAA,CAAGiC,GAAOzG,CAAUuE,CAAAA,CAAAA,CAAMjX,IAAKhG,CAAAA,MAAAA,CACtDsM,CAAQ,CAAA,EAAA,CAAI8S,EAAS,CA2BzB,CAAA,MA1BAjE,KAAK7O,CAAAA,KAAAA,CAAMrG,OAAQ,CAAA,SAACoX,EAAMjgB,CACtB,CAAA,CAAA,GAAIA,CAAK+hB,EAAAA,CAAAA,CACL7S,CAAMnL,CAAAA,IAAAA,CAAKkc,GACPA,CAAK7b,CAAAA,SAAAA,EACL4d,CAEH,EAAA,CAAA,IAAA,IAAI/B,CAAKjd,CAAAA,IAAAA,CAAM,CAChB,GAAIA,CAAAA,IAAAA,CAAOid,CAAKjd,CAAAA,IAAAA,CAAKkG,GAAI2W,CAAAA,CAAAA,CAAMlH,MAAM2C,CAAWpS,CAAAA,CAAAA,CAAAA,GAAAA,CAAMlG,IAAQA,EAAAA,IAAAA,CAAKif,MAInE,CAAA,CAAA,CAAA,GAHA3G,IACIpS,GACA2W,EAAAA,CAAAA,CAAMO,UAAUlX,GAAKoS,CAAAA,CAAAA,CAAAA,CACrBtY,KAAM,CACN,GAAIoB,CAAAA,GAAY6b,CAAAA,CAAAA,CAAK7b,SAAa6b,EAAAA,CAAAA,CAAK7b,UAAU8E,GAAI2W,CAAAA,CAAAA,CAAMlH,KAAM2C,CAAAA,CAAAA,CAAAA,CAAAA,CAC7DlX,GACA4d,EAAAA,CAAAA,EAAAA,CACJ,GAAuDxB,CAAAA,GAAnD0B,CAAAA,GAAAA,CAAU,GAAIhC,CAAAA,EAAAA,CAAKhX,GAAIuX,CAAAA,MAAAA,CAAAA,CAAAA,CAAUzd,KAAMoB,GAAoB+d,CAAAA,CAAAA,GAAAA,CAAOjT,CAAMtM,CAAAA,MAAAA,CAAS,CACjF4d,CAAAA,CAAAA,GAAAA,CAAStR,EAAMtM,MAAUsM,EAAAA,CAAAA,CAAMiT,GAAMxB,CAAAA,CAAAA,KAAAA,CAAMuB,GAC3ChT,CAAAA,EAAAA,CAAAA,CAAMiT,KAAQ3B,GAEdtR,CAAAA,CAAAA,CAAMnL,IAAKme,CAAAA,GAAAA,CAClB,EACJ,CAAA,IACQjC,CAAAA,EAAK/W,GACVoS,EAAAA,CAAAA,EACH,EACFyC,CAAAA,IAAAA,CAAK7O,KAAMtM,CAAAA,MAAAA,CAAQ,GACf,GAAIoH,CAAAA,EAAAA,CAAO0T,CAAa7a,CAAAA,IAAAA,CAAKqM,CAAMkK,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAAY4I,EACzD,EAELhY,QAAAA,EAAAA,CAAOrH,KAAQ,CAAA,GAAIqH,CAAAA,EAAO0T,CAAAA,CAAAA,CAAa/a,MAAO,CAW9C,CAAA,CAAMud,EACF,yBAAA,SAAAkC,GAEAlZ,CAAAA,CAEAlG,EAIAoB,CAGA8c,CAAAA,CAAAA,CAAAA,CAAAA,eAAAA,MAAAA,EAAAA,EACInD,IAAK7U,CAAAA,GAAAA,CAAMA,CACX6U,CAAAA,IAAAA,CAAK/a,KAAOA,CACZ+a,CAAAA,IAAAA,CAAK3Z,SAAYA,CAAAA,CAAAA,CACjB2Z,IAAKmD,CAAAA,YAAAA,CAAeA,CACvB,EACD,OAAAvB,YAAA,CAAAyC,EAAA,GAAAxY,GAAA,SAAAgW,KAAA,UAAAe,KAAAA,CAAM7C,CAAAA,CAAAA,CACF,GAAIC,IAAAA,CAAK/a,MAAQ8a,CAAM9a,CAAAA,IAAAA,EAAAA,CAAS8a,CAAM1Z,CAAAA,SAAAA,CAAW,CAC7C,GAAIpB,CAAAA,IAAO8a,CAAM9a,CAAAA,IAAAA,CAAK2d,KAAM5C,CAAAA,IAAAA,CAAK/a,IACjC,CAAA,CAAA,GAAIA,IACA,MAAO,IAAIkd,CAAAA,EAAKld,CAAAA,GAAAA,CAAKif,MAASxB,CAAAA,CAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAUzd,IAAM+a,IAAK3Z,CAAAA,SAAAA,CAC1D,EACJ,CAAA,QAKC2F,EAAAA,cAAAA,YAAAA,CACF,SAAAsY,GAAY7X,CAAAA,CAAMC,CAAQO,CAAAA,CAAAA,CAAYF,CAAUC,CAAAA,CAAAA,CAAAA,CAAAA,eAAAA,MAAAA,EAAAA,EAC5CgT,KAAKvT,IAAOA,CAAAA,CAAAA,CACZuT,IAAKtT,CAAAA,MAAAA,CAASA,CACdsT,CAAAA,IAAAA,CAAK/S,WAAaA,CAClB+S,CAAAA,IAAAA,CAAKjT,QAAWA,CAAAA,CAAAA,CAChBiT,IAAKhT,CAAAA,eAAAA,CAAkBA,CAC1B,EAEL,EAAM8V,EAAiB,CAAA,EAAA,CA+EnBvX,IAAsB,CAAOD,CAAAA,EAAAA,CAA6B,IAK9D,CAqBMQ,GAAa,GAAIyY,CAAAA,CAAAA,CAAU,SAC3B/X,CAAAA,CAAAA,EAAAA,CAAkB,GAAI+X,CAAAA,CAAAA,CAAU,4BAsDhCrW,GAAOG,EAAa,CAAA,CAAA,CAAA,CAAA,CAAO,CAI3BxB,CAAAA,EAAAA,OAAAA,KAAAA,EAAAA,CAAOwB,EAAa,CAAA,CAAA,CAAA,CAAA,CAAM","x_google_ignoreList":[0,1,3]}
|