@100mslive/hms-whiteboard 0.1.3-alpha.8 → 0.1.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/dist/index.cjs.css +1 -1
- package/dist/index.cjs.css.map +2 -2
- package/dist/index.cjs.js +2 -2
- package/dist/index.cjs.js.map +2 -2
- package/dist/index.css +1 -1
- package/dist/index.css.map +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +2 -2
- package/package.json +2 -2
package/dist/index.cjs.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../node_modules/classnames/index.js", "../src/index.ts", "../src/Whiteboard.tsx", "../src/ConnectionStatusToast.tsx", "../src/ErrorFallback.tsx", "../../../node_modules/@tldraw/state/src/lib/core/ArraySet.ts", "../../../node_modules/@tldraw/state/src/lib/core/types.ts", "../../../node_modules/@tldraw/state/src/lib/core/HistoryBuffer.ts", "../../../node_modules/@tldraw/state/src/lib/core/helpers.ts", "../../../node_modules/@tldraw/state/src/lib/core/capture.ts", "../../../node_modules/@tldraw/state/src/lib/core/transactions.ts", "../../../node_modules/@tldraw/state/src/lib/core/warnings.ts", "../../../node_modules/@tldraw/state/src/lib/core/Computed.ts", "../../../node_modules/@tldraw/state/src/lib/core/EffectScheduler.ts", "../../../node_modules/@tldraw/state/src/lib/react/track.ts", "../../../node_modules/@tldraw/state/src/lib/react/useStateTracking.ts", "../../../node_modules/@tldraw/state/src/lib/react/useAtom.ts", "../../../node_modules/@tldraw/state/src/lib/react/useComputed.ts", "../../../node_modules/@tldraw/state/src/lib/react/useQuickReactor.ts", "../../../node_modules/@tldraw/state/src/lib/react/useReactor.ts", "../../../node_modules/@tldraw/state/src/lib/react/useValue.ts", "../src/hooks/useCollaboration.ts", "../src/hooks/default_store.ts", "../src/hooks/useSessionStore.ts", "../src/hooks/StoreClient.ts", "../src/grpc/sessionstore.ts", "../src/grpc/sessionstore.client.ts", "../src/constants.ts", "../src/utils.ts", "../src/hooks/useSetEditorPermissions.tsx"],
|
|
4
4
|
"sourcesContent": ["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n", "export type { WhiteboardProps } from './Whiteboard';\nexport { Whiteboard } from './Whiteboard';\n", "import React, { useState } from 'react';\nimport { Editor, Tldraw } from '@tldraw/tldraw';\nimport { ConnectionStatusToast } from './ConnectionStatusToast';\nimport { ErrorFallback } from './ErrorFallback';\nimport { useCollaboration } from './hooks/useCollaboration';\nimport './index.css';\n\nexport interface WhiteboardProps {\n endpoint?: string;\n token: string;\n zoomToContent?: boolean;\n transparentCanvas?: boolean;\n onMount?: (args: { store?: unknown; editor?: unknown }) => void;\n}\nexport function Whiteboard(props: WhiteboardProps) {\n const [key, setKey] = useState(Date.now() + props.token);\n\n return <CollaborativeEditor key={key} refresh={() => setKey(Date.now() + props.token)} {...props} />;\n}\n\nfunction CollaborativeEditor({\n endpoint,\n token,\n zoomToContent,\n transparentCanvas,\n onMount,\n refresh,\n}: WhiteboardProps & { refresh: () => void }) {\n const [editor, setEditor] = useState<Editor>();\n const store = useCollaboration({\n endpoint,\n token,\n editor,\n zoomToContent,\n });\n\n const connectionStatus = store.status === 'synced-remote' ? store.connectionStatus : undefined;\n\n const handleMount = (editor: Editor) => {\n setEditor(editor);\n // @ts-expect-error - for debugging\n window.editor = editor;\n onMount?.({ store: store.store, editor });\n };\n\n return (\n <Tldraw\n className={transparentCanvas ? 'transparent-canvas' : ''}\n autoFocus\n store={store}\n onMount={handleMount}\n components={{\n ErrorFallback: ({ error, editor }) => <ErrorFallback editor={editor} error={error} refresh={refresh} />,\n }}\n hideUi={editor?.getInstanceState()?.isReadonly && connectionStatus == 'online'}\n initialState={editor?.getInstanceState()?.isReadonly ? 'hand' : 'select'}\n >\n <ConnectionStatusToast store={store} />\n </Tldraw>\n );\n}\n", "import { useEffect, useRef } from 'react';\nimport { TLStoreWithStatus, useToasts } from '@tldraw/tldraw';\n\ninterface ConnectionStatusToastProps {\n store: TLStoreWithStatus;\n}\n\nexport function ConnectionStatusToast({ store }: ConnectionStatusToastProps) {\n const { addToast, removeToast } = useToasts();\n const prevConnectionStatus = useRef<'online' | 'offline' | undefined>(undefined);\n const offlineToastId = useRef<string | undefined>(undefined);\n\n useEffect(() => {\n const connectionStatus = store.status === 'synced-remote' ? store.connectionStatus : undefined;\n\n // Skip if status hasn't changed\n if (connectionStatus === prevConnectionStatus.current) {\n return;\n }\n\n // Remove existing offline toast when coming back online\n if (offlineToastId.current && connectionStatus === 'online') {\n removeToast(offlineToastId.current);\n offlineToastId.current = undefined;\n }\n\n if (connectionStatus === 'offline') {\n offlineToastId.current = addToast({\n title: 'Connection lost',\n description: 'Attempting to reconnect...',\n icon: 'warning-triangle',\n keepOpen: true,\n });\n } else if (connectionStatus === 'online' && prevConnectionStatus.current === 'offline') {\n addToast({\n title: 'Connected',\n description: 'Connection restored',\n icon: 'check',\n });\n }\n\n prevConnectionStatus.current = connectionStatus;\n }, [store, addToast, removeToast]);\n\n return null;\n}\n", "import React, { ComponentType, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useValue } from '@tldraw/state';\nimport { Editor, hardResetEditor } from '@tldraw/tldraw';\nimport classNames from 'classnames';\n\nconst DASHBOARD_URL = 'https://dashboard.100ms.live/dashboard';\n\nexport type TLErrorFallbackComponent = ComponentType<{\n error: unknown;\n refresh: () => void;\n editor?: Editor;\n}>;\n\nexport const ErrorFallback: TLErrorFallbackComponent = ({ error, editor, refresh }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [shouldShowError, setShouldShowError] = useState(process.env.NODE_ENV !== 'production');\n const [didCopy, setDidCopy] = useState(false);\n const [shouldShowResetConfirmation, setShouldShowResetConfirmation] = useState(false);\n\n const errorMessage = error instanceof Error ? error.message : String(error);\n const errorStack = error instanceof Error ? error.stack : null;\n\n useEffect(() => {\n console.error('Whiteboard ErrorFallback:', errorMessage, errorStack);\n }, [errorMessage, errorStack]);\n\n const isDarkModeFromApp = useValue(\n 'isDarkMode',\n () => {\n try {\n if (editor) {\n return editor.user.getIsDarkMode();\n }\n } catch {\n // we're in a funky error state so this might not work for spooky\n // reasons. if not, we'll have another attempt later:\n }\n return null;\n },\n [editor],\n );\n const [\n ,\n // isDarkMode\n setIsDarkMode,\n ] = useState<null | boolean>(null);\n useLayoutEffect(() => {\n // if we found a theme class from the app, we can just use that\n if (isDarkModeFromApp !== null) {\n setIsDarkMode(isDarkModeFromApp);\n }\n\n // do any of our parents have a theme class? if yes then we can just\n // rely on that and don't need to set our own class\n let parent = containerRef.current?.parentElement;\n let foundParentThemeClass = false;\n while (parent) {\n if (parent.classList.contains('tl-theme__dark') || parent.classList.contains('tl-theme__light')) {\n foundParentThemeClass = true;\n break;\n }\n parent = parent.parentElement;\n }\n if (foundParentThemeClass) {\n setIsDarkMode(null);\n return;\n }\n\n // if we can't find a theme class from the app or from a parent, we have\n // to fall back on using a media query:\n setIsDarkMode(window.matchMedia('(prefers-color-scheme: dark)').matches);\n }, [isDarkModeFromApp]);\n\n useEffect(() => {\n if (didCopy) {\n const timeout = setTimeout(() => {\n setDidCopy(false);\n }, 2000);\n return () => clearTimeout(timeout);\n }\n }, [didCopy]);\n\n const copyError = () => {\n const textarea = document.createElement('textarea');\n textarea.value = errorStack ?? errorMessage;\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n textarea.remove();\n setDidCopy(true);\n };\n\n const resetLocalState = async () => {\n hardResetEditor();\n };\n\n return (\n <div\n ref={containerRef}\n className={classNames(\n 'tl-container tl-error-boundary',\n // error-boundary is sometimes used outside of the theme\n // container, so we need to provide it with a theme for our\n // styles to work correctly\n // 100ms: default light theme\n // isDarkMode === null ? '' : isDarkMode ? 'tl-theme__dark' : 'tl-theme__light',\n 'tl-theme__light',\n )}\n style={{ position: 'static' }}\n >\n <div className=\"tl-error-boundary__overlay\" />\n {/* {editor && (\n // opportunistically attempt to render the canvas to reassure\n // the user that their document is still there. there's a good\n // chance this won't work (ie the error that we're currently\n // notifying the user about originates in the canvas) so it's\n // not a big deal if it doesn't work - in that case we just have\n // a plain grey background.\n <ErrorBoundary onError={noop} fallback={() => null}>\n <EditorContext.Provider value={editor}>\n <div className=\"tl-overlay tl-error-boundary__canvas\">\n <Canvas />\n </div>\n </EditorContext.Provider>\n </ErrorBoundary>\n )} */}\n <div\n className={classNames('tl-modal', 'tl-error-boundary__content', {\n 'tl-error-boundary__content__expanded': shouldShowError && !shouldShowResetConfirmation,\n })}\n >\n {shouldShowResetConfirmation ? (\n <>\n <h2>Are you sure?</h2>\n <p>Resetting your data will delete your drawing and cannot be undone.</p>\n <div className=\"tl-error-boundary__content__actions\">\n <button onClick={() => setShouldShowResetConfirmation(false)}>Cancel</button>\n <button className=\"tl-error-boundary__reset\" onClick={resetLocalState}>\n Reset data\n </button>\n </div>\n </>\n ) : (\n <>\n <h2>Something's gone wrong.</h2>\n <p>\n Sorry, we encountered an error. Please refresh the page to continue. If you keep seeing this error, you\n can <a href={DASHBOARD_URL}>ask for help on Dashboard</a>.\n </p>\n {shouldShowError && (\n <div className=\"tl-error-boundary__content__error\">\n <pre>\n <code>{errorStack ?? errorMessage}</code>\n </pre>\n <button onClick={copyError}>{didCopy ? 'Copied!' : 'Copy'}</button>\n </div>\n )}\n <div className=\"tl-error-boundary__content__actions\">\n <button onClick={() => setShouldShowError(!shouldShowError)}>\n {shouldShowError ? 'Hide details' : 'Show details'}\n </button>\n <div className=\"tl-error-boundary__content__actions__group\">\n <button className=\"tl-error-boundary__refresh\" onClick={refresh}>\n Refresh\n </button>\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n", "// The maximum size for an array in an ArraySet\nexport const ARRAY_SIZE_THRESHOLD = 8\n\n/**\n * An ArraySet operates as an array until it reaches a certain size, after which a Set is used\n * instead. In either case, the same methods are used to get, set, remove, and visit the items.\n * @internal\n */\nexport class ArraySet<T> {\n\tprivate arraySize = 0\n\n\tprivate array: (T | undefined)[] | null = Array(ARRAY_SIZE_THRESHOLD)\n\n\tprivate set: Set<T> | null = null\n\n\t/**\n\t * Get whether this ArraySet has any elements.\n\t *\n\t * @returns True if this ArraySet has any elements, false otherwise.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isEmpty() {\n\t\tif (this.array) {\n\t\t\treturn this.arraySize === 0\n\t\t}\n\n\t\tif (this.set) {\n\t\t\treturn this.set.size === 0\n\t\t}\n\n\t\tthrow new Error('no set or array')\n\t}\n\n\t/**\n\t * Add an item to the ArraySet if it is not already present.\n\t *\n\t * @param elem - The element to add.\n\t */\n\n\tadd(elem: T) {\n\t\tif (this.array) {\n\t\t\tconst idx = this.array.indexOf(elem)\n\n\t\t\t// Return false if the element is already in the array.\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif (this.arraySize < ARRAY_SIZE_THRESHOLD) {\n\t\t\t\t// If the array is below the size threshold, push items into the array.\n\n\t\t\t\t// Insert the element into the array's next available slot.\n\t\t\t\tthis.array[this.arraySize] = elem\n\t\t\t\tthis.arraySize++\n\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\t// If the array is full, convert it to a set and remove the array.\n\t\t\t\tthis.set = new Set(this.array as any)\n\t\t\t\tthis.array = null\n\t\t\t\tthis.set.add(elem)\n\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\tif (this.set) {\n\t\t\t// Return false if the element is already in the set.\n\t\t\tif (this.set.has(elem)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tthis.set.add(elem)\n\t\t\treturn true\n\t\t}\n\n\t\tthrow new Error('no set or array')\n\t}\n\n\t/**\n\t * Remove an item from the ArraySet if it is present.\n\t *\n\t * @param elem - The element to remove\n\t */\n\tremove(elem: T) {\n\t\tif (this.array) {\n\t\t\tconst idx = this.array.indexOf(elem)\n\n\t\t\t// If the item is not in the array, return false.\n\t\t\tif (idx === -1) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tthis.array[idx] = undefined\n\t\t\tthis.arraySize--\n\n\t\t\tif (idx !== this.arraySize) {\n\t\t\t\t// If the item is not the last item in the array, move the last item into the\n\t\t\t\t// removed item's slot.\n\t\t\t\tthis.array[idx] = this.array[this.arraySize]\n\t\t\t\tthis.array[this.arraySize] = undefined\n\t\t\t}\n\n\t\t\treturn true\n\t\t}\n\n\t\tif (this.set) {\n\t\t\t// If the item is not in the set, return false.\n\t\t\tif (!this.set.has(elem)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tthis.set.delete(elem)\n\n\t\t\treturn true\n\t\t}\n\n\t\tthrow new Error('no set or array')\n\t}\n\n\t/**\n\t * Run a callback for each element in the ArraySet.\n\t *\n\t * @param visitor - The callback to run for each element.\n\t */\n\tvisit(visitor: (item: T) => void) {\n\t\tif (this.array) {\n\t\t\tfor (let i = 0; i < this.arraySize; i++) {\n\t\t\t\tconst elem = this.array[i]\n\n\t\t\t\tif (typeof elem !== 'undefined') {\n\t\t\t\t\tvisitor(elem)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\n\t\tif (this.set) {\n\t\t\tthis.set.forEach(visitor)\n\n\t\t\treturn\n\t\t}\n\n\t\tthrow new Error('no set or array')\n\t}\n}\n", "import { ArraySet } from './ArraySet'\nimport { _Computed } from './Computed'\nimport { EffectScheduler } from './EffectScheduler'\n\n/** @public */\nexport const RESET_VALUE: unique symbol = Symbol('RESET_VALUE')\n\n/** @public */\nexport type RESET_VALUE = typeof RESET_VALUE\n\n/**\n * A Signal is a reactive value container. The value may change over time, and it may keep track of the diffs between sequential values.\n *\n * There are two types of signal:\n *\n * - Atomic signals, created using [[atom]]. These are mutable references to values that can be changed using [[Atom.set]].\n * - Computed signals, created using [[computed]]. These are values that are computed from other signals. They are recomputed lazily if their dependencies change.\n *\n * @public\n */\nexport interface Signal<Value, Diff = unknown> {\n\t/**\n\t * The name of the signal. This is used at runtime for debugging and perf profiling only. It does not need to be globally unique.\n\t */\n\tname: string\n\t/**\n\t * The current value of the signal. This is a reactive value, and will update when the signal changes.\n\t * Any computed signal that depends on this signal will be lazily recomputed if this signal changes.\n\t * Any effect that depends on this signal will be rescheduled if this signal changes.\n\t */\n\tget(): Value\n\t/**\n\t * @deprecated Use [[Signal.get]] instead.\n\t */\n\tvalue: Value\n\t/**\n\t * The epoch when this signal's value last changed. Note tha this is not the same as when the value was last computed.\n\t * A signal may recopmute it's value without changing it.\n\t */\n\tlastChangedEpoch: number\n\t/**\n\t * Returns the sequence of diffs between the the value at the given epoch and the current value.\n\t * Returns the [[RESET_VALUE]] constant if there is not enough information to compute the diff sequence.\n\t * @param epoch - The epoch to get diffs since.\n\t */\n\tgetDiffSince(epoch: number): RESET_VALUE | Diff[]\n\t/**\n\t * Returns the current value of the signal without capturing it as a dependency.\n\t * Use this if you need to retrieve the signal's value in a hot loop where the performance overhead of dependency tracking is too high.\n\t */\n\t__unsafe__getWithoutCapture(): Value\n\t/** @internal */\n\tchildren: ArraySet<Child>\n}\n\n/** @internal */\nexport type Child = EffectScheduler<any> | _Computed<any>\n\n/**\n * Computes the diff between the previous and current value.\n *\n * If the diff cannot be computed for whatever reason, it should return [[RESET_VALUE]].\n *\n * @public\n */\nexport type ComputeDiff<Value, Diff> = (\n\tpreviousValue: Value,\n\tcurrentValue: Value,\n\tlastComputedEpoch: number,\n\tcurrentEpoch: number\n) => Diff | RESET_VALUE\n", "import { RESET_VALUE } from './types'\n\ntype RangeTuple<Diff> = [fromEpoch: number, toEpoch: number, diff: Diff]\n\n/**\n * A structure that stores diffs between values of an atom.\n *\n * @internal\n */\nexport class HistoryBuffer<Diff> {\n\tprivate index = 0\n\n\t// use a wrap around buffer to store the last N values\n\tbuffer: Array<RangeTuple<Diff> | undefined>\n\n\tconstructor(private readonly capacity: number) {\n\t\tthis.buffer = new Array(capacity)\n\t}\n\n\t/**\n\t * Add a diff to the history buffer.\n\t *\n\t * @param lastComputedEpoch - The epoch when the diff was computed.\n\t * @param currentEpoch - The current epoch.\n\t * @param diff - The diff to add, or else a reset value.\n\t */\n\tpushEntry(lastComputedEpoch: number, currentEpoch: number, diff: Diff | RESET_VALUE) {\n\t\tif (diff === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tif (diff === RESET_VALUE) {\n\t\t\tthis.clear()\n\t\t\treturn\n\t\t}\n\n\t\t// Add the diff to the buffer as a range tuple.\n\t\tthis.buffer[this.index] = [lastComputedEpoch, currentEpoch, diff]\n\n\t\t// Bump the index, wrapping around if necessary.\n\t\tthis.index = (this.index + 1) % this.capacity\n\t}\n\n\t/**\n\t * Clear the history buffer.\n\t */\n\tclear() {\n\t\tthis.index = 0\n\t\tthis.buffer.fill(undefined)\n\t}\n\n\t/**\n\t * Get the diffs since the given epoch.\n\t *\n\t * @param epoch - The epoch to get diffs since.\n\t * @returns An array of diffs or a flag to reset the history buffer.\n\t */\n\tgetChangesSince(sinceEpoch: number): RESET_VALUE | Diff[] {\n\t\tconst { index, capacity, buffer } = this\n\n\t\t// For each item in the buffer...\n\t\tfor (let i = 0; i < capacity; i++) {\n\t\t\tconst offset = (index - 1 + capacity - i) % capacity\n\n\t\t\tconst elem = buffer[offset]\n\n\t\t\t// If there's no element in the offset position, return the reset value\n\t\t\tif (!elem) {\n\t\t\t\treturn RESET_VALUE\n\t\t\t}\n\n\t\t\tconst [fromEpoch, toEpoch] = elem\n\n\t\t\t// If the first element is already too early, bail\n\t\t\tif (i === 0 && sinceEpoch >= toEpoch) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\t// If the element is since the given epoch, return an array with all diffs from this element and all following elements\n\t\t\tif (fromEpoch <= sinceEpoch && sinceEpoch < toEpoch) {\n\t\t\t\tconst len = i + 1\n\t\t\t\tconst result = new Array(len)\n\n\t\t\t\tfor (let j = 0; j < len; j++) {\n\t\t\t\t\tresult[j] = buffer[(offset + j) % capacity]![2]\n\t\t\t\t}\n\n\t\t\t\treturn result\n\t\t\t}\n\t\t}\n\n\t\t// If we haven't returned yet, return the reset value\n\t\treturn RESET_VALUE\n\t}\n}\n", "import { Child, Signal } from './types'\n\n/**\n * Get whether the given value is a child.\n *\n * @param x The value to check.\n * @returns True if the value is a child, false otherwise.\n */\nfunction isChild(x: any): x is Child {\n\treturn x && typeof x === 'object' && 'parents' in x\n}\n\n/**\n * Get whether a child's parents have changed.\n *\n * @param child The child to check.\n * @returns True if the child's parents have changed, false otherwise.\n */\nexport function haveParentsChanged(child: Child) {\n\tfor (let i = 0, n = child.parents.length; i < n; i++) {\n\t\t// Get the parent's value without capturing it.\n\t\tchild.parents[i].__unsafe__getWithoutCapture()\n\n\t\t// If the parent's epoch does not match the child's view of the parent's epoch, then the parent has changed.\n\t\tif (child.parents[i].lastChangedEpoch !== child.parentEpochs[i]) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n/**\n * Detach a child from a parent.\n *\n * @param parent The parent to detach from.\n * @param child The child to detach.\n */\nexport const detach = (parent: Signal<any>, child: Child) => {\n\t// If the child is not attached to the parent, do nothing.\n\tif (!parent.children.remove(child)) {\n\t\treturn\n\t}\n\n\t// If the parent has no more children, then detach the parent from its parents.\n\tif (parent.children.isEmpty && isChild(parent)) {\n\t\tfor (let i = 0, n = parent.parents.length; i < n; i++) {\n\t\t\tdetach(parent.parents[i], parent)\n\t\t}\n\t}\n}\n\n/**\n * Attach a child to a parent.\n *\n * @param parent The parent to attach to.\n * @param child The child to attach.\n */\nexport const attach = (parent: Signal<any>, child: Child) => {\n\t// If the child is already attached to the parent, do nothing.\n\tif (!parent.children.add(child)) {\n\t\treturn\n\t}\n\n\t// If the parent itself is a child, add the parent to the parent's parents.\n\tif (isChild(parent)) {\n\t\tfor (let i = 0, n = parent.parents.length; i < n; i++) {\n\t\t\tattach(parent.parents[i], parent)\n\t\t}\n\t}\n}\n\n/**\n * Get whether two values are equal (insofar as @tldraw/state is concerned).\n *\n * @param a The first value.\n * @param b The second value.\n */\nexport function equals(a: any, b: any): boolean {\n\tconst shallowEquals =\n\t\ta === b || Object.is(a, b) || Boolean(a && b && typeof a.equals === 'function' && a.equals(b))\n\treturn shallowEquals\n}\n\nexport declare function assertNever(x: never): never\n\n/** @public */\nexport const EMPTY_ARRAY: [] = Object.freeze([]) as any\n", "import { attach, detach } from './helpers'\nimport { Child, Signal } from './types'\n\nconst tldrawStateGlobalKey = Symbol.for('__@tldraw/state__')\nconst tldrawStateGlobal = globalThis as { [tldrawStateGlobalKey]?: true }\n\nif (tldrawStateGlobal[tldrawStateGlobalKey]) {\n\tconsole.error(\n\t\t'Multiple versions of @tldraw/state detected. This will cause unexpected behavior. Please add \"resolutions\" (yarn/pnpm) or \"overrides\" (npm) in your package.json to ensure only one version of @tldraw/state is loaded.'\n\t)\n} else {\n\ttldrawStateGlobal[tldrawStateGlobalKey] = true\n}\n\nclass CaptureStackFrame {\n\toffset = 0\n\tnumNewParents = 0\n\n\tmaybeRemoved?: Signal<any>[]\n\n\tconstructor(public readonly below: CaptureStackFrame | null, public readonly child: Child) {}\n}\n\nlet stack: CaptureStackFrame | null = null\n\n/**\n * Executes the given function without capturing any parents in the current capture context.\n *\n * This is mainly useful if you want to run an effect only when certain signals change while also\n * dereferencing other signals which should not cause the effect to rerun on their own.\n *\n * @example\n * ```ts\n * const name = atom('name', 'Sam')\n * const time = atom('time', () => new Date().getTime())\n *\n * setInterval(() => {\n * time.set(new Date().getTime())\n * })\n *\n * react('log name changes', () => {\n * \t print(name.get(), 'was changed at', unsafe__withoutCapture(() => time.get()))\n * })\n *\n * ```\n *\n * @public\n */\nexport function unsafe__withoutCapture<T>(fn: () => T): T {\n\tconst oldStack = stack\n\tstack = null\n\ttry {\n\t\treturn fn()\n\t} finally {\n\t\tstack = oldStack\n\t}\n}\n\nexport function startCapturingParents(child: Child) {\n\tstack = new CaptureStackFrame(stack, child)\n}\n\nexport function stopCapturingParents() {\n\tconst frame = stack!\n\tstack = frame.below\n\n\tconst didParentsChange = frame.numNewParents > 0 || frame.offset !== frame.child.parents.length\n\n\tif (!didParentsChange) {\n\t\treturn\n\t}\n\n\tfor (let i = frame.offset; i < frame.child.parents.length; i++) {\n\t\tconst p = frame.child.parents[i]\n\t\tconst parentWasRemoved = frame.child.parents.indexOf(p) >= frame.offset\n\t\tif (parentWasRemoved) {\n\t\t\tdetach(p, frame.child)\n\t\t}\n\t}\n\n\tframe.child.parents.length = frame.offset\n\tframe.child.parentEpochs.length = frame.offset\n\n\tif (stack?.maybeRemoved) {\n\t\tfor (let i = 0; i < stack.maybeRemoved.length; i++) {\n\t\t\tconst maybeRemovedParent = stack.maybeRemoved[i]\n\t\t\tif (frame.child.parents.indexOf(maybeRemovedParent) === -1) {\n\t\t\t\tdetach(maybeRemovedParent, frame.child)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// this must be called after the parent is up to date\nexport function maybeCaptureParent(p: Signal<any, any>) {\n\tif (stack) {\n\t\tconst idx = stack.child.parents.indexOf(p)\n\t\t// if the child didn't deref this parent last time it executed, then idx will be -1\n\t\t// if the child did deref this parent last time but in a different order relative to other parents, then idx will be greater than stack.offset\n\t\t// if the child did deref this parent last time in the same order, then idx will be the same as stack.offset\n\t\t// if the child did deref this parent already during this capture session then 0 <= idx < stack.offset\n\n\t\tif (idx < 0) {\n\t\t\tstack.numNewParents++\n\t\t\tif (stack.child.isActivelyListening) {\n\t\t\t\tattach(p, stack.child)\n\t\t\t}\n\t\t}\n\n\t\tif (idx < 0 || idx >= stack.offset) {\n\t\t\tif (idx !== stack.offset && idx > 0) {\n\t\t\t\tconst maybeRemovedParent = stack.child.parents[stack.offset]\n\n\t\t\t\tif (!stack.maybeRemoved) {\n\t\t\t\t\tstack.maybeRemoved = [maybeRemovedParent]\n\t\t\t\t} else if (stack.maybeRemoved.indexOf(maybeRemovedParent) === -1) {\n\t\t\t\t\tstack.maybeRemoved.push(maybeRemovedParent)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstack.child.parents[stack.offset] = p\n\t\t\tstack.child.parentEpochs[stack.offset] = p.lastChangedEpoch\n\t\t\tstack.offset++\n\t\t}\n\t}\n}\n\n/**\n * A debugging tool that tells you why a computed signal or effect is running.\n * Call in the body of a computed signal or effect function.\n *\n * @example\n * ```ts\n * const name = atom('name', 'Bob')\n * react('greeting', () => {\n * \twhyAmIRunning()\n *\tprint('Hello', name.get())\n * })\n *\n * name.set('Alice')\n *\n * // 'greeting' is running because:\n * // 'name' changed => 'Alice'\n * ```\n *\n * @public\n */\nexport function whyAmIRunning() {\n\tconst child = stack?.child\n\tif (!child) {\n\t\tthrow new Error('whyAmIRunning() called outside of a reactive context')\n\t}\n\n\tconst changedParents = []\n\tfor (let i = 0; i < child.parents.length; i++) {\n\t\tconst parent = child.parents[i]\n\n\t\tif (parent.lastChangedEpoch > child.parentEpochs[i]) {\n\t\t\tchangedParents.push(parent)\n\t\t}\n\t}\n\n\tif (changedParents.length === 0) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log((child as any).name, 'is running but none of the parents changed')\n\t} else {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log((child as any).name, 'is running because:')\n\t\tfor (const changedParent of changedParents) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.log(\n\t\t\t\t'\\t',\n\t\t\t\t(changedParent as any).name,\n\t\t\t\t'changed =>',\n\t\t\t\tchangedParent.__unsafe__getWithoutCapture()\n\t\t\t)\n\t\t}\n\t}\n}\n", "import { _Atom } from './Atom'\nimport { GLOBAL_START_EPOCH } from './constants'\nimport { EffectScheduler } from './EffectScheduler'\nimport { Child, Signal } from './types'\n\n// The current epoch (global to all atoms).\nexport let globalEpoch = GLOBAL_START_EPOCH + 1\n\n// Whether any transaction is reacting.\nlet globalIsReacting = false\n\nexport function advanceGlobalEpoch() {\n\tglobalEpoch++\n}\n\nclass Transaction {\n\tconstructor(public readonly parent: Transaction | null) {}\n\tinitialAtomValues = new Map<_Atom<any>, any>()\n\n\t/**\n\t * Get whether this transaction is a root (no parents).\n\t *\n\t * @public\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isRoot() {\n\t\treturn this.parent === null\n\t}\n\n\t/**\n\t * Commit the transaction's changes.\n\t *\n\t * @public\n\t */\n\tcommit() {\n\t\tif (this.isRoot) {\n\t\t\t// For root transactions, flush changes to each of the atom's initial values.\n\t\t\tconst atoms = this.initialAtomValues\n\t\t\tthis.initialAtomValues = new Map()\n\t\t\tflushChanges(atoms.keys())\n\t\t} else {\n\t\t\t// For transaction's with parents, add the transaction's initial values to the parent's.\n\t\t\tthis.initialAtomValues.forEach((value, atom) => {\n\t\t\t\tif (!this.parent!.initialAtomValues.has(atom)) {\n\t\t\t\t\tthis.parent!.initialAtomValues.set(atom, value)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Abort the transaction.\n\t *\n\t * @public\n\t */\n\tabort() {\n\t\tglobalEpoch++\n\n\t\t// Reset each of the transaction's atoms to its initial value.\n\t\tthis.initialAtomValues.forEach((value, atom) => {\n\t\t\tatom.set(value)\n\t\t\tatom.historyBuffer?.clear()\n\t\t})\n\n\t\t// Commit the changes.\n\t\tthis.commit()\n\t}\n}\n\n/**\n * Collect all of the reactors that need to run for an atom and run them.\n *\n * @param atom The atom to flush changes for.\n */\nfunction flushChanges(atoms: Iterable<_Atom<any>>) {\n\tif (globalIsReacting) {\n\t\tthrow new Error('cannot change atoms during reaction cycle')\n\t}\n\n\ttry {\n\t\tglobalIsReacting = true\n\n\t\t// Collect all of the visited reactors.\n\t\tconst reactors = new Set<EffectScheduler<unknown>>()\n\n\t\t// Visit each descendant of the atom, collecting reactors.\n\t\tconst traverse = (node: Child) => {\n\t\t\tif (node.lastTraversedEpoch === globalEpoch) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tnode.lastTraversedEpoch = globalEpoch\n\n\t\t\tif ('maybeScheduleEffect' in node) {\n\t\t\t\treactors.add(node)\n\t\t\t} else {\n\t\t\t\t;(node as any as Signal<any>).children.visit(traverse)\n\t\t\t}\n\t\t}\n\n\t\tfor (const atom of atoms) {\n\t\t\tatom.children.visit(traverse)\n\t\t}\n\n\t\t// Run each reactor.\n\t\tfor (const r of reactors) {\n\t\t\tr.maybeScheduleEffect()\n\t\t}\n\t} finally {\n\t\tglobalIsReacting = false\n\t}\n}\n\n/**\n * Handle a change to an atom.\n *\n * @param atom The atom that changed.\n * @param previousValue The atom's previous value.\n *\n * @internal\n */\nexport function atomDidChange(atom: _Atom<any>, previousValue: any) {\n\tif (!currentTransaction) {\n\t\tflushChanges([atom])\n\t} else if (!currentTransaction.initialAtomValues.has(atom)) {\n\t\tcurrentTransaction.initialAtomValues.set(atom, previousValue)\n\t}\n}\n\n/**\n * The current transaction, if there is one.\n *\n * @global\n * @public\n */\nexport let currentTransaction = null as Transaction | null\n\n/**\n * Batches state updates, deferring side effects until after the transaction completes.\n *\n * @example\n * ```ts\n * const firstName = atom('John')\n * const lastName = atom('Doe')\n *\n * react('greet', () => {\n * print(`Hello, ${firstName.get()} ${lastName.get()}!`)\n * })\n *\n * // Logs \"Hello, John Doe!\"\n *\n * transaction(() => {\n * firstName.set('Jane')\n * lastName.set('Smith')\n * })\n *\n * // Logs \"Hello, Jane Smith!\"\n * ```\n *\n * If the function throws, the transaction is aborted and any signals that were updated during the transaction revert to their state before the transaction began.\n *\n * @example\n * ```ts\n * const firstName = atom('John')\n * const lastName = atom('Doe')\n *\n * react('greet', () => {\n * print(`Hello, ${firstName.get()} ${lastName.get()}!`)\n * })\n *\n * // Logs \"Hello, John Doe!\"\n *\n * transaction(() => {\n * firstName.set('Jane')\n * throw new Error('oops')\n * })\n *\n * // Does not log\n * // firstName.get() === 'John'\n * ```\n *\n * A `rollback` callback is passed into the function.\n * Calling this will prevent the transaction from committing and will revert any signals that were updated during the transaction to their state before the transaction began.\n *\n * * @example\n * ```ts\n * const firstName = atom('John')\n * const lastName = atom('Doe')\n *\n * react('greet', () => {\n * print(`Hello, ${firstName.get()} ${lastName.get()}!`)\n * })\n *\n * // Logs \"Hello, John Doe!\"\n *\n * transaction((rollback) => {\n * firstName.set('Jane')\n * lastName.set('Smith')\n * rollback()\n * })\n *\n * // Does not log\n * // firstName.get() === 'John'\n * // lastName.get() === 'Doe'\n * ```\n *\n * @param fn - The function to run in a transaction, called with a function to roll back the change.\n * @public\n */\nexport function transaction<T>(fn: (rollback: () => void) => T) {\n\tconst txn = new Transaction(currentTransaction)\n\n\t// Set the current transaction to the transaction\n\tcurrentTransaction = txn\n\n\ttry {\n\t\tlet rollback = false\n\n\t\t// Run the function.\n\t\tconst result = fn(() => (rollback = true))\n\n\t\tif (rollback) {\n\t\t\t// If the rollback was triggered, abort the transaction.\n\t\t\ttxn.abort()\n\t\t} else {\n\t\t\t// Otherwise, commit the transaction.\n\t\t\ttxn.commit()\n\t\t}\n\n\t\treturn result\n\t} catch (e) {\n\t\t// Abort the transaction if the function throws.\n\t\ttxn.abort()\n\t\tthrow e\n\t} finally {\n\t\t// Set the current transaction to the transaction's parent.\n\t\tcurrentTransaction = currentTransaction.parent\n\t}\n}\n\n/**\n * Like [transaction](#transaction), but does not create a new transaction if there is already one in progress.\n *\n * @param fn - The function to run in a transaction.\n * @public\n */\nexport function transact<T>(fn: () => T): T {\n\tif (currentTransaction) {\n\t\treturn fn()\n\t}\n\treturn transaction(fn)\n}\n", "let didWarnDotValue = false\n\n// remove this once we've removed all getters from our app\n\nexport function logDotValueWarning() {\n\tif (didWarnDotValue) return\n\tdidWarnDotValue = true\n\tconsole.warn(\n\t\t'Using Signal.value is deprecated and will be removed in the near future. Please use Signal.get() instead.'\n\t)\n}\n\nlet didWarnComputedGetter = false\n\nexport function logComputedGetterWarning() {\n\tif (didWarnComputedGetter) return\n\tdidWarnComputedGetter = true\n\tconsole.warn(\n\t\t`Using \\`@computed\\` as a decorator for getters is deprecated and will be removed in the near future. Please refactor to use \\`@computed\\` as a decorator for methods.\n\n// Before\n@computed\nget foo() {\n\treturn 'foo'\n}\n\n// After\n@computed\ngetFoo() {\n\treturn 'foo'\n}\n`\n\t)\n}\n", "/* eslint-disable prefer-rest-params */\nimport { ArraySet } from './ArraySet'\nimport { HistoryBuffer } from './HistoryBuffer'\nimport { maybeCaptureParent, startCapturingParents, stopCapturingParents } from './capture'\nimport { GLOBAL_START_EPOCH } from './constants'\nimport { EMPTY_ARRAY, equals, haveParentsChanged } from './helpers'\nimport { globalEpoch } from './transactions'\nimport { Child, ComputeDiff, RESET_VALUE, Signal } from './types'\nimport { logComputedGetterWarning, logDotValueWarning } from './warnings'\n\nconst UNINITIALIZED = Symbol('UNINITIALIZED')\n/**\n * The type of the first value passed to a computed signal function as the 'prevValue' parameter.\n *\n * @see [[isUninitialized]].\n * @public\n */\ntype UNINITIALIZED = typeof UNINITIALIZED\n\n/**\n * Call this inside a computed signal function to determine whether it is the first time the function is being called.\n *\n * Mainly useful for incremental signal computation.\n *\n * @example\n * ```ts\n * const count = atom('count', 0)\n * const double = computed('double', (prevValue) => {\n * if (isUninitialized(prevValue)) {\n * print('First time!')\n * }\n * return count.get() * 2\n * })\n * ```\n *\n * @param value - The value to check.\n * @public\n */\nexport const isUninitialized = (value: any): value is UNINITIALIZED => {\n\treturn value === UNINITIALIZED\n}\n\nclass WithDiff<Value, Diff> {\n\tconstructor(public value: Value, public diff: Diff) {}\n}\n\n/**\n * When writing incrementally-computed signals it is convenient (and usually more performant) to incrementally compute the diff too.\n *\n * You can use this function to wrap the return value of a computed signal function to indicate that the diff should be used instead of calculating a new one with [[AtomOptions.computeDiff]].\n *\n * @example\n * ```ts\n * const count = atom('count', 0)\n * const double = computed('double', (prevValue) => {\n * const nextValue = count.get() * 2\n * if (isUninitialized(prevValue)) {\n * return nextValue\n * }\n * return withDiff(nextValue, nextValue - prevValue)\n * }, { historyLength: 10 })\n * ```\n *\n *\n * @param value - The value.\n * @param diff - The diff.\n * @public\n */\nexport function withDiff<Value, Diff>(value: Value, diff: Diff): WithDiff<Value, Diff> {\n\treturn new WithDiff(value, diff)\n}\n\n/**\n * Options for creating computed signals. Used when calling [[computed]].\n * @public\n */\nexport interface ComputedOptions<Value, Diff> {\n\t/**\n\t * The maximum number of diffs to keep in the history buffer.\n\t *\n\t * If you don't need to compute diffs, or if you will supply diffs manually via [[Atom.set]], you can leave this as `undefined` and no history buffer will be created.\n\t *\n\t * If you expect the value to be part of an active effect subscription all the time, and to not change multiple times inside of a single transaction, you can set this to a relatively low number (e.g. 10).\n\t *\n\t * Otherwise, set this to a higher number based on your usage pattern and memory constraints.\n\t *\n\t */\n\thistoryLength?: number\n\t/**\n\t * A method used to compute a diff between the atom's old and new values. If provided, it will not be used unless you also specify [[AtomOptions.historyLength]].\n\t */\n\tcomputeDiff?: ComputeDiff<Value, Diff>\n\t/**\n\t * If provided, this will be used to compare the old and new values of the atom to determine if the value has changed.\n\t * By default, values are compared using first using strict equality (`===`), then `Object.is`, and finally any `.equals` method present in the object's prototype chain.\n\t * @param a - The old value\n\t * @param b - The new value\n\t * @returns\n\t */\n\tisEqual?: (a: any, b: any) => boolean\n}\n\n/**\n * A computed signal created via [[computed]].\n *\n * @public\n */\nexport interface Computed<Value, Diff = unknown> extends Signal<Value, Diff> {\n\t/**\n\t * Whether this computed child is involved in an actively-running effect graph.\n\t * @public\n\t */\n\treadonly isActivelyListening: boolean\n\n\t/** @internal */\n\treadonly parents: Signal<any, any>[]\n\t/** @internal */\n\treadonly parentEpochs: number[]\n}\n\n/**\n * @internal\n */\nexport class _Computed<Value, Diff = unknown> implements Computed<Value, Diff> {\n\tlastChangedEpoch = GLOBAL_START_EPOCH\n\tlastTraversedEpoch = GLOBAL_START_EPOCH\n\n\t/**\n\t * The epoch when the reactor was last checked.\n\t */\n\tprivate lastCheckedEpoch = GLOBAL_START_EPOCH\n\n\tparents: Signal<any, any>[] = []\n\tparentEpochs: number[] = []\n\n\tchildren = new ArraySet<Child>()\n\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isActivelyListening(): boolean {\n\t\treturn !this.children.isEmpty\n\t}\n\n\thistoryBuffer?: HistoryBuffer<Diff>\n\n\t// The last-computed value of this signal.\n\tprivate state: Value = UNINITIALIZED as unknown as Value\n\n\tprivate computeDiff?: ComputeDiff<Value, Diff>\n\n\tprivate readonly isEqual: (a: any, b: any) => boolean\n\n\tconstructor(\n\t\t/**\n\t\t * The name of the signal. This is used for debugging and performance profiling purposes. It does not need to be globally unique.\n\t\t */\n\t\tpublic readonly name: string,\n\t\t/**\n\t\t * The function that computes the value of the signal.\n\t\t */\n\t\tprivate readonly derive: (\n\t\t\tpreviousValue: Value | UNINITIALIZED,\n\t\t\tlastComputedEpoch: number\n\t\t) => Value | WithDiff<Value, Diff>,\n\t\toptions?: ComputedOptions<Value, Diff>\n\t) {\n\t\tif (options?.historyLength) {\n\t\t\tthis.historyBuffer = new HistoryBuffer(options.historyLength)\n\t\t}\n\t\tthis.computeDiff = options?.computeDiff\n\t\tthis.isEqual = options?.isEqual ?? equals\n\t}\n\n\t__unsafe__getWithoutCapture(): Value {\n\t\tconst isNew = this.lastChangedEpoch === GLOBAL_START_EPOCH\n\n\t\tif (!isNew && (this.lastCheckedEpoch === globalEpoch || !haveParentsChanged(this))) {\n\t\t\tthis.lastCheckedEpoch = globalEpoch\n\t\t\treturn this.state\n\t\t}\n\n\t\ttry {\n\t\t\tstartCapturingParents(this)\n\t\t\tconst result = this.derive(this.state, this.lastCheckedEpoch)\n\t\t\tconst newState = result instanceof WithDiff ? result.value : result\n\t\t\tif (this.state === UNINITIALIZED || !this.isEqual(newState, this.state)) {\n\t\t\t\tif (this.historyBuffer && !isNew) {\n\t\t\t\t\tconst diff = result instanceof WithDiff ? result.diff : undefined\n\t\t\t\t\tthis.historyBuffer.pushEntry(\n\t\t\t\t\t\tthis.lastChangedEpoch,\n\t\t\t\t\t\tglobalEpoch,\n\t\t\t\t\t\tdiff ??\n\t\t\t\t\t\t\tthis.computeDiff?.(this.state, newState, this.lastCheckedEpoch, globalEpoch) ??\n\t\t\t\t\t\t\tRESET_VALUE\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tthis.lastChangedEpoch = globalEpoch\n\t\t\t\tthis.state = newState\n\t\t\t}\n\t\t\tthis.lastCheckedEpoch = globalEpoch\n\n\t\t\treturn this.state\n\t\t} finally {\n\t\t\tstopCapturingParents()\n\t\t}\n\t}\n\n\tget(): Value {\n\t\tconst value = this.__unsafe__getWithoutCapture()\n\t\tmaybeCaptureParent(this)\n\t\treturn value\n\t}\n\n\t/**\n\t * @deprecated Use [[get]] instead.\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget value() {\n\t\tlogDotValueWarning()\n\t\treturn this.get()\n\t}\n\n\tgetDiffSince(epoch: number): RESET_VALUE | Diff[] {\n\t\t// need to call .get() to ensure both that this derivation is up to date\n\t\t// and that tracking happens correctly\n\t\tthis.get()\n\n\t\tif (epoch >= this.lastChangedEpoch) {\n\t\t\treturn EMPTY_ARRAY\n\t\t}\n\n\t\treturn this.historyBuffer?.getChangesSince(epoch) ?? RESET_VALUE\n\t}\n}\n\nfunction computedMethodAnnotation(\n\toptions: ComputedOptions<any, any> = {},\n\t_target: any,\n\tkey: string,\n\tdescriptor: PropertyDescriptor\n) {\n\tconst originalMethod = descriptor.value\n\tconst derivationKey = Symbol.for('__@tldraw/state__computed__' + key)\n\n\tdescriptor.value = function (this: any) {\n\t\tlet d = this[derivationKey] as _Computed<any> | undefined\n\n\t\tif (!d) {\n\t\t\td = new _Computed(key, originalMethod!.bind(this) as any, options)\n\t\t\tObject.defineProperty(this, derivationKey, {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: false,\n\t\t\t\twritable: false,\n\t\t\t\tvalue: d,\n\t\t\t})\n\t\t}\n\t\treturn d.get()\n\t}\n\tdescriptor.value[isComputedMethodKey] = true\n\n\treturn descriptor\n}\n\nfunction computedAnnotation(\n\toptions: ComputedOptions<any, any> = {},\n\t_target: any,\n\tkey: string,\n\tdescriptor: PropertyDescriptor\n) {\n\tif (descriptor.get) {\n\t\tlogComputedGetterWarning()\n\t\treturn computedGetterAnnotation(options, _target, key, descriptor)\n\t} else {\n\t\treturn computedMethodAnnotation(options, _target, key, descriptor)\n\t}\n}\n\nfunction computedGetterAnnotation(\n\toptions: ComputedOptions<any, any> = {},\n\t_target: any,\n\tkey: string,\n\tdescriptor: PropertyDescriptor\n) {\n\tconst originalMethod = descriptor.get\n\tconst derivationKey = Symbol.for('__@tldraw/state__computed__' + key)\n\n\tdescriptor.get = function (this: any) {\n\t\tlet d = this[derivationKey] as _Computed<any> | undefined\n\n\t\tif (!d) {\n\t\t\td = new _Computed(key, originalMethod!.bind(this) as any, options)\n\t\t\tObject.defineProperty(this, derivationKey, {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: false,\n\t\t\t\twritable: false,\n\t\t\t\tvalue: d,\n\t\t\t})\n\t\t}\n\t\treturn d.get()\n\t}\n\n\treturn descriptor\n}\n\nconst isComputedMethodKey = '@@__isComputedMethod__@@'\n\n/**\n * Retrieves the underlying computed instance for a given property created with the [[computed]]\n * decorator.\n *\n * @example\n * ```ts\n * class Counter {\n * max = 100\n * count = atom(0)\n *\n * @computed getRemaining() {\n * return this.max - this.count.get()\n * }\n * }\n *\n * const c = new Counter()\n * const remaining = getComputedInstance(c, 'getRemaining')\n * remaining.get() === 100 // true\n * c.count.set(13)\n * remaining.get() === 87 // true\n * ```\n *\n * @param obj - The object\n * @param propertyName - The property name\n * @public\n */\nexport function getComputedInstance<Obj extends object, Prop extends keyof Obj>(\n\tobj: Obj,\n\tpropertyName: Prop\n): Computed<Obj[Prop]> {\n\tconst key = Symbol.for('__@tldraw/state__computed__' + propertyName.toString())\n\tlet inst = obj[key as keyof typeof obj] as _Computed<Obj[Prop]> | undefined\n\tif (!inst) {\n\t\t// deref to make sure it exists first\n\t\tconst val = obj[propertyName]\n\t\tif (typeof val === 'function' && (val as any)[isComputedMethodKey]) {\n\t\t\tval.call(obj)\n\t\t}\n\n\t\tinst = obj[key as keyof typeof obj] as _Computed<Obj[Prop]> | undefined\n\t}\n\treturn inst as any\n}\n\n/**\n * Creates a computed signal.\n *\n * @example\n * ```ts\n * const name = atom('name', 'John')\n * const greeting = computed('greeting', () => `Hello ${name.get()}!`)\n * console.log(greeting.get()) // 'Hello John!'\n * ```\n *\n * `computed` may also be used as a decorator for creating computed getter methods.\n *\n * @example\n * ```ts\n * class Counter {\n * max = 100\n * count = atom<number>(0)\n *\n * @computed getRemaining() {\n * return this.max - this.count.get()\n * }\n * }\n * ```\n *\n * You may optionally pass in a [[ComputedOptions]] when used as a decorator:\n *\n * @example\n * ```ts\n * class Counter {\n * max = 100\n * count = atom<number>(0)\n *\n * @computed({isEqual: (a, b) => a === b})\n * getRemaining() {\n * return this.max - this.count.get()\n * }\n * }\n * ```\n *\n * @param name - The name of the signal.\n * @param compute - The function that computes the value of the signal.\n * @param options - Options for the signal.\n *\n * @public\n */\nexport function computed<Value, Diff = unknown>(\n\tname: string,\n\tcompute: (\n\t\tpreviousValue: Value | typeof UNINITIALIZED,\n\t\tlastComputedEpoch: number\n\t) => Value | WithDiff<Value, Diff>,\n\toptions?: ComputedOptions<Value, Diff>\n): Computed<Value, Diff>\n\n/** @public */\nexport function computed(\n\ttarget: any,\n\tkey: string,\n\tdescriptor: PropertyDescriptor\n): PropertyDescriptor\n/** @public */\nexport function computed<Value, Diff = unknown>(\n\toptions?: ComputedOptions<Value, Diff>\n): (target: any, key: string, descriptor: PropertyDescriptor) => PropertyDescriptor\n/** @public */\nexport function computed() {\n\tif (arguments.length === 1) {\n\t\tconst options = arguments[0]\n\t\treturn (target: any, key: string, descriptor: PropertyDescriptor) =>\n\t\t\tcomputedAnnotation(options, target, key, descriptor)\n\t} else if (typeof arguments[0] === 'string') {\n\t\treturn new _Computed(arguments[0], arguments[1], arguments[2])\n\t} else {\n\t\treturn computedAnnotation(undefined, arguments[0], arguments[1], arguments[2])\n\t}\n}\n\n/**\n * Returns true if the given value is a computed signal.\n *\n * @param value\n * @returns {value is Computed<any>}\n * @public\n */\nexport function isComputed(value: any): value is Computed<any> {\n\treturn value && value instanceof _Computed\n}\n", "import { startCapturingParents, stopCapturingParents } from './capture'\nimport { GLOBAL_START_EPOCH } from './constants'\nimport { attach, detach, haveParentsChanged } from './helpers'\nimport { globalEpoch } from './transactions'\nimport { Signal } from './types'\n\ninterface EffectSchedulerOptions {\n\t/**\n\t * scheduleEffect is a function that will be called when the effect is scheduled.\n\t *\n\t * It can be used to defer running effects until a later time, for example to batch them together with requestAnimationFrame.\n\t *\n\t *\n\t * @example\n\t * ```ts\n\t * let isRafScheduled = false\n\t * const scheduledEffects: Array<() => void> = []\n\t * const scheduleEffect = (runEffect: () => void) => {\n\t * \tscheduledEffects.push(runEffect)\n\t * \tif (!isRafScheduled) {\n\t * \t\tisRafScheduled = true\n\t * \t\trequestAnimationFrame(() => {\n\t * \t\t\tisRafScheduled = false\n\t * \t\t\tscheduledEffects.forEach((runEffect) => runEffect())\n\t * \t\t\tscheduledEffects.length = 0\n\t * \t\t})\n\t * \t}\n\t * }\n\t * const stop = react('set page title', () => {\n\t * \tdocument.title = doc.title,\n\t * }, scheduleEffect)\n\t * ```\n\t *\n\t * @param execute - A function that will execute the effect.\n\t * @returns\n\t */\n\tscheduleEffect?: (execute: () => void) => void\n}\n\n/**\n * An EffectScheduler is responsible for executing side effects in response to changes in state.\n *\n * You probably don't need to use this directly unless you're integrating this library with a framework of some kind.\n *\n * Instead, use the [[react]] and [[reactor]] functions.\n *\n * @example\n * ```ts\n * const render = new EffectScheduler('render', drawToCanvas)\n *\n * render.attach()\n * render.execute()\n * ```\n *\n * @public\n */\nexport class EffectScheduler<Result> {\n\tprivate _isActivelyListening = false\n\t/**\n\t * Whether this scheduler is attached and actively listening to its parents.\n\t * @public\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget isActivelyListening() {\n\t\treturn this._isActivelyListening\n\t}\n\t/** @internal */\n\tlastTraversedEpoch = GLOBAL_START_EPOCH\n\n\tprivate lastReactedEpoch = GLOBAL_START_EPOCH\n\tprivate _scheduleCount = 0\n\n\t/**\n\t * The number of times this effect has been scheduled.\n\t * @public\n\t */\n\t// eslint-disable-next-line no-restricted-syntax\n\tget scheduleCount() {\n\t\treturn this._scheduleCount\n\t}\n\n\t/** @internal */\n\tparentEpochs: number[] = []\n\t/** @internal */\n\tparents: Signal<any, any>[] = []\n\tprivate readonly _scheduleEffect?: (execute: () => void) => void\n\tconstructor(\n\t\tpublic readonly name: string,\n\t\tprivate readonly runEffect: (lastReactedEpoch: number) => Result,\n\t\toptions?: EffectSchedulerOptions\n\t) {\n\t\tthis._scheduleEffect = options?.scheduleEffect\n\t}\n\n\t/** @internal */\n\tmaybeScheduleEffect() {\n\t\t// bail out if we have been cancelled by another effect\n\t\tif (!this._isActivelyListening) return\n\t\t// bail out if no atoms have changed since the last time we ran this effect\n\t\tif (this.lastReactedEpoch === globalEpoch) return\n\n\t\t// bail out if we have parents and they have not changed since last time\n\t\tif (this.parents.length && !haveParentsChanged(this)) {\n\t\t\tthis.lastReactedEpoch = globalEpoch\n\t\t\treturn\n\t\t}\n\t\t// if we don't have parents it's probably the first time this is running.\n\t\tthis.scheduleEffect()\n\t}\n\n\t/** @internal */\n\tscheduleEffect() {\n\t\tthis._scheduleCount++\n\t\tif (this._scheduleEffect) {\n\t\t\t// if the effect should be deferred (e.g. until a react render), do so\n\t\t\tthis._scheduleEffect(this.maybeExecute)\n\t\t} else {\n\t\t\t// otherwise execute right now!\n\t\t\tthis.execute()\n\t\t}\n\t}\n\n\tprivate maybeExecute = () => {\n\t\t// bail out if we have been detached before this runs\n\t\tif (!this._isActivelyListening) return\n\t\tthis.execute()\n\t}\n\n\t/**\n\t * Makes this scheduler become 'actively listening' to its parents.\n\t * If it has been executed before it will immediately become eligible to receive 'maybeScheduleEffect' calls.\n\t * If it has not executed before it will need to be manually executed once to become eligible for scheduling, i.e. by calling [[EffectScheduler.execute]].\n\t * @public\n\t */\n\tattach() {\n\t\tthis._isActivelyListening = true\n\t\tfor (let i = 0, n = this.parents.length; i < n; i++) {\n\t\t\tattach(this.parents[i], this)\n\t\t}\n\t}\n\n\t/**\n\t * Makes this scheduler stop 'actively listening' to its parents.\n\t * It will no longer be eligible to receive 'maybeScheduleEffect' calls until [[EffectScheduler.attach]] is called again.\n\t */\n\tdetach() {\n\t\tthis._isActivelyListening = false\n\t\tfor (let i = 0, n = this.parents.length; i < n; i++) {\n\t\t\tdetach(this.parents[i], this)\n\t\t}\n\t}\n\n\t/**\n\t * Executes the effect immediately and returns the result.\n\t * @returns The result of the effect.\n\t */\n\texecute(): Result {\n\t\ttry {\n\t\t\tstartCapturingParents(this)\n\t\t\tconst result = this.runEffect(this.lastReactedEpoch)\n\t\t\tthis.lastReactedEpoch = globalEpoch\n\t\t\treturn result\n\t\t} finally {\n\t\t\tstopCapturingParents()\n\t\t}\n\t}\n}\n\n/**\n * Starts a new effect scheduler, scheduling the effect immediately.\n *\n * Returns a function that can be called to stop the scheduler.\n *\n * @example\n * ```ts\n * const color = atom('color', 'red')\n * const stop = react('set style', () => {\n * divElem.style.color = color.get()\n * })\n * color.set('blue')\n * // divElem.style.color === 'blue'\n * stop()\n * color.set('green')\n * // divElem.style.color === 'blue'\n * ```\n *\n *\n * Also useful in React applications for running effects outside of the render cycle.\n *\n * @example\n * ```ts\n * useEffect(() => react('set style', () => {\n * divRef.current.style.color = color.get()\n * }), [])\n * ```\n *\n * @public\n */\nexport function react(\n\tname: string,\n\tfn: (lastReactedEpoch: number) => any,\n\toptions?: EffectSchedulerOptions\n) {\n\tconst scheduler = new EffectScheduler(name, fn, options)\n\tscheduler.attach()\n\tscheduler.scheduleEffect()\n\treturn () => {\n\t\tscheduler.detach()\n\t}\n}\n\n/**\n * The reactor is a user-friendly interface for starting and stopping an [[EffectScheduler]].\n *\n * Calling .start() will attach the scheduler and execute the effect immediately the first time it is called.\n *\n * If the reactor is stopped, calling `.start()` will re-attach the scheduler but will only execute the effect if any of its parents have changed since it was stopped.\n *\n * You can create a reactor with [[reactor]].\n * @public\n */\nexport interface Reactor<T = unknown> {\n\t/**\n\t * The underlying effect scheduler.\n\t * @public\n\t */\n\tscheduler: EffectScheduler<T>\n\t/**\n\t * Start the scheduler. The first time this is called the effect will be scheduled immediately.\n\t *\n\t * If the reactor is stopped, calling this will start the scheduler again but will only execute the effect if any of its parents have changed since it was stopped.\n\t *\n\t * If you need to force re-execution of the effect, pass `{ force: true }`.\n\t * @public\n\t */\n\tstart(options?: { force?: boolean }): void\n\t/**\n\t * Stop the scheduler.\n\t * @public\n\t */\n\tstop(): void\n}\n\n/**\n * Creates a [[Reactor]], which is a thin wrapper around an [[EffectScheduler]].\n *\n * @public\n */\nexport function reactor<Result>(\n\tname: string,\n\tfn: (lastReactedEpoch: number) => Result,\n\toptions?: EffectSchedulerOptions\n): Reactor<Result> {\n\tconst scheduler = new EffectScheduler<Result>(name, fn, options)\n\treturn {\n\t\tscheduler,\n\t\tstart: (options?: { force?: boolean }) => {\n\t\t\tconst force = options?.force ?? false\n\t\t\tscheduler.attach()\n\t\t\tif (force) {\n\t\t\t\tscheduler.scheduleEffect()\n\t\t\t} else {\n\t\t\t\tscheduler.maybeScheduleEffect()\n\t\t\t}\n\t\t},\n\t\tstop: () => {\n\t\t\tscheduler.detach()\n\t\t},\n\t}\n}\n", "import React, { forwardRef, FunctionComponent, memo } from 'react'\nimport { useStateTracking } from './useStateTracking'\n\nexport const ProxyHandlers = {\n\t/**\n\t * This is a function call trap for functional components. When this is called, we know it means\n\t * React did run 'Component()', that means we can use any hooks here to setup our effect and\n\t * store.\n\t *\n\t * With the native Proxy, all other calls such as access/setting to/of properties will be\n\t * forwarded to the target Component, so we don't need to copy the Component's own or inherited\n\t * properties.\n\t *\n\t * @see https://github.com/facebook/react/blob/2d80a0cd690bb5650b6c8a6c079a87b5dc42bd15/packages/react-reconciler/src/ReactFiberHooks.old.js#L460\n\t */\n\tapply(Component: FunctionComponent, thisArg: any, argumentsList: any) {\n\t\t// eslint-disable-next-line react-hooks/rules-of-hooks\n\t\treturn useStateTracking(Component.displayName ?? Component.name ?? 'tracked(???)', () =>\n\t\t\tComponent.apply(thisArg, argumentsList)\n\t\t)\n\t},\n}\n\nexport const ReactMemoSymbol = Symbol.for('react.memo')\nexport const ReactForwardRefSymbol = Symbol.for('react.forward_ref')\n\n/**\n * Returns a tracked version of the given component.\n * Any signals whose values are read while the component renders will be tracked.\n * If any of the tracked signals change later it will cause the component to re-render.\n *\n * This also wraps the component in a React.memo() call, so it will only re-render if the props change.\n *\n * @example\n * ```ts\n * const Counter = track(function Counter(props: CounterProps) {\n * const count = useAtom('count', 0)\n * const increment = useCallback(() => count.set(count.get() + 1), [count])\n * return <button onClick={increment}>{count.get()}</button>\n * })\n * ```\n *\n * @param baseComponent - The base component to track.\n * @public\n */\nexport function track<T extends FunctionComponent<any>>(\n\tbaseComponent: T\n): T extends React.MemoExoticComponent<any> ? T : React.MemoExoticComponent<T> {\n\tlet compare = null\n\tconst $$typeof = baseComponent['$$typeof' as keyof typeof baseComponent]\n\tif ($$typeof === ReactMemoSymbol) {\n\t\tbaseComponent = (baseComponent as any).type\n\t\tcompare = (baseComponent as any).compare\n\t}\n\tif ($$typeof === ReactForwardRefSymbol) {\n\t\treturn memo(forwardRef(new Proxy((baseComponent as any).render, ProxyHandlers) as any)) as any\n\t}\n\n\treturn memo(new Proxy(baseComponent, ProxyHandlers) as any, compare) as any\n}\n", "import React from 'react'\nimport { EffectScheduler } from '../core'\n\n/** @internal */\nexport function useStateTracking<T>(name: string, render: () => T): T {\n\t// user render is only called at the bottom of this function, indirectly via scheduler.execute()\n\t// we need it to always be up-to-date when calling scheduler.execute() but it'd be wasteful to\n\t// instantiate a new EffectScheduler on every render, so we use an immediately-updated ref\n\t// to wrap it\n\tconst renderRef = React.useRef(render)\n\trenderRef.current = render\n\n\tconst [scheduler, subscribe, getSnapshot] = React.useMemo(() => {\n\t\tlet scheduleUpdate = null as null | (() => void)\n\t\t// useSyncExternalStore requires a subscribe function that returns an unsubscribe function\n\t\tconst subscribe = (cb: () => void) => {\n\t\t\tscheduleUpdate = cb\n\t\t\treturn () => {\n\t\t\t\tscheduleUpdate = null\n\t\t\t}\n\t\t}\n\n\t\tconst scheduler = new EffectScheduler(\n\t\t\t`useStateTracking(${name})`,\n\t\t\t// this is what `scheduler.execute()` will call\n\t\t\t() => renderRef.current?.(),\n\t\t\t// this is what will be invoked when @tldraw/state detects a change in an upstream reactive value\n\t\t\t{\n\t\t\t\tscheduleEffect() {\n\t\t\t\t\tscheduleUpdate?.()\n\t\t\t\t},\n\t\t\t}\n\t\t)\n\n\t\t// we use an incrementing number based on when this\n\t\tconst getSnapshot = () => scheduler.scheduleCount\n\n\t\treturn [scheduler, subscribe, getSnapshot]\n\t}, [name])\n\n\tReact.useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\n\n\t// reactive dependencies are captured when `scheduler.execute()` is called\n\t// and then to make it reactive we wait for a `useEffect` to 'attach'\n\t// this allows us to avoid rendering outside of React's render phase\n\t// and avoid 'zombie' components that try to render with bad/deleted data before\n\t// react has a chance to umount them.\n\tReact.useEffect(() => {\n\t\tscheduler.attach()\n\t\t// do not execute, we only do that in render\n\t\tscheduler.maybeScheduleEffect()\n\t\treturn () => {\n\t\t\tscheduler.detach()\n\t\t}\n\t}, [scheduler])\n\n\treturn scheduler.execute()\n}\n", "import { useState } from 'react'\nimport { Atom, AtomOptions, atom } from '../core'\n\n/**\n * Creates a new atom and returns it. The atom will be created only once.\n *\n * See [[atom]]\n *\n * @example\n * ```ts\n * const Counter = track(function Counter () {\n * const count = useAtom('count', 0)\n * const increment = useCallback(() => count.set(count.get() + 1), [count])\n * return <button onClick={increment}>{count.get()}</button>\n * })\n * ```\n *\n * @public\n */\nexport function useAtom<Value, Diff = unknown>(\n\t/**\n\t * The name of the atom. This does not need to be globally unique. It is used for debugging and performance profiling.\n\t */\n\tname: string,\n\t/**\n\t * The initial value of the atom. If this is a function, it will be called to get the initial value.\n\t */\n\tvalueOrInitialiser: Value | (() => Value),\n\t/**\n\t * Options for the atom.\n\t */\n\toptions?: AtomOptions<Value, Diff>\n): Atom<Value, Diff> {\n\treturn useState(() => {\n\t\tconst initialValue =\n\t\t\ttypeof valueOrInitialiser === 'function' ? (valueOrInitialiser as any)() : valueOrInitialiser\n\n\t\treturn atom(`useAtom(${name})`, initialValue, options)\n\t})[0]\n}\n", "/* eslint-disable prefer-rest-params */\nimport { useMemo } from 'react'\nimport { Computed, ComputedOptions, computed } from '../core'\n\n/**\n * Creates a new computed signal and returns it. The computed signal will be created only once.\n *\n * See [[computed]]\n *\n * @example\n * ```ts\n * type GreeterProps = {\n * firstName: Signal<string>\n * lastName: Signal<string>\n * }\n *\n * const Greeter = track(function Greeter ({firstName, lastName}: GreeterProps) {\n * const fullName = useComputed('fullName', () => `${firstName.get()} ${lastName.get()}`)\n * return <div>Hello {fullName.get()}!</div>\n * })\n * ```\n *\n * @public\n */\nexport function useComputed<Value>(name: string, compute: () => Value, deps: any[]): Computed<Value>\n/** @public */\nexport function useComputed<Value, Diff = unknown>(\n\tname: string,\n\tcompute: () => Value,\n\topts: ComputedOptions<Value, Diff>,\n\tdeps: any[]\n): Computed<Value>\n/** @public */\nexport function useComputed() {\n\tconst name = arguments[0]\n\tconst compute = arguments[1]\n\tconst opts = arguments.length === 3 ? undefined : arguments[2]\n\tconst deps = arguments.length === 3 ? arguments[2] : arguments[3]\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\treturn useMemo(() => computed(`useComputed(${name})`, compute, opts), deps)\n}\n", "import { useEffect } from 'react'\nimport { EMPTY_ARRAY, EffectScheduler } from '../core'\n\n/** @public */\nexport function useQuickReactor(name: string, reactFn: () => void, deps: any[] = EMPTY_ARRAY) {\n\tuseEffect(() => {\n\t\tconst scheduler = new EffectScheduler(name, reactFn)\n\t\tscheduler.attach()\n\t\tscheduler.execute()\n\t\treturn () => {\n\t\t\tscheduler.detach()\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, deps)\n}\n", "import { useEffect, useMemo } from 'react'\nimport { EffectScheduler } from '../core'\n\n/** @public */\nexport function useReactor(name: string, reactFn: () => void, deps: undefined | any[] = []) {\n\tconst scheduler = useMemo(\n\t\t() => new EffectScheduler(name, reactFn, { scheduleEffect: (cb) => requestAnimationFrame(cb) }),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\tdeps\n\t)\n\n\tuseEffect(() => {\n\t\tscheduler.attach()\n\t\tscheduler.execute()\n\t\treturn () => {\n\t\t\tscheduler.detach()\n\t\t}\n\t}, [scheduler])\n}\n", "/* eslint-disable prefer-rest-params */\nimport { useMemo, useRef, useSyncExternalStore } from 'react'\nimport { Signal, computed, react } from '../core'\n\n/**\n * Extracts the value from a signal and subscribes to it.\n *\n * Note that you do not need to use this hook if you are wrapping the component with [[track]]\n *\n * @example\n * ```ts\n * const Counter: React.FC = () => {\n * const $count = useAtom('count', 0)\n * const increment = useCallback(() => $count.set($count.get() + 1), [count])\n * const currentCount = useValue($count)\n * return <button onClick={increment}>{currentCount}</button>\n * }\n * ```\n *\n * You can also pass a function to compute the value and it will be memoized as in [[useComputed]]:\n *\n * @example\n * ```ts\n * type GreeterProps = {\n * firstName: Signal<string>\n * lastName: Signal<string>\n * }\n *\n * const Greeter = track(function Greeter({ firstName, lastName }: GreeterProps) {\n * const fullName = useValue('fullName', () => `${firstName.get()} ${lastName.get()}`, [\n * firstName,\n * lastName,\n * ])\n * return <div>Hello {fullName}!</div>\n * })\n * ```\n *\n * @public\n */\nexport function useValue<Value>(value: Signal<Value>): Value\n/** @public */\nexport function useValue<Value>(name: string, fn: () => Value, deps: unknown[]): Value\n/** @public */\nexport function useValue() {\n\tconst args = arguments\n\t// deps will be either the computed or the deps array\n\tconst deps = args.length === 3 ? args[2] : [args[0]]\n\tconst name = args.length === 3 ? args[0] : `useValue(${args[0].name})`\n\n\tconst isInRender = useRef(true)\n\tisInRender.current = true\n\n\tconst $val = useMemo(() => {\n\t\tif (args.length === 1) {\n\t\t\treturn args[0]\n\t\t}\n\t\treturn computed(name, () => {\n\t\t\tif (isInRender.current) {\n\t\t\t\treturn args[1]()\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\treturn args[1]()\n\t\t\t\t} catch {\n\t\t\t\t\t// when getSnapshot is called outside of the render phase &\n\t\t\t\t\t// subsequently throws an error, it might be because we're\n\t\t\t\t\t// in a zombie-child state. in that case, we suppress the\n\t\t\t\t\t// error and instead return a new dummy value to trigger a\n\t\t\t\t\t// react re-render. if we were in a zombie child, react will\n\t\t\t\t\t// unmount us instead of re-rendering so the error is\n\t\t\t\t\t// irrelevant. if we're not in a zombie-child, react will\n\t\t\t\t\t// call `getSnapshot` again in the render phase, and the\n\t\t\t\t\t// error will be thrown as expected.\u00E5\n\t\t\t\t\treturn {}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, deps)\n\n\ttry {\n\t\tconst { subscribe, getSnapshot } = useMemo(() => {\n\t\t\treturn {\n\t\t\t\tsubscribe: (listen: () => void) => {\n\t\t\t\t\treturn react(`useValue(${name})`, () => {\n\t\t\t\t\t\t$val.get()\n\t\t\t\t\t\tlisten()\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tgetSnapshot: () => $val.get(),\n\t\t\t}\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [$val])\n\n\t\treturn useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\n\t} finally {\n\t\tisInRender.current = false\n\t}\n}\n", "import { useCallback, useEffect, useState } from 'react';\nimport {\n createTLStore,\n debounce,\n defaultShapeUtils,\n Editor,\n HistoryEntry,\n throttle,\n TLAnyShapeUtilConstructor,\n TLInstance,\n TLINSTANCE_ID,\n TLPage,\n TLRecord,\n TLStoreWithStatus,\n transact,\n} from '@tldraw/tldraw';\nimport { DEFAULT_STORE } from './default_store';\nimport { useSessionStore } from './useSessionStore';\nimport { useSetEditorPermissions } from './useSetEditorPermissions';\nimport { CURRENT_PAGE_KEY, PAGES_DEBOUNCE_TIME, SHAPES_THROTTLE_TIME } from '../constants';\n\n// mandatory record types required for initialisation of the whiteboard and for a full remote sync\nconst FULL_SYNC_REQUIRED_RECORD_TYPES: TLRecord['typeName'][] = [\n 'camera',\n 'document',\n 'instance',\n 'instance_page_state',\n 'page',\n];\n\nexport function useCollaboration({\n endpoint,\n token,\n editor,\n shapeUtils = [],\n zoomToContent = false,\n}: {\n endpoint?: string;\n token?: string;\n editor?: Editor;\n shapeUtils?: TLAnyShapeUtilConstructor[];\n zoomToContent?: boolean;\n}) {\n const [store] = useState(() => {\n const store = createTLStore({\n shapeUtils: [...defaultShapeUtils, ...shapeUtils],\n });\n store.loadSnapshot(DEFAULT_STORE);\n return store;\n });\n\n const [currentPage, setCurrentPage] = useState<TLPage | undefined>(editor?.getCurrentPage());\n\n const [storeWithStatus, setStoreWithStatus] = useState<TLStoreWithStatus>({\n status: 'loading',\n });\n\n const handleError = useCallback(\n (error: Error, isTerminal?: boolean) => {\n setStoreWithStatus(\n isTerminal\n ? {\n error,\n status: 'error',\n }\n : {\n store,\n status: 'synced-remote',\n connectionStatus: 'offline',\n },\n );\n },\n [store],\n );\n\n const sessionStore = useSessionStore({ token, endpoint, handleError });\n const permissions = useSetEditorPermissions({ token, editor, zoomToContent, handleError });\n\n const handleOpen = useCallback(\n (initialRecords: TLRecord[]) => {\n if (!sessionStore) {\n return;\n }\n\n // Initialize the tldraw store with the session store server records\u2014or, if the session store\n // is empty, initialize the session store server with the default tldraw store records.\n const shouldUseServerRecords = FULL_SYNC_REQUIRED_RECORD_TYPES.every(\n type => initialRecords.filter(record => record.typeName === type).length > 0,\n );\n if (shouldUseServerRecords) {\n // Save local shape records before syncing with server (for offline change preservation)\n const localShapeRecords = store.allRecords().filter(record => record.typeName === 'shape');\n const serverRecordIds = new Set(initialRecords.map(r => r.id));\n\n // Replace the tldraw store records with session store\n store.mergeRemoteChanges(() => {\n store.clear();\n store.put(initialRecords);\n });\n\n // Sync local-only shapes back to server (offline changes preservation)\n for (const record of localShapeRecords) {\n if (!serverRecordIds.has(record.id)) {\n store.put([record]); // Add back to local store\n sessionStore.set(record.id, record); // Sync to server\n }\n }\n } else {\n // Create the initial store records\n // Sync the local tldraw store records to session store\n for (const record of store.allRecords()) {\n sessionStore.set(record.id, record);\n }\n }\n setStoreWithStatus({\n store,\n status: 'synced-remote',\n connectionStatus: 'online',\n });\n },\n [store, sessionStore],\n );\n\n const handleChange = useCallback(\n (key: string, value?: TLRecord) => {\n // put / remove the records in the store\n store.mergeRemoteChanges(() => {\n if (!value) {\n return store.remove([key as TLRecord['id']]);\n }\n if (key === CURRENT_PAGE_KEY) {\n setCurrentPage(value as TLPage);\n } else {\n transact(() => {\n store.put([value]);\n if (key === TLINSTANCE_ID) {\n store.put([\n { ...value, canMoveCamera: !!zoomToContent, isReadonly: !permissions.includes('write') } as TLInstance,\n ]);\n }\n });\n }\n });\n },\n [store, permissions, zoomToContent],\n );\n\n useEffect(() => {\n if (!sessionStore) return;\n\n setStoreWithStatus({ status: 'loading' });\n\n const unsubs: (() => void)[] = [];\n\n // Open session and sync the session store changes to the store\n sessionStore\n .open({\n handleOpen,\n handleChange,\n handleError,\n })\n .then(unsub => unsubs.push(unsub));\n\n // Sync store changes to the yjs doc\n unsubs.push(\n store.listen(\n throttle(function syncStoreChangesToYjsDoc({ changes }: HistoryEntry<TLRecord>) {\n Object.values(changes.added).forEach(record => {\n sessionStore.set(record.id, record);\n });\n\n Object.values(changes.updated).forEach(([, record]) => {\n sessionStore.set(record.id, record);\n });\n\n Object.values(changes.removed).forEach(record => {\n sessionStore.delete(record.id);\n });\n }, SHAPES_THROTTLE_TIME),\n { source: 'user', scope: 'document' }, // only sync user's document changes\n ),\n );\n\n // let hasConnectedBefore = false;\n\n // function handleStatusChange({\n // status,\n // }: {\n // status: \"disconnected\" | \"connected\";\n // }) {\n // // If we're disconnected, set the store status to 'synced-remote' and the connection status to 'offline'\n // if (status === \"disconnected\") {\n // setStoreWithStatus({\n // store,\n // status: \"synced-remote\",\n // connectionStatus: \"offline\",\n // });\n // return;\n // }\n\n // room.off(\"synced\", handleSync);\n\n // if (status === \"connected\") {\n // if (hasConnectedBefore) return;\n // hasConnectedBefore = true;\n // room.on(\"synced\", handleSync);\n // unsubs.push(() => room.off(\"synced\", handleSync));\n // }\n // }\n\n // room.on(\"status\", handleStatusChange);\n // unsubs.push(() => room.off(\"status\", handleStatusChange));\n\n return () => {\n unsubs.forEach(fn => fn());\n unsubs.length = 0;\n };\n }, [store, sessionStore, handleChange, handleOpen, handleError]);\n\n useEffect(() => {\n if (!editor || !sessionStore) return;\n\n const unsubs: (() => void)[] = [];\n\n unsubs.push(\n store.listen(\n debounce(({ changes }) => {\n Object.keys(changes.updated).forEach(key => {\n // Only update the current page id from the instance changes, ignore pointer changes\n if (!key.includes('instance')) {\n return;\n }\n const newPage = editor?.getCurrentPage();\n\n if (newPage?.id !== currentPage?.id) {\n sessionStore.get(TLINSTANCE_ID).then(instance => {\n if (instance) {\n sessionStore?.set(instance.id, { ...instance, currentPageId: newPage?.id } as TLInstance);\n }\n });\n setCurrentPage(newPage);\n }\n });\n }, PAGES_DEBOUNCE_TIME),\n { source: 'user', scope: 'session' },\n ),\n );\n\n return () => {\n unsubs.forEach(fn => fn());\n unsubs.length = 0;\n };\n }, [currentPage, editor, sessionStore, store]);\n\n // zoom to fit on remote changes for hls viewer\n useEffect(() => {\n if (!editor || !editor.getInstanceState()?.isReadonly || !zoomToContent) return;\n\n store.listen(\n () => {\n editor.zoomToFit();\n },\n { source: 'remote', scope: 'document' },\n );\n }, [editor, store, zoomToContent]);\n\n return storeWithStatus;\n}\n", "export const DEFAULT_STORE = {\n store: {\n 'document:document': {\n gridSize: 10,\n name: '',\n meta: {},\n id: 'document:document',\n typeName: 'document',\n },\n 'pointer:pointer': {\n id: 'pointer:pointer',\n typeName: 'pointer',\n x: 0,\n y: 0,\n lastActivityTimestamp: 0,\n meta: {},\n },\n 'page:page': {\n meta: {},\n id: 'page:page',\n name: 'Page 1',\n index: 'a1',\n typeName: 'page',\n },\n 'camera:page:page': {\n x: 0,\n y: 0,\n z: 1,\n meta: {},\n id: 'camera:page:page',\n typeName: 'camera',\n },\n 'instance_page_state:page:page': {\n editingShapeId: null,\n croppingShapeId: null,\n selectedShapeIds: [],\n hoveredShapeId: null,\n erasingShapeIds: [],\n hintingShapeIds: [],\n focusedGroupId: null,\n meta: {},\n id: 'instance_page_state:page:page',\n pageId: 'page:page',\n typeName: 'instance_page_state',\n },\n 'instance:instance': {\n followingUserId: null,\n opacityForNextShape: 1,\n stylesForNextShape: {},\n brush: null,\n scribble: null,\n cursor: {\n type: 'default',\n rotation: 0,\n },\n isFocusMode: false,\n exportBackground: true,\n isDebugMode: false,\n isToolLocked: false,\n screenBounds: {\n x: 0,\n y: 0,\n w: 720,\n h: 400,\n },\n zoomBrush: null,\n isGridMode: false,\n isPenMode: false,\n chatMessage: '',\n isChatting: false,\n highlightedUserIds: [],\n canMoveCamera: true,\n isFocused: true,\n devicePixelRatio: 2,\n isCoarsePointer: false,\n isHoveringCanvas: false,\n openMenus: [],\n isChangingStyle: false,\n isReadonly: false,\n meta: {},\n id: 'instance:instance',\n currentPageId: 'page:page',\n typeName: 'instance',\n },\n },\n schema: {\n schemaVersion: 1,\n storeVersion: 4,\n recordVersions: {\n asset: {\n version: 1,\n subTypeKey: 'type',\n subTypeVersions: {\n image: 2,\n video: 2,\n bookmark: 0,\n },\n },\n camera: {\n version: 1,\n },\n document: {\n version: 2,\n },\n instance: {\n version: 21,\n },\n instance_page_state: {\n version: 5,\n },\n page: {\n version: 1,\n },\n shape: {\n version: 3,\n subTypeKey: 'type',\n subTypeVersions: {\n group: 0,\n text: 1,\n bookmark: 1,\n draw: 1,\n geo: 7,\n note: 4,\n line: 1,\n frame: 0,\n arrow: 1,\n highlight: 0,\n embed: 4,\n image: 2,\n video: 1,\n },\n },\n instance_presence: {\n version: 5,\n },\n pointer: {\n version: 1,\n },\n },\n },\n};\n", "import { useMemo } from 'react';\nimport { TLRecord } from '@tldraw/tldraw';\nimport { SessionStore } from './StoreClient';\nimport decodeJWT from '../utils';\n\nexport const useSessionStore = ({\n token,\n endpoint = 'https://store-prod-in3-grpc.100ms.live',\n handleError,\n}: {\n token?: string;\n endpoint?: string;\n handleError: (error: Error) => void;\n}) => {\n const sessionStore = useMemo(() => {\n try {\n decodeJWT(token);\n } catch (err) {\n return handleError(err as Error);\n }\n if (!endpoint || !token) {\n return handleError(new Error('Missing GRPC endpoint or token'));\n }\n\n const sessionStore = new SessionStore<TLRecord>(endpoint, token);\n // @ts-expect-error - for debugging\n window.sessionStore = sessionStore;\n return sessionStore;\n }, [endpoint, token, handleError]);\n\n return sessionStore;\n};\n", "import { GrpcWebFetchTransport } from '@protobuf-ts/grpcweb-transport';\nimport { Value_Type } from '../grpc/sessionstore';\nimport { StoreClient } from '../grpc/sessionstore.client';\nimport { BackoffState, calculateBackoff } from '../utils';\nimport { INITIAL_BACKOFF_MS, RETRY_ERROR_MESSAGES, WHITEBOARD_CLOSE_MESSAGE } from '../constants';\ninterface OpenCallbacks<T> {\n handleOpen: (values: T[]) => void;\n handleChange: (key: string, value?: T) => void;\n handleError: (error: Error, isTerminal?: boolean) => void;\n}\nexport class SessionStore<T> {\n private storeClient: StoreClient;\n\n constructor(endpoint: string, token: string) {\n const transport = new GrpcWebFetchTransport({\n baseUrl: endpoint,\n meta: { Authorization: `Bearer ${token}` },\n });\n\n this.storeClient = new StoreClient(transport);\n }\n\n async open(\n { handleOpen, handleChange, handleError }: OpenCallbacks<T>,\n backoffState: BackoffState = { attempt: 0, currentDelay: INITIAL_BACKOFF_MS },\n ) {\n const abortController = new AbortController();\n const call = this.storeClient.open(\n {\n changeId: '',\n select: [],\n },\n { abort: abortController.signal },\n );\n let count: number | undefined = undefined;\n const initialValues: T[] = [];\n let isConnected = false;\n\n call.responses.onMessage(message => {\n // Reset backoff state on successful message (connection is working)\n if (!isConnected) {\n isConnected = true;\n backoffState = { attempt: 0, currentDelay: INITIAL_BACKOFF_MS };\n }\n\n if (message.value) {\n if (message.value?.data.oneofKind === 'str') {\n const record = JSON.parse(message.value.data.str) as T;\n if (initialValues.length === count) {\n handleChange(message.key, record);\n } else {\n initialValues.push(record);\n if (initialValues.length === count) {\n handleOpen(initialValues);\n }\n }\n }\n } else {\n handleChange(message.key);\n }\n });\n\n // Reconnect immediately when the browser comes back online\n const handleOnline = () => {\n window.removeEventListener('online', handleOnline);\n abortController.abort('reconnecting due to online event');\n this.open({ handleOpen, handleChange, handleError }); // reset backoff\n };\n\n window.addEventListener('online', handleOnline);\n\n call.responses.onError(error => {\n console.error('GRPCOpenStreamError: ', error);\n // Don't retry if this was an abort - either intentional close or already reconnecting\n if (error.message.includes('abort')) {\n return;\n }\n\n handleError(error);\n\n const nextDelay = calculateBackoff(backoffState);\n const nextState: BackoffState = {\n attempt: backoffState.attempt + 1,\n currentDelay: nextDelay,\n };\n\n const openCallback = () => {\n window.removeEventListener('online', handleOnline);\n abortController.abort(`closing to open new conn`);\n this.open({ handleOpen, handleChange, handleError }, nextState);\n };\n\n // Apply exponential backoff before reconnecting\n setTimeout(openCallback, backoffState.currentDelay);\n });\n\n try {\n count = await this.getKeysCountWithDelay();\n handleOpen(count ? initialValues : []);\n } catch (error) {\n console.error('GRPCCountError: ', error);\n const canRecover = RETRY_ERROR_MESSAGES.includes((error as unknown as Error).message.toLowerCase());\n handleError(error as unknown as Error, canRecover);\n }\n\n return () => {\n window.removeEventListener('online', handleOnline);\n abortController.abort(WHITEBOARD_CLOSE_MESSAGE);\n };\n }\n\n set(key: string, value?: T) {\n const valueStr = value ? JSON.stringify(value) : undefined;\n return this.storeClient.set({\n key,\n value: valueStr\n ? {\n data: { str: valueStr, oneofKind: 'str' },\n type: Value_Type.STRING,\n }\n : {\n data: { oneofKind: undefined },\n type: Value_Type.NONE,\n },\n });\n }\n\n async get(key: string) {\n const { response } = await this.storeClient.get({ key });\n\n if (response.value?.data.oneofKind === 'str') {\n return JSON.parse(response.value.data.str) as T;\n }\n }\n\n async getKeysCount() {\n const { response } = await this.storeClient.count({});\n return Number(response.count);\n }\n\n delete(key: string) {\n return this.storeClient.delete({ key });\n }\n\n private async getKeysCountWithDelay() {\n const MAX_RETRIES = 3;\n const DELAY = 200;\n for (let i = 0; i < MAX_RETRIES; i++) {\n try {\n await new Promise(resolve => setTimeout(resolve, DELAY));\n return await this.getKeysCount();\n } catch (error) {\n console.warn(error);\n if ((error as unknown as Error).message !== 'peer not found' || i === MAX_RETRIES - 1) {\n throw error;\n }\n }\n }\n }\n}\n", "// @generated by protobuf-ts 2.9.4 with parameter long_type_string\n// @generated from protobuf file \"sessionstore.proto\" (package \"sessionstorepb\", syntax proto3)\n// tslint:disable\nimport type {\n BinaryReadOptions,\n BinaryWriteOptions,\n IBinaryReader,\n IBinaryWriter,\n PartialMessage,\n} from '@protobuf-ts/runtime';\nimport { MessageType, UnknownFieldHandler, WireType, reflectionMergePartial } from '@protobuf-ts/runtime';\nimport { ServiceType } from '@protobuf-ts/runtime-rpc';\n/**\n * @generated from protobuf message sessionstorepb.HelloRequest\n */\nexport interface HelloRequest {\n /**\n * @generated from protobuf field: string name = 1;\n */\n name: string;\n}\n/**\n * @generated from protobuf message sessionstorepb.HelloResponse\n */\nexport interface HelloResponse {\n /**\n * @generated from protobuf field: string response = 1;\n */\n response: string;\n}\n/**\n * @generated from protobuf message sessionstorepb.SubscribeRequest\n */\nexport interface SubscribeRequest {\n /**\n * @generated from protobuf field: string name = 1;\n */\n name: string;\n /**\n * @generated from protobuf field: int64 offset = 2;\n */\n offset: string;\n}\n/**\n * @generated from protobuf message sessionstorepb.Event\n */\nexport interface Event {\n /**\n * @generated from protobuf field: string message = 1;\n */\n message: string;\n /**\n * @generated from protobuf field: int64 sequence = 2;\n */\n sequence: string;\n}\n/**\n * define new structure for value based on client needs and add support in\n * following message\n *\n * @generated from protobuf message sessionstorepb.Value\n */\nexport interface Value {\n /**\n * @generated from protobuf field: sessionstorepb.Value.Type type = 1;\n */\n type: Value_Type;\n /**\n * @generated from protobuf oneof: Data\n */\n data:\n | {\n oneofKind: 'number';\n /**\n * @generated from protobuf field: int64 number = 2;\n */\n number: string;\n }\n | {\n oneofKind: 'float';\n /**\n * @generated from protobuf field: float float = 3;\n */\n float: number;\n }\n | {\n oneofKind: 'str';\n /**\n * @generated from protobuf field: string str = 4;\n */\n str: string;\n }\n | {\n oneofKind: 'rawBytes';\n /**\n * @generated from protobuf field: bytes raw_bytes = 5;\n */\n rawBytes: Uint8Array;\n }\n | {\n oneofKind: undefined;\n };\n}\n/**\n * @generated from protobuf enum sessionstorepb.Value.Type\n */\nexport enum Value_Type {\n /**\n * @generated from protobuf enum value: NONE = 0;\n */\n NONE = 0,\n /**\n * @generated from protobuf enum value: BYTES = 1;\n */\n BYTES = 1,\n /**\n * @generated from protobuf enum value: STRING = 2;\n */\n STRING = 2,\n /**\n * @generated from protobuf enum value: INTEGER = 3;\n */\n INTEGER = 3,\n /**\n * @generated from protobuf enum value: FLOAT = 4;\n */\n FLOAT = 4,\n}\n/**\n * @generated from protobuf message sessionstorepb.GetRequest\n */\nexport interface GetRequest {\n /**\n * @generated from protobuf field: string key = 1;\n */\n key: string;\n}\n/**\n * @generated from protobuf message sessionstorepb.GetResponse\n */\nexport interface GetResponse {\n /**\n * @generated from protobuf field: string key = 1;\n */\n key: string;\n /**\n * @generated from protobuf field: string namespace = 2;\n */\n namespace: string;\n /**\n * @generated from protobuf field: sessionstorepb.Value value = 3;\n */\n value?: Value;\n}\n/**\n * @generated from protobuf message sessionstorepb.DeleteRequest\n */\nexport interface DeleteRequest {\n /**\n * @generated from protobuf field: string key = 1;\n */\n key: string;\n}\n/**\n * @generated from protobuf message sessionstorepb.DeleteResponse\n */\nexport interface DeleteResponse {}\n/**\n * @generated from protobuf message sessionstorepb.SetRequest\n */\nexport interface SetRequest {\n /**\n * @generated from protobuf field: string key = 1;\n */\n key: string;\n /**\n * @generated from protobuf field: sessionstorepb.Value value = 3;\n */\n value?: Value;\n}\n/**\n * @generated from protobuf message sessionstorepb.SetResponse\n */\nexport interface SetResponse {}\n/**\n * @generated from protobuf message sessionstorepb.ChangeStream\n */\nexport interface ChangeStream {\n /**\n * @generated from protobuf field: string change_id = 1;\n */\n changeId: string;\n /**\n * @generated from protobuf field: string key = 2;\n */\n key: string;\n /**\n * @generated from protobuf field: string namespace = 3;\n */\n namespace: string;\n /**\n * @generated from protobuf field: sessionstorepb.Value value = 4;\n */\n value?: Value;\n /**\n * @generated from protobuf field: string from_id = 5;\n */\n fromId: string;\n}\n/**\n * @generated from protobuf message sessionstorepb.Select\n */\nexport interface Select {\n /**\n * @generated from protobuf oneof: match\n */\n match:\n | {\n oneofKind: 'all';\n /**\n * @generated from protobuf field: string all = 1;\n */\n all: string; // match all keys\n }\n | {\n oneofKind: 'key';\n /**\n * @generated from protobuf field: string key = 2;\n */\n key: string; // match key\n }\n | {\n oneofKind: 'prefix';\n /**\n * @generated from protobuf field: string prefix = 3;\n */\n prefix: string; // match keys with given prefix\n }\n | {\n oneofKind: 'suffix';\n /**\n * @generated from protobuf field: string suffix = 4;\n */\n suffix: string; // match keys with given suffix\n }\n | {\n oneofKind: undefined;\n };\n}\n/**\n * @generated from protobuf message sessionstorepb.OpenRequest\n */\nexport interface OpenRequest {\n /**\n * last received change_id for reconnection, \"\" if first connection\n *\n * @generated from protobuf field: string change_id = 1;\n */\n changeId: string;\n /**\n * @generated from protobuf field: repeated sessionstorepb.Select select = 3;\n */\n select: Select[];\n}\n/**\n * @generated from protobuf message sessionstorepb.CountRequest\n */\nexport interface CountRequest {}\n/**\n * @generated from protobuf message sessionstorepb.CountResponse\n */\nexport interface CountResponse {\n /**\n * @generated from protobuf field: int64 count = 1;\n */\n count: string;\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass HelloRequest$Type extends MessageType<HelloRequest> {\n constructor() {\n super('sessionstorepb.HelloRequest', [{ no: 1, name: 'name', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }]);\n }\n create(value?: PartialMessage<HelloRequest>): HelloRequest {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.name = '';\n if (value !== undefined) reflectionMergePartial<HelloRequest>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: HelloRequest,\n ): HelloRequest {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string name */ 1:\n message.name = reader.string();\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: HelloRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string name = 1; */\n if (message.name !== '') writer.tag(1, WireType.LengthDelimited).string(message.name);\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.HelloRequest\n */\nexport const HelloRequest = new HelloRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass HelloResponse$Type extends MessageType<HelloResponse> {\n constructor() {\n super('sessionstorepb.HelloResponse', [{ no: 1, name: 'response', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }]);\n }\n create(value?: PartialMessage<HelloResponse>): HelloResponse {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.response = '';\n if (value !== undefined) reflectionMergePartial<HelloResponse>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: HelloResponse,\n ): HelloResponse {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string response */ 1:\n message.response = reader.string();\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: HelloResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string response = 1; */\n if (message.response !== '') writer.tag(1, WireType.LengthDelimited).string(message.response);\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.HelloResponse\n */\nexport const HelloResponse = new HelloResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass SubscribeRequest$Type extends MessageType<SubscribeRequest> {\n constructor() {\n super('sessionstorepb.SubscribeRequest', [\n { no: 1, name: 'name', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: 'offset', kind: 'scalar', T: 3 /*ScalarType.INT64*/ },\n ]);\n }\n create(value?: PartialMessage<SubscribeRequest>): SubscribeRequest {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.name = '';\n message.offset = '0';\n if (value !== undefined) reflectionMergePartial<SubscribeRequest>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: SubscribeRequest,\n ): SubscribeRequest {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string name */ 1:\n message.name = reader.string();\n break;\n case /* int64 offset */ 2:\n message.offset = reader.int64().toString();\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: SubscribeRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string name = 1; */\n if (message.name !== '') writer.tag(1, WireType.LengthDelimited).string(message.name);\n /* int64 offset = 2; */\n if (message.offset !== '0') writer.tag(2, WireType.Varint).int64(message.offset);\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.SubscribeRequest\n */\nexport const SubscribeRequest = new SubscribeRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Event$Type extends MessageType<Event> {\n constructor() {\n super('sessionstorepb.Event', [\n { no: 1, name: 'message', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: 'sequence', kind: 'scalar', T: 3 /*ScalarType.INT64*/ },\n ]);\n }\n create(value?: PartialMessage<Event>): Event {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.message = '';\n message.sequence = '0';\n if (value !== undefined) reflectionMergePartial<Event>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Event): Event {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string message */ 1:\n message.message = reader.string();\n break;\n case /* int64 sequence */ 2:\n message.sequence = reader.int64().toString();\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Event, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string message = 1; */\n if (message.message !== '') writer.tag(1, WireType.LengthDelimited).string(message.message);\n /* int64 sequence = 2; */\n if (message.sequence !== '0') writer.tag(2, WireType.Varint).int64(message.sequence);\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.Event\n */\nexport const Event = new Event$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Value$Type extends MessageType<Value> {\n constructor() {\n super('sessionstorepb.Value', [\n { no: 1, name: 'type', kind: 'enum', T: () => ['sessionstorepb.Value.Type', Value_Type] },\n { no: 2, name: 'number', kind: 'scalar', oneof: 'data', T: 3 /*ScalarType.INT64*/ },\n { no: 3, name: 'float', kind: 'scalar', oneof: 'data', T: 2 /*ScalarType.FLOAT*/ },\n { no: 4, name: 'str', kind: 'scalar', oneof: 'data', T: 9 /*ScalarType.STRING*/ },\n { no: 5, name: 'raw_bytes', kind: 'scalar', oneof: 'data', T: 12 /*ScalarType.BYTES*/ },\n ]);\n }\n create(value?: PartialMessage<Value>): Value {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.type = 0;\n message.data = { oneofKind: undefined };\n if (value !== undefined) reflectionMergePartial<Value>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Value): Value {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* sessionstorepb.Value.Type type */ 1:\n message.type = reader.int32();\n break;\n case /* int64 number */ 2:\n message.data = {\n oneofKind: 'number',\n number: reader.int64().toString(),\n };\n break;\n case /* float float */ 3:\n message.data = {\n oneofKind: 'float',\n float: reader.float(),\n };\n break;\n case /* string str */ 4:\n message.data = {\n oneofKind: 'str',\n str: reader.string(),\n };\n break;\n case /* bytes raw_bytes */ 5:\n message.data = {\n oneofKind: 'rawBytes',\n rawBytes: reader.bytes(),\n };\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Value, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* sessionstorepb.Value.Type type = 1; */\n if (message.type !== 0) writer.tag(1, WireType.Varint).int32(message.type);\n /* int64 number = 2; */\n if (message.data.oneofKind === 'number') writer.tag(2, WireType.Varint).int64(message.data.number);\n /* float float = 3; */\n if (message.data.oneofKind === 'float') writer.tag(3, WireType.Bit32).float(message.data.float);\n /* string str = 4; */\n if (message.data.oneofKind === 'str') writer.tag(4, WireType.LengthDelimited).string(message.data.str);\n /* bytes raw_bytes = 5; */\n if (message.data.oneofKind === 'rawBytes') writer.tag(5, WireType.LengthDelimited).bytes(message.data.rawBytes);\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.Value\n */\nexport const Value = new Value$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass GetRequest$Type extends MessageType<GetRequest> {\n constructor() {\n super('sessionstorepb.GetRequest', [{ no: 1, name: 'key', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }]);\n }\n create(value?: PartialMessage<GetRequest>): GetRequest {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.key = '';\n if (value !== undefined) reflectionMergePartial<GetRequest>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: GetRequest,\n ): GetRequest {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string key */ 1:\n message.key = reader.string();\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: GetRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string key = 1; */\n if (message.key !== '') writer.tag(1, WireType.LengthDelimited).string(message.key);\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.GetRequest\n */\nexport const GetRequest = new GetRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass GetResponse$Type extends MessageType<GetResponse> {\n constructor() {\n super('sessionstorepb.GetResponse', [\n { no: 1, name: 'key', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: 'namespace', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: 'value', kind: 'message', T: () => Value },\n ]);\n }\n create(value?: PartialMessage<GetResponse>): GetResponse {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.key = '';\n message.namespace = '';\n if (value !== undefined) reflectionMergePartial<GetResponse>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: GetResponse,\n ): GetResponse {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string key */ 1:\n message.key = reader.string();\n break;\n case /* string namespace */ 2:\n message.namespace = reader.string();\n break;\n case /* sessionstorepb.Value value */ 3:\n message.value = Value.internalBinaryRead(reader, reader.uint32(), options, message.value);\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: GetResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string key = 1; */\n if (message.key !== '') writer.tag(1, WireType.LengthDelimited).string(message.key);\n /* string namespace = 2; */\n if (message.namespace !== '') writer.tag(2, WireType.LengthDelimited).string(message.namespace);\n /* sessionstorepb.Value value = 3; */\n if (message.value)\n Value.internalBinaryWrite(message.value, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.GetResponse\n */\nexport const GetResponse = new GetResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass DeleteRequest$Type extends MessageType<DeleteRequest> {\n constructor() {\n super('sessionstorepb.DeleteRequest', [{ no: 1, name: 'key', kind: 'scalar', T: 9 /*ScalarType.STRING*/ }]);\n }\n create(value?: PartialMessage<DeleteRequest>): DeleteRequest {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.key = '';\n if (value !== undefined) reflectionMergePartial<DeleteRequest>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: DeleteRequest,\n ): DeleteRequest {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string key */ 1:\n message.key = reader.string();\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: DeleteRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string key = 1; */\n if (message.key !== '') writer.tag(1, WireType.LengthDelimited).string(message.key);\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.DeleteRequest\n */\nexport const DeleteRequest = new DeleteRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass DeleteResponse$Type extends MessageType<DeleteResponse> {\n constructor() {\n super('sessionstorepb.DeleteResponse', []);\n }\n create(value?: PartialMessage<DeleteResponse>): DeleteResponse {\n const message = globalThis.Object.create(this.messagePrototype!);\n if (value !== undefined) reflectionMergePartial<DeleteResponse>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: DeleteResponse,\n ): DeleteResponse {\n return target ?? this.create();\n }\n internalBinaryWrite(message: DeleteResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.DeleteResponse\n */\nexport const DeleteResponse = new DeleteResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass SetRequest$Type extends MessageType<SetRequest> {\n constructor() {\n super('sessionstorepb.SetRequest', [\n { no: 1, name: 'key', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: 'value', kind: 'message', T: () => Value },\n ]);\n }\n create(value?: PartialMessage<SetRequest>): SetRequest {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.key = '';\n if (value !== undefined) reflectionMergePartial<SetRequest>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: SetRequest,\n ): SetRequest {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string key */ 1:\n message.key = reader.string();\n break;\n case /* sessionstorepb.Value value */ 3:\n message.value = Value.internalBinaryRead(reader, reader.uint32(), options, message.value);\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: SetRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string key = 1; */\n if (message.key !== '') writer.tag(1, WireType.LengthDelimited).string(message.key);\n /* sessionstorepb.Value value = 3; */\n if (message.value)\n Value.internalBinaryWrite(message.value, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.SetRequest\n */\nexport const SetRequest = new SetRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass SetResponse$Type extends MessageType<SetResponse> {\n constructor() {\n super('sessionstorepb.SetResponse', []);\n }\n create(value?: PartialMessage<SetResponse>): SetResponse {\n const message = globalThis.Object.create(this.messagePrototype!);\n if (value !== undefined) reflectionMergePartial<SetResponse>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: SetResponse,\n ): SetResponse {\n return target ?? this.create();\n }\n internalBinaryWrite(message: SetResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.SetResponse\n */\nexport const SetResponse = new SetResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ChangeStream$Type extends MessageType<ChangeStream> {\n constructor() {\n super('sessionstorepb.ChangeStream', [\n { no: 1, name: 'change_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: 'key', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: 'namespace', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },\n { no: 4, name: 'value', kind: 'message', T: () => Value },\n { no: 5, name: 'from_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },\n ]);\n }\n create(value?: PartialMessage<ChangeStream>): ChangeStream {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.changeId = '';\n message.key = '';\n message.namespace = '';\n message.fromId = '';\n if (value !== undefined) reflectionMergePartial<ChangeStream>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: ChangeStream,\n ): ChangeStream {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string change_id */ 1:\n message.changeId = reader.string();\n break;\n case /* string key */ 2:\n message.key = reader.string();\n break;\n case /* string namespace */ 3:\n message.namespace = reader.string();\n break;\n case /* sessionstorepb.Value value */ 4:\n message.value = Value.internalBinaryRead(reader, reader.uint32(), options, message.value);\n break;\n case /* string from_id */ 5:\n message.fromId = reader.string();\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: ChangeStream, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string change_id = 1; */\n if (message.changeId !== '') writer.tag(1, WireType.LengthDelimited).string(message.changeId);\n /* string key = 2; */\n if (message.key !== '') writer.tag(2, WireType.LengthDelimited).string(message.key);\n /* string namespace = 3; */\n if (message.namespace !== '') writer.tag(3, WireType.LengthDelimited).string(message.namespace);\n /* sessionstorepb.Value value = 4; */\n if (message.value)\n Value.internalBinaryWrite(message.value, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n /* string from_id = 5; */\n if (message.fromId !== '') writer.tag(5, WireType.LengthDelimited).string(message.fromId);\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.ChangeStream\n */\nexport const ChangeStream = new ChangeStream$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Select$Type extends MessageType<Select> {\n constructor() {\n super('sessionstorepb.Select', [\n { no: 1, name: 'all', kind: 'scalar', oneof: 'match', T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: 'key', kind: 'scalar', oneof: 'match', T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: 'prefix', kind: 'scalar', oneof: 'match', T: 9 /*ScalarType.STRING*/ },\n { no: 4, name: 'suffix', kind: 'scalar', oneof: 'match', T: 9 /*ScalarType.STRING*/ },\n ]);\n }\n create(value?: PartialMessage<Select>): Select {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.match = { oneofKind: undefined };\n if (value !== undefined) reflectionMergePartial<Select>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Select): Select {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string all */ 1:\n message.match = {\n oneofKind: 'all',\n all: reader.string(),\n };\n break;\n case /* string key */ 2:\n message.match = {\n oneofKind: 'key',\n key: reader.string(),\n };\n break;\n case /* string prefix */ 3:\n message.match = {\n oneofKind: 'prefix',\n prefix: reader.string(),\n };\n break;\n case /* string suffix */ 4:\n message.match = {\n oneofKind: 'suffix',\n suffix: reader.string(),\n };\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Select, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string all = 1; */\n if (message.match.oneofKind === 'all') writer.tag(1, WireType.LengthDelimited).string(message.match.all);\n /* string key = 2; */\n if (message.match.oneofKind === 'key') writer.tag(2, WireType.LengthDelimited).string(message.match.key);\n /* string prefix = 3; */\n if (message.match.oneofKind === 'prefix') writer.tag(3, WireType.LengthDelimited).string(message.match.prefix);\n /* string suffix = 4; */\n if (message.match.oneofKind === 'suffix') writer.tag(4, WireType.LengthDelimited).string(message.match.suffix);\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.Select\n */\nexport const Select = new Select$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass OpenRequest$Type extends MessageType<OpenRequest> {\n constructor() {\n super('sessionstorepb.OpenRequest', [\n { no: 1, name: 'change_id', kind: 'scalar', T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: 'select', kind: 'message', repeat: 1 /*RepeatType.PACKED*/, T: () => Select },\n ]);\n }\n create(value?: PartialMessage<OpenRequest>): OpenRequest {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.changeId = '';\n message.select = [];\n if (value !== undefined) reflectionMergePartial<OpenRequest>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: OpenRequest,\n ): OpenRequest {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string change_id */ 1:\n message.changeId = reader.string();\n break;\n case /* repeated sessionstorepb.Select select */ 3:\n message.select.push(Select.internalBinaryRead(reader, reader.uint32(), options));\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: OpenRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string change_id = 1; */\n if (message.changeId !== '') writer.tag(1, WireType.LengthDelimited).string(message.changeId);\n /* repeated sessionstorepb.Select select = 3; */\n for (let i = 0; i < message.select.length; i++)\n Select.internalBinaryWrite(message.select[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.OpenRequest\n */\nexport const OpenRequest = new OpenRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass CountRequest$Type extends MessageType<CountRequest> {\n constructor() {\n super('sessionstorepb.CountRequest', []);\n }\n create(value?: PartialMessage<CountRequest>): CountRequest {\n const message = globalThis.Object.create(this.messagePrototype!);\n if (value !== undefined) reflectionMergePartial<CountRequest>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: CountRequest,\n ): CountRequest {\n return target ?? this.create();\n }\n internalBinaryWrite(message: CountRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.CountRequest\n */\nexport const CountRequest = new CountRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass CountResponse$Type extends MessageType<CountResponse> {\n constructor() {\n super('sessionstorepb.CountResponse', [{ no: 1, name: 'count', kind: 'scalar', T: 3 /*ScalarType.INT64*/ }]);\n }\n create(value?: PartialMessage<CountResponse>): CountResponse {\n const message = globalThis.Object.create(this.messagePrototype!);\n message.count = '0';\n if (value !== undefined) reflectionMergePartial<CountResponse>(this, message, value);\n return message;\n }\n internalBinaryRead(\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions,\n target?: CountResponse,\n ): CountResponse {\n let message = target ?? this.create(),\n end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* int64 count */ 1:\n message.count = reader.int64().toString();\n break;\n default:\n let u = options.readUnknownField;\n if (u === 'throw')\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: CountResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* int64 count = 1; */\n if (message.count !== '0') writer.tag(1, WireType.Varint).int64(message.count);\n let u = options.writeUnknownFields;\n if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message sessionstorepb.CountResponse\n */\nexport const CountResponse = new CountResponse$Type();\n/**\n * @generated ServiceType for protobuf service sessionstorepb.Api\n */\nexport const Api = new ServiceType('sessionstorepb.Api', [\n { name: 'Hello', options: {}, I: HelloRequest, O: HelloResponse },\n { name: 'Subscribe', serverStreaming: true, options: {}, I: SubscribeRequest, O: Event },\n]);\n/**\n * @generated ServiceType for protobuf service sessionstorepb.Store\n */\nexport const Store = new ServiceType('sessionstorepb.Store', [\n { name: 'open', serverStreaming: true, options: {}, I: OpenRequest, O: ChangeStream },\n { name: 'get', options: {}, I: GetRequest, O: GetResponse },\n { name: 'set', options: {}, I: SetRequest, O: SetResponse },\n { name: 'delete', options: {}, I: DeleteRequest, O: DeleteResponse },\n { name: 'count', options: {}, I: CountRequest, O: CountResponse },\n]);\n", "// @generated by protobuf-ts 2.9.4 with parameter long_type_string\n// @generated from protobuf file \"sessionstore.proto\" (package \"sessionstorepb\", syntax proto3)\n// tslint:disable\nimport type { RpcOptions, RpcTransport, ServerStreamingCall, ServiceInfo, UnaryCall } from '@protobuf-ts/runtime-rpc';\nimport { stackIntercept } from '@protobuf-ts/runtime-rpc';\nimport type {\n ChangeStream,\n CountRequest,\n CountResponse,\n DeleteRequest,\n DeleteResponse,\n Event,\n GetRequest,\n GetResponse,\n HelloRequest,\n HelloResponse,\n OpenRequest,\n SetRequest,\n SetResponse,\n SubscribeRequest,\n} from './sessionstore';\nimport { Api, Store } from './sessionstore';\n/**\n * @generated from protobuf service sessionstorepb.Api\n */\nexport interface IApiClient {\n /**\n * @generated from protobuf rpc: Hello(sessionstorepb.HelloRequest) returns (sessionstorepb.HelloResponse);\n */\n hello(input: HelloRequest, options?: RpcOptions): UnaryCall<HelloRequest, HelloResponse>;\n /**\n * @generated from protobuf rpc: Subscribe(sessionstorepb.SubscribeRequest) returns (stream sessionstorepb.Event);\n */\n subscribe(input: SubscribeRequest, options?: RpcOptions): ServerStreamingCall<SubscribeRequest, Event>;\n}\n/**\n * @generated from protobuf service sessionstorepb.Api\n */\nexport class ApiClient implements IApiClient, ServiceInfo {\n typeName = Api.typeName;\n methods = Api.methods;\n options = Api.options;\n constructor(private readonly _transport: RpcTransport) {}\n /**\n * @generated from protobuf rpc: Hello(sessionstorepb.HelloRequest) returns (sessionstorepb.HelloResponse);\n */\n hello(input: HelloRequest, options?: RpcOptions): UnaryCall<HelloRequest, HelloResponse> {\n const method = this.methods[0],\n opt = this._transport.mergeOptions(options);\n return stackIntercept<HelloRequest, HelloResponse>('unary', this._transport, method, opt, input);\n }\n /**\n * @generated from protobuf rpc: Subscribe(sessionstorepb.SubscribeRequest) returns (stream sessionstorepb.Event);\n */\n subscribe(input: SubscribeRequest, options?: RpcOptions): ServerStreamingCall<SubscribeRequest, Event> {\n const method = this.methods[1],\n opt = this._transport.mergeOptions(options);\n return stackIntercept<SubscribeRequest, Event>('serverStreaming', this._transport, method, opt, input);\n }\n}\n// metadata token -> session id, room id, user id, username\n\n// open is used for presence\n\n// change stream will return all keys in order of oldest to newsest.\n\n// max number of keys -> 5000\n// max size per key -> 10240 Bytes\n\n/**\n * @generated from protobuf service sessionstorepb.Store\n */\nexport interface IStoreClient {\n /**\n * open - start listening to updates in keys with provided match patterns\n * provide change_id as last received ID to resume updates\n *\n * @generated from protobuf rpc: open(sessionstorepb.OpenRequest) returns (stream sessionstorepb.ChangeStream);\n */\n open(input: OpenRequest, options?: RpcOptions): ServerStreamingCall<OpenRequest, ChangeStream>;\n /**\n * get last stored value in given key\n *\n * @generated from protobuf rpc: get(sessionstorepb.GetRequest) returns (sessionstorepb.GetResponse);\n */\n get(input: GetRequest, options?: RpcOptions): UnaryCall<GetRequest, GetResponse>;\n /**\n * set key value\n *\n * @generated from protobuf rpc: set(sessionstorepb.SetRequest) returns (sessionstorepb.SetResponse);\n */\n set(input: SetRequest, options?: RpcOptions): UnaryCall<SetRequest, SetResponse>;\n /**\n * delete key from store\n *\n * @generated from protobuf rpc: delete(sessionstorepb.DeleteRequest) returns (sessionstorepb.DeleteResponse);\n */\n delete(input: DeleteRequest, options?: RpcOptions): UnaryCall<DeleteRequest, DeleteResponse>;\n /**\n * count get count of keys\n *\n * @generated from protobuf rpc: count(sessionstorepb.CountRequest) returns (sessionstorepb.CountResponse);\n */\n count(input: CountRequest, options?: RpcOptions): UnaryCall<CountRequest, CountResponse>;\n}\n// metadata token -> session id, room id, user id, username\n\n// open is used for presence\n\n// change stream will return all keys in order of oldest to newsest.\n\n// max number of keys -> 5000\n// max size per key -> 10240 Bytes\n\n/**\n * @generated from protobuf service sessionstorepb.Store\n */\nexport class StoreClient implements IStoreClient, ServiceInfo {\n typeName = Store.typeName;\n methods = Store.methods;\n options = Store.options;\n constructor(private readonly _transport: RpcTransport) {}\n /**\n * open - start listening to updates in keys with provided match patterns\n * provide change_id as last received ID to resume updates\n *\n * @generated from protobuf rpc: open(sessionstorepb.OpenRequest) returns (stream sessionstorepb.ChangeStream);\n */\n open(input: OpenRequest, options?: RpcOptions): ServerStreamingCall<OpenRequest, ChangeStream> {\n const method = this.methods[0],\n opt = this._transport.mergeOptions(options);\n return stackIntercept<OpenRequest, ChangeStream>('serverStreaming', this._transport, method, opt, input);\n }\n /**\n * get last stored value in given key\n *\n * @generated from protobuf rpc: get(sessionstorepb.GetRequest) returns (sessionstorepb.GetResponse);\n */\n get(input: GetRequest, options?: RpcOptions): UnaryCall<GetRequest, GetResponse> {\n const method = this.methods[1],\n opt = this._transport.mergeOptions(options);\n return stackIntercept<GetRequest, GetResponse>('unary', this._transport, method, opt, input);\n }\n /**\n * set key value\n *\n * @generated from protobuf rpc: set(sessionstorepb.SetRequest) returns (sessionstorepb.SetResponse);\n */\n set(input: SetRequest, options?: RpcOptions): UnaryCall<SetRequest, SetResponse> {\n const method = this.methods[2],\n opt = this._transport.mergeOptions(options);\n return stackIntercept<SetRequest, SetResponse>('unary', this._transport, method, opt, input);\n }\n /**\n * delete key from store\n *\n * @generated from protobuf rpc: delete(sessionstorepb.DeleteRequest) returns (sessionstorepb.DeleteResponse);\n */\n delete(input: DeleteRequest, options?: RpcOptions): UnaryCall<DeleteRequest, DeleteResponse> {\n const method = this.methods[3],\n opt = this._transport.mergeOptions(options);\n return stackIntercept<DeleteRequest, DeleteResponse>('unary', this._transport, method, opt, input);\n }\n /**\n * count get count of keys\n *\n * @generated from protobuf rpc: count(sessionstorepb.CountRequest) returns (sessionstorepb.CountResponse);\n */\n count(input: CountRequest, options?: RpcOptions): UnaryCall<CountRequest, CountResponse> {\n const method = this.methods[4],\n opt = this._transport.mergeOptions(options);\n return stackIntercept<CountRequest, CountResponse>('unary', this._transport, method, opt, input);\n }\n}\n", "export const CURRENT_PAGE_KEY = 'currentPage';\nexport const SHAPES_THROTTLE_TIME = 11;\nexport const PAGES_DEBOUNCE_TIME = 200;\nexport const OPEN_WAIT_TIMEOUT = 1000;\n\nexport const WHITEBOARD_CLOSE_MESSAGE = 'client whiteboard abort';\nexport const RETRY_ERROR_MESSAGES = ['network error', 'failed to fetch'];\n\n// Exponential backoff configuration\nexport const INITIAL_BACKOFF_MS = 1000;\nexport const MAX_BACKOFF_MS = 30000;\nexport const BACKOFF_MULTIPLIER = 2;\n", "import { BACKOFF_MULTIPLIER, MAX_BACKOFF_MS } from './constants';\n\nexport default function decodeJWT(token?: string) {\n if (!token || token.length === 0) {\n throw Error('Token cannot be an empty string or undefined or null');\n }\n\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw Error(`Expected 3 '.' separate fields - header, payload and signature respectively`);\n }\n\n const payloadStr = atob(parts[1]);\n try {\n return JSON.parse(payloadStr);\n } catch (err) {\n throw Error(`couldn't parse to json - ${(err as Error).message}`);\n }\n}\nexport interface BackoffState {\n attempt: number;\n currentDelay: number;\n}\n\nexport const calculateBackoff = (state: BackoffState): number => {\n const delay = Math.min(state.currentDelay * BACKOFF_MULTIPLIER, MAX_BACKOFF_MS);\n // Add jitter (\u00B120%) to prevent thundering herd\n const jitter = delay * 0.2 * (Math.random() * 2 - 1);\n return Math.floor(delay + jitter);\n};\n", "import { useEffect, useMemo } from 'react';\nimport { Editor } from '@tldraw/tldraw';\nimport decodeJWT from '../utils';\n\nexport const useSetEditorPermissions = ({\n token,\n editor,\n zoomToContent = false,\n handleError,\n}: {\n token?: string;\n editor?: Editor;\n zoomToContent?: boolean;\n handleError: (error: Error) => void;\n}) => {\n const { permissions } = useMemo(() => {\n try {\n return decodeJWT(token);\n } catch (err) {\n handleError(err as Error);\n return {};\n }\n }, [token, handleError]);\n\n useEffect(() => {\n // disable scroll and zoom\n editor?.updateInstanceState({ canMoveCamera: !!zoomToContent });\n\n if (!permissions) {\n return;\n }\n\n const isReadonly = !permissions.includes('write');\n editor?.updateInstanceState({ isReadonly });\n }, [permissions, zoomToContent, editor]);\n\n return permissions;\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["require_classnames", "__commonJSMin", "exports", "module", "hasOwn", "classNames", "classes", "i", "arg", "appendClass", "parseValue", "key", "value", "newClass", "
|
|
5
|
+
"mappings": "uuCAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,IAAA,eAOC,UAAY,CACZ,aAEA,IAAIC,EAAS,CAAC,EAAE,eAEhB,SAASC,GAAc,CAGtB,QAFIC,EAAU,GAELC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAC1C,IAAIC,EAAM,UAAUD,CAAC,EACjBC,IACHF,EAAUG,EAAYH,EAASI,EAAWF,CAAG,CAAC,EAEhD,CAEA,OAAOF,CACR,CAEA,SAASI,EAAYF,EAAK,CACzB,GAAI,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,SAC7C,OAAOA,EAGR,GAAI,OAAOA,GAAQ,SAClB,MAAO,GAGR,GAAI,MAAM,QAAQA,CAAG,EACpB,OAAOH,EAAW,MAAM,KAAMG,CAAG,EAGlC,GAAIA,EAAI,WAAa,OAAO,UAAU,UAAY,CAACA,EAAI,SAAS,SAAS,EAAE,SAAS,eAAe,EAClG,OAAOA,EAAI,SAAS,EAGrB,IAAIF,EAAU,GAEd,QAASK,KAAOH,EACXJ,EAAO,KAAKI,EAAKG,CAAG,GAAKH,EAAIG,CAAG,IACnCL,EAAUG,EAAYH,EAASK,CAAG,GAIpC,OAAOL,CACR,CAEA,SAASG,EAAaG,EAAOC,EAAU,CACtC,OAAKA,EAIDD,EACIA,EAAQ,IAAMC,EAGfD,EAAQC,EAPPD,CAQT,CAEI,OAAOT,GAAW,aAAeA,EAAO,SAC3CE,EAAW,QAAUA,EACrBF,EAAO,QAAUE,GACP,OAAO,QAAW,YAAc,OAAO,OAAO,KAAQ,UAAY,OAAO,IAEnF,OAAO,aAAc,CAAC,EAAG,UAAY,CACpC,OAAOA,CACR,CAAC,EAED,OAAO,WAAaA,CAEtB,GAAE,IC5EF,IAAAS,GAAA,GAAAC,GAAAD,GAAA,gBAAAE,KAAA,eAAAC,GAAAH,ICAA,IAAAI,EAAgC,oBAChCC,GAA+B,0BCD/B,IAAAC,EAAkC,iBAClCC,GAA6C,0BAMtC,SAASC,GAAsB,CAAE,MAAAC,CAAM,EAA+B,CAC3E,GAAM,CAAE,SAAAC,EAAU,YAAAC,CAAY,KAAI,cAAU,EACtCC,KAAuB,UAAyC,MAAS,EACzEC,KAAiB,UAA2B,MAAS,EAE3D,sBAAU,IAAM,CACd,IAAMC,EAAmBL,EAAM,SAAW,gBAAkBA,EAAM,iBAAmB,OAGjFK,IAAqBF,EAAqB,UAK1CC,EAAe,SAAWC,IAAqB,WACjDH,EAAYE,EAAe,OAAO,EAClCA,EAAe,QAAU,QAGvBC,IAAqB,UACvBD,EAAe,QAAUH,EAAS,CAChC,MAAO,kBACP,YAAa,6BACb,KAAM,mBACN,SAAU,EACZ,CAAC,EACQI,IAAqB,UAAYF,EAAqB,UAAY,WAC3EF,EAAS,CACP,MAAO,YACP,YAAa,sBACb,KAAM,OACR,CAAC,EAGHE,EAAqB,QAAUE,EACjC,EAAG,CAACL,EAAOC,EAAUC,CAAW,CAAC,EAE1B,IACT,CC7CA,IAAAI,EAAmF,oBCQ5E,IAAMC,EAAN,KAAkB,CAAlB,cACEC,EAAA,iBAAY,GAEZA,EAAA,aAAkC,MAAM,CAAoB,GAE5DA,EAAA,WAAqB,MAQ7B,IAAI,SAAU,CACb,GAAI,KAAK,MACR,OAAO,KAAK,YAAc,EAG3B,GAAI,KAAK,IACR,OAAO,KAAK,IAAI,OAAS,EAG1B,MAAM,IAAI,MAAM,iBAAiB,CAClC,CAQA,IAAIC,EAAS,CACZ,GAAI,KAAK,MAIR,OAHY,KAAK,MAAM,QAAQA,CAAI,IAGvB,GACJ,GAGJ,KAAK,UAAY,GAIpB,KAAK,MAAM,KAAK,SAAS,EAAIA,EAC7B,KAAK,YAEE,KAGP,KAAK,IAAM,IAAI,IAAI,KAAK,KAAY,EACpC,KAAK,MAAQ,KACb,KAAK,IAAI,IAAIA,CAAI,EAEV,IAIT,GAAI,KAAK,IAER,OAAI,KAAK,IAAI,IAAIA,CAAI,EACb,IAGR,KAAK,IAAI,IAAIA,CAAI,EACV,IAGR,MAAM,IAAI,MAAM,iBAAiB,CAClC,CAOA,OAAOA,EAAS,CACf,GAAI,KAAK,MAAO,CACf,IAAMC,EAAM,KAAK,MAAM,QAAQD,CAAI,EAGnC,OAAIC,IAAQ,GACJ,IAGR,KAAK,MAAMA,CAAG,EAAI,OAClB,KAAK,YAEDA,IAAQ,KAAK,YAGhB,KAAK,MAAMA,CAAG,EAAI,KAAK,MAAM,KAAK,SAAS,EAC3C,KAAK,MAAM,KAAK,SAAS,EAAI,QAGvB,GACR,CAEA,GAAI,KAAK,IAER,OAAK,KAAK,IAAI,IAAID,CAAI,GAItB,KAAK,IAAI,OAAOA,CAAI,EAEb,IALC,GAQT,MAAM,IAAI,MAAM,iBAAiB,CAClC,CAOA,MAAME,EAA4B,CACjC,GAAI,KAAK,MAAO,CACf,QAASC,EAAI,EAAGA,EAAI,KAAK,UAAWA,IAAK,CACxC,IAAMH,EAAO,KAAK,MAAMG,CAAC,EAErB,OAAOH,GAAS,aACnBE,EAAQF,CAAI,CAEd,CAEA,MACD,CAEA,GAAI,KAAK,IAAK,CACb,KAAK,IAAI,QAAQE,CAAO,EAExB,MACD,CAEA,MAAM,IAAI,MAAM,iBAAiB,CAClC,CACD,EC7IO,IAAME,EAA6B,OAAO,aAAa,ECIvD,IAAMC,EAAN,KAA0B,CAMhC,YAA6BC,EAAkB,CALvCC,EAAA,aAAQ,GAGhBA,EAAA,eAE6B,KAAA,SAAAD,EAC5B,KAAK,OAAS,IAAI,MAAMA,CAAQ,CACjC,CASA,UAAUE,EAA2BC,EAAsBC,EAA0B,CACpF,GAAIA,IAAS,OAIb,IAAIA,IAASC,EAAa,CACzB,KAAK,MAAM,EACX,MACD,CAGA,KAAK,OAAO,KAAK,KAAK,EAAI,CAACH,EAAmBC,EAAcC,CAAI,EAGhE,KAAK,OAAS,KAAK,MAAQ,GAAK,KAAK,SACtC,CAKA,OAAQ,CACP,KAAK,MAAQ,EACb,KAAK,OAAO,KAAK,MAAS,CAC3B,CAQA,gBAAgBE,EAA0C,CACzD,GAAM,CAAE,MAAAC,EAAO,SAAAP,EAAU,OAAAQ,CAAO,EAAI,KAGpC,QAASC,EAAI,EAAGA,EAAIT,EAAUS,IAAK,CAClC,IAAMC,GAAUH,EAAQ,EAAIP,EAAWS,GAAKT,EAEtCW,EAAOH,EAAOE,CAAM,EAG1B,GAAI,CAACC,EACJ,OAAON,EAGR,GAAM,CAACO,EAAWC,CAAO,EAAIF,EAG7B,GAAIF,IAAM,GAAKH,GAAcO,EAC5B,MAAO,CAAC,EAIT,GAAID,GAAaN,GAAcA,EAAaO,EAAS,CACpD,IAAMC,EAAML,EAAI,EACVM,EAAS,IAAI,MAAMD,CAAG,EAE5B,QAASE,EAAI,EAAGA,EAAIF,EAAKE,IACxBD,EAAOC,CAAC,EAAIR,GAAQE,EAASM,GAAKhB,CAAQ,EAAG,CAAC,EAG/C,OAAOe,CACR,CACD,CAGA,OAAOV,CACR,CACD,ECtFA,SAASY,GAAQC,EAAoB,CACpC,OAAOA,GAAK,OAAOA,GAAM,UAAY,YAAaA,CACnD,CAQO,SAASC,EAAmBC,EAAc,CAChD,QAASC,EAAI,EAAGC,EAAIF,EAAM,QAAQ,OAAQC,EAAIC,EAAGD,IAKhD,GAHAD,EAAM,QAAQC,CAAC,EAAE,4BAA4B,EAGzCD,EAAM,QAAQC,CAAC,EAAE,mBAAqBD,EAAM,aAAaC,CAAC,EAC7D,MAAO,GAIT,MAAO,EACR,CAQO,IAAME,EAAS,CAACC,EAAqBJ,IAAiB,CAE5D,GAAKI,EAAO,SAAS,OAAOJ,CAAK,GAK7BI,EAAO,SAAS,SAAWP,GAAQO,CAAM,EAC5C,QAASH,EAAI,EAAGC,EAAIE,EAAO,QAAQ,OAAQH,EAAIC,EAAGD,IACjDE,EAAOC,EAAO,QAAQH,CAAC,EAAGG,CAAM,CAGnC,EAQaC,EAAS,CAACD,EAAqBJ,IAAiB,CAE5D,GAAKI,EAAO,SAAS,IAAIJ,CAAK,GAK1BH,GAAQO,CAAM,EACjB,QAASH,EAAI,EAAGC,EAAIE,EAAO,QAAQ,OAAQH,EAAIC,EAAGD,IACjDI,EAAOD,EAAO,QAAQH,CAAC,EAAGG,CAAM,CAGnC,EAQO,SAASE,GAAOC,EAAQC,EAAiB,CAG/C,OADCD,IAAMC,GAAK,OAAO,GAAGD,EAAGC,CAAC,GAAK,GAAQD,GAAKC,GAAK,OAAOD,EAAE,QAAW,YAAcA,EAAE,OAAOC,CAAC,EAE9F,CAKO,IAAMC,EAAkB,OAAO,OAAO,CAAC,CAAC,ECpF/C,IAAMC,GAAuB,OAAO,IAAI,mBAAmB,EACrDC,GAAoB,WAEtBA,GAAkBD,EAAoB,EACzC,QAAQ,MACP,yNACD,EAEAC,GAAkBD,EAAoB,EAAI,GAG3C,IAAME,GAAN,KAAwB,CAMvB,YAA4BC,EAAiDC,EAAc,CAL3FC,EAAA,cAAS,GACTA,EAAA,qBAAgB,GAEhBA,EAAA,qBAE4B,KAAA,MAAAF,EAAiD,KAAA,MAAAC,CAAe,CAC7F,EAEIE,EAAkC,KAmC/B,SAASC,EAAsBC,EAAc,CACnDC,EAAQ,IAAIC,GAAkBD,EAAOD,CAAK,CAC3C,CAEO,SAASG,GAAuB,CACtC,IAAMC,EAAQH,EAKd,GAJAA,EAAQG,EAAM,MAEWA,EAAM,cAAgB,GAAKA,EAAM,SAAWA,EAAM,MAAM,QAAQ,OAMzF,SAASC,EAAID,EAAM,OAAQC,EAAID,EAAM,MAAM,QAAQ,OAAQC,IAAK,CAC/D,IAAMC,EAAIF,EAAM,MAAM,QAAQC,CAAC,EACND,EAAM,MAAM,QAAQ,QAAQE,CAAC,GAAKF,EAAM,QAEhEG,EAAOD,EAAGF,EAAM,KAAK,CAEvB,CAKA,GAHAA,EAAM,MAAM,QAAQ,OAASA,EAAM,OACnCA,EAAM,MAAM,aAAa,OAASA,EAAM,OAEpCH,GAAA,MAAAA,EAAO,aACV,QAASI,EAAI,EAAGA,EAAIJ,EAAM,aAAa,OAAQI,IAAK,CACnD,IAAMG,EAAqBP,EAAM,aAAaI,CAAC,EAC3CD,EAAM,MAAM,QAAQ,QAAQI,CAAkB,IAAM,IACvDD,EAAOC,EAAoBJ,EAAM,KAAK,CAExC,EAEF,CAGO,SAASK,GAAmBH,EAAqB,CACvD,GAAIL,EAAO,CACV,IAAMS,EAAMT,EAAM,MAAM,QAAQ,QAAQK,CAAC,EAazC,GAPII,EAAM,IACTT,EAAM,gBACFA,EAAM,MAAM,qBACfU,EAAOL,EAAGL,EAAM,KAAK,GAInBS,EAAM,GAAKA,GAAOT,EAAM,OAAQ,CACnC,GAAIS,IAAQT,EAAM,QAAUS,EAAM,EAAG,CACpC,IAAMF,EAAqBP,EAAM,MAAM,QAAQA,EAAM,MAAM,EAEtDA,EAAM,aAEAA,EAAM,aAAa,QAAQO,CAAkB,IAAM,IAC7DP,EAAM,aAAa,KAAKO,CAAkB,EAF1CP,EAAM,aAAe,CAACO,CAAkB,CAI1C,CAEAP,EAAM,MAAM,QAAQA,EAAM,MAAM,EAAIK,EACpCL,EAAM,MAAM,aAAaA,EAAM,MAAM,EAAIK,EAAE,iBAC3CL,EAAM,QACP,CACD,CACD,CCvHO,IAAIW,EAAc,ECNzB,IAAIC,GAAkB,GAIf,SAASC,IAAqB,CAChCD,KACJA,GAAkB,GAClB,QAAQ,KACP,2GACD,EACD,CAEA,IAAIE,GAAwB,GAErB,SAASC,IAA2B,CACtCD,KACJA,GAAwB,GACxB,QAAQ,KACP;;;;;;;;;;;;;CAcD,EACD,CCvBA,IAAME,GAAgB,OAAO,eAAe,EAgC5C,IAAMC,EAAN,KAA4B,CAC3B,YAAmBC,EAAqBC,EAAY,CAAjC,KAAA,MAAAD,EAAqB,KAAA,KAAAC,CAAa,CACtD,EA+EO,IAAMC,EAAN,KAAwE,CA4B9E,YAIiBC,EAICC,EAIjBC,EACC,CAxCFC,EAAA,wBAAmB,IACnBA,EAAA,0BAAqB,IAKbA,EAAA,wBAAmB,IAE3BA,EAAA,eAA8B,CAAC,GAC/BA,EAAA,oBAAyB,CAAC,GAE1BA,EAAA,gBAAW,IAAIC,GAOfD,EAAA,sBAGQA,EAAA,aAAeE,IAEfF,EAAA,oBAESA,EAAA,gBApJlB,IAAAG,EA0JkB,KAAA,KAAAN,EAIC,KAAA,OAAAC,EAMbC,GAAA,MAAAA,EAAS,gBACZ,KAAK,cAAgB,IAAIK,EAAcL,EAAQ,aAAa,GAE7D,KAAK,YAAcA,GAAA,YAAAA,EAAS,YAC5B,KAAK,SAAUI,EAAAJ,GAAA,YAAAA,EAAS,UAAT,KAAAI,EAAoBE,EACpC,CAhCA,IAAI,qBAA+B,CAClC,MAAO,CAAC,KAAK,SAAS,OACvB,CAgCA,6BAAqC,CA3KtC,IAAAF,EAAAG,EA4KE,IAAMC,EAAQ,KAAK,mBAAqB,GAExC,GAAI,CAACA,IAAU,KAAK,mBAAqBC,GAAe,CAACC,EAAmB,IAAI,GAC/E,YAAK,iBAAmBD,EACjB,KAAK,MAGb,GAAI,CACHE,EAAsB,IAAI,EAC1B,IAAMC,EAAS,KAAK,OAAO,KAAK,MAAO,KAAK,gBAAgB,EACtDC,EAAWD,aAAkBE,EAAWF,EAAO,MAAQA,EAC7D,GAAI,KAAK,QAAUT,IAAiB,CAAC,KAAK,QAAQU,EAAU,KAAK,KAAK,EAAG,CACxE,GAAI,KAAK,eAAiB,CAACL,EAAO,CACjC,IAAMO,EAAOH,aAAkBE,EAAWF,EAAO,KAAO,OACxD,KAAK,cAAc,UAClB,KAAK,iBACLH,GACAF,EAAAQ,GAAA,KAAAA,GACCX,EAAA,KAAK,cAAL,YAAAA,EAAA,UAAmB,KAAK,MAAOS,EAAU,KAAK,iBAAkBJ,KADjE,KAAAF,EAECS,CACF,CACD,CACA,KAAK,iBAAmBP,EACxB,KAAK,MAAQI,CACd,CACA,YAAK,iBAAmBJ,EAEjB,KAAK,KACb,QAAA,CACCQ,EAAqB,CACtB,CACD,CAEA,KAAa,CACZ,IAAMC,EAAQ,KAAK,4BAA4B,EAC/C,OAAAC,GAAmB,IAAI,EAChBD,CACR,CAMA,IAAI,OAAQ,CACX,OAAAE,GAAmB,EACZ,KAAK,IAAI,CACjB,CAEA,aAAaC,EAAqC,CA5NnD,IAAAjB,EAAAG,EAiOE,OAFA,KAAK,IAAI,EAELc,GAAS,KAAK,iBACVC,GAGDf,GAAAH,EAAA,KAAK,gBAAL,YAAAA,EAAoB,gBAAgBiB,KAApC,KAAAd,EAA8CS,CACtD,CACD,EAEA,SAASO,GACRvB,EAAqC,CAAC,EACtCwB,EACAC,EACAC,EACC,CACD,IAAMC,EAAiBD,EAAW,MAC5BE,EAAgB,OAAO,IAAI,8BAAgCH,CAAG,EAEpE,OAAAC,EAAW,MAAQ,UAAqB,CACvC,IAAIG,EAAI,KAAKD,CAAa,EAE1B,OAAKC,IACJA,EAAI,IAAIhC,EAAU4B,EAAKE,EAAgB,KAAK,IAAI,EAAU3B,CAAO,EACjE,OAAO,eAAe,KAAM4B,EAAe,CAC1C,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAOC,CACR,CAAC,GAEKA,EAAE,IAAI,CACd,EACAH,EAAW,MAAMI,EAAmB,EAAI,GAEjCJ,CACR,CAEA,SAASK,GACR/B,EAAqC,CAAC,EACtCwB,EACAC,EACAC,EACC,CACD,OAAIA,EAAW,KACdM,GAAyB,EAClBC,GAAyBjC,EAASwB,EAASC,EAAKC,CAAU,GAE1DH,GAAyBvB,EAASwB,EAASC,EAAKC,CAAU,CAEnE,CAEA,SAASO,GACRjC,EAAqC,CAAC,EACtCwB,EACAC,EACAC,EACC,CACD,IAAMC,EAAiBD,EAAW,IAC5BE,EAAgB,OAAO,IAAI,8BAAgCH,CAAG,EAEpE,OAAAC,EAAW,IAAM,UAAqB,CACrC,IAAIG,EAAI,KAAKD,CAAa,EAE1B,OAAKC,IACJA,EAAI,IAAIhC,EAAU4B,EAAKE,EAAgB,KAAK,IAAI,EAAU3B,CAAO,EACjE,OAAO,eAAe,KAAM4B,EAAe,CAC1C,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAOC,CACR,CAAC,GAEKA,EAAE,IAAI,CACd,EAEOH,CACR,CAEA,IAAMI,GAAsB,2BA+GrB,SAASI,GAAW,CAC1B,GAAI,UAAU,SAAW,EAAG,CAC3B,IAAMC,EAAU,UAAU,CAAC,EAC3B,MAAO,CAACC,EAAaC,EAAaC,IACjCC,GAAmBJ,EAASC,EAAQC,EAAKC,CAAU,CACrD,KAAA,QAAW,OAAO,UAAU,CAAC,GAAM,SAC3B,IAAIE,EAAU,UAAU,CAAC,EAAG,UAAU,CAAC,EAAG,UAAU,CAAC,CAAC,EAEtDD,GAAmB,OAAW,UAAU,CAAC,EAAG,UAAU,CAAC,EAAG,UAAU,CAAC,CAAC,CAE/E,CChXO,IAAME,EAAN,KAA8B,CA8BpC,YACiBC,EACCC,EACjBC,EACC,CAjCMC,EAAA,4BAAuB,IAU/BA,EAAA,0BAAqB,IAEbA,EAAA,wBAAmB,IACnBA,EAAA,sBAAiB,GAYzBA,EAAA,oBAAyB,CAAC,GAE1BA,EAAA,eAA8B,CAAC,GACdA,EAAA,wBAqCTA,EAAA,oBAAe,IAAM,CAEvB,KAAK,sBACV,KAAK,QAAQ,CACd,GAvCiB,KAAA,KAAAH,EACC,KAAA,UAAAC,EAGjB,KAAK,gBAAkBC,GAAA,YAAAA,EAAS,cACjC,CA7BA,IAAI,qBAAsB,CACzB,OAAO,KAAK,oBACb,CAYA,IAAI,eAAgB,CACnB,OAAO,KAAK,cACb,CAgBA,qBAAsB,CAErB,GAAK,KAAK,sBAEN,KAAK,mBAAqBE,EAG9B,IAAI,KAAK,QAAQ,QAAU,CAACC,EAAmB,IAAI,EAAG,CACrD,KAAK,iBAAmBD,EACxB,MACD,CAEA,KAAK,eAAe,EACrB,CAGA,gBAAiB,CAChB,KAAK,iBACD,KAAK,gBAER,KAAK,gBAAgB,KAAK,YAAY,EAGtC,KAAK,QAAQ,CAEf,CAcA,QAAS,CACR,KAAK,qBAAuB,GAC5B,QAASE,EAAI,EAAGC,EAAI,KAAK,QAAQ,OAAQD,EAAIC,EAAGD,IAC/CE,EAAO,KAAK,QAAQF,CAAC,EAAG,IAAI,CAE9B,CAMA,QAAS,CACR,KAAK,qBAAuB,GAC5B,QAASA,EAAI,EAAGC,EAAI,KAAK,QAAQ,OAAQD,EAAIC,EAAGD,IAC/CG,EAAO,KAAK,QAAQH,CAAC,EAAG,IAAI,CAE9B,CAMA,SAAkB,CACjB,GAAI,CACHI,EAAsB,IAAI,EAC1B,IAAMC,EAAS,KAAK,UAAU,KAAK,gBAAgB,EACnD,YAAK,iBAAmBP,EACjBO,CACR,QAAA,CACCC,EAAqB,CACtB,CACD,CACD,EAgCO,SAASC,GACfb,EACAc,EACAZ,EACC,CACD,IAAMa,EAAY,IAAIhB,EAAgBC,EAAMc,EAAIZ,CAAO,EACvD,OAAAa,EAAU,OAAO,EACjBA,EAAU,eAAe,EAClB,IAAM,CACZA,EAAU,OAAO,CAClB,CACD,CCjNA,IAAAC,GAA2D,iBCA3D,IAAAC,GAAkB,sBCAlB,IAAAC,GAAyB,iBCCzB,IAAAC,GAAwB,iBCDxB,IAAAC,GAA0B,iBCA1B,IAAAC,GAAmC,iBCCnC,IAAAC,EAAsD,iBA0C/C,SAASC,IAAW,CAC1B,IAAMC,EAAO,UAEPC,EAAOD,EAAK,SAAW,EAAIA,EAAK,CAAC,EAAI,CAACA,EAAK,CAAC,CAAC,EAC7CE,EAAOF,EAAK,SAAW,EAAIA,EAAK,CAAC,EAAI,YAAYA,EAAK,CAAC,EAAE,IAAI,IAE7DG,KAAa,UAAO,EAAI,EAC9BA,EAAW,QAAU,GAErB,IAAMC,KAAO,WAAQ,IAChBJ,EAAK,SAAW,EACZA,EAAK,CAAC,EAEPK,EAASH,EAAM,IAAM,CAC3B,GAAIC,EAAW,QACd,OAAOH,EAAK,CAAC,EAAE,EAEf,GAAI,CACH,OAAOA,EAAK,CAAC,EAAE,CAChB,OAAQM,EAAA,CAUP,MAAO,CAAC,CACT,CAEF,CAAC,EAECL,CAAI,EAEP,GAAI,CACH,GAAM,CAAE,UAAAM,EAAW,YAAAC,CAAY,KAAI,WAAQ,KACnC,CACN,UAAYC,GACJC,GAAM,YAAYR,CAAI,IAAK,IAAM,CACvCE,EAAK,IAAI,EACTK,EAAO,CACR,CAAC,EAEF,YAAa,IAAML,EAAK,IAAI,CAC7B,GAEE,CAACA,CAAI,CAAC,EAET,SAAO,wBAAqBG,EAAWC,EAAaA,CAAW,CAChE,QAAA,CACCL,EAAW,QAAU,EACtB,CACD,ChB/FA,IAAAQ,GAAwC,0BACxCC,GAAuB,QAEvB,IAAMC,GAAgB,yCAQTC,GAA0C,CAAC,CAAE,MAAAC,EAAO,OAAAC,EAAQ,QAAAC,CAAQ,IAAM,CACrF,IAAMC,KAAe,UAAuB,IAAI,EAC1C,CAACC,EAAiBC,CAAkB,KAAI,YAAS,EAAqC,EACtF,CAACC,EAASC,CAAU,KAAI,YAAS,EAAK,EACtC,CAACC,EAA6BC,CAA8B,KAAI,YAAS,EAAK,EAE9EC,EAAeV,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,EACpEW,EAAaX,aAAiB,MAAQA,EAAM,MAAQ,QAE1D,aAAU,IAAM,CACd,QAAQ,MAAM,4BAA6BU,EAAcC,CAAU,CACrE,EAAG,CAACD,EAAcC,CAAU,CAAC,EAE7B,IAAMC,EAAoBC,GACxB,aACA,IAAM,CACJ,GAAI,CACF,GAAIZ,EACF,OAAOA,EAAO,KAAK,cAAc,CAErC,OAAQa,EAAA,CAGR,CACA,OAAO,IACT,EACA,CAACb,CAAM,CACT,EACM,CACJ,CAEAc,CACF,KAAI,YAAyB,IAAI,KACjC,mBAAgB,IAAM,CA9CxB,IAAAC,EAgDQJ,IAAsB,MACxBG,EAAcH,CAAiB,EAKjC,IAAIK,GAASD,EAAAb,EAAa,UAAb,YAAAa,EAAsB,cAC/BE,EAAwB,GAC5B,KAAOD,GAAQ,CACb,GAAIA,EAAO,UAAU,SAAS,gBAAgB,GAAKA,EAAO,UAAU,SAAS,iBAAiB,EAAG,CAC/FC,EAAwB,GACxB,KACF,CACAD,EAASA,EAAO,aAClB,CACA,GAAIC,EAAuB,CACzBH,EAAc,IAAI,EAClB,MACF,CAIAA,EAAc,OAAO,WAAW,8BAA8B,EAAE,OAAO,CACzE,EAAG,CAACH,CAAiB,CAAC,KAEtB,aAAU,IAAM,CACd,GAAIN,EAAS,CACX,IAAMa,EAAU,WAAW,IAAM,CAC/BZ,EAAW,EAAK,CAClB,EAAG,GAAI,EACP,MAAO,IAAM,aAAaY,CAAO,CACnC,CACF,EAAG,CAACb,CAAO,CAAC,EAEZ,IAAMc,EAAY,IAAM,CACtB,IAAMC,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,MAAQV,GAAA,KAAAA,EAAcD,EAC/B,SAAS,KAAK,YAAYW,CAAQ,EAClCA,EAAS,OAAO,EAChB,SAAS,YAAY,MAAM,EAC3BA,EAAS,OAAO,EAChBd,EAAW,EAAI,CACjB,EAEMe,EAAkB,IAAYC,EAAA,yBAClC,oBAAgB,CAClB,GAEA,OACE,EAAAC,QAAA,cAAC,OACC,IAAKrB,EACL,aAAW,GAAAsB,SACT,iCAMA,iBACF,EACA,MAAO,CAAE,SAAU,QAAS,GAE5B,EAAAD,QAAA,cAAC,OAAI,UAAU,6BAA6B,EAgB5C,EAAAA,QAAA,cAAC,OACC,aAAW,GAAAC,SAAW,WAAY,6BAA8B,CAC9D,uCAAwCrB,GAAmB,CAACI,CAC9D,CAAC,GAEAA,EACC,EAAAgB,QAAA,gBAAAA,QAAA,cACE,EAAAA,QAAA,cAAC,UAAG,eAAa,EACjB,EAAAA,QAAA,cAAC,SAAE,oEAAkE,EACrE,EAAAA,QAAA,cAAC,OAAI,UAAU,uCACb,EAAAA,QAAA,cAAC,UAAO,QAAS,IAAMf,EAA+B,EAAK,GAAG,QAAM,EACpE,EAAAe,QAAA,cAAC,UAAO,UAAU,2BAA2B,QAASF,GAAiB,YAEvE,CACF,CACF,EAEA,EAAAE,QAAA,gBAAAA,QAAA,cACE,EAAAA,QAAA,cAAC,UAAG,yBAA4B,EAChC,EAAAA,QAAA,cAAC,SAAE,+GAEG,EAAAA,QAAA,cAAC,KAAE,KAAM1B,IAAe,2BAAyB,EAAI,GAC3D,EACCM,GACC,EAAAoB,QAAA,cAAC,OAAI,UAAU,qCACb,EAAAA,QAAA,cAAC,WACC,EAAAA,QAAA,cAAC,YAAMb,GAAA,KAAAA,EAAcD,CAAa,CACpC,EACA,EAAAc,QAAA,cAAC,UAAO,QAASJ,GAAYd,EAAU,UAAY,MAAO,CAC5D,EAEF,EAAAkB,QAAA,cAAC,OAAI,UAAU,uCACb,EAAAA,QAAA,cAAC,UAAO,QAAS,IAAMnB,EAAmB,CAACD,CAAe,GACvDA,EAAkB,eAAiB,cACtC,EACA,EAAAoB,QAAA,cAAC,OAAI,UAAU,8CACb,EAAAA,QAAA,cAAC,UAAO,UAAU,6BAA6B,QAAStB,GAAS,SAEjE,CACF,CACF,CACF,CAEJ,CACF,CAEJ,EiB5KA,IAAAwB,EAAiD,iBACjDC,EAcO,0BCfA,IAAMC,GAAgB,CAC3B,MAAO,CACL,oBAAqB,CACnB,SAAU,GACV,KAAM,GACN,KAAM,CAAC,EACP,GAAI,oBACJ,SAAU,UACZ,EACA,kBAAmB,CACjB,GAAI,kBACJ,SAAU,UACV,EAAG,EACH,EAAG,EACH,sBAAuB,EACvB,KAAM,CAAC,CACT,EACA,YAAa,CACX,KAAM,CAAC,EACP,GAAI,YACJ,KAAM,SACN,MAAO,KACP,SAAU,MACZ,EACA,mBAAoB,CAClB,EAAG,EACH,EAAG,EACH,EAAG,EACH,KAAM,CAAC,EACP,GAAI,mBACJ,SAAU,QACZ,EACA,gCAAiC,CAC/B,eAAgB,KAChB,gBAAiB,KACjB,iBAAkB,CAAC,EACnB,eAAgB,KAChB,gBAAiB,CAAC,EAClB,gBAAiB,CAAC,EAClB,eAAgB,KAChB,KAAM,CAAC,EACP,GAAI,gCACJ,OAAQ,YACR,SAAU,qBACZ,EACA,oBAAqB,CACnB,gBAAiB,KACjB,oBAAqB,EACrB,mBAAoB,CAAC,EACrB,MAAO,KACP,SAAU,KACV,OAAQ,CACN,KAAM,UACN,SAAU,CACZ,EACA,YAAa,GACb,iBAAkB,GAClB,YAAa,GACb,aAAc,GACd,aAAc,CACZ,EAAG,EACH,EAAG,EACH,EAAG,IACH,EAAG,GACL,EACA,UAAW,KACX,WAAY,GACZ,UAAW,GACX,YAAa,GACb,WAAY,GACZ,mBAAoB,CAAC,EACrB,cAAe,GACf,UAAW,GACX,iBAAkB,EAClB,gBAAiB,GACjB,iBAAkB,GAClB,UAAW,CAAC,EACZ,gBAAiB,GACjB,WAAY,GACZ,KAAM,CAAC,EACP,GAAI,oBACJ,cAAe,YACf,SAAU,UACZ,CACF,EACA,OAAQ,CACN,cAAe,EACf,aAAc,EACd,eAAgB,CACd,MAAO,CACL,QAAS,EACT,WAAY,OACZ,gBAAiB,CACf,MAAO,EACP,MAAO,EACP,SAAU,CACZ,CACF,EACA,OAAQ,CACN,QAAS,CACX,EACA,SAAU,CACR,QAAS,CACX,EACA,SAAU,CACR,QAAS,EACX,EACA,oBAAqB,CACnB,QAAS,CACX,EACA,KAAM,CACJ,QAAS,CACX,EACA,MAAO,CACL,QAAS,EACT,WAAY,OACZ,gBAAiB,CACf,MAAO,EACP,KAAM,EACN,SAAU,EACV,KAAM,EACN,IAAK,EACL,KAAM,EACN,KAAM,EACN,MAAO,EACP,MAAO,EACP,UAAW,EACX,MAAO,EACP,MAAO,EACP,MAAO,CACT,CACF,EACA,kBAAmB,CACjB,QAAS,CACX,EACA,QAAS,CACP,QAAS,CACX,CACF,CACF,CACF,EC5IA,IAAAC,GAAwB,iBCAxB,IAAAC,GAAsC,0CCUtC,IAAAC,EAAmF,gCACnFC,GAA4B,oCA+FhBC,QAIVA,IAAA,KAAO,GAAP,OAIAA,IAAA,MAAQ,GAAR,QAIAA,IAAA,OAAS,GAAT,SAIAA,IAAA,QAAU,GAAV,UAIAA,IAAA,MAAQ,GAAR,QApBUA,QAAA,IA4KNC,GAAN,cAAgC,aAA0B,CACxD,aAAc,CACZ,MAAM,8BAA+B,CAAC,CAAE,GAAI,EAAG,KAAM,OAAQ,KAAM,SAAU,EAAG,CAAwB,CAAC,CAAC,CAC5G,CACA,OAAOC,EAAoD,CACzD,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,KAAO,GACXD,IAAU,WAAW,0BAAqC,KAAMC,EAASD,CAAK,EAC3EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACc,CACd,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAAuB,GACrBN,EAAQ,KAAOC,EAAO,OAAO,EAC7B,MACF,QACE,IAAIO,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAuBU,EAAuBP,EAA4C,CAExGH,EAAQ,OAAS,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,IAAI,EACpF,IAAIQ,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIaC,GAAe,IAAIb,GAE1Bc,GAAN,cAAiC,aAA2B,CAC1D,aAAc,CACZ,MAAM,+BAAgC,CAAC,CAAE,GAAI,EAAG,KAAM,WAAY,KAAM,SAAU,EAAG,CAAwB,CAAC,CAAC,CACjH,CACA,OAAOb,EAAsD,CAC3D,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,SAAW,GACfD,IAAU,WAAW,0BAAsC,KAAMC,EAASD,CAAK,EAC5EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACe,CACf,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAA2B,GACzBN,EAAQ,SAAWC,EAAO,OAAO,EACjC,MACF,QACE,IAAIO,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAwBU,EAAuBP,EAA4C,CAEzGH,EAAQ,WAAa,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,QAAQ,EAC5F,IAAIQ,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIaG,GAAgB,IAAID,GAE3BE,GAAN,cAAoC,aAA8B,CAChE,aAAc,CACZ,MAAM,kCAAmC,CACvC,CAAE,GAAI,EAAG,KAAM,OAAQ,KAAM,SAAU,EAAG,CAAwB,EAClE,CAAE,GAAI,EAAG,KAAM,SAAU,KAAM,SAAU,EAAG,CAAuB,CACrE,CAAC,CACH,CACA,OAAOf,EAA4D,CACjE,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,KAAO,GACfA,EAAQ,OAAS,IACbD,IAAU,WAAW,0BAAyC,KAAMC,EAASD,CAAK,EAC/EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACkB,CAClB,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAAuB,GACrBN,EAAQ,KAAOC,EAAO,OAAO,EAC7B,MACF,IAAwB,GACtBD,EAAQ,OAASC,EAAO,MAAM,EAAE,SAAS,EACzC,MACF,QACE,IAAIO,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAA2BU,EAAuBP,EAA4C,CAE5GH,EAAQ,OAAS,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,IAAI,EAEhFA,EAAQ,SAAW,KAAKU,EAAO,IAAI,EAAG,WAAS,MAAM,EAAE,MAAMV,EAAQ,MAAM,EAC/E,IAAIQ,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIaK,GAAmB,IAAID,GAE9BE,GAAN,cAAyB,aAAmB,CAC1C,aAAc,CACZ,MAAM,uBAAwB,CAC5B,CAAE,GAAI,EAAG,KAAM,UAAW,KAAM,SAAU,EAAG,CAAwB,EACrE,CAAE,GAAI,EAAG,KAAM,WAAY,KAAM,SAAU,EAAG,CAAuB,CACvE,CAAC,CACH,CACA,OAAOjB,EAAsC,CAC3C,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,QAAU,GAClBA,EAAQ,SAAW,IACfD,IAAU,WAAW,0BAA8B,KAAMC,EAASD,CAAK,EACpEC,CACT,CACA,mBAAmBC,EAAuBC,EAAgBC,EAA4BC,EAAuB,CAC3G,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAA0B,GACxBN,EAAQ,QAAUC,EAAO,OAAO,EAChC,MACF,IAA0B,GACxBD,EAAQ,SAAWC,EAAO,MAAM,EAAE,SAAS,EAC3C,MACF,QACE,IAAIO,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAgBU,EAAuBP,EAA4C,CAEjGH,EAAQ,UAAY,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,OAAO,EAEtFA,EAAQ,WAAa,KAAKU,EAAO,IAAI,EAAG,WAAS,MAAM,EAAE,MAAMV,EAAQ,QAAQ,EACnF,IAAIQ,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIaO,GAAQ,IAAID,GAEnBE,GAAN,cAAyB,aAAmB,CAC1C,aAAc,CACZ,MAAM,uBAAwB,CAC5B,CAAE,GAAI,EAAG,KAAM,OAAQ,KAAM,OAAQ,EAAG,IAAM,CAAC,4BAA6BrB,EAAU,CAAE,EACxF,CAAE,GAAI,EAAG,KAAM,SAAU,KAAM,SAAU,MAAO,OAAQ,EAAG,CAAuB,EAClF,CAAE,GAAI,EAAG,KAAM,QAAS,KAAM,SAAU,MAAO,OAAQ,EAAG,CAAuB,EACjF,CAAE,GAAI,EAAG,KAAM,MAAO,KAAM,SAAU,MAAO,OAAQ,EAAG,CAAwB,EAChF,CAAE,GAAI,EAAG,KAAM,YAAa,KAAM,SAAU,MAAO,OAAQ,EAAG,EAAwB,CACxF,CAAC,CACH,CACA,OAAOE,EAAsC,CAC3C,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,KAAO,EACfA,EAAQ,KAAO,CAAE,UAAW,MAAU,EAClCD,IAAU,WAAW,0BAA8B,KAAMC,EAASD,CAAK,EACpEC,CACT,CACA,mBAAmBC,EAAuBC,EAAgBC,EAA4BC,EAAuB,CAC3G,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAA0C,GACxCN,EAAQ,KAAOC,EAAO,MAAM,EAC5B,MACF,IAAwB,GACtBD,EAAQ,KAAO,CACb,UAAW,SACX,OAAQC,EAAO,MAAM,EAAE,SAAS,CAClC,EACA,MACF,IAAuB,GACrBD,EAAQ,KAAO,CACb,UAAW,QACX,MAAOC,EAAO,MAAM,CACtB,EACA,MACF,IAAsB,GACpBD,EAAQ,KAAO,CACb,UAAW,MACX,IAAKC,EAAO,OAAO,CACrB,EACA,MACF,IAA2B,GACzBD,EAAQ,KAAO,CACb,UAAW,WACX,SAAUC,EAAO,MAAM,CACzB,EACA,MACF,QACE,IAAIO,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAgBU,EAAuBP,EAA4C,CAEjGH,EAAQ,OAAS,GAAGU,EAAO,IAAI,EAAG,WAAS,MAAM,EAAE,MAAMV,EAAQ,IAAI,EAErEA,EAAQ,KAAK,YAAc,UAAUU,EAAO,IAAI,EAAG,WAAS,MAAM,EAAE,MAAMV,EAAQ,KAAK,MAAM,EAE7FA,EAAQ,KAAK,YAAc,SAASU,EAAO,IAAI,EAAG,WAAS,KAAK,EAAE,MAAMV,EAAQ,KAAK,KAAK,EAE1FA,EAAQ,KAAK,YAAc,OAAOU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,KAAK,GAAG,EAEjGA,EAAQ,KAAK,YAAc,YAAYU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,MAAMV,EAAQ,KAAK,QAAQ,EAC9G,IAAIQ,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIaS,EAAQ,IAAID,GAEnBE,GAAN,cAA8B,aAAwB,CACpD,aAAc,CACZ,MAAM,4BAA6B,CAAC,CAAE,GAAI,EAAG,KAAM,MAAO,KAAM,SAAU,EAAG,CAAwB,CAAC,CAAC,CACzG,CACA,OAAOrB,EAAgD,CACrD,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,IAAM,GACVD,IAAU,WAAW,0BAAmC,KAAMC,EAASD,CAAK,EACzEC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACY,CACZ,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAAsB,GACpBN,EAAQ,IAAMC,EAAO,OAAO,EAC5B,MACF,QACE,IAAIO,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAqBU,EAAuBP,EAA4C,CAEtGH,EAAQ,MAAQ,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,GAAG,EAClF,IAAIQ,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIaW,GAAa,IAAID,GAExBE,GAAN,cAA+B,aAAyB,CACtD,aAAc,CACZ,MAAM,6BAA8B,CAClC,CAAE,GAAI,EAAG,KAAM,MAAO,KAAM,SAAU,EAAG,CAAwB,EACjE,CAAE,GAAI,EAAG,KAAM,YAAa,KAAM,SAAU,EAAG,CAAwB,EACvE,CAAE,GAAI,EAAG,KAAM,QAAS,KAAM,UAAW,EAAG,IAAMH,CAAM,CAC1D,CAAC,CACH,CACA,OAAOpB,EAAkD,CACvD,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,IAAM,GACdA,EAAQ,UAAY,GAChBD,IAAU,WAAW,0BAAoC,KAAMC,EAASD,CAAK,EAC1EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACa,CACb,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAAsB,GACpBN,EAAQ,IAAMC,EAAO,OAAO,EAC5B,MACF,IAA4B,GAC1BD,EAAQ,UAAYC,EAAO,OAAO,EAClC,MACF,IAAsC,GACpCD,EAAQ,MAAQmB,EAAM,mBAAmBlB,EAAQA,EAAO,OAAO,EAAGE,EAASH,EAAQ,KAAK,EACxF,MACF,QACE,IAAIQ,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAsBU,EAAuBP,EAA4C,CAEvGH,EAAQ,MAAQ,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,GAAG,EAE9EA,EAAQ,YAAc,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,SAAS,EAE1FA,EAAQ,OACVmB,EAAM,oBAAoBnB,EAAQ,MAAOU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,KAAK,EAAGP,CAAO,EAAE,KAAK,EACzG,IAAIK,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIaa,GAAc,IAAID,GAEzBE,GAAN,cAAiC,aAA2B,CAC1D,aAAc,CACZ,MAAM,+BAAgC,CAAC,CAAE,GAAI,EAAG,KAAM,MAAO,KAAM,SAAU,EAAG,CAAwB,CAAC,CAAC,CAC5G,CACA,OAAOzB,EAAsD,CAC3D,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,IAAM,GACVD,IAAU,WAAW,0BAAsC,KAAMC,EAASD,CAAK,EAC5EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACe,CACf,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAAsB,GACpBN,EAAQ,IAAMC,EAAO,OAAO,EAC5B,MACF,QACE,IAAIO,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAwBU,EAAuBP,EAA4C,CAEzGH,EAAQ,MAAQ,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,GAAG,EAClF,IAAIQ,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIae,GAAgB,IAAID,GAE3BE,GAAN,cAAkC,aAA4B,CAC5D,aAAc,CACZ,MAAM,gCAAiC,CAAC,CAAC,CAC3C,CACA,OAAO3B,EAAwD,CAC7D,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAID,IAAU,WAAW,0BAAuC,KAAMC,EAASD,CAAK,EAC7EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACgB,CAChB,OAAOA,GAAA,KAAAA,EAAU,KAAK,OAAO,CAC/B,CACA,oBAAoBJ,EAAyBU,EAAuBP,EAA4C,CAC9G,IAAIK,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIaiB,GAAiB,IAAID,GAE5BE,GAAN,cAA8B,aAAwB,CACpD,aAAc,CACZ,MAAM,4BAA6B,CACjC,CAAE,GAAI,EAAG,KAAM,MAAO,KAAM,SAAU,EAAG,CAAwB,EACjE,CAAE,GAAI,EAAG,KAAM,QAAS,KAAM,UAAW,EAAG,IAAMT,CAAM,CAC1D,CAAC,CACH,CACA,OAAOpB,EAAgD,CACrD,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,IAAM,GACVD,IAAU,WAAW,0BAAmC,KAAMC,EAASD,CAAK,EACzEC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACY,CACZ,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAAsB,GACpBN,EAAQ,IAAMC,EAAO,OAAO,EAC5B,MACF,IAAsC,GACpCD,EAAQ,MAAQmB,EAAM,mBAAmBlB,EAAQA,EAAO,OAAO,EAAGE,EAASH,EAAQ,KAAK,EACxF,MACF,QACE,IAAIQ,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAqBU,EAAuBP,EAA4C,CAEtGH,EAAQ,MAAQ,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,GAAG,EAE9EA,EAAQ,OACVmB,EAAM,oBAAoBnB,EAAQ,MAAOU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,KAAK,EAAGP,CAAO,EAAE,KAAK,EACzG,IAAIK,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIamB,GAAa,IAAID,GAExBE,GAAN,cAA+B,aAAyB,CACtD,aAAc,CACZ,MAAM,6BAA8B,CAAC,CAAC,CACxC,CACA,OAAO/B,EAAkD,CACvD,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAID,IAAU,WAAW,0BAAoC,KAAMC,EAASD,CAAK,EAC1EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACa,CACb,OAAOA,GAAA,KAAAA,EAAU,KAAK,OAAO,CAC/B,CACA,oBAAoBJ,EAAsBU,EAAuBP,EAA4C,CAC3G,IAAIK,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIaqB,GAAc,IAAID,GAEzBE,GAAN,cAAgC,aAA0B,CACxD,aAAc,CACZ,MAAM,8BAA+B,CACnC,CAAE,GAAI,EAAG,KAAM,YAAa,KAAM,SAAU,EAAG,CAAwB,EACvE,CAAE,GAAI,EAAG,KAAM,MAAO,KAAM,SAAU,EAAG,CAAwB,EACjE,CAAE,GAAI,EAAG,KAAM,YAAa,KAAM,SAAU,EAAG,CAAwB,EACvE,CAAE,GAAI,EAAG,KAAM,QAAS,KAAM,UAAW,EAAG,IAAMb,CAAM,EACxD,CAAE,GAAI,EAAG,KAAM,UAAW,KAAM,SAAU,EAAG,CAAwB,CACvE,CAAC,CACH,CACA,OAAOpB,EAAoD,CACzD,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,SAAW,GACnBA,EAAQ,IAAM,GACdA,EAAQ,UAAY,GACpBA,EAAQ,OAAS,GACbD,IAAU,WAAW,0BAAqC,KAAMC,EAASD,CAAK,EAC3EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACc,CACd,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAA4B,GAC1BN,EAAQ,SAAWC,EAAO,OAAO,EACjC,MACF,IAAsB,GACpBD,EAAQ,IAAMC,EAAO,OAAO,EAC5B,MACF,IAA4B,GAC1BD,EAAQ,UAAYC,EAAO,OAAO,EAClC,MACF,IAAsC,GACpCD,EAAQ,MAAQmB,EAAM,mBAAmBlB,EAAQA,EAAO,OAAO,EAAGE,EAASH,EAAQ,KAAK,EACxF,MACF,IAA0B,GACxBA,EAAQ,OAASC,EAAO,OAAO,EAC/B,MACF,QACE,IAAIO,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAuBU,EAAuBP,EAA4C,CAExGH,EAAQ,WAAa,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,QAAQ,EAExFA,EAAQ,MAAQ,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,GAAG,EAE9EA,EAAQ,YAAc,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,SAAS,EAE1FA,EAAQ,OACVmB,EAAM,oBAAoBnB,EAAQ,MAAOU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,KAAK,EAAGP,CAAO,EAAE,KAAK,EAErGH,EAAQ,SAAW,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,MAAM,EACxF,IAAIQ,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIauB,GAAe,IAAID,GAE1BE,GAAN,cAA0B,aAAoB,CAC5C,aAAc,CACZ,MAAM,wBAAyB,CAC7B,CAAE,GAAI,EAAG,KAAM,MAAO,KAAM,SAAU,MAAO,QAAS,EAAG,CAAwB,EACjF,CAAE,GAAI,EAAG,KAAM,MAAO,KAAM,SAAU,MAAO,QAAS,EAAG,CAAwB,EACjF,CAAE,GAAI,EAAG,KAAM,SAAU,KAAM,SAAU,MAAO,QAAS,EAAG,CAAwB,EACpF,CAAE,GAAI,EAAG,KAAM,SAAU,KAAM,SAAU,MAAO,QAAS,EAAG,CAAwB,CACtF,CAAC,CACH,CACA,OAAOnC,EAAwC,CAC7C,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,MAAQ,CAAE,UAAW,MAAU,EACnCD,IAAU,WAAW,0BAA+B,KAAMC,EAASD,CAAK,EACrEC,CACT,CACA,mBAAmBC,EAAuBC,EAAgBC,EAA4BC,EAAyB,CAC7G,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAAsB,GACpBN,EAAQ,MAAQ,CACd,UAAW,MACX,IAAKC,EAAO,OAAO,CACrB,EACA,MACF,IAAsB,GACpBD,EAAQ,MAAQ,CACd,UAAW,MACX,IAAKC,EAAO,OAAO,CACrB,EACA,MACF,IAAyB,GACvBD,EAAQ,MAAQ,CACd,UAAW,SACX,OAAQC,EAAO,OAAO,CACxB,EACA,MACF,IAAyB,GACvBD,EAAQ,MAAQ,CACd,UAAW,SACX,OAAQC,EAAO,OAAO,CACxB,EACA,MACF,QACE,IAAIO,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAiBU,EAAuBP,EAA4C,CAElGH,EAAQ,MAAM,YAAc,OAAOU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,MAAM,GAAG,EAEnGA,EAAQ,MAAM,YAAc,OAAOU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,MAAM,GAAG,EAEnGA,EAAQ,MAAM,YAAc,UAAUU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,MAAM,MAAM,EAEzGA,EAAQ,MAAM,YAAc,UAAUU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,MAAM,MAAM,EAC7G,IAAIQ,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIayB,GAAS,IAAID,GAEpBE,GAAN,cAA+B,aAAyB,CACtD,aAAc,CACZ,MAAM,6BAA8B,CAClC,CAAE,GAAI,EAAG,KAAM,YAAa,KAAM,SAAU,EAAG,CAAwB,EACvE,CAAE,GAAI,EAAG,KAAM,SAAU,KAAM,UAAW,OAAQ,EAAyB,EAAG,IAAMD,EAAO,CAC7F,CAAC,CACH,CACA,OAAOpC,EAAkD,CACvD,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,SAAW,GACnBA,EAAQ,OAAS,CAAC,EACdD,IAAU,WAAW,0BAAoC,KAAMC,EAASD,CAAK,EAC1EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACa,CACb,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAA4B,GAC1BN,EAAQ,SAAWC,EAAO,OAAO,EACjC,MACF,IAAiD,GAC/CD,EAAQ,OAAO,KAAKmC,GAAO,mBAAmBlC,EAAQA,EAAO,OAAO,EAAGE,CAAO,CAAC,EAC/E,MACF,QACE,IAAIK,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAsBU,EAAuBP,EAA4C,CAEvGH,EAAQ,WAAa,IAAIU,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,OAAOV,EAAQ,QAAQ,EAE5F,QAASqC,EAAI,EAAGA,EAAIrC,EAAQ,OAAO,OAAQqC,IACzCF,GAAO,oBAAoBnC,EAAQ,OAAOqC,CAAC,EAAG3B,EAAO,IAAI,EAAG,WAAS,eAAe,EAAE,KAAK,EAAGP,CAAO,EAAE,KAAK,EAC9G,IAAIK,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIa4B,GAAc,IAAIF,GAEzBG,GAAN,cAAgC,aAA0B,CACxD,aAAc,CACZ,MAAM,8BAA+B,CAAC,CAAC,CACzC,CACA,OAAOxC,EAAoD,CACzD,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAID,IAAU,WAAW,0BAAqC,KAAMC,EAASD,CAAK,EAC3EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACc,CACd,OAAOA,GAAA,KAAAA,EAAU,KAAK,OAAO,CAC/B,CACA,oBAAoBJ,EAAuBU,EAAuBP,EAA4C,CAC5G,IAAIK,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIa8B,GAAe,IAAID,GAE1BE,GAAN,cAAiC,aAA2B,CAC1D,aAAc,CACZ,MAAM,+BAAgC,CAAC,CAAE,GAAI,EAAG,KAAM,QAAS,KAAM,SAAU,EAAG,CAAuB,CAAC,CAAC,CAC7G,CACA,OAAO1C,EAAsD,CAC3D,IAAMC,EAAU,WAAW,OAAO,OAAO,KAAK,gBAAiB,EAC/D,OAAAA,EAAQ,MAAQ,IACZD,IAAU,WAAW,0BAAsC,KAAMC,EAASD,CAAK,EAC5EC,CACT,CACA,mBACEC,EACAC,EACAC,EACAC,EACe,CACf,IAAIJ,EAAUI,GAAA,KAAAA,EAAU,KAAK,OAAO,EAClCC,EAAMJ,EAAO,IAAMC,EACrB,KAAOD,EAAO,IAAMI,GAAK,CACvB,GAAI,CAACC,EAASC,CAAQ,EAAIN,EAAO,IAAI,EACrC,OAAQK,EAAS,CACf,IAAuB,GACrBN,EAAQ,MAAQC,EAAO,MAAM,EAAE,SAAS,EACxC,MACF,QACE,IAAIO,EAAIL,EAAQ,iBAChB,GAAIK,IAAM,QACR,MAAM,IAAI,WAAW,MAAM,iBAAiBF,CAAO,eAAeC,CAAQ,SAAS,KAAK,QAAQ,EAAE,EACpG,IAAIE,EAAIR,EAAO,KAAKM,CAAQ,EACxBC,IAAM,KAAQA,IAAM,GAAO,sBAAoB,OAASA,GAAG,KAAK,SAAUR,EAASM,EAASC,EAAUE,CAAC,CAC/G,CACF,CACA,OAAOT,CACT,CACA,oBAAoBA,EAAwBU,EAAuBP,EAA4C,CAEzGH,EAAQ,QAAU,KAAKU,EAAO,IAAI,EAAG,WAAS,MAAM,EAAE,MAAMV,EAAQ,KAAK,EAC7E,IAAIQ,EAAIL,EAAQ,mBAChB,OAAIK,IAAM,KAAQA,GAAK,GAAO,sBAAoB,QAAUA,GAAG,KAAK,SAAUR,EAASU,CAAM,EACtFA,CACT,CACF,EAIagC,GAAgB,IAAID,GAIpBE,GAAM,IAAI,eAAY,qBAAsB,CACvD,CAAE,KAAM,QAAS,QAAS,CAAC,EAAG,EAAGhC,GAAc,EAAGE,EAAc,EAChE,CAAE,KAAM,YAAa,gBAAiB,GAAM,QAAS,CAAC,EAAG,EAAGE,GAAkB,EAAGE,EAAM,CACzF,CAAC,EAIY2B,EAAQ,IAAI,eAAY,uBAAwB,CAC3D,CAAE,KAAM,OAAQ,gBAAiB,GAAM,QAAS,CAAC,EAAG,EAAGN,GAAa,EAAGL,EAAa,EACpF,CAAE,KAAM,MAAO,QAAS,CAAC,EAAG,EAAGZ,GAAY,EAAGE,EAAY,EAC1D,CAAE,KAAM,MAAO,QAAS,CAAC,EAAG,EAAGM,GAAY,EAAGE,EAAY,EAC1D,CAAE,KAAM,SAAU,QAAS,CAAC,EAAG,EAAGN,GAAe,EAAGE,EAAe,EACnE,CAAE,KAAM,QAAS,QAAS,CAAC,EAAG,EAAGa,GAAc,EAAGE,EAAc,CAClE,CAAC,ECnmCD,IAAAG,EAA+B,oCAiHxB,IAAMC,EAAN,KAAuD,CAI5D,YAA6BC,EAA0B,CAA1B,gBAAAA,EAH7B,cAAWC,EAAM,SACjB,aAAUA,EAAM,QAChB,aAAUA,EAAM,OACwC,CAOxD,KAAKC,EAAoBC,EAAsE,CAC7F,IAAMC,EAAS,KAAK,QAAQ,CAAC,EAC3BC,EAAM,KAAK,WAAW,aAAaF,CAAO,EAC5C,SAAO,kBAA0C,kBAAmB,KAAK,WAAYC,EAAQC,EAAKH,CAAK,CACzG,CAMA,IAAIA,EAAmBC,EAA0D,CAC/E,IAAMC,EAAS,KAAK,QAAQ,CAAC,EAC3BC,EAAM,KAAK,WAAW,aAAaF,CAAO,EAC5C,SAAO,kBAAwC,QAAS,KAAK,WAAYC,EAAQC,EAAKH,CAAK,CAC7F,CAMA,IAAIA,EAAmBC,EAA0D,CAC/E,IAAMC,EAAS,KAAK,QAAQ,CAAC,EAC3BC,EAAM,KAAK,WAAW,aAAaF,CAAO,EAC5C,SAAO,kBAAwC,QAAS,KAAK,WAAYC,EAAQC,EAAKH,CAAK,CAC7F,CAMA,OAAOA,EAAsBC,EAAgE,CAC3F,IAAMC,EAAS,KAAK,QAAQ,CAAC,EAC3BC,EAAM,KAAK,WAAW,aAAaF,CAAO,EAC5C,SAAO,kBAA8C,QAAS,KAAK,WAAYC,EAAQC,EAAKH,CAAK,CACnG,CAMA,MAAMA,EAAqBC,EAA8D,CACvF,IAAMC,EAAS,KAAK,QAAQ,CAAC,EAC3BC,EAAM,KAAK,WAAW,aAAaF,CAAO,EAC5C,SAAO,kBAA4C,QAAS,KAAK,WAAYC,EAAQC,EAAKH,CAAK,CACjG,CACF,EC7KO,IAAMI,GAAmB,cAKzB,IAAMC,GAA2B,0BAC3BC,GAAuB,CAAC,gBAAiB,iBAAiB,ECJxD,SAARC,EAA2BC,EAAgB,CAChD,GAAI,CAACA,GAASA,EAAM,SAAW,EAC7B,MAAM,MAAM,sDAAsD,EAGpE,IAAMC,EAAQD,EAAM,MAAM,GAAG,EAC7B,GAAIC,EAAM,SAAW,EACnB,MAAM,MAAM,6EAA6E,EAG3F,IAAMC,EAAa,KAAKD,EAAM,CAAC,CAAC,EAChC,GAAI,CACF,OAAO,KAAK,MAAMC,CAAU,CAC9B,OAASC,EAAK,CACZ,MAAM,MAAM,4BAA6BA,EAAc,OAAO,EAAE,CAClE,CACF,CAMO,IAAMC,GAAoBC,GAAgC,CAC/D,IAAMC,EAAQ,KAAK,IAAID,EAAM,aAAe,EAAoB,GAAc,EAExEE,EAASD,EAAQ,IAAO,KAAK,OAAO,EAAI,EAAI,GAClD,OAAO,KAAK,MAAMA,EAAQC,CAAM,CAClC,EJnBO,IAAMC,GAAN,KAAsB,CAG3B,YAAYC,EAAkBC,EAAe,CAC3C,IAAMC,EAAY,IAAI,yBAAsB,CAC1C,QAASF,EACT,KAAM,CAAE,cAAe,UAAUC,CAAK,EAAG,CAC3C,CAAC,EAED,KAAK,YAAc,IAAIE,EAAYD,CAAS,CAC9C,CAEM,KACJE,EAEA,QAAAC,EAAA,yBAFA,CAAE,WAAAC,EAAY,aAAAC,EAAc,YAAAC,CAAY,EACxCC,EAA6B,CAAE,QAAS,EAAG,aAAc,GAAmB,EAC5E,CACA,IAAMC,EAAkB,IAAI,gBACtBC,EAAO,KAAK,YAAY,KAC5B,CACE,SAAU,GACV,OAAQ,CAAC,CACX,EACA,CAAE,MAAOD,EAAgB,MAAO,CAClC,EACIE,EACEC,EAAqB,CAAC,EACxBC,EAAc,GAElBH,EAAK,UAAU,UAAUI,GAAW,CAtCxC,IAAAC,EA6CM,GALKF,IACHA,EAAc,GACdL,EAAe,CAAE,QAAS,EAAG,aAAc,GAAmB,GAG5DM,EAAQ,OACV,KAAIC,EAAAD,EAAQ,QAAR,YAAAC,EAAe,KAAK,aAAc,MAAO,CAC3C,IAAMC,EAAS,KAAK,MAAMF,EAAQ,MAAM,KAAK,GAAG,EAC5CF,EAAc,SAAWD,EAC3BL,EAAaQ,EAAQ,IAAKE,CAAM,GAEhCJ,EAAc,KAAKI,CAAM,EACrBJ,EAAc,SAAWD,GAC3BN,EAAWO,CAAa,EAG9B,OAEAN,EAAaQ,EAAQ,GAAG,CAE5B,CAAC,EAGD,IAAMG,EAAe,IAAM,CACzB,OAAO,oBAAoB,SAAUA,CAAY,EACjDR,EAAgB,MAAM,kCAAkC,EACxD,KAAK,KAAK,CAAE,WAAAJ,EAAY,aAAAC,EAAc,YAAAC,CAAY,CAAC,CACrD,EAEA,OAAO,iBAAiB,SAAUU,CAAY,EAE9CP,EAAK,UAAU,QAAQQ,GAAS,CAG9B,GAFA,QAAQ,MAAM,wBAAyBA,CAAK,EAExCA,EAAM,QAAQ,SAAS,OAAO,EAChC,OAGFX,EAAYW,CAAK,EAEjB,IAAMC,EAAYC,GAAiBZ,CAAY,EACzCa,EAA0B,CAC9B,QAASb,EAAa,QAAU,EAChC,aAAcW,CAChB,EASA,WAPqB,IAAM,CACzB,OAAO,oBAAoB,SAAUF,CAAY,EACjDR,EAAgB,MAAM,0BAA0B,EAChD,KAAK,KAAK,CAAE,WAAAJ,EAAY,aAAAC,EAAc,YAAAC,CAAY,EAAGc,CAAS,CAChE,EAGyBb,EAAa,YAAY,CACpD,CAAC,EAED,GAAI,CACFG,EAAQ,MAAM,KAAK,sBAAsB,EACzCN,EAAWM,EAAQC,EAAgB,CAAC,CAAC,CACvC,OAASM,EAAO,CACd,QAAQ,MAAM,mBAAoBA,CAAK,EACvC,IAAMI,EAAaC,GAAqB,SAAUL,EAA2B,QAAQ,YAAY,CAAC,EAClGX,EAAYW,EAA2BI,CAAU,CACnD,CAEA,MAAO,IAAM,CACX,OAAO,oBAAoB,SAAUL,CAAY,EACjDR,EAAgB,MAAMe,EAAwB,CAChD,CACF,GAEA,IAAIC,EAAaC,EAAW,CAC1B,IAAMC,EAAWD,EAAQ,KAAK,UAAUA,CAAK,EAAI,OACjD,OAAO,KAAK,YAAY,IAAI,CAC1B,IAAAD,EACA,MAAOE,EACH,CACE,KAAM,CAAE,IAAKA,EAAU,UAAW,KAAM,EACxC,MACF,EACA,CACE,KAAM,CAAE,UAAW,MAAU,EAC7B,MACF,CACN,CAAC,CACH,CAEM,IAAIF,EAAa,QAAArB,EAAA,sBA/HzB,IAAAW,EAgII,GAAM,CAAE,SAAAa,CAAS,EAAI,MAAM,KAAK,YAAY,IAAI,CAAE,IAAAH,CAAI,CAAC,EAEvD,KAAIV,EAAAa,EAAS,QAAT,YAAAb,EAAgB,KAAK,aAAc,MACrC,OAAO,KAAK,MAAMa,EAAS,MAAM,KAAK,GAAG,CAE7C,GAEM,cAAe,QAAAxB,EAAA,sBACnB,GAAM,CAAE,SAAAwB,CAAS,EAAI,MAAM,KAAK,YAAY,MAAM,CAAC,CAAC,EACpD,OAAO,OAAOA,EAAS,KAAK,CAC9B,GAEA,OAAOH,EAAa,CAClB,OAAO,KAAK,YAAY,OAAO,CAAE,IAAAA,CAAI,CAAC,CACxC,CAEc,uBAAwB,QAAArB,EAAA,sBAGpC,QAASyB,EAAI,EAAGA,EAAI,EAAaA,IAC/B,GAAI,CACF,aAAM,IAAI,QAAQC,GAAW,WAAWA,EAAS,GAAK,CAAC,EAChD,MAAM,KAAK,aAAa,CACjC,OAASZ,EAAO,CAEd,GADA,QAAQ,KAAKA,CAAK,EACbA,EAA2B,UAAY,kBAAoBW,IAAM,EACpE,MAAMX,CAEV,CAEJ,GACF,ED1JO,IAAMa,GAAkB,CAAC,CAC9B,MAAAC,EACA,SAAAC,EAAW,yCACX,YAAAC,CACF,OAKuB,YAAQ,IAAM,CACjC,GAAI,CACFC,EAAUH,CAAK,CACjB,OAASI,EAAK,CACZ,OAAOF,EAAYE,CAAY,CACjC,CACA,GAAI,CAACH,GAAY,CAACD,EAChB,OAAOE,EAAY,IAAI,MAAM,gCAAgC,CAAC,EAGhE,IAAMG,EAAe,IAAIC,GAAuBL,EAAUD,CAAK,EAE/D,cAAO,aAAeK,EACfA,CACT,EAAG,CAACJ,EAAUD,EAAOE,CAAW,CAAC,EM5BnC,IAAAK,GAAmC,iBAI5B,IAAMC,GAA0B,CAAC,CACtC,MAAAC,EACA,OAAAC,EACA,cAAAC,EAAgB,GAChB,YAAAC,CACF,IAKM,CACJ,GAAM,CAAE,YAAAC,CAAY,KAAI,YAAQ,IAAM,CACpC,GAAI,CACF,OAAOC,EAAUL,CAAK,CACxB,OAASM,EAAK,CACZ,OAAAH,EAAYG,CAAY,EACjB,CAAC,CACV,CACF,EAAG,CAACN,EAAOG,CAAW,CAAC,EAEvB,uBAAU,IAAM,CAId,GAFAF,GAAA,MAAAA,EAAQ,oBAAoB,CAAE,cAAe,CAAC,CAACC,CAAc,GAEzD,CAACE,EACH,OAGF,IAAMG,EAAa,CAACH,EAAY,SAAS,OAAO,EAChDH,GAAA,MAAAA,EAAQ,oBAAoB,CAAE,WAAAM,CAAW,EAC3C,EAAG,CAACH,EAAaF,EAAeD,CAAM,CAAC,EAEhCG,CACT,ERfA,IAAMI,GAA0D,CAC9D,SACA,WACA,WACA,sBACA,MACF,EAEO,SAASC,GAAiB,CAC/B,SAAAC,EACA,MAAAC,EACA,OAAAC,EACA,WAAAC,EAAa,CAAC,EACd,cAAAC,EAAgB,EAClB,EAMG,CACD,GAAM,CAACC,CAAK,KAAI,YAAS,IAAM,CAC7B,IAAMA,KAAQ,iBAAc,CAC1B,WAAY,CAAC,GAAG,oBAAmB,GAAGF,CAAU,CAClD,CAAC,EACD,OAAAE,EAAM,aAAaC,EAAa,EACzBD,CACT,CAAC,EAEK,CAACE,EAAaC,CAAc,KAAI,YAA6BN,GAAA,YAAAA,EAAQ,gBAAgB,EAErF,CAACO,EAAiBC,CAAkB,KAAI,YAA4B,CACxE,OAAQ,SACV,CAAC,EAEKC,KAAc,eAClB,CAACC,EAAcC,IAAyB,CACtCH,EACEG,EACI,CACE,MAAAD,EACA,OAAQ,OACV,EACA,CACE,MAAAP,EACA,OAAQ,gBACR,iBAAkB,SACpB,CACN,CACF,EACA,CAACA,CAAK,CACR,EAEMS,EAAeC,GAAgB,CAAE,MAAAd,EAAO,SAAAD,EAAU,YAAAW,CAAY,CAAC,EAC/DK,EAAcC,GAAwB,CAAE,MAAAhB,EAAO,OAAAC,EAAQ,cAAAE,EAAe,YAAAO,CAAY,CAAC,EAEnFO,KAAa,eAChBC,GAA+B,CAC9B,GAAI,CAACL,EACH,OAQF,GAH+BhB,GAAgC,MAC7DsB,GAAQD,EAAe,OAAOE,GAAUA,EAAO,WAAaD,CAAI,EAAE,OAAS,CAC7E,EAC4B,CAE1B,IAAME,EAAoBjB,EAAM,WAAW,EAAE,OAAOgB,GAAUA,EAAO,WAAa,OAAO,EACnFE,EAAkB,IAAI,IAAIJ,EAAe,IAAIK,GAAKA,EAAE,EAAE,CAAC,EAG7DnB,EAAM,mBAAmB,IAAM,CAC7BA,EAAM,MAAM,EACZA,EAAM,IAAIc,CAAc,CAC1B,CAAC,EAGD,QAAWE,KAAUC,EACdC,EAAgB,IAAIF,EAAO,EAAE,IAChChB,EAAM,IAAI,CAACgB,CAAM,CAAC,EAClBP,EAAa,IAAIO,EAAO,GAAIA,CAAM,EAGxC,KAGE,SAAWA,KAAUhB,EAAM,WAAW,EACpCS,EAAa,IAAIO,EAAO,GAAIA,CAAM,EAGtCX,EAAmB,CACjB,MAAAL,EACA,OAAQ,gBACR,iBAAkB,QACpB,CAAC,CACH,EACA,CAACA,EAAOS,CAAY,CACtB,EAEMW,KAAe,eACnB,CAACC,EAAaC,IAAqB,CAEjCtB,EAAM,mBAAmB,IAAM,CAC7B,GAAI,CAACsB,EACH,OAAOtB,EAAM,OAAO,CAACqB,CAAqB,CAAC,EAEzCA,IAAQE,GACVpB,EAAemB,CAAe,KAE9B,YAAS,IAAM,CACbtB,EAAM,IAAI,CAACsB,CAAK,CAAC,EACbD,IAAQ,iBACVrB,EAAM,IAAI,CACRwB,GAAAC,EAAA,GAAKH,GAAL,CAAY,cAAe,CAAC,CAACvB,EAAe,WAAY,CAACY,EAAY,SAAS,OAAO,CAAE,EACzF,CAAC,CAEL,CAAC,CAEL,CAAC,CACH,EACA,CAACX,EAAOW,EAAaZ,CAAa,CACpC,EAEA,sBAAU,IAAM,CACd,GAAI,CAACU,EAAc,OAEnBJ,EAAmB,CAAE,OAAQ,SAAU,CAAC,EAExC,IAAMqB,EAAyB,CAAC,EAGhC,OAAAjB,EACG,KAAK,CACJ,WAAAI,EACA,aAAAO,EACA,YAAAd,CACF,CAAC,EACA,KAAKqB,GAASD,EAAO,KAAKC,CAAK,CAAC,EAGnCD,EAAO,KACL1B,EAAM,UACJ,YAAS,SAAkC,CAAE,QAAA4B,CAAQ,EAA2B,CAC9E,OAAO,OAAOA,EAAQ,KAAK,EAAE,QAAQZ,GAAU,CAC7CP,EAAa,IAAIO,EAAO,GAAIA,CAAM,CACpC,CAAC,EAED,OAAO,OAAOY,EAAQ,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAEZ,CAAM,IAAM,CACrDP,EAAa,IAAIO,EAAO,GAAIA,CAAM,CACpC,CAAC,EAED,OAAO,OAAOY,EAAQ,OAAO,EAAE,QAAQZ,GAAU,CAC/CP,EAAa,OAAOO,EAAO,EAAE,CAC/B,CAAC,CACH,EAAG,EAAoB,EACvB,CAAE,OAAQ,OAAQ,MAAO,UAAW,CACtC,CACF,EAgCO,IAAM,CACXU,EAAO,QAAQG,GAAMA,EAAG,CAAC,EACzBH,EAAO,OAAS,CAClB,CACF,EAAG,CAAC1B,EAAOS,EAAcW,EAAcP,EAAYP,CAAW,CAAC,KAE/D,aAAU,IAAM,CACd,GAAI,CAACT,GAAU,CAACY,EAAc,OAE9B,IAAMiB,EAAyB,CAAC,EAEhC,OAAAA,EAAO,KACL1B,EAAM,UACJ,YAAS,CAAC,CAAE,QAAA4B,CAAQ,IAAM,CACxB,OAAO,KAAKA,EAAQ,OAAO,EAAE,QAAQP,GAAO,CAE1C,GAAI,CAACA,EAAI,SAAS,UAAU,EAC1B,OAEF,IAAMS,EAAUjC,GAAA,YAAAA,EAAQ,kBAEpBiC,GAAA,YAAAA,EAAS,OAAO5B,GAAA,YAAAA,EAAa,MAC/BO,EAAa,IAAI,eAAa,EAAE,KAAKsB,GAAY,CAC3CA,IACFtB,GAAA,MAAAA,EAAc,IAAIsB,EAAS,GAAIP,GAAAC,EAAA,GAAKM,GAAL,CAAe,cAAeD,GAAA,YAAAA,EAAS,EAAG,IAE7E,CAAC,EACD3B,EAAe2B,CAAO,EAE1B,CAAC,CACH,EAAG,GAAmB,EACtB,CAAE,OAAQ,OAAQ,MAAO,SAAU,CACrC,CACF,EAEO,IAAM,CACXJ,EAAO,QAAQG,GAAMA,EAAG,CAAC,EACzBH,EAAO,OAAS,CAClB,CACF,EAAG,CAACxB,EAAaL,EAAQY,EAAcT,CAAK,CAAC,KAG7C,aAAU,IAAM,CA/PlB,IAAAgC,EAgQQ,CAACnC,GAAU,GAACmC,EAAAnC,EAAO,iBAAiB,IAAxB,MAAAmC,EAA2B,aAAc,CAACjC,GAE1DC,EAAM,OACJ,IAAM,CACJH,EAAO,UAAU,CACnB,EACA,CAAE,OAAQ,SAAU,MAAO,UAAW,CACxC,CACF,EAAG,CAACA,EAAQG,EAAOD,CAAa,CAAC,EAE1BK,CACT,CnB7PO,SAAS6B,GAAWC,EAAwB,CACjD,GAAM,CAACC,EAAKC,CAAM,KAAI,YAAS,KAAK,IAAI,EAAIF,EAAM,KAAK,EAEvD,OAAO,EAAAG,QAAA,cAACC,GAAAC,EAAA,CAAoB,IAAKJ,EAAK,QAAS,IAAMC,EAAO,KAAK,IAAI,EAAIF,EAAM,KAAK,GAAOA,EAAO,CACpG,CAEA,SAASI,GAAoB,CAC3B,SAAAE,EACA,MAAAC,EACA,cAAAC,EACA,kBAAAC,EACA,QAAAC,EACA,QAAAC,CACF,EAA8C,CA3B9C,IAAAC,EAAAC,EA4BE,GAAM,CAACC,EAAQC,CAAS,KAAI,YAAiB,EACvCC,EAAQC,GAAiB,CAC7B,SAAAX,EACA,MAAAC,EACA,OAAAO,EACA,cAAAN,CACF,CAAC,EAEKU,EAAmBF,EAAM,SAAW,gBAAkBA,EAAM,iBAAmB,OASrF,OACE,EAAAb,QAAA,cAAC,WACC,UAAWM,EAAoB,qBAAuB,GACtD,UAAS,GACT,MAAOO,EACP,QAZiBF,GAAmB,CACtCC,EAAUD,CAAM,EAEhB,OAAO,OAASA,EAChBJ,GAAA,MAAAA,EAAU,CAAE,MAAOM,EAAM,MAAO,OAAAF,CAAO,EACzC,EAQI,WAAY,CACV,cAAe,CAAC,CAAE,MAAAK,EAAO,OAAAL,CAAO,IAAM,EAAAX,QAAA,cAACiB,GAAA,CAAc,OAAQN,EAAQ,MAAOK,EAAO,QAASR,EAAS,CACvG,EACA,SAAQC,EAAAE,GAAA,YAAAA,EAAQ,qBAAR,YAAAF,EAA4B,aAAcM,GAAoB,SACtE,cAAcL,EAAAC,GAAA,YAAAA,EAAQ,qBAAR,MAAAD,EAA4B,WAAa,OAAS,UAEhE,EAAAV,QAAA,cAACkB,GAAA,CAAsB,MAAOL,EAAO,CACvC,CAEJ",
|
|
6
|
+
"names": ["require_classnames", "__commonJSMin", "exports", "module", "hasOwn", "classNames", "classes", "i", "arg", "appendClass", "parseValue", "key", "value", "newClass", "index_exports", "__export", "Whiteboard", "__toCommonJS", "import_react", "import_tldraw", "import_react", "import_tldraw", "ConnectionStatusToast", "store", "addToast", "removeToast", "prevConnectionStatus", "offlineToastId", "connectionStatus", "import_react", "ArraySet", "__publicField", "elem", "idx", "visitor", "i", "RESET_VALUE", "HistoryBuffer", "capacity", "__publicField", "lastComputedEpoch", "currentEpoch", "diff", "RESET_VALUE", "sinceEpoch", "index", "buffer", "i", "offset", "elem", "fromEpoch", "toEpoch", "len", "result", "j", "isChild", "x", "haveParentsChanged", "child", "i", "n", "detach", "parent", "attach", "equals", "a", "b", "EMPTY_ARRAY", "tldrawStateGlobalKey", "tldrawStateGlobal", "CaptureStackFrame", "below", "child", "__publicField", "stack", "startCapturingParents", "child", "stack", "CaptureStackFrame", "stopCapturingParents", "frame", "i", "p", "detach", "maybeRemovedParent", "maybeCaptureParent", "idx", "attach", "globalEpoch", "didWarnDotValue", "logDotValueWarning", "didWarnComputedGetter", "logComputedGetterWarning", "UNINITIALIZED", "WithDiff", "value", "diff", "_Computed", "name", "derive", "options", "__publicField", "ArraySet", "UNINITIALIZED", "_a", "HistoryBuffer", "equals", "_b", "isNew", "globalEpoch", "haveParentsChanged", "startCapturingParents", "result", "newState", "WithDiff", "diff", "RESET_VALUE", "stopCapturingParents", "value", "maybeCaptureParent", "logDotValueWarning", "epoch", "EMPTY_ARRAY", "computedMethodAnnotation", "_target", "key", "descriptor", "originalMethod", "derivationKey", "d", "isComputedMethodKey", "computedAnnotation", "logComputedGetterWarning", "computedGetterAnnotation", "computed", "options", "target", "key", "descriptor", "computedAnnotation", "_Computed", "EffectScheduler", "name", "runEffect", "options", "__publicField", "globalEpoch", "haveParentsChanged", "i", "n", "attach", "detach", "startCapturingParents", "result", "stopCapturingParents", "react", "fn", "scheduler", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "import_react", "useValue", "args", "deps", "name", "isInRender", "$val", "computed", "e", "subscribe", "getSnapshot", "listen", "react", "import_tldraw", "import_classnames", "DASHBOARD_URL", "ErrorFallback", "error", "editor", "refresh", "containerRef", "shouldShowError", "setShouldShowError", "didCopy", "setDidCopy", "shouldShowResetConfirmation", "setShouldShowResetConfirmation", "errorMessage", "errorStack", "isDarkModeFromApp", "useValue", "e", "setIsDarkMode", "_a", "parent", "foundParentThemeClass", "timeout", "copyError", "textarea", "resetLocalState", "__async", "React", "classNames", "import_react", "import_tldraw", "DEFAULT_STORE", "import_react", "import_grpcweb_transport", "import_runtime", "import_runtime_rpc", "Value_Type", "HelloRequest$Type", "value", "message", "reader", "length", "options", "target", "end", "fieldNo", "wireType", "u", "d", "writer", "HelloRequest", "HelloResponse$Type", "HelloResponse", "SubscribeRequest$Type", "SubscribeRequest", "Event$Type", "Event", "Value$Type", "Value", "GetRequest$Type", "GetRequest", "GetResponse$Type", "GetResponse", "DeleteRequest$Type", "DeleteRequest", "DeleteResponse$Type", "DeleteResponse", "SetRequest$Type", "SetRequest", "SetResponse$Type", "SetResponse", "ChangeStream$Type", "ChangeStream", "Select$Type", "Select", "OpenRequest$Type", "i", "OpenRequest", "CountRequest$Type", "CountRequest", "CountResponse$Type", "CountResponse", "Api", "Store", "import_runtime_rpc", "StoreClient", "_transport", "Store", "input", "options", "method", "opt", "CURRENT_PAGE_KEY", "WHITEBOARD_CLOSE_MESSAGE", "RETRY_ERROR_MESSAGES", "decodeJWT", "token", "parts", "payloadStr", "err", "calculateBackoff", "state", "delay", "jitter", "SessionStore", "endpoint", "token", "transport", "StoreClient", "_0", "__async", "handleOpen", "handleChange", "handleError", "backoffState", "abortController", "call", "count", "initialValues", "isConnected", "message", "_a", "record", "handleOnline", "error", "nextDelay", "calculateBackoff", "nextState", "canRecover", "RETRY_ERROR_MESSAGES", "WHITEBOARD_CLOSE_MESSAGE", "key", "value", "valueStr", "response", "i", "resolve", "useSessionStore", "token", "endpoint", "handleError", "decodeJWT", "err", "sessionStore", "SessionStore", "import_react", "useSetEditorPermissions", "token", "editor", "zoomToContent", "handleError", "permissions", "decodeJWT", "err", "isReadonly", "FULL_SYNC_REQUIRED_RECORD_TYPES", "useCollaboration", "endpoint", "token", "editor", "shapeUtils", "zoomToContent", "store", "DEFAULT_STORE", "currentPage", "setCurrentPage", "storeWithStatus", "setStoreWithStatus", "handleError", "error", "isTerminal", "sessionStore", "useSessionStore", "permissions", "useSetEditorPermissions", "handleOpen", "initialRecords", "type", "record", "localShapeRecords", "serverRecordIds", "r", "handleChange", "key", "value", "CURRENT_PAGE_KEY", "__spreadProps", "__spreadValues", "unsubs", "unsub", "changes", "fn", "newPage", "instance", "_a", "Whiteboard", "props", "key", "setKey", "React", "CollaborativeEditor", "__spreadValues", "endpoint", "token", "zoomToContent", "transparentCanvas", "onMount", "refresh", "_a", "_b", "editor", "setEditor", "store", "useCollaboration", "connectionStatus", "error", "ErrorFallback", "ConnectionStatusToast"]
|
|
7
7
|
}
|