@vuu-ui/vuu-utils 0.13.9 → 0.13.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/node_modules/@dnd-kit/abstract/index.js +625 -0
- package/cjs/node_modules/@dnd-kit/abstract/index.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/abstract/modifiers.js +85 -0
- package/cjs/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/collision/dist/index.js +91 -0
- package/cjs/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/dom/index.js +1649 -0
- package/cjs/node_modules/@dnd-kit/dom/index.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/dom/sortable.js +833 -0
- package/cjs/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/dom/utilities.js +1389 -0
- package/cjs/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/geometry/dist/index.js +310 -0
- package/cjs/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/react/hooks.js +86 -0
- package/cjs/node_modules/@dnd-kit/react/hooks.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/react/sortable.js +177 -0
- package/cjs/node_modules/@dnd-kit/react/sortable.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/react/utilities.js +19 -0
- package/cjs/node_modules/@dnd-kit/react/utilities.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/state/dist/index.js +272 -0
- package/cjs/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
- package/cjs/node_modules/@preact/signals-core/dist/signals-core.js +11 -0
- package/cjs/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
- package/cjs/packages/vuu-utils/src/DataWindow.js +76 -0
- package/cjs/packages/vuu-utils/src/DataWindow.js.map +1 -0
- package/cjs/packages/vuu-utils/src/ShellContext.js +13 -0
- package/cjs/packages/vuu-utils/src/ShellContext.js.map +1 -0
- package/cjs/packages/vuu-utils/src/ThemeProvider.js +85 -0
- package/cjs/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
- package/cjs/packages/vuu-utils/src/array-utils.js +87 -0
- package/cjs/packages/vuu-utils/src/array-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/box-utils.js +53 -0
- package/cjs/packages/vuu-utils/src/box-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/column-utils.js +891 -0
- package/cjs/packages/vuu-utils/src/column-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/common-types.js +15 -0
- package/cjs/packages/vuu-utils/src/common-types.js.map +1 -0
- package/cjs/packages/vuu-utils/src/component-registry.js +140 -0
- package/cjs/packages/vuu-utils/src/component-registry.js.map +1 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js +20 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js +24 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +33 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
- package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +20 -0
- package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
- package/cjs/packages/vuu-utils/src/cookie-utils.js +10 -0
- package/cjs/packages/vuu-utils/src/cookie-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/css-utils.js +9 -0
- package/cjs/packages/vuu-utils/src/css-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/data-utils.js +81 -0
- package/cjs/packages/vuu-utils/src/data-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js +248 -0
- package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js +14 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js +23 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js +207 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/date/date-utils.js +10 -0
- package/cjs/packages/vuu-utils/src/date/date-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/date/dateTimePattern.js +25 -0
- package/cjs/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
- package/cjs/packages/vuu-utils/src/date/formatter.js +66 -0
- package/cjs/packages/vuu-utils/src/date/formatter.js.map +1 -0
- package/cjs/packages/vuu-utils/src/date/types.js +27 -0
- package/cjs/packages/vuu-utils/src/date/types.js.map +1 -0
- package/cjs/packages/vuu-utils/src/debug-utils.js +34 -0
- package/cjs/packages/vuu-utils/src/debug-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/event-emitter.js +113 -0
- package/cjs/packages/vuu-utils/src/event-emitter.js.map +1 -0
- package/cjs/packages/vuu-utils/src/feature-utils.js +139 -0
- package/cjs/packages/vuu-utils/src/feature-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/filters/filter-utils.js +136 -0
- package/cjs/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js +76 -0
- package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
- package/cjs/packages/vuu-utils/src/form-utils.js +48 -0
- package/cjs/packages/vuu-utils/src/form-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/formatting-utils.js +68 -0
- package/cjs/packages/vuu-utils/src/formatting-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/getUniqueId.js +6 -0
- package/cjs/packages/vuu-utils/src/getUniqueId.js.map +1 -0
- package/cjs/packages/vuu-utils/src/group-utils.js +27 -0
- package/cjs/packages/vuu-utils/src/group-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/html-utils.js +162 -0
- package/cjs/packages/vuu-utils/src/html-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/index.js +414 -0
- package/cjs/packages/vuu-utils/src/index.js.map +1 -0
- package/cjs/packages/vuu-utils/src/input-utils.js +10 -0
- package/cjs/packages/vuu-utils/src/input-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/invariant.js +13 -0
- package/cjs/packages/vuu-utils/src/invariant.js.map +1 -0
- package/cjs/packages/vuu-utils/src/itemToString.js +23 -0
- package/cjs/packages/vuu-utils/src/itemToString.js.map +1 -0
- package/cjs/packages/vuu-utils/src/json-utils.js +103 -0
- package/cjs/packages/vuu-utils/src/json-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/keyboard-utils.js +30 -0
- package/cjs/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/keyset.js +72 -0
- package/cjs/packages/vuu-utils/src/keyset.js.map +1 -0
- package/cjs/packages/vuu-utils/src/list-utils.js +11 -0
- package/cjs/packages/vuu-utils/src/list-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/local-storage-utils.js +20 -0
- package/cjs/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/logging-utils.js +65 -0
- package/cjs/packages/vuu-utils/src/logging-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/menu-utils.js +10 -0
- package/cjs/packages/vuu-utils/src/menu-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/module-utils.js +6 -0
- package/cjs/packages/vuu-utils/src/module-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/moving-window.js +103 -0
- package/cjs/packages/vuu-utils/src/moving-window.js.map +1 -0
- package/cjs/packages/vuu-utils/src/nanoid/index.js +22 -0
- package/cjs/packages/vuu-utils/src/nanoid/index.js.map +1 -0
- package/cjs/packages/vuu-utils/src/perf-utils.js +35 -0
- package/cjs/packages/vuu-utils/src/perf-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/promise-utils.js +42 -0
- package/cjs/packages/vuu-utils/src/promise-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/protocol-message-utils.js +86 -0
- package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/range-utils.js +152 -0
- package/cjs/packages/vuu-utils/src/range-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/react-utils.js +36 -0
- package/cjs/packages/vuu-utils/src/react-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/round-decimal.js +86 -0
- package/cjs/packages/vuu-utils/src/round-decimal.js.map +1 -0
- package/cjs/packages/vuu-utils/src/row-utils.js +44 -0
- package/cjs/packages/vuu-utils/src/row-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/selection-utils.js +246 -0
- package/cjs/packages/vuu-utils/src/selection-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/shell-layout-types.js +13 -0
- package/cjs/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
- package/cjs/packages/vuu-utils/src/sort-utils.js +78 -0
- package/cjs/packages/vuu-utils/src/sort-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/table-schema-utils.js +13 -0
- package/cjs/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/text-utils.js +21 -0
- package/cjs/packages/vuu-utils/src/text-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/tree-utils.js +106 -0
- package/cjs/packages/vuu-utils/src/tree-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/ts-utils.js +12 -0
- package/cjs/packages/vuu-utils/src/ts-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/typeahead-utils.js +6 -0
- package/cjs/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/url-utils.js +21 -0
- package/cjs/packages/vuu-utils/src/url-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/useId.js +9 -0
- package/cjs/packages/vuu-utils/src/useId.js.map +1 -0
- package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +17 -0
- package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
- package/cjs/packages/vuu-utils/src/useStateRef.js +23 -0
- package/cjs/packages/vuu-utils/src/useStateRef.js.map +1 -0
- package/esm/node_modules/@dnd-kit/abstract/index.js +612 -0
- package/esm/node_modules/@dnd-kit/abstract/index.js.map +1 -0
- package/esm/node_modules/@dnd-kit/abstract/modifiers.js +82 -0
- package/esm/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
- package/esm/node_modules/@dnd-kit/collision/dist/index.js +86 -0
- package/esm/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
- package/esm/node_modules/@dnd-kit/dom/index.js +1642 -0
- package/esm/node_modules/@dnd-kit/dom/index.js.map +1 -0
- package/esm/node_modules/@dnd-kit/dom/sortable.js +827 -0
- package/esm/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
- package/esm/node_modules/@dnd-kit/dom/utilities.js +1344 -0
- package/esm/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
- package/esm/node_modules/@dnd-kit/geometry/dist/index.js +303 -0
- package/esm/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
- package/esm/node_modules/@dnd-kit/react/hooks.js +80 -0
- package/esm/node_modules/@dnd-kit/react/hooks.js.map +1 -0
- package/esm/node_modules/@dnd-kit/react/sortable.js +175 -0
- package/esm/node_modules/@dnd-kit/react/sortable.js.map +1 -0
- package/esm/node_modules/@dnd-kit/react/utilities.js +17 -0
- package/esm/node_modules/@dnd-kit/react/utilities.js.map +1 -0
- package/esm/node_modules/@dnd-kit/state/dist/index.js +259 -0
- package/esm/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
- package/esm/node_modules/@preact/signals-core/dist/signals-core.js +4 -0
- package/esm/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
- package/esm/packages/vuu-utils/src/DataWindow.js +74 -0
- package/esm/packages/vuu-utils/src/DataWindow.js.map +1 -0
- package/esm/packages/vuu-utils/src/ShellContext.js +10 -0
- package/esm/packages/vuu-utils/src/ShellContext.js.map +1 -0
- package/esm/packages/vuu-utils/src/ThemeProvider.js +78 -0
- package/esm/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
- package/esm/packages/vuu-utils/src/array-utils.js +79 -0
- package/esm/packages/vuu-utils/src/array-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/box-utils.js +47 -0
- package/esm/packages/vuu-utils/src/box-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/column-utils.js +815 -0
- package/esm/packages/vuu-utils/src/column-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/common-types.js +13 -0
- package/esm/packages/vuu-utils/src/common-types.js.map +1 -0
- package/esm/packages/vuu-utils/src/component-registry.js +124 -0
- package/esm/packages/vuu-utils/src/component-registry.js.map +1 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataContext.js +18 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js +20 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +29 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
- package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +17 -0
- package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
- package/esm/packages/vuu-utils/src/cookie-utils.js +8 -0
- package/esm/packages/vuu-utils/src/cookie-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/css-utils.js +7 -0
- package/esm/packages/vuu-utils/src/css-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/data-utils.js +68 -0
- package/esm/packages/vuu-utils/src/data-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js +246 -0
- package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js +8 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js +21 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-utils.js +184 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/date/date-utils.js +8 -0
- package/esm/packages/vuu-utils/src/date/date-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/date/dateTimePattern.js +21 -0
- package/esm/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
- package/esm/packages/vuu-utils/src/date/formatter.js +63 -0
- package/esm/packages/vuu-utils/src/date/formatter.js.map +1 -0
- package/esm/packages/vuu-utils/src/date/types.js +21 -0
- package/esm/packages/vuu-utils/src/date/types.js.map +1 -0
- package/esm/packages/vuu-utils/src/debug-utils.js +32 -0
- package/esm/packages/vuu-utils/src/debug-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/event-emitter.js +111 -0
- package/esm/packages/vuu-utils/src/event-emitter.js.map +1 -0
- package/esm/packages/vuu-utils/src/feature-utils.js +125 -0
- package/esm/packages/vuu-utils/src/feature-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/filters/filter-utils.js +120 -0
- package/esm/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/filters/filterAsQuery.js +72 -0
- package/esm/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
- package/esm/packages/vuu-utils/src/form-utils.js +44 -0
- package/esm/packages/vuu-utils/src/form-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/formatting-utils.js +63 -0
- package/esm/packages/vuu-utils/src/formatting-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/getUniqueId.js +4 -0
- package/esm/packages/vuu-utils/src/getUniqueId.js.map +1 -0
- package/esm/packages/vuu-utils/src/group-utils.js +23 -0
- package/esm/packages/vuu-utils/src/group-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/html-utils.js +145 -0
- package/esm/packages/vuu-utils/src/html-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/index.js +70 -0
- package/esm/packages/vuu-utils/src/index.js.map +1 -0
- package/esm/packages/vuu-utils/src/input-utils.js +7 -0
- package/esm/packages/vuu-utils/src/input-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/invariant.js +11 -0
- package/esm/packages/vuu-utils/src/invariant.js.map +1 -0
- package/esm/packages/vuu-utils/src/itemToString.js +21 -0
- package/esm/packages/vuu-utils/src/itemToString.js.map +1 -0
- package/esm/packages/vuu-utils/src/json-utils.js +101 -0
- package/esm/packages/vuu-utils/src/json-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/keyboard-utils.js +16 -0
- package/esm/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/keyset.js +70 -0
- package/esm/packages/vuu-utils/src/keyset.js.map +1 -0
- package/esm/packages/vuu-utils/src/list-utils.js +9 -0
- package/esm/packages/vuu-utils/src/list-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/local-storage-utils.js +16 -0
- package/esm/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/logging-utils.js +61 -0
- package/esm/packages/vuu-utils/src/logging-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/menu-utils.js +6 -0
- package/esm/packages/vuu-utils/src/menu-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/module-utils.js +4 -0
- package/esm/packages/vuu-utils/src/module-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/moving-window.js +101 -0
- package/esm/packages/vuu-utils/src/moving-window.js.map +1 -0
- package/esm/packages/vuu-utils/src/nanoid/index.js +20 -0
- package/esm/packages/vuu-utils/src/nanoid/index.js.map +1 -0
- package/esm/packages/vuu-utils/src/perf-utils.js +32 -0
- package/esm/packages/vuu-utils/src/perf-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/promise-utils.js +40 -0
- package/esm/packages/vuu-utils/src/promise-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/protocol-message-utils.js +71 -0
- package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/range-utils.js +145 -0
- package/esm/packages/vuu-utils/src/range-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/react-utils.js +32 -0
- package/esm/packages/vuu-utils/src/react-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/round-decimal.js +84 -0
- package/esm/packages/vuu-utils/src/round-decimal.js.map +1 -0
- package/esm/packages/vuu-utils/src/row-utils.js +40 -0
- package/esm/packages/vuu-utils/src/row-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/selection-utils.js +236 -0
- package/esm/packages/vuu-utils/src/selection-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/shell-layout-types.js +11 -0
- package/esm/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
- package/esm/packages/vuu-utils/src/sort-utils.js +73 -0
- package/esm/packages/vuu-utils/src/sort-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/table-schema-utils.js +11 -0
- package/esm/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/text-utils.js +18 -0
- package/esm/packages/vuu-utils/src/text-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/tree-utils.js +100 -0
- package/esm/packages/vuu-utils/src/tree-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/ts-utils.js +8 -0
- package/esm/packages/vuu-utils/src/ts-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/typeahead-utils.js +4 -0
- package/esm/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/url-utils.js +18 -0
- package/esm/packages/vuu-utils/src/url-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/useId.js +7 -0
- package/esm/packages/vuu-utils/src/useId.js.map +1 -0
- package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +15 -0
- package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
- package/esm/packages/vuu-utils/src/useStateRef.js +21 -0
- package/esm/packages/vuu-utils/src/useStateRef.js.map +1 -0
- package/package.json +11 -8
- package/cjs/index.js +0 -9622
- package/cjs/index.js.map +0 -1
- package/esm/index.js +0 -9283
- package/esm/index.js.map +0 -1
package/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/@preact/signals-core/dist/signals-core.mjs","../../../node_modules/@dnd-kit/state/dist/index.mjs","../../../node_modules/@dnd-kit/geometry/dist/index.mjs","../../../node_modules/@dnd-kit/abstract/index.js","../../../node_modules/@dnd-kit/collision/dist/index.js","../../../node_modules/@dnd-kit/dom/utilities.js","../../../node_modules/@dnd-kit/dom/index.js","../../../node_modules/@dnd-kit/dom/sortable.js","../../../node_modules/@dnd-kit/react/utilities.js","../../../node_modules/@dnd-kit/react/hooks.js","../../../node_modules/@dnd-kit/react/sortable.js","../../../node_modules/@dnd-kit/abstract/modifiers.js","../src/array-utils.ts","../src/box-utils.ts","../src/column-utils.ts","../src/cookie-utils.ts","../src/component-registry.ts","../src/range-utils.ts","../src/DataWindow.ts","../src/common-types.ts","../src/css-utils.ts","../src/data-utils.ts","../src/event-emitter.ts","../src/nanoid/index.ts","../src/datasource/datasource-utils.ts","../src/datasource/BaseDataSource.ts","../src/datasource/datasource-action-utils.ts","../src/datasource/datasource-filter-utils.ts","../src/ts-utils.ts","../src/date/formatter.ts","../src/date/types.ts","../src/date/date-utils.ts","../src/date/dateTimePattern.ts","../src/logging-utils.ts","../src/debug-utils.ts","../src/html-utils.ts","../src/form-utils.ts","../src/filters/filter-utils.ts","../src/filters/filterAsQuery.ts","../src/text-utils.ts","../src/feature-utils.ts","../src/round-decimal.ts","../src/formatting-utils.ts","../src/getUniqueId.ts","../src/group-utils.ts","../src/input-utils.ts","../src/invariant.ts","../src/itemToString.ts","../src/json-utils.ts","../src/keyboard-utils.ts","../src/keyset.ts","../src/list-utils.ts","../src/local-storage-utils.ts","../src/menu-utils.ts","../src/module-utils.ts","../src/selection-utils.ts","../src/moving-window.ts","../src/react-utils.ts","../src/perf-utils.ts","../src/promise-utils.ts","../src/protocol-message-utils.ts","../src/row-utils.ts","../src/shell-layout-types.ts","../src/sort-utils.ts","../src/table-schema-utils.ts","../src/typeahead-utils.ts","../src/tree-utils.ts","../src/ThemeProvider.tsx","../src/url-utils.ts","../src/useId.ts","../src/useStateRef.ts","../src/useLayoutEffectSkipFirst.ts","../src/ShellContext.ts","../src/context-definitions/DataContext.tsx","../src/context-definitions/DataProvider.tsx","../src/context-definitions/DataSourceProvider.tsx","../src/context-definitions/WorkspaceContext.tsx"],"sourcesContent":["const i=Symbol.for(\"preact-signals\");function t(){if(r>1){r--;return}let i,t=!1;while(void 0!==s){let o=s;s=void 0;f++;while(void 0!==o){const n=o.o;o.o=void 0;o.f&=-3;if(!(8&o.f)&&v(o))try{o.c()}catch(o){if(!t){i=o;t=!0}}o=n}}f=0;r--;if(t)throw i}function o(i){if(r>0)return i();r++;try{return i()}finally{t()}}let n,s;function h(i){const t=n;n=void 0;try{return i()}finally{n=t}}let r=0,f=0,e=0;function c(i){if(void 0===n)return;let t=i.n;if(void 0===t||t.t!==n){t={i:0,S:i,p:n.s,n:void 0,t:n,e:void 0,x:void 0,r:t};if(void 0!==n.s)n.s.n=t;n.s=t;i.n=t;if(32&n.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=n.s;t.n=void 0;n.s.n=t;n.s=t}return t}}function u(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched}u.prototype.brand=i;u.prototype.h=function(){return!0};u.prototype.S=function(i){const t=this.t;if(t!==i&&void 0===i.e){i.x=t;this.t=i;if(void 0!==t)t.e=i;else h(()=>{var i;null==(i=this.W)||i.call(this)})}};u.prototype.U=function(i){if(void 0!==this.t){const t=i.e,o=i.x;if(void 0!==t){t.x=o;i.e=void 0}if(void 0!==o){o.e=t;i.x=void 0}if(i===this.t){this.t=o;if(void 0===o)h(()=>{var i;null==(i=this.Z)||i.call(this)})}}};u.prototype.subscribe=function(i){return E(()=>{const t=this.value,o=n;n=void 0;try{i(t)}finally{n=o}})};u.prototype.valueOf=function(){return this.value};u.prototype.toString=function(){return this.value+\"\"};u.prototype.toJSON=function(){return this.value};u.prototype.peek=function(){const i=n;n=void 0;try{return this.value}finally{n=i}};Object.defineProperty(u.prototype,\"value\",{get(){const i=c(this);if(void 0!==i)i.i=this.i;return this.v},set(i){if(i!==this.v){if(f>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;e++;r++;try{for(let i=this.t;void 0!==i;i=i.x)i.t.N()}finally{t()}}}});function d(i,t){return new u(i,t)}function v(i){for(let t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function l(i){for(let t=i.s;void 0!==t;t=t.n){const o=t.S.n;if(void 0!==o)t.r=o;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function y(i){let t,o=i.s;while(void 0!==o){const i=o.p;if(-1===o.i){o.S.U(o);if(void 0!==i)i.n=o.n;if(void 0!==o.n)o.n.p=i}else t=o;o.S.n=o.r;if(void 0!==o.r)o.r=void 0;o=i}i.s=t}function a(i,t){u.call(this,void 0);this.x=i;this.s=void 0;this.g=e-1;this.f=4;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched}a.prototype=new u;a.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===e)return!0;this.g=e;this.f|=1;if(this.i>0&&!v(this)){this.f&=-2;return!0}const i=n;try{l(this);n=this;const i=this.x();if(16&this.f||this.v!==i||0===this.i){this.v=i;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}n=i;y(this);this.f&=-2;return!0};a.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(let i=this.s;void 0!==i;i=i.n)i.S.S(i)}u.prototype.S.call(this,i)};a.prototype.U=function(i){if(void 0!==this.t){u.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(let i=this.s;void 0!==i;i=i.n)i.S.U(i)}}};a.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(let i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(a.prototype,\"value\",{get(){if(1&this.f)throw new Error(\"Cycle detected\");const i=c(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function w(i,t){return new a(i,t)}function _(i){const o=i.u;i.u=void 0;if(\"function\"==typeof o){r++;const s=n;n=void 0;try{o()}catch(t){i.f&=-2;i.f|=8;g(i);throw t}finally{n=s;t()}}}function g(i){for(let t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i)}function p(i){if(n!==this)throw new Error(\"Out-of-order effect\");y(this);n=i;this.f&=-2;if(8&this.f)g(this);t()}function b(i){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32}b.prototype.c=function(){const i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;const t=this.x();if(\"function\"==typeof t)this.u=t}finally{i()}};b.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);l(this);r++;const i=n;n=this;return p.bind(this,i)};b.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=s;s=this}};b.prototype.d=function(){this.f|=8;if(!(1&this.f))g(this)};b.prototype.dispose=function(){this.d()};function E(i){const t=new b(i);try{t.c()}catch(i){t.d();throw i}return t.d.bind(t)}export{u as Signal,o as batch,w as computed,E as effect,d as signal,h as untracked};//# sourceMappingURL=signals-core.mjs.map\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __decoratorStart = (base) => {\n var _a2;\n return [, , , __create((_a2 = base == null ? void 0 : base[__knownSymbol(\"metadata\")]) != null ? _a2 : null)];\n};\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== void 0 && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null)) });\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {\n return __privateGet(this, extra);\n }, set [name](x) {\n return __privateSet(this, extra, x);\n } }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1; i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };\n if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;\n if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null) __typeError(\"Object expected\");\n else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\n\n// src/index.ts\nimport {\n batch as batch2,\n effect as effect2,\n untracked as untracked3,\n signal as signal2,\n Signal\n} from \"@preact/signals-core\";\n\n// src/computed.ts\nimport {\n computed as computedSignal\n} from \"@preact/signals-core\";\nfunction computed(compute, comparator) {\n if (comparator) {\n let previousValue;\n return computedSignal(() => {\n const value = compute();\n if (value && previousValue && comparator(previousValue, value)) {\n return previousValue;\n }\n previousValue = value;\n return value;\n });\n }\n return computedSignal(compute);\n}\n\n// src/comparators.ts\nfunction deepEqual(a, b) {\n if (Object.is(a, b)) {\n return true;\n }\n if (a === null || b === null) return false;\n if (typeof a === \"function\" && typeof b === \"function\") {\n return a === b;\n }\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) {\n return false;\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false;\n }\n }\n return true;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n const hasDifferentValues = a.some(\n (value, index) => !deepEqual(value, b[index])\n );\n return !hasDifferentValues;\n }\n if (typeof a === \"object\" && typeof b === \"object\") {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.some((key) => deepEqual(a[key], b[key]));\n }\n return false;\n}\n\n// src/decorators.ts\nimport { signal } from \"@preact/signals-core\";\nfunction reactive({ get }, _) {\n return {\n init(value) {\n return signal(value);\n },\n get() {\n const current = get.call(this);\n return current.value;\n },\n set(newValue) {\n const current = get.call(this);\n if (current.peek() === newValue) {\n return;\n }\n current.value = newValue;\n }\n };\n}\nfunction derived(target, _) {\n const map = /* @__PURE__ */ new WeakMap();\n return function() {\n let result = map.get(this);\n if (!result) {\n result = computed(target.bind(this));\n map.set(this, result);\n }\n return result.value;\n };\n}\nfunction enumerable(enumerable2 = true) {\n return function(_value, context) {\n context.addInitializer(function() {\n const host = context.kind === \"field\" ? this : context.static ? this : Object.getPrototypeOf(this);\n const descriptor = Object.getOwnPropertyDescriptor(host, context.name);\n if (descriptor) {\n Object.defineProperty(host, context.name, __spreadProps(__spreadValues({}, descriptor), { enumerable: enumerable2 }));\n }\n });\n };\n}\n\n// src/effects.ts\nimport { effect } from \"@preact/signals-core\";\nfunction effects(...entries) {\n const effects2 = entries.map(effect);\n return () => effects2.forEach((cleanup) => cleanup());\n}\n\n// src/history.ts\nimport { batch, untracked } from \"@preact/signals-core\";\nvar _previous_dec, _initial_dec, _current_dec, _current_dec2, _previous_dec2, _initial_dec2, _init, _initial, _a, initial_get, initial_set, _ValueHistory_instances, _previous, _b, previous_get, previous_set, _current, _c, current_get, current_set;\n_initial_dec2 = [reactive], _previous_dec2 = [reactive], _current_dec2 = [reactive], _current_dec = [enumerable()], _initial_dec = [enumerable()], _previous_dec = [enumerable()];\nvar ValueHistory = class {\n constructor(defaultValue, equals = Object.is) {\n this.defaultValue = defaultValue;\n this.equals = equals;\n __runInitializers(_init, 5, this);\n __privateAdd(this, _ValueHistory_instances);\n // @ts-ignore\n __privateAdd(this, _initial, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);\n // @ts-ignore\n __privateAdd(this, _previous, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);\n // @ts-ignore\n __privateAdd(this, _current, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);\n this.reset = this.reset.bind(this);\n this.reset();\n }\n get current() {\n return __privateGet(this, _ValueHistory_instances, current_get);\n }\n get initial() {\n return __privateGet(this, _ValueHistory_instances, initial_get);\n }\n get previous() {\n return __privateGet(this, _ValueHistory_instances, previous_get);\n }\n /** Set the current value */\n set current(value) {\n const current = untracked(() => __privateGet(this, _ValueHistory_instances, current_get));\n if (value && current && this.equals(current, value)) {\n return;\n }\n batch(() => {\n if (!__privateGet(this, _ValueHistory_instances, initial_get)) {\n __privateSet(this, _ValueHistory_instances, value, initial_set);\n }\n __privateSet(this, _ValueHistory_instances, current, previous_set);\n __privateSet(this, _ValueHistory_instances, value, current_set);\n });\n }\n /** Reset the state to the initial value */\n reset(value = this.defaultValue) {\n batch(() => {\n __privateSet(this, _ValueHistory_instances, void 0, previous_set);\n __privateSet(this, _ValueHistory_instances, value, initial_set);\n __privateSet(this, _ValueHistory_instances, value, current_set);\n });\n }\n};\n_init = __decoratorStart(null);\n_initial = new WeakMap();\n_ValueHistory_instances = new WeakSet();\n_previous = new WeakMap();\n_current = new WeakMap();\n_a = __decorateElement(_init, 20, \"#initial\", _initial_dec2, _ValueHistory_instances, _initial), initial_get = _a.get, initial_set = _a.set;\n_b = __decorateElement(_init, 20, \"#previous\", _previous_dec2, _ValueHistory_instances, _previous), previous_get = _b.get, previous_set = _b.set;\n_c = __decorateElement(_init, 20, \"#current\", _current_dec2, _ValueHistory_instances, _current), current_get = _c.get, current_set = _c.set;\n__decorateElement(_init, 2, \"current\", _current_dec, ValueHistory);\n__decorateElement(_init, 2, \"initial\", _initial_dec, ValueHistory);\n__decorateElement(_init, 2, \"previous\", _previous_dec, ValueHistory);\n__decoratorMetadata(_init, ValueHistory);\n\n// src/snapshot.ts\nimport { untracked as untracked2 } from \"@preact/signals-core\";\nfunction snapshot(value) {\n return untracked2(() => {\n const output = {};\n for (const key in value) {\n output[key] = value[key];\n }\n return output;\n });\n}\n\n// src/store.ts\nvar _store;\nvar WeakStore = class {\n constructor() {\n __privateAdd(this, _store, /* @__PURE__ */ new WeakMap());\n }\n get(key, id) {\n var _a2;\n return key ? (_a2 = __privateGet(this, _store).get(key)) == null ? void 0 : _a2.get(id) : void 0;\n }\n set(key, id, value) {\n var _a2;\n if (!key) return;\n if (!__privateGet(this, _store).has(key)) __privateGet(this, _store).set(key, /* @__PURE__ */ new Map());\n return (_a2 = __privateGet(this, _store).get(key)) == null ? void 0 : _a2.set(id, value);\n }\n clear(key) {\n var _a2;\n return key ? (_a2 = __privateGet(this, _store).get(key)) == null ? void 0 : _a2.clear() : void 0;\n }\n};\n_store = new WeakMap();\nexport {\n Signal,\n ValueHistory,\n WeakStore,\n batch2 as batch,\n computed,\n deepEqual,\n derived,\n effect2 as effect,\n effects,\n enumerable,\n reactive,\n signal2 as signal,\n snapshot,\n untracked3 as untracked\n};\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __pow = Math.pow;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __decoratorStart = (base) => {\n var _a2;\n return [, , , __create((_a2 = base == null ? void 0 : base[__knownSymbol(\"metadata\")]) != null ? _a2 : null)];\n};\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== void 0 && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null)) });\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {\n return __privateGet(this, extra);\n }, set [name](x) {\n return __privateSet(this, extra, x);\n } }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1; i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };\n if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;\n if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null) __typeError(\"Object expected\");\n else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\n\n// src/point/Point.ts\nvar Point = class _Point {\n /**\n * @param {number} Coordinate of the point on the horizontal axis\n * @param {number} Coordinate of the point on the vertical axis\n */\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n /**\n * Returns the delta between this point and another point.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static delta(a, b) {\n return new _Point(a.x - b.x, a.y - b.y);\n }\n /**\n * Returns the distance (hypotenuse) between this point and another point.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static distance(a, b) {\n return Math.hypot(a.x - b.x, a.y - b.y);\n }\n /**\n * Returns true if both points are equal.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static equals(a, b) {\n return a.x === b.x && a.y === b.y;\n }\n static from({ x, y }) {\n return new _Point(x, y);\n }\n};\n\n// src/shapes/Rectangle.ts\nvar Rectangle = class _Rectangle {\n constructor(left, top, width, height) {\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n this.scale = {\n x: 1,\n y: 1\n };\n }\n get inverseScale() {\n return {\n x: 1 / this.scale.x,\n y: 1 / this.scale.y\n };\n }\n translate(x, y) {\n const { top, left, width, height, scale } = this;\n const newShape = new _Rectangle(left + x, top + y, width, height);\n newShape.scale = __spreadValues({}, scale);\n return newShape;\n }\n get boundingRectangle() {\n const { width, height, left, top, right, bottom } = this;\n return { width, height, left, top, right, bottom };\n }\n get center() {\n const { left, top, right, bottom } = this;\n return new Point((left + right) / 2, (top + bottom) / 2);\n }\n get area() {\n const { width, height } = this;\n return width * height;\n }\n equals(shape) {\n if (!(shape instanceof _Rectangle)) {\n return false;\n }\n const { left, top, width, height } = this;\n return left === shape.left && top === shape.top && width === shape.width && height === shape.height;\n }\n containsPoint(point) {\n const { top, left, bottom, right } = this;\n return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n }\n intersectionArea(shape) {\n if (shape instanceof _Rectangle) {\n return rectangleRectangleIntersection(this, shape);\n }\n return 0;\n }\n intersectionRatio(shape) {\n const { area } = this;\n const intersectionArea = this.intersectionArea(shape);\n const intersectionRatio = intersectionArea / (shape.area + area - intersectionArea);\n return intersectionRatio;\n }\n get bottom() {\n const { top, height } = this;\n return top + height;\n }\n get right() {\n const { left, width } = this;\n return left + width;\n }\n get aspectRatio() {\n const { width, height } = this;\n return width / height;\n }\n get corners() {\n return [\n { x: this.left, y: this.top },\n { x: this.right, y: this.top },\n { x: this.left, y: this.bottom },\n { x: this.right, y: this.bottom }\n ];\n }\n static from({ top, left, width, height }) {\n return new _Rectangle(left, top, width, height);\n }\n static delta(a, b, alignment = { x: \"center\", y: \"center\" }) {\n const getCoordinate = (rect, axis) => {\n const align = alignment[axis];\n const start = axis === \"x\" ? rect.left : rect.top;\n const size = axis === \"x\" ? rect.width : rect.height;\n if (align == \"start\") return start;\n if (align == \"end\") return start + size;\n return start + size / 2;\n };\n return Point.delta(\n { x: getCoordinate(a, \"x\"), y: getCoordinate(a, \"y\") },\n { x: getCoordinate(b, \"x\"), y: getCoordinate(b, \"y\") }\n );\n }\n static intersectionRatio(a, b) {\n return _Rectangle.from(a).intersectionRatio(_Rectangle.from(b));\n }\n};\nfunction rectangleRectangleIntersection(a, b) {\n const top = Math.max(b.top, a.top);\n const left = Math.max(b.left, a.left);\n const right = Math.min(b.left + b.width, a.left + a.width);\n const bottom = Math.min(b.top + b.height, a.top + a.height);\n const width = right - left;\n const height = bottom - top;\n if (left < right && top < bottom) {\n const intersectionArea = width * height;\n return intersectionArea;\n }\n return 0;\n}\n\n// src/position/position.ts\nimport { batch, derived, ValueHistory } from \"@dnd-kit/state\";\nvar _direction_dec, _delta_dec, _a, _timestamp, _init;\nvar Position = class extends (_a = ValueHistory, _delta_dec = [derived], _direction_dec = [derived], _a) {\n constructor(initialValue) {\n const point = Point.from(initialValue);\n super(point, (a, b) => Point.equals(a, b));\n __runInitializers(_init, 5, this);\n __privateAdd(this, _timestamp, 0);\n this.velocity = { x: 0, y: 0 };\n }\n get delta() {\n return Point.delta(this.current, this.initial);\n }\n get direction() {\n const { current, previous } = this;\n if (!previous) return null;\n const delta = {\n x: current.x - previous.x,\n y: current.y - previous.y\n };\n if (!delta.x && !delta.y) {\n return null;\n }\n if (Math.abs(delta.x) > Math.abs(delta.y)) {\n return delta.x > 0 ? \"right\" : \"left\";\n }\n return delta.y > 0 ? \"down\" : \"up\";\n }\n get current() {\n return super.current;\n }\n set current(coordinates) {\n const { current } = this;\n const point = Point.from(coordinates);\n const delta = {\n x: point.x - current.x,\n y: point.y - current.y\n };\n const timestamp = Date.now();\n const timeDelta = timestamp - __privateGet(this, _timestamp);\n const velocity = (delta2) => Math.round(delta2 / timeDelta * 100);\n batch(() => {\n __privateSet(this, _timestamp, timestamp);\n this.velocity = {\n x: velocity(delta.x),\n y: velocity(delta.y)\n };\n super.current = point;\n });\n }\n reset(coordinates = this.defaultValue) {\n super.reset(Point.from(coordinates));\n this.velocity = { x: 0, y: 0 };\n }\n};\n_init = __decoratorStart(_a);\n_timestamp = new WeakMap();\n__decorateElement(_init, 2, \"delta\", _delta_dec, Position);\n__decorateElement(_init, 2, \"direction\", _direction_dec, Position);\n__decoratorMetadata(_init, Position);\n\n// src/distance/distance.ts\nfunction exceedsDistance({ x, y }, distance) {\n const dx = Math.abs(x);\n const dy = Math.abs(y);\n if (typeof distance === \"number\") {\n return Math.sqrt(__pow(dx, 2) + __pow(dy, 2)) > distance;\n }\n if (\"x\" in distance && \"y\" in distance) {\n return dx > distance.x && dy > distance.y;\n }\n if (\"x\" in distance) {\n return dx > distance.x;\n }\n if (\"y\" in distance) {\n return dy > distance.y;\n }\n return false;\n}\n\n// src/types/axis.ts\nvar Axis = /* @__PURE__ */ ((Axis2) => {\n Axis2[\"Horizontal\"] = \"x\";\n Axis2[\"Vertical\"] = \"y\";\n return Axis2;\n})(Axis || {});\nvar Axes = Object.values(Axis);\nexport {\n Axes,\n Axis,\n Point,\n Position,\n Rectangle,\n exceedsDistance\n};\n","import { untracked, effect, effects, reactive, derived, ValueHistory, snapshot, batch, signal } from '@dnd-kit/state';\nimport { Position } from '@dnd-kit/geometry';\n\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nvar __decoratorStart = (base) => {\n var _a;\n return [, , , __create((_a = base == null ? void 0 : base[__knownSymbol(\"metadata\")]) != null ? _a : null)];\n};\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== void 0 && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null)) });\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {\n return __privateGet(this, extra);\n }, set [name](x) {\n return __privateSet(this, extra, x);\n } }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1; i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };\n if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;\n if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null) __typeError(\"Object expected\");\n else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\n\n// src/core/plugins/utilities.ts\nfunction configure(plugin, options) {\n return {\n plugin,\n options\n };\n}\nfunction configurator(plugin) {\n return (options) => {\n return configure(plugin, options);\n };\n}\nfunction descriptor(plugin) {\n if (typeof plugin === \"function\") {\n return {\n plugin,\n options: void 0\n };\n }\n return plugin;\n}\n\n// src/core/plugins/plugin.ts\nvar _disabled_dec, _init, _disabled, _cleanupFunctions;\n_disabled_dec = [reactive];\nvar Plugin = class {\n /**\n * Creates a new plugin instance.\n *\n * @param manager - The drag and drop manager that owns this plugin\n * @param options - Optional configuration for the plugin\n */\n constructor(manager, options) {\n this.manager = manager;\n this.options = options;\n __privateAdd(this, _disabled, __runInitializers(_init, 8, this, false)), __runInitializers(_init, 11, this);\n __privateAdd(this, _cleanupFunctions, /* @__PURE__ */ new Set());\n }\n /**\n * Enables a disabled plugin instance.\n *\n * @remarks\n * This method triggers effects when called.\n */\n enable() {\n this.disabled = false;\n }\n /**\n * Disables an enabled plugin instance.\n *\n * @remarks\n * This method triggers effects when called.\n */\n disable() {\n this.disabled = true;\n }\n /**\n * Checks if the plugin instance is disabled.\n *\n * @returns true if the plugin is disabled\n * @remarks\n * This method does not trigger effects when accessed.\n */\n isDisabled() {\n return untracked(() => {\n return this.disabled;\n });\n }\n /**\n * Configures a plugin instance with new options.\n *\n * @param options - The new options to apply\n */\n configure(options) {\n this.options = options;\n }\n /**\n * Registers an effect that will be cleaned up when the plugin is destroyed.\n *\n * @param callback - The effect callback to register\n * @returns A function to dispose of the effect\n */\n registerEffect(callback) {\n const dispose = effect(callback.bind(this));\n __privateGet(this, _cleanupFunctions).add(dispose);\n return dispose;\n }\n /**\n * Destroys a plugin instance and cleans up its resources.\n *\n * @remarks\n * This method:\n * - Calls all registered cleanup functions\n * - Should be overridden by subclasses to clean up additional resources\n */\n destroy() {\n __privateGet(this, _cleanupFunctions).forEach((cleanup) => cleanup());\n }\n /**\n * Configures a plugin constructor with options.\n *\n * @param options - The options to configure the constructor with\n * @returns The configured plugin constructor\n *\n * @remarks\n * This method is used to configure the options that the\n * plugin constructor will use to create plugin instances.\n */\n static configure(options) {\n return configure(this, options);\n }\n};\n_init = __decoratorStart(null);\n_disabled = new WeakMap();\n_cleanupFunctions = new WeakMap();\n__decorateElement(_init, 4, \"disabled\", _disabled_dec, Plugin, _disabled);\n__decoratorMetadata(_init, Plugin);\nvar CorePlugin = class extends Plugin {\n};\n\n// src/core/plugins/registry.ts\nvar _previousValues;\nvar PluginRegistry = class {\n /**\n * Creates a new plugin registry.\n *\n * @param manager - The drag and drop manager that owns this registry\n */\n constructor(manager) {\n this.manager = manager;\n this.instances = /* @__PURE__ */ new Map();\n __privateAdd(this, _previousValues, []);\n }\n /**\n * Gets all registered plugin instances.\n *\n * @returns An array of all active plugin instances\n */\n get values() {\n return Array.from(this.instances.values());\n }\n /**\n * Sets the list of plugins to be used by the registry.\n *\n * @param entries - Array of plugin constructors or descriptors\n * @remarks\n * This method:\n * - Filters out duplicate plugins\n * - Unregisters plugins that are no longer in use\n * - Registers new plugins with their options\n */\n set values(entries) {\n const descriptors = entries.map(descriptor).reduceRight((acc, descriptor2) => {\n if (acc.some(({ plugin }) => plugin === descriptor2.plugin)) {\n return acc;\n }\n return [descriptor2, ...acc];\n }, []);\n const constructors = descriptors.map(({ plugin }) => plugin);\n for (const plugin of __privateGet(this, _previousValues)) {\n if (!constructors.includes(plugin)) {\n if (plugin.prototype instanceof CorePlugin) {\n continue;\n }\n this.unregister(plugin);\n }\n }\n for (const { plugin, options } of descriptors) {\n this.register(plugin, options);\n }\n __privateSet(this, _previousValues, constructors);\n }\n /**\n * Gets a plugin instance by its constructor.\n *\n * @param plugin - The plugin constructor to look up\n * @returns The plugin instance or undefined if not found\n */\n get(plugin) {\n const instance = this.instances.get(plugin);\n return instance;\n }\n /**\n * Registers a new plugin instance.\n *\n * @param plugin - The plugin constructor to register\n * @param options - Optional configuration for the plugin\n * @returns The registered plugin instance\n * @remarks\n * If the plugin is already registered, its options will be updated\n * and the existing instance will be returned.\n */\n register(plugin, options) {\n const existingInstance = this.instances.get(plugin);\n if (existingInstance) {\n if (existingInstance.options !== options) {\n existingInstance.options = options;\n }\n return existingInstance;\n }\n const instance = new plugin(this.manager, options);\n this.instances.set(plugin, instance);\n return instance;\n }\n /**\n * Unregisters a plugin instance.\n *\n * @param plugin - The plugin constructor to unregister\n * @remarks\n * This method:\n * - Destroys the plugin instance\n * - Removes it from the registry\n */\n unregister(plugin) {\n const instance = this.instances.get(plugin);\n if (instance) {\n instance.destroy();\n this.instances.delete(plugin);\n }\n }\n /**\n * Destroys all registered plugin instances.\n *\n * @remarks\n * This method:\n * - Calls destroy() on all plugin instances\n * - Clears the registry\n */\n destroy() {\n for (const plugin of this.instances.values()) {\n plugin.destroy();\n }\n this.instances.clear();\n }\n};\n_previousValues = new WeakMap();\n\n// src/core/collision/utilities.ts\nfunction sortCollisions(a, b) {\n if (a.priority === b.priority) {\n if (a.type === b.type) {\n return b.value - a.value;\n }\n return b.type - a.type;\n }\n return b.priority - a.priority;\n}\n\n// src/core/collision/observer.ts\nvar DEFAULT_VALUE = [];\nvar _previousCoordinates, _collisions;\nvar CollisionObserver = class extends Plugin {\n /**\n * Creates a new CollisionObserver instance.\n *\n * @param manager - The drag drop manager instance\n */\n constructor(manager) {\n super(manager);\n __privateAdd(this, _previousCoordinates);\n __privateAdd(this, _collisions);\n this.computeCollisions = this.computeCollisions.bind(this);\n __privateSet(this, _collisions, signal(DEFAULT_VALUE));\n this.destroy = effects(\n () => {\n const collisions = this.computeCollisions();\n const coordinates = untracked(\n () => this.manager.dragOperation.position.current\n );\n if (collisions !== DEFAULT_VALUE) {\n const previousCoordinates = __privateGet(this, _previousCoordinates);\n __privateSet(this, _previousCoordinates, coordinates);\n if (previousCoordinates && coordinates.x == previousCoordinates.x && coordinates.y == previousCoordinates.y) {\n return;\n }\n } else {\n __privateSet(this, _previousCoordinates, void 0);\n }\n __privateGet(this, _collisions).value = collisions;\n },\n () => {\n const { dragOperation } = this.manager;\n if (dragOperation.status.initialized) {\n this.forceUpdate();\n }\n }\n );\n }\n /**\n * Forces an immediate update of collision detection.\n *\n * @param immediate - If true, updates collisions immediately. If false, resets previous coordinates.\n */\n forceUpdate(immediate = true) {\n untracked(() => {\n if (immediate) {\n __privateGet(this, _collisions).value = this.computeCollisions();\n } else {\n __privateSet(this, _previousCoordinates, void 0);\n }\n });\n }\n /**\n * Computes collisions between draggable and droppable elements.\n *\n * @param entries - Optional array of droppable elements to check. If not provided, uses all registered droppables.\n * @param collisionDetector - Optional custom collision detector function\n * @returns Array of detected collisions, sorted by priority\n */\n computeCollisions(entries, collisionDetector) {\n const { registry, dragOperation } = this.manager;\n const { source, shape, status } = dragOperation;\n if (!status.initialized || !shape) {\n return DEFAULT_VALUE;\n }\n const collisions = [];\n const potentialTargets = [];\n for (const entry of entries != null ? entries : registry.droppables) {\n if (entry.disabled) {\n continue;\n }\n if (source && !entry.accepts(source)) {\n continue;\n }\n const detectCollision = collisionDetector != null ? collisionDetector : entry.collisionDetector;\n if (!detectCollision) {\n continue;\n }\n potentialTargets.push(entry);\n void entry.shape;\n const collision = untracked(\n () => detectCollision({\n droppable: entry,\n dragOperation\n })\n );\n if (collision) {\n if (entry.collisionPriority != null) {\n collision.priority = entry.collisionPriority;\n }\n collisions.push(collision);\n }\n }\n if (potentialTargets.length === 0) {\n return DEFAULT_VALUE;\n }\n collisions.sort(sortCollisions);\n return collisions;\n }\n /**\n * Gets the current collisions signal value.\n */\n get collisions() {\n return __privateGet(this, _collisions).value;\n }\n};\n_previousCoordinates = new WeakMap();\n_collisions = new WeakMap();\n\n// src/core/manager/events.ts\nvar Monitor = class {\n constructor() {\n this.registry = /* @__PURE__ */ new Map();\n }\n /**\n * Adds an event listener for the specified event type.\n *\n * @param name - The name of the event to listen for\n * @param handler - The function to call when the event occurs\n * @returns A function to remove the event listener\n */\n addEventListener(name, handler) {\n const { registry } = this;\n const listeners = new Set(registry.get(name));\n listeners.add(handler);\n registry.set(name, listeners);\n return () => this.removeEventListener(name, handler);\n }\n /**\n * Removes an event listener for the specified event type.\n *\n * @param name - The name of the event\n * @param handler - The function to remove\n */\n removeEventListener(name, handler) {\n const { registry } = this;\n const listeners = new Set(registry.get(name));\n listeners.delete(handler);\n registry.set(name, listeners);\n }\n /**\n * Dispatches an event to all registered listeners.\n *\n * @param name - The name of the event to dispatch\n * @param args - Arguments to pass to the event handlers\n */\n dispatch(name, ...args) {\n const { registry } = this;\n const listeners = registry.get(name);\n if (!listeners) {\n return;\n }\n for (const listener of listeners) {\n listener(...args);\n }\n }\n};\nvar DragDropMonitor = class extends Monitor {\n /**\n * Creates a new drag and drop monitor.\n *\n * @param manager - The drag and drop manager to monitor\n */\n constructor(manager) {\n super();\n this.manager = manager;\n }\n /**\n * Dispatches a drag and drop event.\n *\n * @param type - The type of event to dispatch\n * @param event - The event data to dispatch\n */\n dispatch(type, event) {\n const args = [event, this.manager];\n super.dispatch(type, ...args);\n }\n};\nfunction defaultPreventable(event, cancelable = true) {\n let defaultPrevented = false;\n return __spreadProps(__spreadValues({}, event), {\n cancelable,\n get defaultPrevented() {\n return defaultPrevented;\n },\n preventDefault() {\n if (!cancelable) {\n return;\n }\n defaultPrevented = true;\n }\n });\n}\n\n// src/core/collision/notifier.ts\nvar CollisionNotifier = class extends CorePlugin {\n constructor(manager) {\n super(manager);\n const isEqual = (a, b) => a.map(({ id }) => id).join(\"\") === b.map(({ id }) => id).join(\"\");\n let previousCollisions = [];\n this.destroy = effects(\n () => {\n const { dragOperation, collisionObserver } = manager;\n if (dragOperation.status.initializing) {\n previousCollisions = [];\n collisionObserver.enable();\n }\n },\n () => {\n const { collisionObserver, monitor } = manager;\n const { collisions } = collisionObserver;\n if (collisionObserver.isDisabled()) {\n return;\n }\n const event = defaultPreventable({\n collisions\n });\n monitor.dispatch(\"collision\", event);\n if (event.defaultPrevented) {\n return;\n }\n if (isEqual(collisions, previousCollisions)) {\n return;\n } else {\n previousCollisions = collisions;\n }\n const [firstCollision] = collisions;\n untracked(() => {\n var _a;\n if ((firstCollision == null ? void 0 : firstCollision.id) !== ((_a = manager.dragOperation.target) == null ? void 0 : _a.id)) {\n collisionObserver.disable();\n manager.actions.setDropTarget(firstCollision == null ? void 0 : firstCollision.id).then(() => {\n collisionObserver.enable();\n });\n }\n });\n }\n );\n }\n};\n\n// src/core/collision/types.ts\nvar CollisionPriority = /* @__PURE__ */ ((CollisionPriority2) => {\n CollisionPriority2[CollisionPriority2[\"Lowest\"] = 0] = \"Lowest\";\n CollisionPriority2[CollisionPriority2[\"Low\"] = 1] = \"Low\";\n CollisionPriority2[CollisionPriority2[\"Normal\"] = 2] = \"Normal\";\n CollisionPriority2[CollisionPriority2[\"High\"] = 3] = \"High\";\n CollisionPriority2[CollisionPriority2[\"Highest\"] = 4] = \"Highest\";\n return CollisionPriority2;\n})(CollisionPriority || {});\nvar CollisionType = /* @__PURE__ */ ((CollisionType2) => {\n CollisionType2[CollisionType2[\"Collision\"] = 0] = \"Collision\";\n CollisionType2[CollisionType2[\"ShapeIntersection\"] = 1] = \"ShapeIntersection\";\n CollisionType2[CollisionType2[\"PointerIntersection\"] = 2] = \"PointerIntersection\";\n return CollisionType2;\n})(CollisionType || {});\nvar _dropped_dec, _dragging_dec, _initialized_dec, _initializing_dec, _idle_dec, _current_dec, _value_dec, _init2, _value;\n_value_dec = [reactive], _current_dec = [derived], _idle_dec = [derived], _initializing_dec = [derived], _initialized_dec = [derived], _dragging_dec = [derived], _dropped_dec = [derived];\nvar Status = class {\n constructor() {\n __runInitializers(_init2, 5, this);\n __privateAdd(this, _value, __runInitializers(_init2, 8, this, \"idle\" /* Idle */)), __runInitializers(_init2, 11, this);\n }\n get current() {\n return this.value;\n }\n get idle() {\n return this.value === \"idle\" /* Idle */;\n }\n get initializing() {\n return this.value === \"initializing\" /* Initializing */;\n }\n get initialized() {\n const { value } = this;\n return value !== \"idle\" /* Idle */ && value !== \"initialization-pending\" /* InitializationPending */;\n }\n get dragging() {\n return this.value === \"dragging\" /* Dragging */;\n }\n get dropped() {\n return this.value === \"dropped\" /* Dropped */;\n }\n /**\n * Sets the current status value.\n *\n * @param value - The new status value\n */\n set(value) {\n this.value = value;\n }\n};\n_init2 = __decoratorStart(null);\n_value = new WeakMap();\n__decorateElement(_init2, 4, \"value\", _value_dec, Status, _value);\n__decorateElement(_init2, 2, \"current\", _current_dec, Status);\n__decorateElement(_init2, 2, \"idle\", _idle_dec, Status);\n__decorateElement(_init2, 2, \"initializing\", _initializing_dec, Status);\n__decorateElement(_init2, 2, \"initialized\", _initialized_dec, Status);\n__decorateElement(_init2, 2, \"dragging\", _dragging_dec, Status);\n__decorateElement(_init2, 2, \"dropped\", _dropped_dec, Status);\n__decoratorMetadata(_init2, Status);\n\n// src/core/manager/actions.ts\nvar DragActions = class {\n /**\n * Creates a new instance of drag actions.\n *\n * @param manager - The drag and drop manager instance\n */\n constructor(manager) {\n this.manager = manager;\n }\n /**\n * Sets the source of the drag operation.\n *\n * @param source - The draggable entity or its unique identifier\n */\n setDragSource(source) {\n const { dragOperation } = this.manager;\n dragOperation.sourceIdentifier = typeof source === \"string\" || typeof source === \"number\" ? source : source.id;\n }\n /**\n * Sets the target of the drop operation.\n *\n * @param identifier - The unique identifier of the droppable entity or null/undefined\n * @returns A promise that resolves to true if the drop was prevented\n */\n setDropTarget(identifier) {\n return untracked(() => {\n const { dragOperation } = this.manager;\n const id = identifier != null ? identifier : null;\n if (dragOperation.targetIdentifier === id) {\n return Promise.resolve(false);\n }\n dragOperation.targetIdentifier = id;\n const event = defaultPreventable({\n operation: dragOperation.snapshot()\n });\n if (dragOperation.status.dragging) {\n this.manager.monitor.dispatch(\"dragover\", event);\n }\n return this.manager.renderer.rendering.then(() => event.defaultPrevented);\n });\n }\n /**\n * Starts a new drag operation.\n *\n * @param args - Configuration for the drag operation\n * @param args.event - The event that initiated the drag\n * @param args.source - The source draggable entity or its identifier\n * @param args.coordinates - The initial coordinates of the drag\n * @returns true if the drag operation started successfully\n * @throws {Error} If there is no drag source or another operation is active\n */\n start(args) {\n return untracked(() => {\n const { dragOperation } = this.manager;\n if (args.source != null) {\n this.setDragSource(args.source);\n }\n const sourceInstance = dragOperation.source;\n if (!sourceInstance) {\n throw new Error(\"Cannot start a drag operation without a drag source\");\n }\n if (!dragOperation.status.idle) {\n throw new Error(\n \"Cannot start a drag operation while another is active\"\n );\n }\n const controller = new AbortController();\n const { event: nativeEvent, coordinates } = args;\n batch(() => {\n dragOperation.status.set(\"initialization-pending\" /* InitializationPending */);\n dragOperation.shape = null;\n dragOperation.canceled = false;\n dragOperation.activatorEvent = nativeEvent != null ? nativeEvent : null;\n dragOperation.position.reset(coordinates);\n });\n const beforeStartEvent = defaultPreventable({\n operation: dragOperation.snapshot()\n });\n this.manager.monitor.dispatch(\"beforedragstart\", beforeStartEvent);\n if (beforeStartEvent.defaultPrevented) {\n dragOperation.reset();\n controller.abort();\n return controller;\n }\n dragOperation.status.set(\"initializing\" /* Initializing */);\n dragOperation.controller = controller;\n this.manager.renderer.rendering.then(() => {\n if (controller.signal.aborted) return;\n const { status } = dragOperation;\n if (status.current !== \"initializing\" /* Initializing */) return;\n dragOperation.status.set(\"dragging\" /* Dragging */);\n this.manager.monitor.dispatch(\"dragstart\", {\n nativeEvent,\n operation: dragOperation.snapshot(),\n cancelable: false\n });\n });\n return controller;\n });\n }\n /**\n * Moves the dragged entity to a new position.\n *\n * @param args - Configuration for the move operation\n * @param args.by - Relative coordinates to move by\n * @param args.to - Absolute coordinates to move to\n * @param args.event - The event that triggered the move\n * @param args.cancelable - Whether the move can be canceled\n * @param args.propagate - Whether to dispatch dragmove events\n */\n move(args) {\n return untracked(() => {\n var _a, _b;\n const { dragOperation } = this.manager;\n const { status, controller } = dragOperation;\n if (!status.dragging || !controller || controller.signal.aborted) {\n return;\n }\n const event = defaultPreventable(\n {\n nativeEvent: args.event,\n operation: dragOperation.snapshot(),\n by: args.by,\n to: args.to\n },\n (_a = args.cancelable) != null ? _a : true\n );\n if ((_b = args.propagate) != null ? _b : true) {\n this.manager.monitor.dispatch(\"dragmove\", event);\n }\n queueMicrotask(() => {\n var _a2, _b2, _c3, _d, _e;\n if (event.defaultPrevented) {\n return;\n }\n const coordinates = (_e = args.to) != null ? _e : {\n x: dragOperation.position.current.x + ((_b2 = (_a2 = args.by) == null ? void 0 : _a2.x) != null ? _b2 : 0),\n y: dragOperation.position.current.y + ((_d = (_c3 = args.by) == null ? void 0 : _c3.y) != null ? _d : 0)\n };\n dragOperation.position.current = coordinates;\n });\n });\n }\n /**\n * Stops the current drag operation.\n *\n * @param args - Configuration for stopping the operation\n * @param args.event - The event that triggered the stop\n * @param args.canceled - Whether the operation was canceled\n * @remarks\n * This method:\n * - Dispatches a dragend event\n * - Allows suspension of the operation\n * - Handles cleanup of the operation state\n */\n stop(args = {}) {\n return untracked(() => {\n var _a, _b;\n const { dragOperation } = this.manager;\n const { controller } = dragOperation;\n if (!controller || controller.signal.aborted) return;\n let promise;\n const suspend = () => {\n const output = {\n resume: () => {\n },\n abort: () => {\n }\n };\n promise = new Promise((resolve, reject) => {\n output.resume = resolve;\n output.abort = reject;\n });\n return output;\n };\n controller.abort();\n const end = () => {\n this.manager.renderer.rendering.then(() => {\n dragOperation.status.set(\"dropped\" /* Dropped */);\n const dropping = untracked(\n () => {\n var _a2;\n return ((_a2 = dragOperation.source) == null ? void 0 : _a2.status) === \"dropping\";\n }\n );\n const cleanup = () => {\n if (dragOperation.controller === controller) {\n dragOperation.controller = void 0;\n }\n dragOperation.reset();\n };\n if (dropping) {\n const { source } = dragOperation;\n const dispose = effect(() => {\n if ((source == null ? void 0 : source.status) === \"idle\") {\n dispose();\n cleanup();\n }\n });\n } else {\n this.manager.renderer.rendering.then(cleanup);\n }\n });\n };\n dragOperation.canceled = (_a = args.canceled) != null ? _a : false;\n this.manager.monitor.dispatch(\"dragend\", {\n nativeEvent: args.event,\n operation: dragOperation.snapshot(),\n canceled: (_b = args.canceled) != null ? _b : false,\n suspend\n });\n if (promise) {\n promise.then(end).catch(() => dragOperation.reset());\n } else {\n end();\n }\n });\n }\n};\nvar _disabled_dec2, _data_dec, _id_dec, _manager_dec, _init3, _manager, _id, _data, _disabled2;\n_manager_dec = [reactive], _id_dec = [reactive], _data_dec = [reactive], _disabled_dec2 = [reactive];\nvar Entity = class {\n /**\n * Creates a new instance of the `Entity` class.\n *\n * @param input - An object containing the initial properties of the entity.\n * @param manager - The manager that controls the drag and drop operations.\n */\n constructor(input, manager) {\n __privateAdd(this, _manager, __runInitializers(_init3, 8, this)), __runInitializers(_init3, 11, this);\n __privateAdd(this, _id, __runInitializers(_init3, 12, this)), __runInitializers(_init3, 15, this);\n __privateAdd(this, _data, __runInitializers(_init3, 16, this)), __runInitializers(_init3, 19, this);\n __privateAdd(this, _disabled2, __runInitializers(_init3, 20, this)), __runInitializers(_init3, 23, this);\n const { effects: effects6, id, data = {}, disabled = false, register = true } = input;\n let previousId = id;\n this.manager = manager;\n this.id = id;\n this.data = data;\n this.disabled = disabled;\n this.effects = () => {\n var _a;\n return [\n () => {\n const { id: id2, manager: manager2 } = this;\n if (id2 === previousId) {\n return;\n }\n manager2 == null ? void 0 : manager2.registry.register(this);\n return () => manager2 == null ? void 0 : manager2.registry.unregister(this);\n },\n ...(_a = effects6 == null ? void 0 : effects6()) != null ? _a : []\n ];\n };\n this.register = this.register.bind(this);\n this.unregister = this.unregister.bind(this);\n this.destroy = this.destroy.bind(this);\n if (manager && register) {\n queueMicrotask(this.register);\n }\n }\n /**\n * A method that registers the entity with the manager.\n * @returns CleanupFunction | void\n */\n register() {\n var _a;\n return (_a = this.manager) == null ? void 0 : _a.registry.register(this);\n }\n /**\n * A method that unregisters the entity from the manager.\n * @returns void\n */\n unregister() {\n var _a;\n (_a = this.manager) == null ? void 0 : _a.registry.unregister(this);\n }\n /**\n * A method that cleans up the entity when it is no longer needed.\n * @returns void\n */\n destroy() {\n var _a;\n (_a = this.manager) == null ? void 0 : _a.registry.unregister(this);\n }\n};\n_init3 = __decoratorStart(null);\n_manager = new WeakMap();\n_id = new WeakMap();\n_data = new WeakMap();\n_disabled2 = new WeakMap();\n__decorateElement(_init3, 4, \"manager\", _manager_dec, Entity, _manager);\n__decorateElement(_init3, 4, \"id\", _id_dec, Entity, _id);\n__decorateElement(_init3, 4, \"data\", _data_dec, Entity, _data);\n__decorateElement(_init3, 4, \"disabled\", _disabled_dec2, Entity, _disabled2);\n__decoratorMetadata(_init3, Entity);\nvar EntityRegistry = class {\n constructor() {\n this.map = signal(/* @__PURE__ */ new Map());\n this.cleanupFunctions = /* @__PURE__ */ new WeakMap();\n /**\n * Registers a entity in the registry.\n * @param key - The unique identifier of the entity.\n * @param value - The entity to register.\n * @returns A function that unregisters the entity.\n */\n this.register = (key, value) => {\n const current = this.map.peek();\n const currentValue = current.get(key);\n const unregister = () => this.unregister(key, value);\n if (currentValue === value) return unregister;\n if (currentValue) {\n const cleanup2 = this.cleanupFunctions.get(currentValue);\n cleanup2 == null ? void 0 : cleanup2();\n this.cleanupFunctions.delete(currentValue);\n }\n const updatedMap = new Map(current);\n updatedMap.set(key, value);\n this.map.value = updatedMap;\n const cleanup = effects(...value.effects());\n this.cleanupFunctions.set(value, cleanup);\n return unregister;\n };\n /**\n * Unregisters an entity from the registry.\n * @param key - The unique identifier of the entity.\n * @param value - The entity instance to unregister.\n */\n this.unregister = (key, value) => {\n const current = this.map.peek();\n if (current.get(key) !== value) {\n return;\n }\n const cleanup = this.cleanupFunctions.get(value);\n cleanup == null ? void 0 : cleanup();\n this.cleanupFunctions.delete(value);\n const updatedMap = new Map(current);\n updatedMap.delete(key);\n this.map.value = updatedMap;\n };\n }\n /**\n * Iterator for the EntityRegistry class.\n * @returns An iterator for the values in the map.\n */\n [Symbol.iterator]() {\n return this.map.peek().values();\n }\n get value() {\n return this.map.value.values();\n }\n /**\n * Checks if a entity with the given identifier exists in the registry.\n * @param identifier - The unique identifier of the entity.\n * @returns True if the entity exists, false otherwise.\n */\n has(identifier) {\n return this.map.value.has(identifier);\n }\n /**\n * Retrieves a entity from the registry using its identifier.\n * @param identifier - The unique identifier of the entity.\n * @returns The entity if it exists, undefined otherwise.\n */\n get(identifier) {\n return this.map.value.get(identifier);\n }\n /**\n * Destroys all entries in the registry and clears the registry.\n */\n destroy() {\n for (const entry of this) {\n const cleanup = this.cleanupFunctions.get(entry);\n cleanup == null ? void 0 : cleanup();\n entry.destroy();\n }\n this.map.value = /* @__PURE__ */ new Map();\n }\n};\nvar _isDragSource_dec, _isDragging_dec, _isDropping_dec, _status_dec, _modifiers_dec, _type_dec, _c, _init4, _type, _modifiers, _status;\nvar Draggable = class extends (_c = Entity, _type_dec = [reactive], _modifiers_dec = [reactive], _status_dec = [reactive], _isDropping_dec = [derived], _isDragging_dec = [derived], _isDragSource_dec = [derived], _c) {\n constructor(_a, manager) {\n var _b = _a, { modifiers, type, sensors } = _b, input = __objRest(_b, [\"modifiers\", \"type\", \"sensors\"]);\n super(input, manager);\n __runInitializers(_init4, 5, this);\n __privateAdd(this, _type, __runInitializers(_init4, 8, this)), __runInitializers(_init4, 11, this);\n __privateAdd(this, _modifiers, __runInitializers(_init4, 12, this)), __runInitializers(_init4, 15, this);\n __privateAdd(this, _status, __runInitializers(_init4, 16, this, this.isDragSource ? \"dragging\" : \"idle\")), __runInitializers(_init4, 19, this);\n this.type = type;\n this.sensors = sensors;\n this.modifiers = modifiers;\n this.alignment = input.alignment;\n }\n get isDropping() {\n return this.status === \"dropping\" && this.isDragSource;\n }\n get isDragging() {\n return this.status === \"dragging\" && this.isDragSource;\n }\n get isDragSource() {\n var _a, _b;\n return ((_b = (_a = this.manager) == null ? void 0 : _a.dragOperation.source) == null ? void 0 : _b.id) === this.id;\n }\n};\n_init4 = __decoratorStart(_c);\n_type = new WeakMap();\n_modifiers = new WeakMap();\n_status = new WeakMap();\n__decorateElement(_init4, 4, \"type\", _type_dec, Draggable, _type);\n__decorateElement(_init4, 4, \"modifiers\", _modifiers_dec, Draggable, _modifiers);\n__decorateElement(_init4, 4, \"status\", _status_dec, Draggable, _status);\n__decorateElement(_init4, 2, \"isDropping\", _isDropping_dec, Draggable);\n__decorateElement(_init4, 2, \"isDragging\", _isDragging_dec, Draggable);\n__decorateElement(_init4, 2, \"isDragSource\", _isDragSource_dec, Draggable);\n__decoratorMetadata(_init4, Draggable);\nvar _isDropTarget_dec, _shape_dec, _collisionPriority_dec, _collisionDetector_dec, _type_dec2, _accept_dec, _c2, _init5, _accept, _type2, _collisionDetector, _collisionPriority, _shape;\nvar Droppable = class extends (_c2 = Entity, _accept_dec = [reactive], _type_dec2 = [reactive], _collisionDetector_dec = [reactive], _collisionPriority_dec = [reactive], _shape_dec = [reactive], _isDropTarget_dec = [derived], _c2) {\n constructor(_a, manager) {\n var _b = _a, { accept, collisionDetector, collisionPriority, type } = _b, input = __objRest(_b, [\"accept\", \"collisionDetector\", \"collisionPriority\", \"type\"]);\n super(input, manager);\n __runInitializers(_init5, 5, this);\n __privateAdd(this, _accept, __runInitializers(_init5, 8, this)), __runInitializers(_init5, 11, this);\n __privateAdd(this, _type2, __runInitializers(_init5, 12, this)), __runInitializers(_init5, 15, this);\n __privateAdd(this, _collisionDetector, __runInitializers(_init5, 16, this)), __runInitializers(_init5, 19, this);\n __privateAdd(this, _collisionPriority, __runInitializers(_init5, 20, this)), __runInitializers(_init5, 23, this);\n __privateAdd(this, _shape, __runInitializers(_init5, 24, this)), __runInitializers(_init5, 27, this);\n this.accept = accept;\n this.collisionDetector = collisionDetector;\n this.collisionPriority = collisionPriority;\n this.type = type;\n }\n /**\n * Checks whether or not the droppable accepts a given draggable.\n *\n * @param draggable - The draggable to check\n * @returns true if the draggable can be dropped here\n */\n accepts(draggable) {\n const { accept } = this;\n if (!accept) {\n return true;\n }\n if (typeof accept === \"function\") {\n return accept(draggable);\n }\n if (!draggable.type) {\n return false;\n }\n if (Array.isArray(accept)) {\n return accept.includes(draggable.type);\n }\n return draggable.type === accept;\n }\n get isDropTarget() {\n var _a, _b;\n return ((_b = (_a = this.manager) == null ? void 0 : _a.dragOperation.target) == null ? void 0 : _b.id) === this.id;\n }\n};\n_init5 = __decoratorStart(_c2);\n_accept = new WeakMap();\n_type2 = new WeakMap();\n_collisionDetector = new WeakMap();\n_collisionPriority = new WeakMap();\n_shape = new WeakMap();\n__decorateElement(_init5, 4, \"accept\", _accept_dec, Droppable, _accept);\n__decorateElement(_init5, 4, \"type\", _type_dec2, Droppable, _type2);\n__decorateElement(_init5, 4, \"collisionDetector\", _collisionDetector_dec, Droppable, _collisionDetector);\n__decorateElement(_init5, 4, \"collisionPriority\", _collisionPriority_dec, Droppable, _collisionPriority);\n__decorateElement(_init5, 4, \"shape\", _shape_dec, Droppable, _shape);\n__decorateElement(_init5, 2, \"isDropTarget\", _isDropTarget_dec, Droppable);\n__decoratorMetadata(_init5, Droppable);\n\n// src/core/sensors/sensor.ts\nvar Sensor = class extends Plugin {\n /**\n * Creates a new sensor instance.\n *\n * @param manager - The drag drop manager instance\n * @param options - Optional sensor configuration\n */\n constructor(manager, options) {\n super(manager, options);\n this.manager = manager;\n this.options = options;\n }\n};\n\n// src/core/modifiers/modifier.ts\nvar Modifier = class extends Plugin {\n /**\n * Creates a new modifier instance.\n *\n * @param manager - The drag and drop manager that owns this modifier\n * @param options - Optional configuration for the modifier\n */\n constructor(manager, options) {\n super(manager, options);\n this.manager = manager;\n this.options = options;\n }\n /**\n * Applies the modifier to the current drag operation.\n *\n * @param operation - The current state of the drag operation\n * @returns The transformed coordinates\n *\n * @remarks\n * Override this method to implement custom transformation logic.\n * The default implementation returns the original transform unchanged.\n */\n apply(operation) {\n return operation.transform;\n }\n};\n\n// src/core/manager/registry.ts\nvar DragDropRegistry = class {\n /**\n * Creates a new registry instance.\n *\n * @param manager - The drag and drop manager that owns this registry\n */\n constructor(manager) {\n /** Registry for draggable entities */\n this.draggables = new EntityRegistry();\n /** Registry for droppable entities */\n this.droppables = new EntityRegistry();\n this.plugins = new PluginRegistry(manager);\n this.sensors = new PluginRegistry(manager);\n this.modifiers = new PluginRegistry(manager);\n }\n register(input, options) {\n if (input instanceof Draggable) {\n return this.draggables.register(input.id, input);\n }\n if (input instanceof Droppable) {\n return this.droppables.register(input.id, input);\n }\n if (input.prototype instanceof Modifier) {\n return this.modifiers.register(input, options);\n }\n if (input.prototype instanceof Sensor) {\n return this.sensors.register(input, options);\n }\n if (input.prototype instanceof Plugin) {\n return this.plugins.register(input, options);\n }\n throw new Error(\"Invalid instance type\");\n }\n unregister(input) {\n if (input instanceof Entity) {\n if (input instanceof Draggable) {\n return this.draggables.unregister(input.id, input);\n }\n if (input instanceof Droppable) {\n return this.droppables.unregister(input.id, input);\n }\n return () => {\n };\n }\n if (input.prototype instanceof Modifier) {\n return this.modifiers.unregister(input);\n }\n if (input.prototype instanceof Sensor) {\n return this.sensors.unregister(input);\n }\n if (input.prototype instanceof Plugin) {\n return this.plugins.unregister(input);\n }\n throw new Error(\"Invalid instance type\");\n }\n /**\n * Destroys all registered entities and cleans up resources.\n *\n * @remarks\n * This method:\n * - Destroys all draggable and droppable entities\n * - Destroys all plugins, sensors, and modifiers\n * - Cleans up any associated resources\n */\n destroy() {\n this.draggables.destroy();\n this.droppables.destroy();\n this.plugins.destroy();\n this.sensors.destroy();\n this.modifiers.destroy();\n }\n};\nvar _transform_dec, _target_dec, _source_dec, _modifiers_dec2, _targetIdentifier_dec, _sourceIdentifier_dec, _activatorEvent_dec, _canceled_dec, _shape_dec2, _manager2, _previousSource, _shape2, _init6, _canceled, _activatorEvent, _sourceIdentifier, _targetIdentifier, _modifiers2, _transform;\n_shape_dec2 = [derived], _canceled_dec = [reactive], _activatorEvent_dec = [reactive], _sourceIdentifier_dec = [reactive], _targetIdentifier_dec = [reactive], _modifiers_dec2 = [reactive], _source_dec = [derived], _target_dec = [derived], _transform_dec = [derived];\nvar DragOperation = class {\n /**\n * Creates a new drag operation instance.\n *\n * @param manager - The drag and drop manager that owns this operation\n */\n constructor(manager) {\n __runInitializers(_init6, 5, this);\n __privateAdd(this, _manager2);\n __privateAdd(this, _previousSource);\n __privateAdd(this, _shape2, new ValueHistory(\n void 0,\n (a, b) => a && b ? a.equals(b) : a === b\n ));\n /** Current status of the drag operation */\n this.status = new Status();\n __privateAdd(this, _canceled, __runInitializers(_init6, 8, this, false)), __runInitializers(_init6, 11, this);\n __privateAdd(this, _activatorEvent, __runInitializers(_init6, 12, this, null)), __runInitializers(_init6, 15, this);\n __privateAdd(this, _sourceIdentifier, __runInitializers(_init6, 16, this, null)), __runInitializers(_init6, 19, this);\n __privateAdd(this, _targetIdentifier, __runInitializers(_init6, 20, this, null)), __runInitializers(_init6, 23, this);\n __privateAdd(this, _modifiers2, __runInitializers(_init6, 24, this, [])), __runInitializers(_init6, 27, this);\n /** Current position of the dragged entity */\n this.position = new Position({ x: 0, y: 0 });\n __privateAdd(this, _transform, { x: 0, y: 0 });\n __privateSet(this, _manager2, manager);\n }\n get shape() {\n const { current, initial, previous } = __privateGet(this, _shape2);\n if (!current || !initial) {\n return null;\n }\n return { current, initial, previous };\n }\n /**\n * Sets the shape of the dragged entity.\n *\n * @param value - The new shape or null to reset\n */\n set shape(value) {\n if (!value) {\n __privateGet(this, _shape2).reset();\n } else {\n __privateGet(this, _shape2).current = value;\n }\n }\n get source() {\n var _a;\n const identifier = this.sourceIdentifier;\n if (identifier == null) return null;\n const value = __privateGet(this, _manager2).registry.draggables.get(identifier);\n if (value) {\n __privateSet(this, _previousSource, value);\n }\n return (_a = value != null ? value : __privateGet(this, _previousSource)) != null ? _a : null;\n }\n get target() {\n var _a;\n const identifier = this.targetIdentifier;\n return identifier != null ? (_a = __privateGet(this, _manager2).registry.droppables.get(identifier)) != null ? _a : null : null;\n }\n get transform() {\n const { x, y } = this.position.delta;\n let transform = { x, y };\n for (const modifier of this.modifiers) {\n transform = modifier.apply(__spreadProps(__spreadValues({}, this.snapshot()), {\n transform\n }));\n }\n __privateSet(this, _transform, transform);\n return transform;\n }\n /**\n * Creates a snapshot of the current drag operation state.\n *\n * @returns An immutable snapshot of the current operation state\n */\n snapshot() {\n return untracked(() => ({\n source: this.source,\n target: this.target,\n activatorEvent: this.activatorEvent,\n transform: __privateGet(this, _transform),\n shape: this.shape ? snapshot(this.shape) : null,\n position: snapshot(this.position),\n status: snapshot(this.status),\n canceled: this.canceled\n }));\n }\n /**\n * Resets the drag operation to its initial state.\n *\n * @remarks\n * This method:\n * - Sets status to idle\n * - Clears source and target identifiers\n * - Resets shape history\n * - Resets position and transform\n * - Clears modifiers\n */\n reset() {\n batch(() => {\n this.status.set(\"idle\" /* Idle */);\n this.sourceIdentifier = null;\n this.targetIdentifier = null;\n __privateGet(this, _shape2).reset();\n this.position.reset({ x: 0, y: 0 });\n __privateSet(this, _transform, { x: 0, y: 0 });\n this.modifiers = [];\n });\n }\n};\n_init6 = __decoratorStart(null);\n_manager2 = new WeakMap();\n_previousSource = new WeakMap();\n_shape2 = new WeakMap();\n_canceled = new WeakMap();\n_activatorEvent = new WeakMap();\n_sourceIdentifier = new WeakMap();\n_targetIdentifier = new WeakMap();\n_modifiers2 = new WeakMap();\n_transform = new WeakMap();\n__decorateElement(_init6, 2, \"shape\", _shape_dec2, DragOperation);\n__decorateElement(_init6, 4, \"canceled\", _canceled_dec, DragOperation, _canceled);\n__decorateElement(_init6, 4, \"activatorEvent\", _activatorEvent_dec, DragOperation, _activatorEvent);\n__decorateElement(_init6, 4, \"sourceIdentifier\", _sourceIdentifier_dec, DragOperation, _sourceIdentifier);\n__decorateElement(_init6, 4, \"targetIdentifier\", _targetIdentifier_dec, DragOperation, _targetIdentifier);\n__decorateElement(_init6, 4, \"modifiers\", _modifiers_dec2, DragOperation, _modifiers2);\n__decorateElement(_init6, 2, \"source\", _source_dec, DragOperation);\n__decorateElement(_init6, 2, \"target\", _target_dec, DragOperation);\n__decorateElement(_init6, 2, \"transform\", _transform_dec, DragOperation);\n__decoratorMetadata(_init6, DragOperation);\n\n// src/core/manager/renderer.ts\nvar defaultRenderer = {\n get rendering() {\n return Promise.resolve();\n }\n};\n\n// src/core/manager/manager.ts\nvar DragDropManager = class {\n /**\n * Creates a new drag and drop manager instance.\n *\n * @param config - Optional configuration for plugins, sensors, modifiers, and renderer\n */\n constructor(config) {\n /**\n * Cleans up resources and stops any active drag operations.\n */\n this.destroy = () => {\n if (!this.dragOperation.status.idle) {\n this.actions.stop({ canceled: true });\n }\n this.dragOperation.modifiers.forEach((modifier) => modifier.destroy());\n this.registry.destroy();\n this.collisionObserver.destroy();\n };\n const {\n plugins = [],\n sensors = [],\n modifiers = [],\n renderer = defaultRenderer\n } = config != null ? config : {};\n const monitor = new DragDropMonitor(this);\n const registry = new DragDropRegistry(this);\n this.registry = registry;\n this.monitor = monitor;\n this.renderer = renderer;\n this.actions = new DragActions(this);\n this.dragOperation = new DragOperation(this);\n this.collisionObserver = new CollisionObserver(this);\n this.plugins = [CollisionNotifier, ...plugins];\n this.modifiers = modifiers;\n this.sensors = sensors;\n const { destroy } = this;\n const cleanup = effects(() => {\n var _a, _b, _c3;\n const currentModifiers = untracked(() => this.dragOperation.modifiers);\n const managerModifiers = this.modifiers;\n if (currentModifiers !== managerModifiers) {\n currentModifiers.forEach((modifier) => modifier.destroy());\n }\n this.dragOperation.modifiers = (_c3 = (_b = (_a = this.dragOperation.source) == null ? void 0 : _a.modifiers) == null ? void 0 : _b.map((modifier) => {\n const { plugin, options } = descriptor(modifier);\n return new plugin(this, options);\n })) != null ? _c3 : managerModifiers;\n });\n this.destroy = () => {\n cleanup();\n destroy();\n };\n }\n /**\n * Gets the list of active plugins.\n *\n * @returns Array of active plugin instances\n */\n get plugins() {\n return this.registry.plugins.values;\n }\n /**\n * Sets the list of plugins to be used by the manager.\n *\n * @param plugins - Array of plugin constructors or instances\n */\n set plugins(plugins) {\n this.registry.plugins.values = plugins;\n }\n /**\n * Gets the list of active modifiers.\n *\n * @returns Array of active modifier instances\n */\n get modifiers() {\n return this.registry.modifiers.values;\n }\n /**\n * Sets the list of modifiers to be used by the manager.\n *\n * @param modifiers - Array of modifier constructors or instances\n */\n set modifiers(modifiers) {\n this.registry.modifiers.values = modifiers;\n }\n /**\n * Gets the list of active sensors.\n *\n * @returns Array of active sensor instances\n */\n get sensors() {\n return this.registry.sensors.values;\n }\n /**\n * Sets the list of sensors to be used by the manager.\n *\n * @param sensors - Array of sensor constructors or instances\n */\n set sensors(sensors) {\n this.registry.sensors.values = sensors;\n }\n};\n\nexport { CollisionPriority, CollisionType, CorePlugin, DragDropManager, Status as DragOperationStatus, Draggable, Droppable, Modifier, Plugin, PluginRegistry, Sensor, configurator, configure, descriptor, sortCollisions };\n//# sourceMappingURL=index.js.map\n//# sourceMappingURL=index.js.map","// src/algorithms/pointerIntersection.ts\nimport { CollisionPriority, CollisionType } from \"@dnd-kit/abstract\";\nimport { Point } from \"@dnd-kit/geometry\";\nvar pointerIntersection = ({\n dragOperation,\n droppable\n}) => {\n const pointerCoordinates = dragOperation.position.current;\n if (!pointerCoordinates) {\n return null;\n }\n const { id } = droppable;\n if (!droppable.shape) {\n return null;\n }\n if (droppable.shape.containsPoint(pointerCoordinates)) {\n const distance = Point.distance(droppable.shape.center, pointerCoordinates);\n return {\n id,\n value: 1 / distance,\n type: CollisionType.PointerIntersection,\n priority: CollisionPriority.High\n };\n }\n return null;\n};\n\n// src/algorithms/shapeIntersection.ts\nimport { CollisionPriority as CollisionPriority2, CollisionType as CollisionType2 } from \"@dnd-kit/abstract\";\nimport { Point as Point2 } from \"@dnd-kit/geometry\";\nvar shapeIntersection = ({\n dragOperation,\n droppable\n}) => {\n const { shape } = dragOperation;\n if (!droppable.shape || !(shape == null ? void 0 : shape.current)) {\n return null;\n }\n const intersectionArea = shape.current.intersectionArea(droppable.shape);\n if (intersectionArea) {\n const { position } = dragOperation;\n const distance = Point2.distance(droppable.shape.center, position.current);\n const intersectionRatio = intersectionArea / (shape.current.area + droppable.shape.area - intersectionArea);\n const value = intersectionRatio / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType2.ShapeIntersection,\n priority: CollisionPriority2.Normal\n };\n }\n return null;\n};\n\n// src/algorithms/default.ts\nvar defaultCollisionDetection = (args) => {\n var _a;\n return (_a = pointerIntersection(args)) != null ? _a : shapeIntersection(args);\n};\n\n// src/algorithms/closestCorners.ts\nimport { CollisionPriority as CollisionPriority3, CollisionType as CollisionType3 } from \"@dnd-kit/abstract\";\nimport { Point as Point3, Rectangle } from \"@dnd-kit/geometry\";\nvar closestCorners = (input) => {\n const { dragOperation, droppable } = input;\n const { shape, position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const shapeCorners = shape ? Rectangle.from(shape.current.boundingRectangle).corners : void 0;\n const distance = Rectangle.from(\n droppable.shape.boundingRectangle\n ).corners.reduce(\n (acc, corner, index) => {\n var _a;\n return acc + Point3.distance(\n Point3.from(corner),\n (_a = shapeCorners == null ? void 0 : shapeCorners[index]) != null ? _a : position.current\n );\n },\n 0\n );\n const value = distance / 4;\n return {\n id: droppable.id,\n value: 1 / value,\n type: CollisionType3.Collision,\n priority: CollisionPriority3.Normal\n };\n};\n\n// src/algorithms/closestCenter.ts\nimport { CollisionPriority as CollisionPriority4, CollisionType as CollisionType4 } from \"@dnd-kit/abstract\";\nimport { Point as Point4 } from \"@dnd-kit/geometry\";\nvar closestCenter = (input) => {\n var _a;\n const { dragOperation, droppable } = input;\n const { shape, position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const collision = defaultCollisionDetection(input);\n if (collision) {\n return collision;\n }\n const distance = Point4.distance(\n droppable.shape.center,\n (_a = shape == null ? void 0 : shape.current.center) != null ? _a : position.current\n );\n const value = 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType4.Collision,\n priority: CollisionPriority4.Normal\n };\n};\n\n// src/algorithms/directionBiased.ts\nimport { CollisionPriority as CollisionPriority5, CollisionType as CollisionType5 } from \"@dnd-kit/abstract\";\nimport { Point as Point5 } from \"@dnd-kit/geometry\";\nvar directionBiased = ({\n dragOperation,\n droppable\n}) => {\n if (!droppable.shape) {\n return null;\n }\n const { position, shape } = dragOperation;\n const { direction } = position;\n if (!shape) {\n return null;\n }\n if (direction === null) {\n return defaultCollisionDetection({ dragOperation, droppable });\n }\n const { center, boundingRectangle } = shape.current;\n if (direction === \"down\" && boundingRectangle.bottom >= droppable.shape.center.y || direction === \"up\" && boundingRectangle.top <= droppable.shape.center.y || direction === \"left\" && boundingRectangle.left <= droppable.shape.center.x || direction === \"right\" && boundingRectangle.right >= droppable.shape.center.x) {\n return {\n id: droppable.id,\n value: 1 / Point5.distance(droppable.shape.center, center),\n type: CollisionType5.Collision,\n priority: CollisionPriority5.Normal\n };\n }\n return null;\n};\n\n// src/algorithms/pointerDistance.ts\nimport { CollisionPriority as CollisionPriority6, CollisionType as CollisionType6 } from \"@dnd-kit/abstract\";\nimport { Point as Point6 } from \"@dnd-kit/geometry\";\nvar pointerDistance = (input) => {\n const { dragOperation, droppable } = input;\n const { position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const distance = Point6.distance(droppable.shape.center, position.current);\n const value = 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType6.Collision,\n priority: CollisionPriority6.Normal\n };\n};\nexport {\n closestCenter,\n closestCorners,\n defaultCollisionDetection,\n directionBiased,\n pointerDistance,\n pointerIntersection,\n shapeIntersection\n};\n","import { Rectangle } from '@dnd-kit/geometry';\n\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\n\n// src/utilities/type-guards/isKeyframeEffect.ts\nfunction isKeyframeEffect(effect) {\n if (!effect) return false;\n if (effect instanceof KeyframeEffect) return true;\n return \"getKeyframes\" in effect && typeof effect.getKeyframes === \"function\";\n}\n\n// src/utilities/animations/getFinalKeyframe.ts\nfunction getFinalKeyframe(element, match) {\n const animations2 = element.getAnimations();\n if (animations2.length > 0) {\n for (const animation of animations2) {\n if (animation.playState !== \"running\") continue;\n const { effect } = animation;\n const keyframes = isKeyframeEffect(effect) ? effect.getKeyframes() : [];\n const matchedKeyframes = keyframes.filter(match);\n if (matchedKeyframes.length > 0) {\n return [matchedKeyframes[matchedKeyframes.length - 1], animation];\n }\n }\n }\n return null;\n}\n\n// src/utilities/bounding-rectangle/getBoundingRectangle.ts\nfunction getBoundingRectangle(element) {\n const { width, height, top, left, bottom, right } = element.getBoundingClientRect();\n return { width, height, top, left, bottom, right };\n}\n\n// src/utilities/execution-context/canUseDOM.ts\nvar canUseDOM = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\n\n// src/utilities/type-guards/isWindow.ts\nfunction isWindow(element) {\n const elementString = Object.prototype.toString.call(element);\n return elementString === \"[object Window]\" || // In Electron context the Window object serializes to [object global]\n elementString === \"[object global]\";\n}\n\n// src/utilities/type-guards/isNode.ts\nfunction isNode(node) {\n return \"nodeType\" in node;\n}\n\n// src/utilities/execution-context/getWindow.ts\nfunction getWindow(target) {\n var _a, _b, _c;\n if (!target) {\n return window;\n }\n if (isWindow(target)) {\n return target;\n }\n if (!isNode(target)) {\n return window;\n }\n if (\"defaultView\" in target) {\n return (_a = target.defaultView) != null ? _a : window;\n }\n return (_c = (_b = target.ownerDocument) == null ? void 0 : _b.defaultView) != null ? _c : window;\n}\n\n// src/utilities/type-guards/isDocument.ts\nfunction isDocument(node) {\n const { Document } = getWindow(node);\n return node instanceof Document || \"nodeType\" in node && node.nodeType === Node.DOCUMENT_NODE;\n}\n\n// src/utilities/type-guards/isHTMLElement.ts\nfunction isHTMLElement(node) {\n if (!node || isWindow(node)) return false;\n return node instanceof getWindow(node).HTMLElement || \"namespaceURI\" in node && typeof node.namespaceURI === \"string\" && node.namespaceURI.endsWith(\"html\");\n}\n\n// src/utilities/type-guards/isSVGElement.ts\nfunction isSVGElement(node) {\n return node instanceof getWindow(node).SVGElement || \"namespaceURI\" in node && typeof node.namespaceURI === \"string\" && node.namespaceURI.endsWith(\"svg\");\n}\n\n// src/utilities/execution-context/getDocument.ts\nfunction getDocument(target) {\n if (!target) {\n return document;\n }\n if (isWindow(target)) {\n return target.document;\n }\n if (!isNode(target)) {\n return document;\n }\n if (isDocument(target)) {\n return target;\n }\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n return document;\n}\n\n// src/utilities/bounding-rectangle/getViewportBoundingRectangle.ts\nfunction getViewportBoundingRectangle(element) {\n const { documentElement } = getDocument(element);\n const width = documentElement.clientWidth;\n const height = documentElement.clientHeight;\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height\n };\n}\n\n// src/utilities/bounding-rectangle/isOverflowVisible.ts\nfunction isOverflowVisible(element, style) {\n if (isDetailsElement(element) && element.open === false) {\n return false;\n }\n const { overflow, overflowX, overflowY } = getComputedStyle(element);\n return overflow === \"visible\" && overflowX === \"visible\" && overflowY === \"visible\";\n}\nfunction isDetailsElement(element) {\n return element.tagName === \"DETAILS\";\n}\n\n// src/utilities/bounding-rectangle/getVisibleBoundingRectangle.ts\nfunction getVisibleBoundingRectangle(element, boundingClientRect = element.getBoundingClientRect(), margin = 0) {\n var _a;\n let rect = boundingClientRect;\n const { ownerDocument } = element;\n const ownerWindow = (_a = ownerDocument.defaultView) != null ? _a : window;\n let ancestor = element.parentElement;\n while (ancestor && ancestor !== ownerDocument.documentElement) {\n if (!isOverflowVisible(ancestor)) {\n const ancestorRect = ancestor.getBoundingClientRect();\n const marginTop = margin * (ancestorRect.bottom - ancestorRect.top);\n const marginRight = margin * (ancestorRect.right - ancestorRect.left);\n const marginBottom = margin * (ancestorRect.bottom - ancestorRect.top);\n const marginLeft = margin * (ancestorRect.right - ancestorRect.left);\n rect = {\n top: Math.max(rect.top, ancestorRect.top - marginTop),\n right: Math.min(rect.right, ancestorRect.right + marginRight),\n bottom: Math.min(rect.bottom, ancestorRect.bottom + marginBottom),\n left: Math.max(rect.left, ancestorRect.left - marginLeft),\n width: 0,\n // Will be calculated next\n height: 0\n // Will be calculated next\n };\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n }\n ancestor = ancestor.parentElement;\n }\n const viewportWidth = ownerWindow.innerWidth;\n const viewportHeight = ownerWindow.innerHeight;\n const viewportMarginY = margin * viewportHeight;\n const viewportMarginX = margin * viewportWidth;\n rect = {\n top: Math.max(rect.top, 0 - viewportMarginY),\n right: Math.min(rect.right, viewportWidth + viewportMarginX),\n bottom: Math.min(rect.bottom, viewportHeight + viewportMarginY),\n left: Math.max(rect.left, 0 - viewportMarginX),\n width: 0,\n // Will be calculated next\n height: 0\n // Will be calculated next\n };\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n if (rect.width < 0) {\n rect.width = 0;\n }\n if (rect.height < 0) {\n rect.height = 0;\n }\n return rect;\n}\n\n// src/utilities/execution-context/isSafari.ts\nfunction isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n}\n\n// src/utilities/element/cloneElement.ts\nfunction cloneElement(element) {\n const selector = \"input, textarea, select, canvas, [contenteditable]\";\n const clonedElement = element.cloneNode(true);\n const fields = Array.from(element.querySelectorAll(selector));\n const clonedFields = Array.from(clonedElement.querySelectorAll(selector));\n clonedFields.forEach((field, index) => {\n const originalField = fields[index];\n if (isField(field) && isField(originalField)) {\n if (field.type !== \"file\") {\n field.value = originalField.value;\n }\n if (field.type === \"radio\" && field.name) {\n field.name = `Cloned__${field.name}`;\n }\n }\n if (isCanvasElement(field) && isCanvasElement(originalField) && originalField.width > 0 && originalField.height > 0) {\n const destCtx = field.getContext(\"2d\");\n destCtx == null ? void 0 : destCtx.drawImage(originalField, 0, 0);\n }\n });\n return clonedElement;\n}\nfunction isField(element) {\n return \"value\" in element;\n}\nfunction isCanvasElement(element) {\n return element.tagName === \"CANVAS\";\n}\n\n// src/utilities/element/getElementFromPoint.ts\nfunction getElementFromPoint(document2, { x, y }) {\n const element = document2.elementFromPoint(x, y);\n if (isIFrameElement(element)) {\n const { contentDocument } = element;\n if (contentDocument) {\n const { left, top } = element.getBoundingClientRect();\n return getElementFromPoint(contentDocument, {\n x: x - left,\n y: y - top\n });\n }\n }\n return element;\n}\nfunction isIFrameElement(element) {\n return (element == null ? void 0 : element.tagName) === \"IFRAME\";\n}\n\n// src/utilities/element/proxiedElements.ts\nvar ProxiedElements = /* @__PURE__ */ new WeakMap();\n\n// src/utilities/event-listeners/Listeners.ts\nvar Listeners = class {\n constructor() {\n this.entries = /* @__PURE__ */ new Set();\n this.clear = () => {\n for (const entry of this.entries) {\n const [target, { type, listener, options }] = entry;\n target.removeEventListener(type, listener, options);\n }\n this.entries.clear();\n };\n }\n bind(target, input) {\n const listeners = Array.isArray(input) ? input : [input];\n const entries = [];\n for (const descriptor of listeners) {\n const { type, listener, options } = descriptor;\n const entry = [target, descriptor];\n target.addEventListener(type, listener, options);\n this.entries.add(entry);\n entries.push(entry);\n }\n return function cleanup() {\n for (const [target2, { type, listener, options }] of entries) {\n target2.removeEventListener(type, listener, options);\n }\n };\n }\n};\n\n// src/utilities/frame/getFrameElement.ts\nfunction getFrameElement(el) {\n const refWindow = el == null ? void 0 : el.ownerDocument.defaultView;\n if (refWindow && refWindow.self !== refWindow.parent) {\n return refWindow.frameElement;\n }\n}\n\n// src/utilities/frame/getFrameElements.ts\nfunction getFrameElements(el) {\n const frames = /* @__PURE__ */ new Set();\n let frame = getFrameElement(el);\n while (frame) {\n frames.add(frame);\n frame = getFrameElement(frame);\n }\n return frames;\n}\n\n// src/utilities/scheduling/timeout.ts\nfunction timeout(callback, duration) {\n const id = setTimeout(callback, duration);\n return () => clearTimeout(id);\n}\n\n// src/utilities/scheduling/throttle.ts\nfunction throttle(func, limit) {\n const time = () => performance.now();\n let cancel;\n let lastRan;\n return function(...args) {\n const context = this;\n if (!lastRan) {\n func.apply(context, args);\n lastRan = time();\n } else {\n cancel == null ? void 0 : cancel();\n cancel = timeout(\n () => {\n func.apply(context, args);\n lastRan = time();\n },\n limit - (time() - lastRan)\n );\n }\n };\n}\n\n// src/utilities/bounding-rectangle/isRectEqual.ts\nfunction isRectEqual(a, b) {\n if (a === b) return true;\n if (!a || !b) return false;\n return a.top == b.top && a.left == b.left && a.right == b.right && a.bottom == b.bottom;\n}\n\n// src/utilities/bounding-rectangle/isVisible.ts\nfunction isVisible(element, boundingClientRect = element.getBoundingClientRect()) {\n const { width, height } = getVisibleBoundingRectangle(\n element,\n boundingClientRect\n );\n return width > 0 && height > 0;\n}\n\n// src/utilities/observers/ResizeNotifier.ts\nvar Observer = canUseDOM ? ResizeObserver : class MockResizeObserver {\n observe() {\n }\n unobserve() {\n }\n disconnect() {\n }\n};\nvar _initialized;\nvar ResizeNotifier = class extends Observer {\n constructor(callback) {\n super((entries) => {\n if (!__privateGet(this, _initialized)) {\n __privateSet(this, _initialized, true);\n return;\n }\n callback(entries, this);\n });\n __privateAdd(this, _initialized, false);\n }\n};\n_initialized = new WeakMap();\n\n// src/utilities/observers/PositionObserver.ts\nvar threshold = Array.from({ length: 100 }, (_, index) => index / 100);\nvar THROTTLE_INTERVAL = 75;\nvar _visible, _previousBoundingClientRect, _resizeObserver, _positionObserver, _visibilityObserver, _debug, _disconnected, _observePosition, _PositionObserver_instances, notify_fn, updateDebug_fn;\nvar PositionObserver = class {\n constructor(element, callback, options = {\n debug: false,\n skipInitial: false\n }) {\n this.element = element;\n this.callback = callback;\n __privateAdd(this, _PositionObserver_instances);\n this.disconnect = () => {\n var _a, _b, _c;\n __privateSet(this, _disconnected, true);\n (_a = __privateGet(this, _resizeObserver)) == null ? void 0 : _a.disconnect();\n (_b = __privateGet(this, _positionObserver)) == null ? void 0 : _b.disconnect();\n __privateGet(this, _visibilityObserver).disconnect();\n (_c = __privateGet(this, _debug)) == null ? void 0 : _c.remove();\n };\n __privateAdd(this, _visible, true);\n __privateAdd(this, _previousBoundingClientRect);\n __privateAdd(this, _resizeObserver);\n __privateAdd(this, _positionObserver);\n __privateAdd(this, _visibilityObserver);\n __privateAdd(this, _debug);\n __privateAdd(this, _disconnected, false);\n __privateAdd(this, _observePosition, throttle(() => {\n var _a, _b, _c;\n const { element } = this;\n (_a = __privateGet(this, _positionObserver)) == null ? void 0 : _a.disconnect();\n if (__privateGet(this, _disconnected) || !__privateGet(this, _visible) || !element.isConnected) {\n return;\n }\n const root = (_b = element.ownerDocument) != null ? _b : document;\n const { innerHeight, innerWidth } = (_c = root.defaultView) != null ? _c : window;\n const clientRect = element.getBoundingClientRect();\n const visibleRect = getVisibleBoundingRectangle(element, clientRect);\n const { top, left, bottom, right } = visibleRect;\n const insetTop = -Math.floor(top);\n const insetLeft = -Math.floor(left);\n const insetRight = -Math.floor(innerWidth - right);\n const insetBottom = -Math.floor(innerHeight - bottom);\n const rootMargin = `${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px`;\n this.boundingClientRect = clientRect;\n __privateSet(this, _positionObserver, new IntersectionObserver(\n (entries) => {\n const [entry] = entries;\n const { intersectionRect } = entry;\n const intersectionRatio = entry.intersectionRatio !== 1 ? entry.intersectionRatio : Rectangle.intersectionRatio(\n intersectionRect,\n getVisibleBoundingRectangle(element)\n );\n if (intersectionRatio !== 1) {\n __privateGet(this, _observePosition).call(this);\n }\n },\n {\n threshold,\n rootMargin,\n root\n }\n ));\n __privateGet(this, _positionObserver).observe(element);\n __privateMethod(this, _PositionObserver_instances, notify_fn).call(this);\n }, THROTTLE_INTERVAL));\n this.boundingClientRect = element.getBoundingClientRect();\n __privateSet(this, _visible, isVisible(element, this.boundingClientRect));\n let initial = true;\n this.callback = (boundingClientRect) => {\n if (initial) {\n initial = false;\n if (options.skipInitial) return;\n }\n callback(boundingClientRect);\n };\n const root = element.ownerDocument;\n if (options == null ? void 0 : options.debug) {\n __privateSet(this, _debug, document.createElement(\"div\"));\n __privateGet(this, _debug).style.background = \"rgba(0,0,0,0.15)\";\n __privateGet(this, _debug).style.position = \"fixed\";\n __privateGet(this, _debug).style.pointerEvents = \"none\";\n root.body.appendChild(__privateGet(this, _debug));\n }\n __privateSet(this, _visibilityObserver, new IntersectionObserver(\n (entries) => {\n var _a, _b;\n const entry = entries[entries.length - 1];\n const { boundingClientRect, isIntersecting: visible } = entry;\n const { width, height } = boundingClientRect;\n const previousVisible = __privateGet(this, _visible);\n __privateSet(this, _visible, visible);\n if (!width && !height) return;\n if (previousVisible && !visible) {\n (_a = __privateGet(this, _positionObserver)) == null ? void 0 : _a.disconnect();\n this.callback(null);\n (_b = __privateGet(this, _resizeObserver)) == null ? void 0 : _b.disconnect();\n __privateSet(this, _resizeObserver, void 0);\n if (__privateGet(this, _debug)) __privateGet(this, _debug).style.visibility = \"hidden\";\n } else {\n __privateGet(this, _observePosition).call(this);\n }\n if (visible && !__privateGet(this, _resizeObserver)) {\n __privateSet(this, _resizeObserver, new ResizeNotifier(__privateGet(this, _observePosition)));\n __privateGet(this, _resizeObserver).observe(element);\n }\n },\n {\n threshold,\n root\n }\n ));\n if (__privateGet(this, _visible) && !options.skipInitial) {\n this.callback(this.boundingClientRect);\n }\n __privateGet(this, _visibilityObserver).observe(element);\n }\n};\n_visible = new WeakMap();\n_previousBoundingClientRect = new WeakMap();\n_resizeObserver = new WeakMap();\n_positionObserver = new WeakMap();\n_visibilityObserver = new WeakMap();\n_debug = new WeakMap();\n_disconnected = new WeakMap();\n_observePosition = new WeakMap();\n_PositionObserver_instances = new WeakSet();\nnotify_fn = function() {\n if (__privateGet(this, _disconnected)) return;\n __privateMethod(this, _PositionObserver_instances, updateDebug_fn).call(this);\n if (isRectEqual(this.boundingClientRect, __privateGet(this, _previousBoundingClientRect)))\n return;\n this.callback(this.boundingClientRect);\n __privateSet(this, _previousBoundingClientRect, this.boundingClientRect);\n};\nupdateDebug_fn = function() {\n if (__privateGet(this, _debug)) {\n const { top, left, width, height } = getVisibleBoundingRectangle(\n this.element\n );\n __privateGet(this, _debug).style.overflow = \"hidden\";\n __privateGet(this, _debug).style.visibility = \"visible\";\n __privateGet(this, _debug).style.top = `${Math.floor(top)}px`;\n __privateGet(this, _debug).style.left = `${Math.floor(left)}px`;\n __privateGet(this, _debug).style.width = `${Math.floor(width)}px`;\n __privateGet(this, _debug).style.height = `${Math.floor(height)}px`;\n }\n};\n\n// src/utilities/observers/FrameObserver.ts\nvar framePositionObservers = /* @__PURE__ */ new WeakMap();\nvar scrollListeners = /* @__PURE__ */ new WeakMap();\nfunction addFrameListener(frame, callback) {\n let cached = framePositionObservers.get(frame);\n if (!cached) {\n const observer = new PositionObserver(\n frame,\n (boundingClientRect) => {\n const cached2 = framePositionObservers.get(frame);\n if (!cached2) return;\n cached2.callbacks.forEach((callback2) => callback2(boundingClientRect));\n },\n { skipInitial: true }\n );\n cached = { disconnect: observer.disconnect, callbacks: /* @__PURE__ */ new Set() };\n }\n cached.callbacks.add(callback);\n framePositionObservers.set(frame, cached);\n return () => {\n cached.callbacks.delete(callback);\n if (cached.callbacks.size === 0) {\n framePositionObservers.delete(frame);\n cached.disconnect();\n }\n };\n}\nfunction observeParentFrames(frames, callback) {\n const cleanup = /* @__PURE__ */ new Set();\n for (const frame of frames) {\n const remove = addFrameListener(frame, callback);\n cleanup.add(remove);\n }\n return () => cleanup.forEach((remove) => remove());\n}\nfunction addScrollListener(element, callback) {\n var _a;\n const doc = element.ownerDocument;\n if (!scrollListeners.has(doc)) {\n const controller = new AbortController();\n const listeners2 = /* @__PURE__ */ new Set();\n document.addEventListener(\n \"scroll\",\n (event) => listeners2.forEach((listener) => listener(event)),\n {\n capture: true,\n passive: true,\n signal: controller.signal\n }\n );\n scrollListeners.set(doc, { disconnect: () => controller.abort(), listeners: listeners2 });\n }\n const { listeners, disconnect } = (_a = scrollListeners.get(doc)) != null ? _a : {};\n if (!listeners || !disconnect) return () => {\n };\n listeners.add(callback);\n return () => {\n listeners.delete(callback);\n if (listeners.size === 0) {\n disconnect();\n scrollListeners.delete(doc);\n }\n };\n}\nvar _elementObserver, _disconnected2, _frames, _handleScroll;\nvar FrameObserver = class {\n constructor(element, callback, options) {\n this.callback = callback;\n __privateAdd(this, _elementObserver);\n __privateAdd(this, _disconnected2, false);\n __privateAdd(this, _frames);\n __privateAdd(this, _handleScroll, throttle((event) => {\n if (__privateGet(this, _disconnected2)) return;\n if (!event.target) return;\n if (\"contains\" in event.target && typeof event.target.contains === \"function\") {\n for (const frame of __privateGet(this, _frames)) {\n if (event.target.contains(frame)) {\n this.callback(__privateGet(this, _elementObserver).boundingClientRect);\n break;\n }\n }\n }\n }, THROTTLE_INTERVAL));\n const frames = getFrameElements(element);\n const unobserveParentFrames = observeParentFrames(frames, callback);\n const removeScrollListener = addScrollListener(element, __privateGet(this, _handleScroll));\n __privateSet(this, _frames, frames);\n __privateSet(this, _elementObserver, new PositionObserver(element, callback, options));\n this.disconnect = () => {\n if (__privateGet(this, _disconnected2)) return;\n __privateSet(this, _disconnected2, true);\n unobserveParentFrames();\n removeScrollListener();\n __privateGet(this, _elementObserver).disconnect();\n };\n }\n};\n_elementObserver = new WeakMap();\n_disconnected2 = new WeakMap();\n_frames = new WeakMap();\n_handleScroll = new WeakMap();\n\n// src/utilities/popover/supportsPopover.ts\nfunction supportsPopover(element) {\n return \"showPopover\" in element && \"hidePopover\" in element && typeof element.showPopover === \"function\" && typeof element.hidePopover === \"function\";\n}\n\n// src/utilities/popover/showPopover.ts\nfunction showPopover(element) {\n try {\n if (supportsPopover(element) && element.isConnected && element.hasAttribute(\"popover\") && // This selector can throw an error in browsers that don't support it\n !element.matches(\":popover-open\")) {\n element.showPopover();\n }\n } catch (error) {\n }\n}\n\n// src/utilities/popover/hidePopover.ts\nfunction hidePopover(element) {\n try {\n if (supportsPopover(element) && element.isConnected && element.hasAttribute(\"popover\") && // This selector can throw an error in browsers that don't support it\n element.matches(\":popover-open\")) {\n element.hidePopover();\n }\n } catch (error) {\n }\n}\n\n// src/utilities/scroll/documentScrollingElement.ts\nfunction isDocumentScrollingElement(element) {\n if (!canUseDOM || !element) {\n return false;\n }\n return element === getDocument(element).scrollingElement;\n}\n\n// src/utilities/scroll/getScrollPosition.ts\nfunction getScrollPosition(scrollableElement) {\n const window2 = getWindow(scrollableElement);\n const rect = isDocumentScrollingElement(scrollableElement) ? getViewportBoundingRectangle(scrollableElement) : getBoundingRectangle(scrollableElement);\n const dimensions = isDocumentScrollingElement(scrollableElement) ? {\n height: window2.innerHeight,\n width: window2.innerWidth\n } : {\n height: scrollableElement.clientHeight,\n width: scrollableElement.clientWidth\n };\n const position = {\n current: {\n x: scrollableElement.scrollLeft,\n y: scrollableElement.scrollTop\n },\n max: {\n x: scrollableElement.scrollWidth - dimensions.width,\n y: scrollableElement.scrollHeight - dimensions.height\n }\n };\n const isTop = position.current.y <= 0;\n const isLeft = position.current.x <= 0;\n const isBottom = position.current.y >= position.max.y;\n const isRight = position.current.x >= position.max.x;\n return {\n rect,\n position,\n isTop,\n isLeft,\n isBottom,\n isRight\n };\n}\n\n// src/utilities/scroll/canScroll.ts\nfunction canScroll(scrollableElement, by) {\n const { isTop, isBottom, isLeft, isRight, position } = getScrollPosition(scrollableElement);\n const { x, y } = by != null ? by : { x: 0, y: 0 };\n const top = !isTop && position.current.y + y > 0;\n const bottom = !isBottom && position.current.y + y < position.max.y;\n const left = !isLeft && position.current.x + x > 0;\n const right = !isRight && position.current.x + x < position.max.x;\n return {\n top,\n bottom,\n left,\n right,\n x: left || right,\n y: top || bottom\n };\n}\n\n// src/utilities/scheduling/scheduler.ts\nvar Scheduler = class {\n constructor(scheduler4) {\n this.scheduler = scheduler4;\n this.pending = false;\n this.tasks = /* @__PURE__ */ new Set();\n this.resolvers = /* @__PURE__ */ new Set();\n this.flush = () => {\n const { tasks, resolvers } = this;\n this.pending = false;\n this.tasks = /* @__PURE__ */ new Set();\n this.resolvers = /* @__PURE__ */ new Set();\n for (const task of tasks) {\n task();\n }\n for (const resolve of resolvers) {\n resolve();\n }\n };\n }\n schedule(task) {\n this.tasks.add(task);\n if (!this.pending) {\n this.pending = true;\n this.scheduler(this.flush);\n }\n return new Promise((resolve) => this.resolvers.add(resolve));\n }\n};\nvar scheduler = new Scheduler((callback) => {\n if (typeof requestAnimationFrame === \"function\") {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n});\n\n// src/utilities/styles/getComputedStyles.ts\nvar scheduler2 = new Scheduler((callback) => setTimeout(callback, 50));\nvar cachedStyles = /* @__PURE__ */ new Map();\nvar clear = cachedStyles.clear.bind(cachedStyles);\nfunction getComputedStyles(element, cached = false) {\n if (!cached) return computeStyles(element);\n let styles = cachedStyles.get(element);\n if (styles) return styles;\n styles = computeStyles(element);\n cachedStyles.set(element, styles);\n scheduler2.schedule(clear);\n return styles;\n}\nfunction computeStyles(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\n// src/utilities/scroll/isFixed.ts\nfunction isFixed(node, computedStyle = getComputedStyles(node, true)) {\n return computedStyle.position === \"fixed\" /*|| computedStyle.position === \"sticky\"*/;\n}\n\n// src/utilities/scroll/isScrollable.ts\nfunction isScrollable(element, computedStyle = getComputedStyles(element, true)) {\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = [\"overflow\", \"overflowX\", \"overflowY\"];\n return properties.some((property) => {\n const value = computedStyle[property];\n return typeof value === \"string\" ? overflowRegex.test(value) : false;\n });\n}\n\n// src/utilities/scroll/getScrollableAncestors.ts\nvar defaultOptions = {\n excludeElement: true\n};\nfunction getScrollableAncestors(element, options = defaultOptions) {\n const { limit, excludeElement } = options;\n const scrollParents = /* @__PURE__ */ new Set();\n function findScrollableAncestors(node) {\n if (limit != null && scrollParents.size >= limit) {\n return scrollParents;\n }\n if (!node) {\n return scrollParents;\n }\n if (isDocument(node) && node.scrollingElement != null && !scrollParents.has(node.scrollingElement)) {\n scrollParents.add(node.scrollingElement);\n return scrollParents;\n }\n if (!isHTMLElement(node)) {\n if (isSVGElement(node)) {\n return findScrollableAncestors(node.parentElement);\n }\n return scrollParents;\n }\n if (scrollParents.has(node)) {\n return scrollParents;\n }\n const computedStyle = getComputedStyles(node, true);\n if (excludeElement && node === element) ; else if (isScrollable(node, computedStyle)) {\n scrollParents.add(node);\n }\n if (isFixed(node, computedStyle)) {\n const { scrollingElement } = node.ownerDocument;\n if (scrollingElement) scrollParents.add(scrollingElement);\n return scrollParents;\n }\n return findScrollableAncestors(node.parentNode);\n }\n if (!element) {\n return scrollParents;\n }\n return findScrollableAncestors(element);\n}\nfunction getFirstScrollableAncestor(node) {\n const [firstScrollableAncestor] = getScrollableAncestors(node, { limit: 1 });\n return firstScrollableAncestor != null ? firstScrollableAncestor : null;\n}\n\n// src/utilities/frame/getFrameTransform.ts\nfunction getFrameTransform(el, boundary = window.frameElement) {\n const transform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1\n };\n if (!el) return transform;\n let frame = getFrameElement(el);\n while (frame) {\n if (frame === boundary) {\n return transform;\n }\n const rect = getBoundingRectangle(frame);\n const { x: scaleX, y: scaleY } = getScale(frame, rect);\n transform.x = transform.x + rect.left;\n transform.y = transform.y + rect.top;\n transform.scaleX = transform.scaleX * scaleX;\n transform.scaleY = transform.scaleY * scaleY;\n frame = getFrameElement(frame);\n }\n return transform;\n}\nfunction getScale(element, boundingRectangle = getBoundingRectangle(element)) {\n const width = Math.round(boundingRectangle.width);\n const height = Math.round(boundingRectangle.height);\n if (isHTMLElement(element)) {\n return {\n x: width / element.offsetWidth,\n y: height / element.offsetHeight\n };\n }\n const styles = getComputedStyles(element, true);\n return {\n x: (parseFloat(styles.width) || width) / width,\n y: (parseFloat(styles.height) || height) / height\n };\n}\n\n// src/utilities/transform/parseScale.ts\nfunction parseScale(scale) {\n if (scale === \"none\") {\n return null;\n }\n const values = scale.split(\" \");\n const x = parseFloat(values[0]);\n const y = parseFloat(values[1]);\n if (isNaN(x) && isNaN(y)) {\n return null;\n }\n return {\n x: isNaN(x) ? y : x,\n y: isNaN(y) ? x : y\n };\n}\n\n// src/utilities/transform/parseTranslate.ts\nfunction parseTranslate(translate) {\n if (translate === \"none\") {\n return null;\n }\n const [x, y, z = \"0\"] = translate.split(\" \");\n const output = { x: parseFloat(x), y: parseFloat(y), z: parseInt(z, 10) };\n if (isNaN(output.x) && isNaN(output.y)) {\n return null;\n }\n return {\n x: isNaN(output.x) ? 0 : output.x,\n y: isNaN(output.y) ? 0 : output.y,\n z: isNaN(output.z) ? 0 : output.z\n };\n}\n\n// src/utilities/transform/parseTransform.ts\nfunction parseTransform(computedStyles) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n const { scale, transform, translate } = computedStyles;\n const parsedScale = parseScale(scale);\n const parsedTranslate = parseTranslate(translate);\n const parsedMatrix = parseTransformMatrix(transform);\n if (!parsedMatrix && !parsedScale && !parsedTranslate) {\n return null;\n }\n const normalizedScale = {\n x: (_a = parsedScale == null ? void 0 : parsedScale.x) != null ? _a : 1,\n y: (_b = parsedScale == null ? void 0 : parsedScale.y) != null ? _b : 1\n };\n const normalizedTranslate = {\n x: (_c = parsedTranslate == null ? void 0 : parsedTranslate.x) != null ? _c : 0,\n y: (_d = parsedTranslate == null ? void 0 : parsedTranslate.y) != null ? _d : 0\n };\n const normalizedMatrix = {\n x: (_e = parsedMatrix == null ? void 0 : parsedMatrix.x) != null ? _e : 0,\n y: (_f = parsedMatrix == null ? void 0 : parsedMatrix.y) != null ? _f : 0,\n scaleX: (_g = parsedMatrix == null ? void 0 : parsedMatrix.scaleX) != null ? _g : 1,\n scaleY: (_h = parsedMatrix == null ? void 0 : parsedMatrix.scaleY) != null ? _h : 1\n };\n return {\n x: normalizedTranslate.x + normalizedMatrix.x,\n y: normalizedTranslate.y + normalizedMatrix.y,\n z: (_i = parsedTranslate == null ? void 0 : parsedTranslate.z) != null ? _i : 0,\n scaleX: normalizedScale.x * normalizedMatrix.scaleX,\n scaleY: normalizedScale.y * normalizedMatrix.scaleY\n };\n}\nfunction parseTransformMatrix(transform) {\n if (transform.startsWith(\"matrix3d(\")) {\n const transformArray = transform.slice(9, -1).split(/, /);\n return {\n x: +transformArray[12],\n y: +transformArray[13],\n scaleX: +transformArray[0],\n scaleY: +transformArray[5]\n };\n } else if (transform.startsWith(\"matrix(\")) {\n const transformArray = transform.slice(7, -1).split(/, /);\n return {\n x: +transformArray[4],\n y: +transformArray[5],\n scaleX: +transformArray[0],\n scaleY: +transformArray[3]\n };\n }\n return null;\n}\n\n// src/utilities/scroll/detectScrollIntent.ts\nvar ScrollDirection = /* @__PURE__ */ ((ScrollDirection2) => {\n ScrollDirection2[ScrollDirection2[\"Idle\"] = 0] = \"Idle\";\n ScrollDirection2[ScrollDirection2[\"Forward\"] = 1] = \"Forward\";\n ScrollDirection2[ScrollDirection2[\"Reverse\"] = -1] = \"Reverse\";\n return ScrollDirection2;\n})(ScrollDirection || {});\nvar defaultThreshold = {\n x: 0.2,\n y: 0.2\n};\nvar defaultTolerance = {\n x: 10,\n y: 10\n};\nfunction detectScrollIntent(scrollableElement, coordinates, intent, acceleration = 25, thresholdPercentage = defaultThreshold, tolerance = defaultTolerance) {\n const { x, y } = coordinates;\n const { rect, isTop, isBottom, isLeft, isRight } = getScrollPosition(scrollableElement);\n const frameTransform = getFrameTransform(scrollableElement);\n const computedStyles = getComputedStyles(scrollableElement, true);\n const parsedTransform = parseTransform(computedStyles);\n const isXAxisInverted = parsedTransform !== null ? (parsedTransform == null ? void 0 : parsedTransform.scaleX) < 0 : false;\n const isYAxisInverted = parsedTransform !== null ? (parsedTransform == null ? void 0 : parsedTransform.scaleY) < 0 : false;\n const scrollContainerRect = new Rectangle(\n rect.left * frameTransform.scaleX + frameTransform.x,\n rect.top * frameTransform.scaleY + frameTransform.y,\n rect.width * frameTransform.scaleX,\n rect.height * frameTransform.scaleY\n );\n const direction = {\n x: 0 /* Idle */,\n y: 0 /* Idle */\n };\n const speed = {\n x: 0,\n y: 0\n };\n const threshold2 = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x\n };\n if ((!isTop || isYAxisInverted && !isBottom) && y <= scrollContainerRect.top + threshold2.height && (intent == null ? void 0 : intent.y) !== 1 /* Forward */ && x >= scrollContainerRect.left - tolerance.x && x <= scrollContainerRect.right + tolerance.x) {\n direction.y = isYAxisInverted ? 1 /* Forward */ : -1 /* Reverse */;\n speed.y = acceleration * Math.abs(\n (scrollContainerRect.top + threshold2.height - y) / threshold2.height\n );\n } else if ((!isBottom || isYAxisInverted && !isTop) && y >= scrollContainerRect.bottom - threshold2.height && (intent == null ? void 0 : intent.y) !== -1 /* Reverse */ && x >= scrollContainerRect.left - tolerance.x && x <= scrollContainerRect.right + tolerance.x) {\n direction.y = isYAxisInverted ? -1 /* Reverse */ : 1 /* Forward */;\n speed.y = acceleration * Math.abs(\n (scrollContainerRect.bottom - threshold2.height - y) / threshold2.height\n );\n }\n if ((!isRight || isXAxisInverted && !isLeft) && x >= scrollContainerRect.right - threshold2.width && (intent == null ? void 0 : intent.x) !== -1 /* Reverse */ && y >= scrollContainerRect.top - tolerance.y && y <= scrollContainerRect.bottom + tolerance.y) {\n direction.x = isXAxisInverted ? -1 /* Reverse */ : 1 /* Forward */;\n speed.x = acceleration * Math.abs(\n (scrollContainerRect.right - threshold2.width - x) / threshold2.width\n );\n } else if ((!isLeft || isXAxisInverted && !isRight) && x <= scrollContainerRect.left + threshold2.width && (intent == null ? void 0 : intent.x) !== 1 /* Forward */ && y >= scrollContainerRect.top - tolerance.y && y <= scrollContainerRect.bottom + tolerance.y) {\n direction.x = isXAxisInverted ? 1 /* Forward */ : -1 /* Reverse */;\n speed.x = acceleration * Math.abs(\n (scrollContainerRect.left + threshold2.width - x) / threshold2.width\n );\n }\n return {\n direction,\n speed\n };\n}\n\n// src/utilities/scroll/scrollIntoViewIfNeeded.ts\nfunction supportsScrollIntoViewIfNeeded(element) {\n return \"scrollIntoViewIfNeeded\" in element && typeof element.scrollIntoViewIfNeeded === \"function\";\n}\nfunction scrollIntoViewIfNeeded(el, centerIfNeeded = false) {\n if (supportsScrollIntoViewIfNeeded(el)) {\n el.scrollIntoViewIfNeeded(centerIfNeeded);\n return;\n }\n if (!isHTMLElement(el)) {\n return el.scrollIntoView();\n }\n var parent = getFirstScrollableAncestor(el);\n if (!isHTMLElement(parent)) {\n return;\n }\n const parentComputedStyle = getComputedStyles(parent, true), parentBorderTopWidth = parseInt(\n parentComputedStyle.getPropertyValue(\"border-top-width\")\n ), parentBorderLeftWidth = parseInt(\n parentComputedStyle.getPropertyValue(\"border-left-width\")\n ), overTop = el.offsetTop - parent.offsetTop < parent.scrollTop, overBottom = el.offsetTop - parent.offsetTop + el.clientHeight - parentBorderTopWidth > parent.scrollTop + parent.clientHeight, overLeft = el.offsetLeft - parent.offsetLeft < parent.scrollLeft, overRight = el.offsetLeft - parent.offsetLeft + el.clientWidth - parentBorderLeftWidth > parent.scrollLeft + parent.clientWidth, alignWithTop = overTop && !overBottom;\n if ((overTop || overBottom) && centerIfNeeded) {\n parent.scrollTop = el.offsetTop - parent.offsetTop - parent.clientHeight / 2 - parentBorderTopWidth + el.clientHeight / 2;\n }\n if ((overLeft || overRight) && centerIfNeeded) {\n parent.scrollLeft = el.offsetLeft - parent.offsetLeft - parent.clientWidth / 2 - parentBorderLeftWidth + el.clientWidth / 2;\n }\n if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n el.scrollIntoView(alignWithTop);\n }\n}\n\n// src/utilities/transform/applyTransform.ts\nfunction applyTransform(rect, parsedTransform, transformOrigin) {\n const { scaleX, scaleY, x: translateX, y: translateY } = parsedTransform;\n const x = rect.left + translateX + (1 - scaleX) * parseFloat(transformOrigin);\n const y = rect.top + translateY + (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(\" \") + 1));\n const w = scaleX ? rect.width * scaleX : rect.width;\n const h = scaleY ? rect.height * scaleY : rect.height;\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x\n };\n}\n\n// src/utilities/transform/inverseTransform.ts\nfunction inverseTransform(rect, parsedTransform, transformOrigin) {\n const { scaleX, scaleY, x: translateX, y: translateY } = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y = rect.top - translateY - (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(\" \") + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x\n };\n}\n\n// src/utilities/transform/animateTransform.ts\nfunction animateTransform({ element, keyframes, options }) {\n return element.animate(keyframes, options).finished;\n}\n\n// src/utilities/transform/computeTranslate.ts\nfunction computeTranslate(element, translate = getComputedStyles(element).translate, projected = true) {\n if (projected) {\n const keyframe = getFinalKeyframe(\n element,\n (keyframe2) => \"translate\" in keyframe2\n );\n if (keyframe) {\n const { translate: translate2 = \"\" } = keyframe[0];\n if (typeof translate2 === \"string\") {\n const finalTranslate = parseTranslate(translate2);\n if (finalTranslate) {\n return finalTranslate;\n }\n }\n }\n }\n if (translate) {\n const finalTranslate = parseTranslate(translate);\n if (finalTranslate) {\n return finalTranslate;\n }\n }\n return { x: 0, y: 0, z: 0 };\n}\n\n// src/utilities/animations/forceFinishAnimations.ts\nvar scheduler3 = new Scheduler((callback) => setTimeout(callback, 0));\nvar animations = /* @__PURE__ */ new Map();\nvar clear2 = animations.clear.bind(animations);\nfunction getDocumentAnimations(element) {\n const document2 = element.ownerDocument;\n let documentAnimations = animations.get(document2);\n if (documentAnimations) return documentAnimations;\n documentAnimations = document2.getAnimations();\n animations.set(document2, documentAnimations);\n scheduler3.schedule(clear2);\n const elementAnimations = documentAnimations.filter(\n (animation) => isKeyframeEffect(animation.effect) && animation.effect.target === element\n );\n animations.set(element, elementAnimations);\n return documentAnimations;\n}\nfunction forceFinishAnimations(element, options) {\n const animations2 = getDocumentAnimations(element).filter((animation) => {\n var _a, _b;\n if (isKeyframeEffect(animation.effect)) {\n const { target } = animation.effect;\n const isValidTarget = (_b = target && ((_a = options.isValidTarget) == null ? void 0 : _a.call(options, target))) != null ? _b : true;\n if (isValidTarget) {\n return animation.effect.getKeyframes().some((keyframe) => {\n for (const property of options.properties) {\n if (keyframe[property]) return true;\n }\n });\n }\n }\n }).map((animation) => {\n const { effect, currentTime } = animation;\n const duration = effect == null ? void 0 : effect.getComputedTiming().duration;\n if (animation.pending || animation.playState === \"finished\") return;\n if (typeof duration == \"number\" && typeof currentTime == \"number\" && currentTime < duration) {\n animation.currentTime = duration;\n return () => {\n animation.currentTime = currentTime;\n };\n }\n });\n if (animations2.length > 0) {\n return () => animations2.forEach((reset) => reset == null ? void 0 : reset());\n }\n}\n\n// src/utilities/shapes/DOMRectangle.ts\nvar DOMRectangle = class extends Rectangle {\n constructor(element, options = {}) {\n var _a, _b, _c, _d;\n const {\n frameTransform = getFrameTransform(element),\n ignoreTransforms,\n getBoundingClientRect = getBoundingRectangle\n } = options;\n const resetAnimations = forceFinishAnimations(element, {\n properties: [\"transform\", \"translate\", \"scale\", \"width\", \"height\"],\n isValidTarget: (target) => (target !== element || isSafari()) && target.contains(element)\n });\n const boundingRectangle = getBoundingClientRect(element);\n let { top, left, width, height } = boundingRectangle;\n let updated;\n const computedStyles = getComputedStyles(element);\n const parsedTransform = parseTransform(computedStyles);\n const scale = {\n x: (_a = parsedTransform == null ? void 0 : parsedTransform.scaleX) != null ? _a : 1,\n y: (_b = parsedTransform == null ? void 0 : parsedTransform.scaleY) != null ? _b : 1\n };\n const projectedTransform = getProjectedTransform(element, computedStyles);\n resetAnimations == null ? void 0 : resetAnimations();\n if (parsedTransform) {\n updated = inverseTransform(\n boundingRectangle,\n parsedTransform,\n computedStyles.transformOrigin\n );\n if (ignoreTransforms || projectedTransform) {\n top = updated.top;\n left = updated.left;\n width = updated.width;\n height = updated.height;\n }\n }\n const intrinsic = {\n width: (_c = updated == null ? void 0 : updated.width) != null ? _c : width,\n height: (_d = updated == null ? void 0 : updated.height) != null ? _d : height\n };\n if (projectedTransform && !ignoreTransforms && updated) {\n const projected = applyTransform(\n updated,\n projectedTransform,\n computedStyles.transformOrigin\n );\n top = projected.top;\n left = projected.left;\n width = projected.width;\n height = projected.height;\n scale.x = projectedTransform.scaleX;\n scale.y = projectedTransform.scaleY;\n }\n if (frameTransform) {\n if (!ignoreTransforms) {\n left *= frameTransform.scaleX;\n width *= frameTransform.scaleX;\n top *= frameTransform.scaleY;\n height *= frameTransform.scaleY;\n }\n left += frameTransform.x;\n top += frameTransform.y;\n }\n super(left, top, width, height);\n this.scale = scale;\n this.intrinsicWidth = intrinsic.width;\n this.intrinsicHeight = intrinsic.height;\n }\n};\nfunction getProjectedTransform(element, computedStyles) {\n var _a;\n const animations2 = element.getAnimations();\n let projectedTransform = null;\n if (!animations2.length) return null;\n for (const animation of animations2) {\n if (animation.playState !== \"running\") continue;\n const keyframes = isKeyframeEffect(animation.effect) ? animation.effect.getKeyframes() : [];\n const keyframe = keyframes[keyframes.length - 1];\n if (!keyframe) continue;\n const { transform, translate, scale } = keyframe;\n if (transform || translate || scale) {\n const parsedTransform = parseTransform({\n transform: typeof transform === \"string\" && transform ? transform : computedStyles.transform,\n translate: typeof translate === \"string\" && translate ? translate : computedStyles.translate,\n scale: typeof scale === \"string\" && scale ? scale : computedStyles.scale\n });\n if (parsedTransform) {\n projectedTransform = projectedTransform ? {\n x: projectedTransform.x + parsedTransform.x,\n y: projectedTransform.y + parsedTransform.y,\n z: (_a = projectedTransform.z) != null ? _a : parsedTransform.z,\n scaleX: projectedTransform.scaleX * parsedTransform.scaleX,\n scaleY: projectedTransform.scaleY * parsedTransform.scaleY\n } : parsedTransform;\n }\n }\n }\n return projectedTransform;\n}\n\n// src/utilities/type-guards/supportsStyle.ts\nfunction supportsStyle(element) {\n return \"style\" in element && typeof element.style === \"object\" && element.style !== null && \"setProperty\" in element.style && \"removeProperty\" in element.style && typeof element.style.setProperty === \"function\" && typeof element.style.removeProperty === \"function\";\n}\n\n// src/utilities/styles/Styles.ts\nvar Styles = class {\n constructor(element) {\n this.element = element;\n this.initial = /* @__PURE__ */ new Map();\n }\n set(properties, prefix = \"\") {\n const { element } = this;\n if (!supportsStyle(element)) {\n return;\n }\n for (const [key, value] of Object.entries(properties)) {\n const property = `${prefix}${key}`;\n if (!this.initial.has(property)) {\n this.initial.set(property, element.style.getPropertyValue(property));\n }\n element.style.setProperty(\n property,\n typeof value === \"string\" ? value : `${value}px`\n );\n }\n }\n remove(properties, prefix = \"\") {\n const { element } = this;\n if (!supportsStyle(element)) {\n return;\n }\n for (const key of properties) {\n const property = `${prefix}${key}`;\n element.style.removeProperty(property);\n }\n }\n reset() {\n const { element } = this;\n if (!supportsStyle(element)) {\n return;\n }\n for (const [key, value] of this.initial) {\n element.style.setProperty(key, value);\n }\n if (element.getAttribute(\"style\") === \"\") {\n element.removeAttribute(\"style\");\n }\n }\n};\n\n// src/utilities/type-guards/isElement.ts\nfunction isElement(target) {\n if (!target) return false;\n return target instanceof getWindow(target).Element || isNode(target) && target.nodeType === Node.ELEMENT_NODE;\n}\n\n// src/utilities/type-guards/isKeyboardEvent.ts\nfunction isKeyboardEvent(event) {\n if (!event) return false;\n const { KeyboardEvent } = getWindow(event.target);\n return event instanceof KeyboardEvent;\n}\n\n// src/utilities/type-guards/isPointerEvent.ts\nfunction isPointerEvent(event) {\n if (!event) return false;\n const { PointerEvent } = getWindow(event.target);\n return event instanceof PointerEvent;\n}\n\n// src/utilities/type-guards/supportsViewTransition.ts\nfunction supportsViewTransition(document2) {\n return \"startViewTransition\" in document2;\n}\n\n// src/utilities/type-guards/isTextInput.ts\nfunction isTextInput(target) {\n if (!isElement(target)) return false;\n const { tagName } = target;\n return tagName === \"INPUT\" || tagName === \"TEXTAREA\" || isContentEditable(target);\n}\nfunction isContentEditable(element) {\n return element.hasAttribute(\"contenteditable\") && element.getAttribute(\"contenteditable\") !== \"false\";\n}\n\n// src/utilities/misc/generateUniqueId.ts\nvar ids = {};\nfunction generateUniqueId(prefix) {\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n return `${prefix}-${id}`;\n}\n\nexport { DOMRectangle, Listeners, FrameObserver as PositionObserver, ProxiedElements, ResizeNotifier, Scheduler, ScrollDirection, Styles, animateTransform, canScroll, canUseDOM, cloneElement, computeTranslate, detectScrollIntent, generateUniqueId, getBoundingRectangle, getComputedStyles, getDocument, getElementFromPoint, getFinalKeyframe, getFirstScrollableAncestor, getFrameElement, getFrameTransform, getScrollableAncestors, getViewportBoundingRectangle, getVisibleBoundingRectangle, getWindow, hidePopover, inverseTransform, isDocumentScrollingElement, isElement, isHTMLElement, isKeyboardEvent, isKeyframeEffect, isPointerEvent, isSafari, isTextInput, parseTransform, parseTranslate, scheduler, scrollIntoViewIfNeeded, showPopover, supportsPopover, supportsStyle, supportsViewTransition, timeout };\n//# sourceMappingURL=utilities.js.map\n//# sourceMappingURL=utilities.js.map","import { configurator, Sensor, Plugin, CorePlugin, DragDropManager as DragDropManager$1, Draggable as Draggable$1, Droppable as Droppable$1, descriptor } from '@dnd-kit/abstract';\nimport { ScrollDirection, Listeners, isElement, scrollIntoViewIfNeeded, DOMRectangle, getDocument, isHTMLElement, getFrameTransform, scheduler, isTextInput, isKeyboardEvent, isPointerEvent, canScroll, detectScrollIntent, getElementFromPoint, getScrollableAncestors, generateUniqueId, isSafari, Styles, getComputedStyles, parseTranslate, supportsPopover, showPopover, getWindow, supportsStyle, getFrameElement, cloneElement, getFinalKeyframe, animateTransform, ProxiedElements, PositionObserver } from '@dnd-kit/dom/utilities';\nimport { effect, computed, deepEqual, signal, batch, untracked, reactive } from '@dnd-kit/state';\nimport { exceedsDistance, Axes, Point, Rectangle } from '@dnd-kit/geometry';\nimport { defaultCollisionDetection } from '@dnd-kit/collision';\n\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nvar __decoratorStart = (base) => {\n var _a4;\n return [, , , __create((_a4 = base == null ? void 0 : base[__knownSymbol(\"metadata\")]) != null ? _a4 : null)];\n};\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== void 0 && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null)) });\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {\n return __privateGet(this, extra);\n }, set [name](x) {\n return __privateSet(this, extra, x);\n } }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1; i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };\n if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;\n if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null) __typeError(\"Object expected\");\n else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\n\n// src/core/plugins/accessibility/defaults.ts\nvar defaultAttributes = {\n role: \"button\",\n roleDescription: \"draggable\"};\nvar defaultDescriptionIdPrefix = `dnd-kit-description`;\nvar defaultAnnouncementIdPrefix = `dnd-kit-announcement`;\nvar defaultScreenReaderInstructions = {\n draggable: `To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item in a given direction. Press space again to drop the item in its new position, or press escape to cancel.`\n};\nvar defaultAnnouncements = {\n dragstart({ operation: { source } }) {\n if (!source) return;\n return `Picked up draggable item ${source.id}.`;\n },\n dragover({ operation: { source, target } }) {\n if (!source || source.id === (target == null ? void 0 : target.id)) return;\n if (target) {\n return `Draggable item ${source.id} was moved over droppable target ${target.id}.`;\n }\n return `Draggable item ${source.id} is no longer over a droppable target.`;\n },\n dragend({ operation: { source, target }, canceled }) {\n if (!source) return;\n if (canceled) {\n return `Dragging was cancelled. Draggable item ${source.id} was dropped.`;\n }\n if (target) {\n return `Draggable item ${source.id} was dropped over droppable target ${target.id}`;\n }\n return `Draggable item ${source.id} was dropped.`;\n }\n};\n\n// src/core/plugins/accessibility/utilities.ts\nfunction isFocusable(element) {\n const tagName = element.tagName.toLowerCase();\n return [\"input\", \"select\", \"textarea\", \"a\", \"button\"].includes(tagName);\n}\n\n// src/core/plugins/accessibility/HiddenText.ts\nfunction createHiddenText(id, value) {\n const element = document.createElement(\"div\");\n element.id = id;\n element.style.setProperty(\"display\", \"none\");\n element.textContent = value;\n return element;\n}\n\n// src/core/plugins/accessibility/LiveRegion.ts\nfunction createLiveRegion(id) {\n const element = document.createElement(\"div\");\n element.id = id;\n element.setAttribute(\"role\", \"status\");\n element.setAttribute(\"aria-live\", \"polite\");\n element.setAttribute(\"aria-atomic\", \"true\");\n element.style.setProperty(\"position\", \"fixed\");\n element.style.setProperty(\"width\", \"1px\");\n element.style.setProperty(\"height\", \"1px\");\n element.style.setProperty(\"margin\", \"-1px\");\n element.style.setProperty(\"border\", \"0\");\n element.style.setProperty(\"padding\", \"0\");\n element.style.setProperty(\"overflow\", \"hidden\");\n element.style.setProperty(\"clip\", \"rect(0 0 0 0)\");\n element.style.setProperty(\"clip-path\", \"inset(100%)\");\n element.style.setProperty(\"white-space\", \"nowrap\");\n return element;\n}\n\n// src/core/plugins/accessibility/Accessibility.ts\nvar debouncedEvents = [\"dragover\", \"dragmove\"];\nvar Accessibility = class extends Plugin {\n constructor(manager, options) {\n super(manager);\n const {\n id,\n idPrefix: {\n description: descriptionPrefix = defaultDescriptionIdPrefix,\n announcement: announcementPrefix = defaultAnnouncementIdPrefix\n } = {},\n announcements = defaultAnnouncements,\n screenReaderInstructions = defaultScreenReaderInstructions,\n debounce: debounceMs = 500\n } = options != null ? options : {};\n const descriptionId = id ? `${descriptionPrefix}-${id}` : generateUniqueId(descriptionPrefix);\n const announcementId = id ? `${announcementPrefix}-${id}` : generateUniqueId(announcementPrefix);\n let hiddenTextElement;\n let liveRegionElement;\n let liveRegionTextNode;\n let latestAnnouncement;\n const updateAnnouncement = (value = latestAnnouncement) => {\n if (!liveRegionTextNode || !value) return;\n if ((liveRegionTextNode == null ? void 0 : liveRegionTextNode.nodeValue) !== value) {\n liveRegionTextNode.nodeValue = value;\n }\n };\n const scheduleUpdateAnnouncement = () => scheduler.schedule(updateAnnouncement);\n const debouncedUpdateAnnouncement = debounce(\n scheduleUpdateAnnouncement,\n debounceMs\n );\n const eventListeners = Object.entries(announcements).map(\n ([eventName, getAnnouncement]) => {\n return this.manager.monitor.addEventListener(\n eventName,\n (event, manager2) => {\n const element = liveRegionTextNode;\n if (!element) return;\n const announcement = getAnnouncement == null ? void 0 : getAnnouncement(event, manager2);\n if (announcement && element.nodeValue !== announcement) {\n latestAnnouncement = announcement;\n if (debouncedEvents.includes(eventName)) {\n debouncedUpdateAnnouncement();\n } else {\n scheduleUpdateAnnouncement();\n debouncedUpdateAnnouncement.cancel();\n }\n }\n }\n );\n }\n );\n const initialize = () => {\n let elements = [];\n if (!(hiddenTextElement == null ? void 0 : hiddenTextElement.isConnected)) {\n hiddenTextElement = createHiddenText(\n descriptionId,\n screenReaderInstructions.draggable\n );\n elements.push(hiddenTextElement);\n }\n if (!(liveRegionElement == null ? void 0 : liveRegionElement.isConnected)) {\n liveRegionElement = createLiveRegion(announcementId);\n liveRegionTextNode = document.createTextNode(\"\");\n liveRegionElement.appendChild(liveRegionTextNode);\n elements.push(liveRegionElement);\n }\n if (elements.length > 0) {\n document.body.append(...elements);\n }\n };\n const mutations = /* @__PURE__ */ new Set();\n function executeMutations() {\n for (const operation of mutations) {\n operation();\n }\n }\n this.registerEffect(() => {\n var _a4;\n mutations.clear();\n for (const draggable of this.manager.registry.draggables.value) {\n const activator = (_a4 = draggable.handle) != null ? _a4 : draggable.element;\n if (activator) {\n if (!hiddenTextElement || !liveRegionElement) {\n mutations.add(initialize);\n }\n if ((!isFocusable(activator) || isSafari()) && !activator.hasAttribute(\"tabindex\")) {\n mutations.add(() => activator.setAttribute(\"tabindex\", \"0\"));\n }\n if (!activator.hasAttribute(\"role\") && !(activator.tagName.toLowerCase() === \"button\")) {\n mutations.add(\n () => activator.setAttribute(\"role\", defaultAttributes.role)\n );\n }\n if (!activator.hasAttribute(\"aria-roledescription\")) {\n mutations.add(\n () => activator.setAttribute(\n \"aria-roledescription\",\n defaultAttributes.roleDescription\n )\n );\n }\n if (!activator.hasAttribute(\"aria-describedby\")) {\n mutations.add(\n () => activator.setAttribute(\"aria-describedby\", descriptionId)\n );\n }\n for (const key of [\"aria-pressed\", \"aria-grabbed\"]) {\n const value = String(draggable.isDragging);\n if (activator.getAttribute(key) !== value) {\n mutations.add(() => activator.setAttribute(key, value));\n }\n }\n const disabled = String(draggable.disabled);\n if (activator.getAttribute(\"aria-disabled\") !== disabled) {\n mutations.add(\n () => activator.setAttribute(\"aria-disabled\", disabled)\n );\n }\n }\n }\n if (mutations.size > 0) {\n scheduler.schedule(executeMutations);\n }\n });\n this.destroy = () => {\n super.destroy();\n hiddenTextElement == null ? void 0 : hiddenTextElement.remove();\n liveRegionElement == null ? void 0 : liveRegionElement.remove();\n eventListeners.forEach((unsubscribe) => unsubscribe());\n };\n }\n};\nfunction debounce(fn, wait) {\n let timeout;\n const debounced = () => {\n clearTimeout(timeout);\n timeout = setTimeout(fn, wait);\n };\n debounced.cancel = () => clearTimeout(timeout);\n return debounced;\n}\nvar Cursor = class extends Plugin {\n constructor(manager, options) {\n super(manager, options);\n this.manager = manager;\n const doc = computed(\n () => {\n var _a4;\n return getDocument((_a4 = this.manager.dragOperation.source) == null ? void 0 : _a4.element);\n }\n );\n this.destroy = effect(() => {\n var _a4;\n const { dragOperation } = this.manager;\n const { cursor = \"grabbing\" } = (_a4 = this.options) != null ? _a4 : {};\n if (dragOperation.status.initialized) {\n const document2 = doc.value;\n const style = document2.createElement(\"style\");\n style.textContent = `* { cursor: ${cursor} !important; }`;\n document2.head.appendChild(style);\n return () => style.remove();\n }\n });\n }\n};\n\n// src/core/plugins/feedback/constants.ts\nvar ATTR_PREFIX = \"data-dnd-\";\nvar DROPPING_ATTRIBUTE = `${ATTR_PREFIX}dropping`;\nvar CSS_PREFIX = \"--dnd-\";\nvar ATTRIBUTE = `${ATTR_PREFIX}dragging`;\nvar PLACEHOLDER_ATTRIBUTE = `${ATTR_PREFIX}placeholder`;\nvar IGNORED_ATTRIBUTES = [\n ATTRIBUTE,\n PLACEHOLDER_ATTRIBUTE,\n \"popover\",\n \"aria-pressed\",\n \"aria-grabbing\"\n];\nvar IGNORED_STYLES = [\"view-transition-name\"];\nvar CSS_RULES = `\n :root [${ATTRIBUTE}] {\n position: fixed !important;\n pointer-events: none !important;\n touch-action: none;\n z-index: calc(infinity);\n will-change: translate;\n top: var(${CSS_PREFIX}top, 0px) !important;\n left: var(${CSS_PREFIX}left, 0px) !important;\n right: unset !important;\n bottom: unset !important;\n width: var(${CSS_PREFIX}width, auto);\n max-width: var(${CSS_PREFIX}width, auto);\n height: var(${CSS_PREFIX}height, auto);\n max-height: var(${CSS_PREFIX}height, auto);\n transition: var(${CSS_PREFIX}transition) !important;\n }\n\n :root [${PLACEHOLDER_ATTRIBUTE}] {\n transition: none;\n }\n\n :root [${PLACEHOLDER_ATTRIBUTE}='hidden'] {\n visibility: hidden;\n }\n\n [${ATTRIBUTE}] * {\n pointer-events: none !important;\n }\n\n [${ATTRIBUTE}]:not([${DROPPING_ATTRIBUTE}]) {\n translate: var(${CSS_PREFIX}translate) !important;\n }\n\n [${ATTRIBUTE}][style*='${CSS_PREFIX}scale'] {\n scale: var(${CSS_PREFIX}scale) !important;\n transform-origin: var(${CSS_PREFIX}transform-origin) !important;\n }\n\n @layer {\n :where([${ATTRIBUTE}][popover]) {\n overflow: visible;\n background: unset;\n border: unset;\n margin: unset;\n padding: unset;\n color: inherit;\n\n &:is(input, button) {\n border: revert;\n background: revert;\n }\n }\n }\n [${ATTRIBUTE}]::backdrop, [${ATTR_PREFIX}overlay]:not([${ATTRIBUTE}]) {\n display: none;\n visibility: hidden;\n }\n`.replace(/\\n+/g, \" \").replace(/\\s+/g, \" \").trim();\nfunction createPlaceholder(source, type = \"hidden\") {\n return untracked(() => {\n const { element, manager } = source;\n if (!element || !manager) return;\n const containedDroppables = findContainedDroppables(\n element,\n manager.registry.droppables\n );\n const cleanup = [];\n const placeholder = cloneElement(element);\n const { remove } = placeholder;\n proxyDroppableElements(containedDroppables, placeholder, cleanup);\n configurePlaceholder(placeholder, type);\n placeholder.remove = () => {\n cleanup.forEach((fn) => fn());\n remove.call(placeholder);\n };\n return placeholder;\n });\n}\nfunction findContainedDroppables(element, droppables) {\n const containedDroppables = /* @__PURE__ */ new Map();\n for (const droppable of droppables) {\n if (!droppable.element) continue;\n if (element === droppable.element || element.contains(droppable.element)) {\n const identifierAttribute = `${ATTR_PREFIX}${generateUniqueId(\"dom-id\")}`;\n droppable.element.setAttribute(identifierAttribute, \"\");\n containedDroppables.set(droppable, identifierAttribute);\n }\n }\n return containedDroppables;\n}\nfunction proxyDroppableElements(containedDroppables, placeholder, cleanup) {\n for (const [droppable, identifierAttribute] of containedDroppables) {\n if (!droppable.element) continue;\n const selector = `[${identifierAttribute}]`;\n const clonedElement = placeholder.matches(selector) ? placeholder : placeholder.querySelector(selector);\n droppable.element.removeAttribute(identifierAttribute);\n if (!clonedElement) continue;\n const originalElement = droppable.element;\n droppable.proxy = clonedElement;\n clonedElement.removeAttribute(identifierAttribute);\n ProxiedElements.set(originalElement, clonedElement);\n cleanup.push(() => {\n ProxiedElements.delete(originalElement);\n droppable.proxy = void 0;\n });\n }\n}\nfunction configurePlaceholder(placeholder, type = \"hidden\") {\n placeholder.setAttribute(\"inert\", \"true\");\n placeholder.setAttribute(\"tab-index\", \"-1\");\n placeholder.setAttribute(\"aria-hidden\", \"true\");\n placeholder.setAttribute(PLACEHOLDER_ATTRIBUTE, type);\n}\nfunction isSameFrame(element, target) {\n if (element === target) return true;\n return getFrameElement(element) === getFrameElement(target);\n}\nfunction preventPopoverClose(event) {\n const { target } = event;\n if (\"newState\" in event && event.newState === \"closed\" && isElement(target) && target.hasAttribute(\"popover\")) {\n requestAnimationFrame(() => showPopover(target));\n }\n}\nfunction isTableRow(element) {\n return element.tagName === \"TR\";\n}\n\n// src/core/plugins/feedback/Feedback.ts\nvar styleSheetRegistry = /* @__PURE__ */ new Map();\nvar _overlay_dec, _a, _init, _overlay, _Feedback_instances, render_fn, injectStyles_fn;\nvar _Feedback = class _Feedback extends (_a = Plugin, _overlay_dec = [reactive], _a) {\n constructor(manager, options) {\n super(manager, options);\n __privateAdd(this, _Feedback_instances);\n __privateAdd(this, _overlay, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);\n this.state = {\n initial: {},\n current: {}\n };\n this.registerEffect(__privateMethod(this, _Feedback_instances, injectStyles_fn));\n this.registerEffect(__privateMethod(this, _Feedback_instances, render_fn));\n }\n destroy() {\n super.destroy();\n for (const [doc, registration] of styleSheetRegistry.entries()) {\n if (registration.instances.has(this)) {\n registration.instances.delete(this);\n if (registration.instances.size === 0) {\n registration.cleanup();\n styleSheetRegistry.delete(doc);\n }\n }\n }\n }\n};\n_init = __decoratorStart(_a);\n_overlay = new WeakMap();\n_Feedback_instances = new WeakSet();\nrender_fn = function() {\n var _a4, _b2, _c3;\n const { state, manager, options } = this;\n const { dragOperation } = manager;\n const { position, source, status } = dragOperation;\n if (status.idle) {\n state.current = {};\n state.initial = {};\n return;\n }\n if (!source) return;\n const { element, feedback } = source;\n if (!element || feedback === \"none\" || !status.initialized || status.initializing) {\n return;\n }\n const { initial } = state;\n const feedbackElement = (_a4 = this.overlay) != null ? _a4 : element;\n const frameTransform = getFrameTransform(feedbackElement);\n const elementFrameTransform = getFrameTransform(element);\n const crossFrame = !isSameFrame(element, feedbackElement);\n const shape = new DOMRectangle(element, {\n frameTransform: crossFrame ? elementFrameTransform : null,\n ignoreTransforms: !crossFrame\n });\n const scaleDelta = {\n x: elementFrameTransform.scaleX / frameTransform.scaleX,\n y: elementFrameTransform.scaleY / frameTransform.scaleY\n };\n let cleanup;\n let { width, height, top, left } = shape;\n if (crossFrame) {\n width = width / scaleDelta.x;\n height = height / scaleDelta.y;\n }\n let elementMutationObserver;\n let documentMutationObserver;\n const styles = new Styles(feedbackElement);\n const {\n transition,\n translate,\n boxSizing,\n paddingBlockStart,\n paddingBlockEnd,\n paddingInlineStart,\n paddingInlineEnd,\n borderInlineStartWidth,\n borderInlineEndWidth,\n borderBlockStartWidth,\n borderBlockEndWidth\n } = getComputedStyles(element);\n const clone = feedback === \"clone\";\n const contentBox = boxSizing === \"content-box\";\n const widthOffset = contentBox ? parseInt(paddingInlineStart) + parseInt(paddingInlineEnd) + parseInt(borderInlineStartWidth) + parseInt(borderInlineEndWidth) : 0;\n const heightOffset = contentBox ? parseInt(paddingBlockStart) + parseInt(paddingBlockEnd) + parseInt(borderBlockStartWidth) + parseInt(borderBlockEndWidth) : 0;\n const placeholder = feedback !== \"move\" && !this.overlay ? createPlaceholder(source, clone ? \"clone\" : \"hidden\") : null;\n const isKeyboardOperation = untracked(\n () => isKeyboardEvent(manager.dragOperation.activatorEvent)\n );\n if (translate !== \"none\") {\n const parsedTranslate = parseTranslate(translate);\n if (parsedTranslate && !initial.translate) {\n initial.translate = parsedTranslate;\n }\n }\n if (!initial.transformOrigin) {\n const current = untracked(() => position.current);\n initial.transformOrigin = {\n x: (current.x - left * frameTransform.scaleX - frameTransform.x) / (width * frameTransform.scaleX),\n y: (current.y - top * frameTransform.scaleY - frameTransform.y) / (height * frameTransform.scaleY)\n };\n }\n const { transformOrigin } = initial;\n const relativeTop = top * frameTransform.scaleY + frameTransform.y;\n const relativeLeft = left * frameTransform.scaleX + frameTransform.x;\n if (!initial.coordinates) {\n initial.coordinates = {\n x: relativeLeft,\n y: relativeTop\n };\n if (scaleDelta.x !== 1 || scaleDelta.y !== 1) {\n const { scaleX, scaleY } = elementFrameTransform;\n const { x: tX2, y: tY2 } = transformOrigin;\n initial.coordinates.x += (width * scaleX - width) * tX2;\n initial.coordinates.y += (height * scaleY - height) * tY2;\n }\n }\n if (!initial.dimensions) {\n initial.dimensions = { width, height };\n }\n if (!initial.frameTransform) {\n initial.frameTransform = frameTransform;\n }\n const coordinatesDelta = {\n x: initial.coordinates.x - relativeLeft,\n y: initial.coordinates.y - relativeTop\n };\n const sizeDelta = {\n width: (initial.dimensions.width * initial.frameTransform.scaleX - width * frameTransform.scaleX) * transformOrigin.x,\n height: (initial.dimensions.height * initial.frameTransform.scaleY - height * frameTransform.scaleY) * transformOrigin.y\n };\n const delta = {\n x: coordinatesDelta.x / frameTransform.scaleX + sizeDelta.width,\n y: coordinatesDelta.y / frameTransform.scaleY + sizeDelta.height\n };\n const projected = {\n left: left + delta.x,\n top: top + delta.y\n };\n feedbackElement.setAttribute(ATTRIBUTE, \"true\");\n const transform = untracked(() => dragOperation.transform);\n const initialTranslate = (_b2 = initial.translate) != null ? _b2 : { x: 0, y: 0 };\n const tX = transform.x * frameTransform.scaleX + initialTranslate.x;\n const tY = transform.y * frameTransform.scaleY + initialTranslate.y;\n const translateString = `${tX}px ${tY}px 0`;\n const transitionString = transition ? `${transition}, translate 0ms linear` : \"\";\n styles.set(\n {\n width: width - widthOffset,\n height: height - heightOffset,\n top: projected.top,\n left: projected.left,\n translate: translateString,\n transition: transitionString,\n scale: crossFrame ? `${scaleDelta.x} ${scaleDelta.y}` : \"\",\n \"transform-origin\": `${transformOrigin.x * 100}% ${transformOrigin.y * 100}%`\n },\n CSS_PREFIX\n );\n if (placeholder) {\n element.insertAdjacentElement(\"afterend\", placeholder);\n if (options == null ? void 0 : options.rootElement) {\n const root = typeof options.rootElement === \"function\" ? options.rootElement(source) : options.rootElement;\n root.appendChild(element);\n }\n }\n if (supportsPopover(feedbackElement)) {\n if (!feedbackElement.hasAttribute(\"popover\")) {\n feedbackElement.setAttribute(\"popover\", \"manual\");\n }\n showPopover(feedbackElement);\n feedbackElement.addEventListener(\"beforetoggle\", preventPopoverClose);\n }\n const resizeObserver = new ResizeObserver(() => {\n if (!placeholder) return;\n const placeholderShape = new DOMRectangle(placeholder, {\n frameTransform,\n ignoreTransforms: true\n });\n const origin = transformOrigin != null ? transformOrigin : { x: 1, y: 1 };\n const dX = (width - placeholderShape.width) * origin.x + delta.x;\n const dY = (height - placeholderShape.height) * origin.y + delta.y;\n styles.set(\n {\n width: placeholderShape.width - widthOffset,\n height: placeholderShape.height - heightOffset,\n top: top + dY,\n left: left + dX\n },\n CSS_PREFIX\n );\n elementMutationObserver == null ? void 0 : elementMutationObserver.takeRecords();\n if (isTableRow(element) && isTableRow(placeholder)) {\n const cells = Array.from(element.cells);\n const placeholderCells = Array.from(placeholder.cells);\n for (const [index, cell] of cells.entries()) {\n const placeholderCell = placeholderCells[index];\n cell.style.width = `${placeholderCell.offsetWidth}px`;\n }\n }\n dragOperation.shape = new DOMRectangle(feedbackElement);\n });\n const initialShape = new DOMRectangle(feedbackElement);\n untracked(() => dragOperation.shape = initialShape);\n const feedbackWindow = getWindow(feedbackElement);\n const handleWindowResize = (event) => {\n this.manager.actions.stop({ event });\n };\n if (isKeyboardOperation) {\n feedbackWindow.addEventListener(\"resize\", handleWindowResize);\n }\n if (untracked(() => source.status) === \"idle\") {\n requestAnimationFrame(() => source.status = \"dragging\");\n }\n if (placeholder) {\n resizeObserver.observe(placeholder);\n elementMutationObserver = new MutationObserver((mutations) => {\n let hasChildrenMutations = false;\n for (const mutation of mutations) {\n if (mutation.target !== element) {\n hasChildrenMutations = true;\n continue;\n }\n if (mutation.type !== \"attributes\") {\n continue;\n }\n const attributeName = mutation.attributeName;\n if (attributeName.startsWith(\"aria-\") || IGNORED_ATTRIBUTES.includes(attributeName)) {\n continue;\n }\n const attributeValue = element.getAttribute(attributeName);\n if (attributeName === \"style\") {\n if (supportsStyle(element) && supportsStyle(placeholder)) {\n const styles2 = element.style;\n for (const key of Array.from(placeholder.style)) {\n if (styles2.getPropertyValue(key) === \"\") {\n placeholder.style.removeProperty(key);\n }\n }\n for (const key of Array.from(styles2)) {\n if (IGNORED_STYLES.includes(key) || key.startsWith(CSS_PREFIX)) {\n continue;\n }\n const value = styles2.getPropertyValue(key);\n placeholder.style.setProperty(key, value);\n }\n }\n } else if (attributeValue !== null) {\n placeholder.setAttribute(attributeName, attributeValue);\n } else {\n placeholder.removeAttribute(attributeName);\n }\n }\n if (hasChildrenMutations && clone) {\n placeholder.innerHTML = element.innerHTML;\n }\n });\n elementMutationObserver.observe(element, {\n attributes: true,\n subtree: true,\n childList: true\n });\n documentMutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n if (entry.addedNodes.length === 0) continue;\n for (const node of Array.from(entry.addedNodes)) {\n if (node.contains(element) && element.nextElementSibling !== placeholder) {\n element.insertAdjacentElement(\"afterend\", placeholder);\n showPopover(feedbackElement);\n return;\n }\n if (node.contains(placeholder) && placeholder.previousElementSibling !== element) {\n placeholder.insertAdjacentElement(\"beforebegin\", element);\n showPopover(feedbackElement);\n return;\n }\n }\n }\n });\n documentMutationObserver.observe(element.ownerDocument.body, {\n childList: true,\n subtree: true\n });\n }\n const cleanupEffect = effect(() => {\n var _a5;\n const { transform: transform2, status: status2 } = dragOperation;\n if (!transform2.x && !transform2.y && !state.current.translate) {\n return;\n }\n if (status2.dragging) {\n const initialTranslate2 = (_a5 = initial.translate) != null ? _a5 : { x: 0, y: 0 };\n const translate2 = {\n x: transform2.x / frameTransform.scaleX + initialTranslate2.x,\n y: transform2.y / frameTransform.scaleY + initialTranslate2.y\n };\n const previousTranslate = state.current.translate;\n const modifiers = untracked(() => dragOperation.modifiers);\n const currentShape = untracked(() => {\n var _a6;\n return (_a6 = dragOperation.shape) == null ? void 0 : _a6.current;\n });\n const translateTransition = isKeyboardOperation ? \"250ms cubic-bezier(0.25, 1, 0.5, 1)\" : \"0ms linear\";\n styles.set(\n {\n transition: `${transition}, translate ${translateTransition}`,\n translate: `${translate2.x}px ${translate2.y}px 0`\n },\n CSS_PREFIX\n );\n elementMutationObserver == null ? void 0 : elementMutationObserver.takeRecords();\n if (currentShape && currentShape !== initialShape && previousTranslate && !modifiers.length) {\n const delta2 = Point.delta(translate2, previousTranslate);\n dragOperation.shape = Rectangle.from(\n currentShape.boundingRectangle\n ).translate(\n // Need to take into account frame transform when optimistically updating shape\n delta2.x * frameTransform.scaleX,\n delta2.y * frameTransform.scaleY\n );\n } else {\n dragOperation.shape = new DOMRectangle(feedbackElement);\n }\n state.current.translate = translate2;\n }\n });\n const id = (_c3 = manager.dragOperation.source) == null ? void 0 : _c3.id;\n const restoreFocus = () => {\n var _a5;\n if (!isKeyboardOperation || id == null) {\n return;\n }\n const draggable = manager.registry.draggables.get(id);\n const element2 = (_a5 = draggable == null ? void 0 : draggable.handle) != null ? _a5 : draggable == null ? void 0 : draggable.element;\n if (isHTMLElement(element2)) {\n element2.focus();\n }\n };\n let dropEffectCleanup;\n cleanup = () => {\n elementMutationObserver == null ? void 0 : elementMutationObserver.disconnect();\n documentMutationObserver == null ? void 0 : documentMutationObserver.disconnect();\n resizeObserver.disconnect();\n feedbackWindow.removeEventListener(\"resize\", handleWindowResize);\n if (supportsPopover(feedbackElement)) {\n feedbackElement.removeEventListener(\n \"beforetoggle\",\n preventPopoverClose\n );\n feedbackElement.removeAttribute(\"popover\");\n }\n feedbackElement.removeAttribute(ATTRIBUTE);\n styles.reset();\n source.status = \"idle\";\n const moved = state.current.translate != null;\n if (placeholder && (moved || placeholder.parentElement !== feedbackElement.parentElement) && feedbackElement.isConnected) {\n placeholder.replaceWith(feedbackElement);\n }\n placeholder == null ? void 0 : placeholder.remove();\n cleanupEffect();\n dropEffectCleanup == null ? void 0 : dropEffectCleanup();\n };\n dropEffectCleanup = effect(() => {\n if (dragOperation.status.dropped) {\n queueMicrotask(() => dropEffectCleanup == null ? void 0 : dropEffectCleanup());\n const onComplete = cleanup;\n cleanup = void 0;\n source.status = \"dropping\";\n let translate2 = state.current.translate;\n const moved = translate2 != null;\n if (!translate2 && element !== feedbackElement) {\n translate2 = {\n x: 0,\n y: 0\n };\n }\n if (!translate2) {\n onComplete == null ? void 0 : onComplete();\n return;\n }\n const dropAnimation = () => {\n var _a5, _b3;\n {\n showPopover(feedbackElement);\n const [, animation] = (_a5 = getFinalKeyframe(\n feedbackElement,\n (keyframe) => \"translate\" in keyframe\n )) != null ? _a5 : [];\n animation == null ? void 0 : animation.pause();\n const target = placeholder != null ? placeholder : element;\n const options2 = {\n frameTransform: isSameFrame(feedbackElement, target) ? null : void 0\n };\n const current = new DOMRectangle(feedbackElement, options2);\n const currentTranslate = (_b3 = parseTranslate(getComputedStyles(feedbackElement).translate)) != null ? _b3 : translate2;\n const final = new DOMRectangle(target, options2);\n const delta2 = Rectangle.delta(current, final, source.alignment);\n const finalTranslate = {\n x: currentTranslate.x - delta2.x,\n y: currentTranslate.y - delta2.y\n };\n const heightKeyframes = Math.round(current.intrinsicHeight) !== Math.round(final.intrinsicHeight) ? {\n minHeight: [\n `${current.intrinsicHeight}px`,\n `${final.intrinsicHeight}px`\n ],\n maxHeight: [\n `${current.intrinsicHeight}px`,\n `${final.intrinsicHeight}px`\n ]\n } : {};\n const widthKeyframes = Math.round(current.intrinsicWidth) !== Math.round(final.intrinsicWidth) ? {\n minWidth: [\n `${current.intrinsicWidth}px`,\n `${final.intrinsicWidth}px`\n ],\n maxWidth: [\n `${current.intrinsicWidth}px`,\n `${final.intrinsicWidth}px`\n ]\n } : {};\n styles.set({ transition }, CSS_PREFIX);\n feedbackElement.setAttribute(DROPPING_ATTRIBUTE, \"\");\n elementMutationObserver == null ? void 0 : elementMutationObserver.takeRecords();\n animateTransform({\n element: feedbackElement,\n keyframes: __spreadProps(__spreadValues(__spreadValues({}, heightKeyframes), widthKeyframes), {\n translate: [\n `${currentTranslate.x}px ${currentTranslate.y}px 0`,\n `${finalTranslate.x}px ${finalTranslate.y}px 0`\n ]\n }),\n options: {\n duration: moved || feedbackElement !== element ? 250 : 0,\n easing: \"ease\"\n }\n }).then(() => {\n feedbackElement.removeAttribute(DROPPING_ATTRIBUTE);\n animation == null ? void 0 : animation.finish();\n onComplete == null ? void 0 : onComplete();\n requestAnimationFrame(restoreFocus);\n });\n }\n };\n manager.renderer.rendering.then(dropAnimation);\n }\n });\n return () => cleanup == null ? void 0 : cleanup();\n};\ninjectStyles_fn = function() {\n var _a4, _b2;\n const { status, source, target } = this.manager.dragOperation;\n if (status.initializing) {\n const sourceDocument = getDocument((_a4 = source == null ? void 0 : source.element) != null ? _a4 : null);\n const targetDocument = getDocument((_b2 = target == null ? void 0 : target.element) != null ? _b2 : null);\n const documents = /* @__PURE__ */ new Set([sourceDocument, targetDocument]);\n for (const doc of documents) {\n let registration = styleSheetRegistry.get(doc);\n if (!registration) {\n const style = document.createElement(\"style\");\n style.textContent = CSS_RULES;\n doc.head.prepend(style);\n const mutationObserver = new MutationObserver((entries) => {\n for (const entry of entries) {\n if (entry.type === \"childList\") {\n const removedNodes = Array.from(entry.removedNodes);\n if (removedNodes.length > 0 && removedNodes.includes(style)) {\n doc.head.prepend(style);\n }\n }\n }\n });\n mutationObserver.observe(doc.head, { childList: true });\n registration = {\n cleanup: () => {\n mutationObserver.disconnect();\n style.remove();\n },\n instances: /* @__PURE__ */ new Set()\n };\n styleSheetRegistry.set(doc, registration);\n }\n registration.instances.add(this);\n }\n }\n};\n__decorateElement(_init, 4, \"overlay\", _overlay_dec, _Feedback, _overlay);\n__decoratorMetadata(_init, _Feedback);\n_Feedback.configure = configurator(_Feedback);\nvar Feedback = _Feedback;\nvar LOCKED = true;\nvar UNLOCKED = false;\nvar _dec, _a2, _dec2, _b, _init2, __b, __a;\n_b = (_dec2 = [reactive], ScrollDirection.Forward), _a2 = (_dec = [reactive], ScrollDirection.Reverse);\nvar ScrollLock = class {\n constructor() {\n __privateAdd(this, __b, __runInitializers(_init2, 8, this, LOCKED)), __runInitializers(_init2, 11, this);\n __privateAdd(this, __a, __runInitializers(_init2, 12, this, LOCKED)), __runInitializers(_init2, 15, this);\n }\n isLocked(direction) {\n if (direction === ScrollDirection.Idle) {\n return false;\n }\n if (direction == null) {\n return this[ScrollDirection.Forward] === LOCKED && this[ScrollDirection.Reverse] === LOCKED;\n }\n return this[direction] === LOCKED;\n }\n unlock(direction) {\n if (direction === ScrollDirection.Idle) {\n return;\n }\n this[direction] = UNLOCKED;\n }\n};\n_init2 = __decoratorStart(null);\n__b = new WeakMap();\n__a = new WeakMap();\n__decorateElement(_init2, 4, _b, _dec2, ScrollLock, __b);\n__decorateElement(_init2, 4, _a2, _dec, ScrollLock, __a);\n__decoratorMetadata(_init2, ScrollLock);\n\n// src/core/plugins/scrolling/ScrollIntent.ts\nvar DIRECTIONS = [ScrollDirection.Forward, ScrollDirection.Reverse];\nvar ScrollIntent = class {\n constructor() {\n this.x = new ScrollLock();\n this.y = new ScrollLock();\n }\n isLocked() {\n return this.x.isLocked() && this.y.isLocked();\n }\n};\nvar ScrollIntentTracker = class extends Plugin {\n constructor(manager) {\n super(manager);\n const scrollIntent = signal(new ScrollIntent());\n let previousDelta = null;\n this.signal = scrollIntent;\n effect(() => {\n const { status } = manager.dragOperation;\n if (!status.initialized) {\n previousDelta = null;\n scrollIntent.value = new ScrollIntent();\n return;\n }\n const { delta } = manager.dragOperation.position;\n if (previousDelta) {\n const directions = {\n x: getDirection(delta.x, previousDelta.x),\n y: getDirection(delta.y, previousDelta.y)\n };\n const intent = scrollIntent.peek();\n batch(() => {\n for (const axis of Axes) {\n for (const direction of DIRECTIONS) {\n if (directions[axis] === direction) {\n intent[axis].unlock(direction);\n }\n }\n }\n scrollIntent.value = intent;\n });\n }\n previousDelta = delta;\n });\n }\n get current() {\n return this.signal.peek();\n }\n};\nfunction getDirection(a, b) {\n return Math.sign(a - b);\n}\n\n// src/core/plugins/scrolling/Scroller.ts\nvar _autoScrolling_dec, _a3, _init3, _autoScrolling, _meta, _scroll;\nvar Scroller = class extends (_a3 = CorePlugin, _autoScrolling_dec = [reactive], _a3) {\n constructor(manager) {\n super(manager);\n __privateAdd(this, _autoScrolling, __runInitializers(_init3, 8, this, false)), __runInitializers(_init3, 11, this);\n __privateAdd(this, _meta);\n __privateAdd(this, _scroll, () => {\n if (!__privateGet(this, _meta)) {\n return;\n }\n const { element, by } = __privateGet(this, _meta);\n if (by.y) element.scrollTop += by.y;\n if (by.x) element.scrollLeft += by.x;\n });\n this.scroll = (options) => {\n var _a4;\n if (this.disabled) {\n return false;\n }\n const elements = this.getScrollableElements();\n if (!elements) {\n __privateSet(this, _meta, void 0);\n return false;\n }\n const { position } = this.manager.dragOperation;\n const currentPosition = position == null ? void 0 : position.current;\n if (currentPosition) {\n const { by } = options != null ? options : {};\n const intent = by ? {\n x: getScrollIntent(by.x),\n y: getScrollIntent(by.y)\n } : void 0;\n const scrollIntent = intent ? void 0 : this.scrollIntentTracker.current;\n if (scrollIntent == null ? void 0 : scrollIntent.isLocked()) {\n return false;\n }\n for (const scrollableElement of elements) {\n const elementCanScroll = canScroll(scrollableElement, by);\n if (elementCanScroll.x || elementCanScroll.y) {\n const { speed, direction } = detectScrollIntent(\n scrollableElement,\n currentPosition,\n intent\n );\n if (scrollIntent) {\n for (const axis of Axes) {\n if (scrollIntent[axis].isLocked(direction[axis])) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n }\n if (direction.x || direction.y) {\n const { x, y } = by != null ? by : direction;\n const scrollLeftBy = x * speed.x;\n const scrollTopBy = y * speed.y;\n if (scrollLeftBy || scrollTopBy) {\n const previousScrollBy = (_a4 = __privateGet(this, _meta)) == null ? void 0 : _a4.by;\n if (this.autoScrolling && previousScrollBy) {\n const scrollIntentMismatch = previousScrollBy.x && !scrollLeftBy || previousScrollBy.y && !scrollTopBy;\n if (scrollIntentMismatch) continue;\n }\n __privateSet(this, _meta, {\n element: scrollableElement,\n by: {\n x: scrollLeftBy,\n y: scrollTopBy\n }\n });\n scheduler.schedule(__privateGet(this, _scroll));\n return true;\n }\n }\n }\n }\n }\n __privateSet(this, _meta, void 0);\n return false;\n };\n let previousElementFromPoint = null;\n let previousScrollableElements = null;\n const elementFromPoint = computed(() => {\n const { position, source } = manager.dragOperation;\n if (!position) {\n return null;\n }\n const element = getElementFromPoint(\n getDocument(source == null ? void 0 : source.element),\n position.current\n );\n if (element) {\n previousElementFromPoint = element;\n }\n return element != null ? element : previousElementFromPoint;\n });\n const scrollableElements = computed(() => {\n const element = elementFromPoint.value;\n const { documentElement } = getDocument(element);\n if (!element || element === documentElement) {\n const { target } = manager.dragOperation;\n const targetElement = target == null ? void 0 : target.element;\n if (targetElement) {\n const elements = getScrollableAncestors(targetElement, {\n excludeElement: false\n });\n previousScrollableElements = elements;\n return elements;\n }\n }\n if (element) {\n const elements = getScrollableAncestors(element, {\n excludeElement: false\n });\n if (this.autoScrolling && previousScrollableElements && elements.size < (previousScrollableElements == null ? void 0 : previousScrollableElements.size)) {\n return previousScrollableElements;\n }\n previousScrollableElements = elements;\n return elements;\n }\n previousScrollableElements = null;\n return null;\n }, deepEqual);\n this.getScrollableElements = () => {\n return scrollableElements.value;\n };\n this.scrollIntentTracker = new ScrollIntentTracker(manager);\n this.destroy = manager.monitor.addEventListener(\"dragmove\", (event) => {\n if (this.disabled || event.defaultPrevented || !isKeyboardEvent(manager.dragOperation.activatorEvent) || !event.by) {\n return;\n }\n if (this.scroll({ by: event.by })) {\n event.preventDefault();\n }\n });\n }\n};\n_init3 = __decoratorStart(_a3);\n_autoScrolling = new WeakMap();\n_meta = new WeakMap();\n_scroll = new WeakMap();\n__decorateElement(_init3, 4, \"autoScrolling\", _autoScrolling_dec, Scroller, _autoScrolling);\n__decoratorMetadata(_init3, Scroller);\nfunction getScrollIntent(value) {\n if (value > 0) {\n return ScrollDirection.Forward;\n }\n if (value < 0) {\n return ScrollDirection.Reverse;\n }\n return ScrollDirection.Idle;\n}\n\n// src/utilities/scheduling/scheduler.ts\nvar Scheduler = class {\n constructor(scheduler5) {\n this.scheduler = scheduler5;\n this.pending = false;\n this.tasks = /* @__PURE__ */ new Set();\n this.resolvers = /* @__PURE__ */ new Set();\n this.flush = () => {\n const { tasks, resolvers } = this;\n this.pending = false;\n this.tasks = /* @__PURE__ */ new Set();\n this.resolvers = /* @__PURE__ */ new Set();\n for (const task of tasks) {\n task();\n }\n for (const resolve of resolvers) {\n resolve();\n }\n };\n }\n schedule(task) {\n this.tasks.add(task);\n if (!this.pending) {\n this.pending = true;\n this.scheduler(this.flush);\n }\n return new Promise((resolve) => this.resolvers.add(resolve));\n }\n};\nvar scheduler3 = new Scheduler((callback) => {\n if (typeof requestAnimationFrame === \"function\") {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n});\n\n// src/core/plugins/scrolling/AutoScroller.ts\nvar AUTOSCROLL_INTERVAL = 10;\nvar AutoScroller = class extends Plugin {\n constructor(manager, _options) {\n super(manager);\n const scroller = manager.registry.plugins.get(Scroller);\n if (!scroller) {\n throw new Error(\"AutoScroller plugin depends on Scroller plugin\");\n }\n this.destroy = effect(() => {\n if (this.disabled) {\n return;\n }\n const { position: _, status } = manager.dragOperation;\n if (status.dragging) {\n const canScroll2 = scroller.scroll();\n if (canScroll2) {\n scroller.autoScrolling = true;\n const interval = setInterval(\n () => scheduler3.schedule(scroller.scroll),\n AUTOSCROLL_INTERVAL\n );\n return () => {\n clearInterval(interval);\n };\n } else {\n scroller.autoScrolling = false;\n }\n }\n });\n }\n};\nvar listenerOptions = {\n capture: true,\n passive: true\n};\nvar _timeout;\nvar ScrollListener = class extends CorePlugin {\n constructor(manager) {\n super(manager);\n __privateAdd(this, _timeout);\n this.handleScroll = () => {\n if (__privateGet(this, _timeout) == null) {\n __privateSet(this, _timeout, setTimeout(() => {\n this.manager.collisionObserver.forceUpdate(false);\n __privateSet(this, _timeout, void 0);\n }, 50));\n }\n };\n const { dragOperation } = this.manager;\n this.destroy = effect(() => {\n var _a4, _b2, _c3;\n const enabled = dragOperation.status.dragging;\n if (enabled) {\n const root = (_c3 = (_b2 = (_a4 = dragOperation.source) == null ? void 0 : _a4.element) == null ? void 0 : _b2.ownerDocument) != null ? _c3 : document;\n root.addEventListener(\"scroll\", this.handleScroll, listenerOptions);\n return () => {\n root.removeEventListener(\n \"scroll\",\n this.handleScroll,\n listenerOptions\n );\n };\n }\n });\n }\n};\n_timeout = new WeakMap();\nvar PreventSelection = class extends Plugin {\n constructor(manager) {\n super(manager);\n this.manager = manager;\n this.destroy = effect(() => {\n const { dragOperation } = this.manager;\n if (dragOperation.status.initialized) {\n const style = document.createElement(\"style\");\n style.textContent = `* { user-select: none !important; -webkit-user-select: none !important; }`;\n document.head.appendChild(style);\n removeSelection();\n document.addEventListener(\"selectionchange\", removeSelection, {\n capture: true\n });\n return () => {\n document.removeEventListener(\"selectionchange\", removeSelection, {\n capture: true\n });\n style.remove();\n };\n }\n });\n }\n};\nfunction removeSelection() {\n var _a4;\n (_a4 = document.getSelection()) == null ? void 0 : _a4.removeAllRanges();\n}\nvar defaults = Object.freeze({\n offset: 10,\n keyboardCodes: {\n start: [\"Space\", \"Enter\"],\n cancel: [\"Escape\"],\n end: [\"Space\", \"Enter\", \"Tab\"],\n up: [\"ArrowUp\"],\n down: [\"ArrowDown\"],\n left: [\"ArrowLeft\"],\n right: [\"ArrowRight\"]\n },\n shouldActivate(args) {\n var _a4;\n const { event, source } = args;\n const target = (_a4 = source.handle) != null ? _a4 : source.element;\n return event.target === target;\n }\n});\nvar _cleanupFunctions;\nvar _KeyboardSensor = class _KeyboardSensor extends Sensor {\n constructor(manager, options) {\n super(manager);\n this.manager = manager;\n this.options = options;\n __privateAdd(this, _cleanupFunctions, []);\n this.listeners = new Listeners();\n this.handleSourceKeyDown = (event, source, options) => {\n if (this.disabled || event.defaultPrevented) {\n return;\n }\n if (!isElement(event.target)) {\n return;\n }\n if (source.disabled) {\n return;\n }\n const {\n keyboardCodes = defaults.keyboardCodes,\n shouldActivate = defaults.shouldActivate\n } = options != null ? options : {};\n if (!keyboardCodes.start.includes(event.code)) {\n return;\n }\n if (!this.manager.dragOperation.status.idle) {\n return;\n }\n if (shouldActivate({ event, source, manager: this.manager })) {\n this.handleStart(event, source, options);\n }\n };\n }\n bind(source, options = this.options) {\n const unbind = effect(() => {\n var _a4;\n const target = (_a4 = source.handle) != null ? _a4 : source.element;\n const listener = (event) => {\n if (isKeyboardEvent(event)) {\n this.handleSourceKeyDown(event, source, options);\n }\n };\n if (target) {\n target.addEventListener(\"keydown\", listener);\n return () => {\n target.removeEventListener(\"keydown\", listener);\n };\n }\n });\n return unbind;\n }\n handleStart(event, source, options) {\n const { element } = source;\n if (!element) {\n throw new Error(\"Source draggable does not have an associated element\");\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n scrollIntoViewIfNeeded(element);\n const { center } = new DOMRectangle(element);\n const controller = this.manager.actions.start({\n event,\n coordinates: {\n x: center.x,\n y: center.y\n },\n source\n });\n if (controller.signal.aborted) return this.cleanup();\n this.sideEffects();\n const sourceDocument = getDocument(element);\n const listeners = [\n this.listeners.bind(sourceDocument, [\n {\n type: \"keydown\",\n listener: (event2) => this.handleKeyDown(event2, source, options),\n options: { capture: true }\n }\n ])\n ];\n __privateGet(this, _cleanupFunctions).push(...listeners);\n }\n handleKeyDown(event, _source, options) {\n const { keyboardCodes = defaults.keyboardCodes } = options != null ? options : {};\n if (isKeycode(event, [...keyboardCodes.end, ...keyboardCodes.cancel])) {\n event.preventDefault();\n const canceled = isKeycode(event, keyboardCodes.cancel);\n this.handleEnd(event, canceled);\n return;\n }\n if (isKeycode(event, keyboardCodes.up)) {\n this.handleMove(\"up\", event);\n } else if (isKeycode(event, keyboardCodes.down)) {\n this.handleMove(\"down\", event);\n }\n if (isKeycode(event, keyboardCodes.left)) {\n this.handleMove(\"left\", event);\n } else if (isKeycode(event, keyboardCodes.right)) {\n this.handleMove(\"right\", event);\n }\n }\n handleEnd(event, canceled) {\n this.manager.actions.stop({\n event,\n canceled\n });\n this.cleanup();\n }\n handleMove(direction, event) {\n var _a4, _b2;\n const { shape } = this.manager.dragOperation;\n const factor = event.shiftKey ? 5 : 1;\n let by = {\n x: 0,\n y: 0\n };\n let offset = (_b2 = (_a4 = this.options) == null ? void 0 : _a4.offset) != null ? _b2 : defaults.offset;\n if (typeof offset === \"number\") {\n offset = { x: offset, y: offset };\n }\n if (!shape) {\n return;\n }\n switch (direction) {\n case \"up\":\n by = { x: 0, y: -offset.y * factor };\n break;\n case \"down\":\n by = { x: 0, y: offset.y * factor };\n break;\n case \"left\":\n by = { x: -offset.x * factor, y: 0 };\n break;\n case \"right\":\n by = { x: offset.x * factor, y: 0 };\n break;\n }\n if (by.x || by.y) {\n event.preventDefault();\n this.manager.actions.move({\n event,\n by\n });\n }\n }\n sideEffects() {\n const autoScroller = this.manager.registry.plugins.get(AutoScroller);\n if ((autoScroller == null ? void 0 : autoScroller.disabled) === false) {\n autoScroller.disable();\n __privateGet(this, _cleanupFunctions).push(() => {\n autoScroller.enable();\n });\n }\n }\n cleanup() {\n __privateGet(this, _cleanupFunctions).forEach((cleanup) => cleanup());\n __privateSet(this, _cleanupFunctions, []);\n }\n destroy() {\n this.cleanup();\n this.listeners.clear();\n }\n};\n_cleanupFunctions = new WeakMap();\n_KeyboardSensor.configure = configurator(_KeyboardSensor);\n_KeyboardSensor.defaults = defaults;\nvar KeyboardSensor = _KeyboardSensor;\nfunction isKeycode(event, codes) {\n return codes.includes(event.code);\n}\nvar defaults2 = Object.freeze({\n activationConstraints(event, source) {\n var _a4;\n const { pointerType, target } = event;\n if (pointerType === \"mouse\" && isElement(target) && (source.handle === target || ((_a4 = source.handle) == null ? void 0 : _a4.contains(target)))) {\n return void 0;\n }\n if (pointerType === \"touch\") {\n return {\n delay: { value: 250, tolerance: 5 }\n };\n }\n if (isTextInput(target) && !event.defaultPrevented) {\n return {\n delay: { value: 200, tolerance: 0 }\n };\n }\n return {\n delay: { value: 200, tolerance: 10 },\n distance: { value: 5 }\n };\n }\n});\nvar _cleanup, _clearTimeout;\nvar _PointerSensor = class _PointerSensor extends Sensor {\n constructor(manager, options) {\n super(manager);\n this.manager = manager;\n this.options = options;\n __privateAdd(this, _cleanup, /* @__PURE__ */ new Set());\n __privateAdd(this, _clearTimeout);\n this.listeners = new Listeners();\n this.latest = {\n event: void 0,\n coordinates: void 0\n };\n this.handleMove = () => {\n const { event, coordinates: to } = this.latest;\n if (!event || !to) {\n return;\n }\n this.manager.actions.move({ event, to });\n };\n this.handleCancel = this.handleCancel.bind(this);\n this.handlePointerUp = this.handlePointerUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n activationConstraints(event, source) {\n var _a4;\n const { activationConstraints = defaults2.activationConstraints } = (_a4 = this.options) != null ? _a4 : {};\n const constraints = typeof activationConstraints === \"function\" ? activationConstraints(event, source) : activationConstraints;\n return constraints;\n }\n bind(source, options = this.options) {\n const unbind = effect(() => {\n var _a4;\n const controller = new AbortController();\n const { signal: signal3 } = controller;\n const listener = (event) => {\n if (isPointerEvent(event)) {\n this.handlePointerDown(event, source, options);\n }\n };\n let targets = [(_a4 = source.handle) != null ? _a4 : source.element];\n if (options == null ? void 0 : options.activatorElements) {\n if (Array.isArray(options.activatorElements)) {\n targets = options.activatorElements;\n } else {\n targets = options.activatorElements(source);\n }\n }\n for (const target of targets) {\n if (!target) continue;\n patchWindow(target.ownerDocument.defaultView);\n target.addEventListener(\"pointerdown\", listener, { signal: signal3 });\n }\n return () => controller.abort();\n });\n return unbind;\n }\n handlePointerDown(event, source, options = {}) {\n if (this.disabled || !event.isPrimary || event.button !== 0 || !isElement(event.target) || source.disabled || isCapturedBySensor(event) || !this.manager.dragOperation.status.idle) {\n return;\n }\n const { target } = event;\n const isNativeDraggable = isHTMLElement(target) && target.draggable && target.getAttribute(\"draggable\") === \"true\";\n const offset = getFrameTransform(source.element);\n this.initialCoordinates = {\n x: event.clientX * offset.scaleX + offset.x,\n y: event.clientY * offset.scaleY + offset.y\n };\n const constraints = this.activationConstraints(event, source);\n event.sensor = this;\n if (!(constraints == null ? void 0 : constraints.delay) && !(constraints == null ? void 0 : constraints.distance)) {\n this.handleStart(source, event);\n } else {\n const { delay } = constraints;\n if (delay) {\n const timeout = setTimeout(\n () => this.handleStart(source, event),\n delay.value\n );\n __privateSet(this, _clearTimeout, () => {\n clearTimeout(timeout);\n __privateSet(this, _clearTimeout, void 0);\n });\n }\n }\n const ownerDocument = getDocument(event.target);\n const unbindListeners = this.listeners.bind(ownerDocument, [\n {\n type: \"pointermove\",\n listener: (event2) => this.handlePointerMove(event2, source)\n },\n {\n type: \"pointerup\",\n listener: this.handlePointerUp,\n options: {\n capture: true\n }\n },\n {\n // Cancel activation if there is a competing Drag and Drop interaction\n type: \"dragstart\",\n listener: isNativeDraggable ? this.handleCancel : preventDefault,\n options: {\n capture: true\n }\n }\n ]);\n const cleanup = () => {\n var _a4;\n unbindListeners();\n (_a4 = __privateGet(this, _clearTimeout)) == null ? void 0 : _a4.call(this);\n this.initialCoordinates = void 0;\n };\n __privateGet(this, _cleanup).add(cleanup);\n }\n handlePointerMove(event, source) {\n const coordinates = {\n x: event.clientX,\n y: event.clientY\n };\n const offset = getFrameTransform(source.element);\n coordinates.x = coordinates.x * offset.scaleX + offset.x;\n coordinates.y = coordinates.y * offset.scaleY + offset.y;\n if (this.manager.dragOperation.status.dragging) {\n event.preventDefault();\n event.stopPropagation();\n this.latest.event = event;\n this.latest.coordinates = coordinates;\n scheduler.schedule(this.handleMove);\n return;\n }\n if (!this.initialCoordinates) {\n return;\n }\n const delta = {\n x: coordinates.x - this.initialCoordinates.x,\n y: coordinates.y - this.initialCoordinates.y\n };\n const constraints = this.activationConstraints(event, source);\n const { distance, delay } = constraints != null ? constraints : {};\n if (distance) {\n if (distance.tolerance != null && exceedsDistance(delta, distance.tolerance)) {\n return this.handleCancel(event);\n }\n if (exceedsDistance(delta, distance.value)) {\n return this.handleStart(source, event);\n }\n }\n if (delay) {\n if (exceedsDistance(delta, delay.tolerance)) {\n return this.handleCancel(event);\n }\n }\n }\n handlePointerUp(event) {\n const { status } = this.manager.dragOperation;\n if (!status.idle) {\n event.preventDefault();\n event.stopPropagation();\n const canceled = !status.initialized;\n this.manager.actions.stop({ event, canceled });\n }\n this.cleanup();\n }\n handleKeyDown(event) {\n if (event.key === \"Escape\") {\n event.preventDefault();\n this.handleCancel(event);\n }\n }\n handleStart(source, event) {\n var _a4;\n const { manager, initialCoordinates } = this;\n (_a4 = __privateGet(this, _clearTimeout)) == null ? void 0 : _a4.call(this);\n if (!initialCoordinates || !manager.dragOperation.status.idle) {\n return;\n }\n if (event.defaultPrevented) {\n return;\n }\n const controller = manager.actions.start({\n coordinates: initialCoordinates,\n event,\n source\n });\n if (controller.signal.aborted) return this.cleanup();\n event.preventDefault();\n const ownerDocument = getDocument(event.target);\n const pointerCaptureTarget = ownerDocument.body;\n pointerCaptureTarget.setPointerCapture(event.pointerId);\n const unbind = this.listeners.bind(ownerDocument, [\n {\n // Prevent scrolling on touch devices\n type: \"touchmove\",\n listener: preventDefault,\n options: {\n passive: false\n }\n },\n {\n // Prevent click events\n type: \"click\",\n listener: preventDefault\n },\n {\n type: \"contextmenu\",\n listener: preventDefault\n },\n {\n type: \"keydown\",\n listener: this.handleKeyDown\n },\n {\n type: \"lostpointercapture\",\n listener: (event2) => {\n if (event2.target !== pointerCaptureTarget) return;\n this.handlePointerUp(event2);\n }\n }\n ]);\n __privateGet(this, _cleanup).add(unbind);\n }\n handleCancel(event) {\n const { dragOperation } = this.manager;\n if (dragOperation.status.initialized) {\n this.manager.actions.stop({ event, canceled: true });\n }\n this.cleanup();\n }\n cleanup() {\n this.latest = {\n event: void 0,\n coordinates: void 0\n };\n __privateGet(this, _cleanup).forEach((cleanup) => cleanup());\n __privateGet(this, _cleanup).clear();\n }\n destroy() {\n this.cleanup();\n this.listeners.clear();\n }\n};\n_cleanup = new WeakMap();\n_clearTimeout = new WeakMap();\n_PointerSensor.configure = configurator(_PointerSensor);\n_PointerSensor.defaults = defaults2;\nvar PointerSensor = _PointerSensor;\nfunction isCapturedBySensor(event) {\n return \"sensor\" in event;\n}\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction noop() {\n}\nvar windows = /* @__PURE__ */ new WeakSet();\nfunction patchWindow(window) {\n if (!window || windows.has(window)) {\n return;\n }\n window.addEventListener(\"touchmove\", noop, {\n capture: false,\n passive: false\n });\n windows.add(window);\n}\n\n// src/core/manager/manager.ts\nvar defaultPreset = {\n modifiers: [],\n plugins: [Accessibility, AutoScroller, Cursor, Feedback, PreventSelection],\n sensors: [PointerSensor, KeyboardSensor]\n};\nvar DragDropManager = class extends DragDropManager$1 {\n constructor(input = {}) {\n const {\n plugins = defaultPreset.plugins,\n sensors = defaultPreset.sensors,\n modifiers = []\n } = input;\n super(__spreadProps(__spreadValues({}, input), {\n plugins: [ScrollListener, Scroller, ...plugins],\n sensors,\n modifiers\n }));\n }\n};\nvar _feedback_dec, _element_dec, _handle_dec, _c, _init4, _handle, _element, _feedback;\nvar Draggable = class extends (_c = Draggable$1, _handle_dec = [reactive], _element_dec = [reactive], _feedback_dec = [reactive], _c) {\n constructor(_a4, manager) {\n var _b2 = _a4, {\n element,\n effects = () => [],\n handle,\n feedback = \"default\"\n } = _b2, input = __objRest(_b2, [\n \"element\",\n \"effects\",\n \"handle\",\n \"feedback\"\n ]);\n super(\n __spreadValues({\n effects: () => [\n ...effects(),\n () => {\n var _a5, _b3;\n const { manager: manager2 } = this;\n if (!manager2) return;\n const sensors = (_b3 = (_a5 = this.sensors) == null ? void 0 : _a5.map(descriptor)) != null ? _b3 : [\n ...manager2.sensors\n ];\n const unbindFunctions = sensors.map((entry) => {\n const sensorInstance = entry instanceof Sensor ? entry : manager2.registry.register(entry.plugin);\n const options = entry instanceof Sensor ? void 0 : entry.options;\n const unbind = sensorInstance.bind(this, options);\n return unbind;\n });\n return function cleanup() {\n unbindFunctions.forEach((unbind) => unbind());\n };\n }\n ]\n }, input),\n manager\n );\n __privateAdd(this, _handle, __runInitializers(_init4, 8, this)), __runInitializers(_init4, 11, this);\n __privateAdd(this, _element, __runInitializers(_init4, 12, this)), __runInitializers(_init4, 15, this);\n __privateAdd(this, _feedback, __runInitializers(_init4, 16, this)), __runInitializers(_init4, 19, this);\n this.element = element;\n this.handle = handle;\n this.feedback = feedback;\n }\n};\n_init4 = __decoratorStart(_c);\n_handle = new WeakMap();\n_element = new WeakMap();\n_feedback = new WeakMap();\n__decorateElement(_init4, 4, \"handle\", _handle_dec, Draggable, _handle);\n__decorateElement(_init4, 4, \"element\", _element_dec, Draggable, _element);\n__decorateElement(_init4, 4, \"feedback\", _feedback_dec, Draggable, _feedback);\n__decoratorMetadata(_init4, Draggable);\nvar _proxy_dec, _element_dec2, _c2, _init5, _element2, _d, element_get, element_set, _Droppable_instances, _proxy;\nvar Droppable = class extends (_c2 = Droppable$1, _element_dec2 = [reactive], _proxy_dec = [reactive], _c2) {\n constructor(_a4, manager) {\n var _b2 = _a4, { element, effects = () => [] } = _b2, input = __objRest(_b2, [\"element\", \"effects\"]);\n const { collisionDetector = defaultCollisionDetection } = input;\n const updateShape = (boundingClientRect) => {\n const { manager: manager2, element: element2 } = this;\n if (!element2 || boundingClientRect === null) {\n this.shape = void 0;\n return void 0;\n }\n if (!manager2) return;\n const updatedShape = new DOMRectangle(element2);\n const shape = untracked(() => this.shape);\n if (updatedShape && (shape == null ? void 0 : shape.equals(updatedShape))) {\n return shape;\n }\n this.shape = updatedShape;\n return updatedShape;\n };\n const observePosition = signal(false);\n super(\n __spreadProps(__spreadValues({}, input), {\n collisionDetector,\n effects: () => [\n ...effects(),\n () => {\n const { element: element2, manager: manager2 } = this;\n if (!manager2) return;\n const { dragOperation } = manager2;\n const { source } = dragOperation;\n observePosition.value = Boolean(\n source && dragOperation.status.initialized && element2 && !this.disabled && this.accepts(source)\n );\n },\n () => {\n const { element: element2 } = this;\n if (observePosition.value && element2) {\n const positionObserver = new PositionObserver(\n element2,\n updateShape\n );\n return () => {\n positionObserver.disconnect();\n this.shape = void 0;\n };\n }\n },\n () => {\n var _a5;\n if ((_a5 = this.manager) == null ? void 0 : _a5.dragOperation.status.initialized) {\n return () => {\n this.shape = void 0;\n };\n }\n }\n ]\n }),\n manager\n );\n __privateAdd(this, _Droppable_instances);\n __privateAdd(this, _element2, __runInitializers(_init5, 8, this)), __runInitializers(_init5, 11, this);\n __privateAdd(this, _proxy, __runInitializers(_init5, 12, this)), __runInitializers(_init5, 15, this);\n this.element = element;\n this.refreshShape = () => updateShape();\n }\n set element(element) {\n __privateSet(this, _Droppable_instances, element, element_set);\n }\n get element() {\n var _a4;\n return (_a4 = this.proxy) != null ? _a4 : __privateGet(this, _Droppable_instances, element_get);\n }\n};\n_init5 = __decoratorStart(_c2);\n_element2 = new WeakMap();\n_Droppable_instances = new WeakSet();\n_proxy = new WeakMap();\n_d = __decorateElement(_init5, 20, \"#element\", _element_dec2, _Droppable_instances, _element2), element_get = _d.get, element_set = _d.set;\n__decorateElement(_init5, 4, \"proxy\", _proxy_dec, Droppable, _proxy);\n__decoratorMetadata(_init5, Droppable);\n\nexport { Accessibility, AutoScroller, Cursor, DragDropManager, Draggable, Droppable, Feedback, KeyboardSensor, PointerSensor, PreventSelection, ScrollListener, Scroller, defaultPreset };\n//# sourceMappingURL=index.js.map\n//# sourceMappingURL=index.js.map","import { WeakStore, effect, batch, untracked, reactive } from '@dnd-kit/state';\nimport { closestCorners, defaultCollisionDetection } from '@dnd-kit/collision';\nimport { Scroller, Draggable, Droppable } from '@dnd-kit/dom';\nimport { isKeyboardEvent, DOMRectangle, getVisibleBoundingRectangle, scrollIntoViewIfNeeded, getComputedStyles, computeTranslate, animateTransform, ProxiedElements } from '@dnd-kit/dom/utilities';\nimport { Plugin } from '@dnd-kit/abstract';\nimport { Rectangle } from '@dnd-kit/geometry';\n\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nvar __decoratorStart = (base) => {\n var _a;\n return [, , , __create((_a = void 0 ) != null ? _a : null)];\n};\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== void 0 && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null)) });\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;\n var j = array.length + 1 , key = __decoratorStrings[k + 5];\n var initializers = (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = ((target = target.prototype), __getOwnPropDesc({ get [name]() {\n return __privateGet(this, extra);\n }, set [name](x) {\n return __privateSet(this, extra, x);\n } }, name));\n for (var i = decorators.length - 1; i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };\n access.get = (x) => x[name];\n access.set = (x, y) => x[name] = y;\n }\n it = (0, decorators[i])({ get: desc.get, set: desc.set } , ctx), done._ = 1;\n if (it === void 0) __expectFn(it) && (desc[key] = it );\n else if (typeof it !== \"object\" || it === null) __typeError(\"Object expected\");\n else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return desc && __defProp(target, name, desc), target;\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), member.set(obj, value), value);\n\n// src/sortable/utilities.ts\nfunction isSortable(element) {\n return element instanceof SortableDroppable || element instanceof SortableDraggable;\n}\n\n// src/sortable/plugins/SortableKeyboardPlugin.ts\nvar TOLERANCE = 10;\nvar SortableKeyboardPlugin = class extends Plugin {\n constructor(manager) {\n super(manager);\n const cleanupEffect = effect(() => {\n const { dragOperation } = manager;\n if (!isKeyboardEvent(dragOperation.activatorEvent)) {\n return;\n }\n if (!isSortable(dragOperation.source)) {\n return;\n }\n if (dragOperation.status.initialized) {\n const scroller = manager.registry.plugins.get(Scroller);\n if (scroller) {\n scroller.disable();\n return () => scroller.enable();\n }\n }\n });\n const unsubscribe = manager.monitor.addEventListener(\n \"dragmove\",\n (event, manager2) => {\n queueMicrotask(() => {\n if (this.disabled || event.defaultPrevented || !event.nativeEvent) {\n return;\n }\n const { dragOperation } = manager2;\n if (!isKeyboardEvent(event.nativeEvent)) {\n return;\n }\n if (!isSortable(dragOperation.source)) {\n return;\n }\n if (!dragOperation.shape) {\n return;\n }\n const { actions, collisionObserver, registry } = manager2;\n const { by } = event;\n if (!by) {\n return;\n }\n const direction = getDirection(by);\n const { source, target } = dragOperation;\n const { center } = dragOperation.shape.current;\n const potentialTargets = [];\n const cleanup = [];\n batch(() => {\n for (const droppable of registry.droppables) {\n const { id: id2 } = droppable;\n if (!droppable.accepts(source) || id2 === (target == null ? void 0 : target.id) && isSortable(droppable) || !droppable.element) {\n continue;\n }\n let previousShape = droppable.shape;\n const shape = new DOMRectangle(droppable.element, {\n getBoundingClientRect: (element) => getVisibleBoundingRectangle(element, void 0, 0.2)\n });\n if (!shape.height || !shape.width) continue;\n if (direction == \"down\" && center.y + TOLERANCE < shape.center.y || direction == \"up\" && center.y - TOLERANCE > shape.center.y || direction == \"left\" && center.x - TOLERANCE > shape.center.x || direction == \"right\" && center.x + TOLERANCE < shape.center.x) {\n potentialTargets.push(droppable);\n droppable.shape = shape;\n cleanup.push(() => droppable.shape = previousShape);\n }\n }\n });\n event.preventDefault();\n collisionObserver.disable();\n const collisions = collisionObserver.computeCollisions(\n potentialTargets,\n closestCorners\n );\n batch(() => cleanup.forEach((clean) => clean()));\n const [firstCollision] = collisions;\n if (!firstCollision) {\n return;\n }\n const { id } = firstCollision;\n const { index, group } = source.sortable;\n actions.setDropTarget(id).then(() => {\n const { source: source2, target: target2, shape } = dragOperation;\n if (!source2 || !isSortable(source2) || !shape) {\n return;\n }\n const {\n index: newIndex,\n group: newGroup,\n target: targetElement\n } = source2.sortable;\n const updated = index !== newIndex || group !== newGroup;\n const element = updated ? targetElement : target2 == null ? void 0 : target2.element;\n if (!element) return;\n scrollIntoViewIfNeeded(element);\n const updatedShape = new DOMRectangle(element);\n if (!updatedShape) {\n return;\n }\n const delta = Rectangle.delta(\n updatedShape,\n Rectangle.from(shape.current.boundingRectangle),\n source2.alignment\n );\n actions.move({\n by: delta\n });\n if (updated) {\n actions.setDropTarget(source2.id).then(() => collisionObserver.enable());\n } else {\n collisionObserver.enable();\n }\n });\n });\n }\n );\n this.destroy = () => {\n unsubscribe();\n cleanupEffect();\n };\n }\n};\nfunction getDirection(delta) {\n const { x, y } = delta;\n if (x > 0) {\n return \"right\";\n } else if (x < 0) {\n return \"left\";\n } else if (y > 0) {\n return \"down\";\n } else if (y < 0) {\n return \"up\";\n }\n}\n\n// ../helpers/dist/index.js\nvar __defProp2 = Object.defineProperty;\nvar __defProps2 = Object.defineProperties;\nvar __getOwnPropDescs2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp2.call(b, prop))\n __defNormalProp2(a, prop, b[prop]);\n if (__getOwnPropSymbols2)\n for (var prop of __getOwnPropSymbols2(b)) {\n if (__propIsEnum2.call(b, prop))\n __defNormalProp2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps2 = (a, b) => __defProps2(a, __getOwnPropDescs2(b));\nfunction arrayMove(array, from, to) {\n if (from === to) {\n return array;\n }\n const newArray = array.slice();\n newArray.splice(to, 0, newArray.splice(from, 1)[0]);\n return newArray;\n}\nfunction mutate(items, event, mutation) {\n var _a, _b;\n const { source, target, canceled } = event.operation;\n if (!source || !target || canceled) {\n if (\"preventDefault\" in event) event.preventDefault();\n return items;\n }\n const findIndex = (item, id) => item === id || typeof item === \"object\" && \"id\" in item && item.id === id;\n if (Array.isArray(items)) {\n const sourceIndex2 = items.findIndex((item) => findIndex(item, source.id));\n const targetIndex2 = items.findIndex((item) => findIndex(item, target.id));\n if (sourceIndex2 === -1 || targetIndex2 === -1) {\n return items;\n }\n if (!canceled && \"index\" in source && typeof source.index === \"number\") {\n const projectedSourceIndex = source.index;\n if (projectedSourceIndex !== sourceIndex2) {\n return mutation(items, sourceIndex2, projectedSourceIndex);\n }\n }\n return mutation(items, sourceIndex2, targetIndex2);\n }\n const entries = Object.entries(items);\n let sourceIndex = -1;\n let sourceParent;\n let targetIndex = -1;\n let targetParent;\n for (const [id, children] of entries) {\n if (sourceIndex === -1) {\n sourceIndex = children.findIndex((item) => findIndex(item, source.id));\n if (sourceIndex !== -1) {\n sourceParent = id;\n }\n }\n if (targetIndex === -1) {\n targetIndex = children.findIndex((item) => findIndex(item, target.id));\n if (targetIndex !== -1) {\n targetParent = id;\n }\n }\n if (sourceIndex !== -1 && targetIndex !== -1) {\n break;\n }\n }\n if (!source.manager) return items;\n const { dragOperation } = source.manager;\n const position = (_b = (_a = dragOperation.shape) == null ? void 0 : _a.current.center) != null ? _b : dragOperation.position.current;\n if (targetParent == null) {\n if (target.id in items) {\n const insertionIndex = target.shape && position.y > target.shape.center.y ? items[target.id].length : 0;\n targetParent = target.id;\n targetIndex = insertionIndex;\n }\n }\n if (sourceParent == null || targetParent == null || sourceParent === targetParent && sourceIndex === targetIndex) {\n if (\"preventDefault\" in event) event.preventDefault();\n return items;\n }\n if (sourceParent === targetParent) {\n return __spreadProps2(__spreadValues2({}, items), {\n [sourceParent]: mutation(items[sourceParent], sourceIndex, targetIndex)\n });\n }\n const isBelowTarget = target.shape && Math.round(position.y) > Math.round(target.shape.center.y);\n const modifier = isBelowTarget ? 1 : 0;\n const sourceItem = items[sourceParent][sourceIndex];\n return __spreadProps2(__spreadValues2({}, items), {\n [sourceParent]: [\n ...items[sourceParent].slice(0, sourceIndex),\n ...items[sourceParent].slice(sourceIndex + 1)\n ],\n [targetParent]: [\n ...items[targetParent].slice(0, targetIndex + modifier),\n sourceItem,\n ...items[targetParent].slice(targetIndex + modifier)\n ]\n });\n}\nfunction move(items, event) {\n return mutate(items, event, arrayMove);\n}\nvar defaultGroup = \"__default__\";\nvar OptimisticSortingPlugin = class extends Plugin {\n constructor(manager) {\n super(manager);\n const getSortableInstances = () => {\n const sortableInstances = /* @__PURE__ */ new Map();\n for (const droppable of manager.registry.droppables) {\n if (droppable instanceof SortableDroppable) {\n const { sortable } = droppable;\n const { group } = sortable;\n let instances = sortableInstances.get(group);\n if (!instances) {\n instances = /* @__PURE__ */ new Set();\n sortableInstances.set(group, instances);\n }\n instances.add(sortable);\n }\n }\n for (const [group, instances] of sortableInstances) {\n sortableInstances.set(group, new Set(sort(instances)));\n }\n return sortableInstances;\n };\n const unsubscribe = [\n manager.monitor.addEventListener(\"dragover\", (event, manager2) => {\n if (this.disabled) {\n return;\n }\n const { dragOperation } = manager2;\n const { source, target } = dragOperation;\n if (!isSortable(source) || !isSortable(target)) {\n return;\n }\n if (source.sortable === target.sortable) {\n return;\n }\n const instances = getSortableInstances();\n const sameGroup = source.sortable.group === target.sortable.group;\n const sourceInstances = instances.get(source.sortable.group);\n const targetInstances = sameGroup ? sourceInstances : instances.get(target.sortable.group);\n if (!sourceInstances || !targetInstances) return;\n queueMicrotask(() => {\n if (event.defaultPrevented) return;\n manager2.renderer.rendering.then(() => {\n var _a, _b, _c;\n const newInstances = getSortableInstances();\n for (const [group, sortableInstances] of instances.entries()) {\n const entries = Array.from(sortableInstances).entries();\n for (const [index, sortable] of entries) {\n if (sortable.index !== index || sortable.group !== group || !((_a = newInstances.get(group)) == null ? void 0 : _a.has(sortable))) {\n return;\n }\n }\n }\n const sourceElement = source.sortable.element;\n const targetElement = target.sortable.element;\n if (!targetElement || !sourceElement) {\n return;\n }\n if (!sameGroup && target.id === source.sortable.group) {\n return;\n }\n const orderedSourceSortables = sort(sourceInstances);\n const orderedTargetSortables = sameGroup ? orderedSourceSortables : sort(targetInstances);\n const sourceGroup = (_b = source.sortable.group) != null ? _b : defaultGroup;\n const targetGroup = (_c = target.sortable.group) != null ? _c : defaultGroup;\n const state = {\n [sourceGroup]: orderedSourceSortables,\n [targetGroup]: orderedTargetSortables\n };\n const newState = move(state, event);\n if (state === newState) return;\n const sourceIndex = newState[targetGroup].indexOf(source.sortable);\n const targetIndex = newState[targetGroup].indexOf(target.sortable);\n manager2.collisionObserver.disable();\n reorder(sourceElement, sourceIndex, targetElement, targetIndex);\n batch(() => {\n for (const [index, sortable] of newState[sourceGroup].entries()) {\n sortable.index = index;\n }\n if (!sameGroup) {\n for (const [index, sortable] of newState[targetGroup].entries()) {\n sortable.group = target.sortable.group;\n sortable.index = index;\n }\n }\n });\n manager2.actions.setDropTarget(source.id).then(() => manager2.collisionObserver.enable());\n });\n });\n }),\n manager.monitor.addEventListener(\"dragend\", (event, manager2) => {\n if (!event.canceled) {\n return;\n }\n const { dragOperation } = manager2;\n const { source } = dragOperation;\n if (!isSortable(source)) {\n return;\n }\n if (source.sortable.initialIndex === source.sortable.index && source.sortable.initialGroup === source.sortable.group) {\n return;\n }\n queueMicrotask(() => {\n const instances = getSortableInstances();\n const initialGroupInstances = instances.get(\n source.sortable.initialGroup\n );\n if (!initialGroupInstances) return;\n manager2.renderer.rendering.then(() => {\n var _a;\n for (const [group, sortableInstances] of instances.entries()) {\n const entries = Array.from(sortableInstances).entries();\n for (const [index, sortable] of entries) {\n if (sortable.index !== index || sortable.group !== group) {\n return;\n }\n }\n }\n const initialGroup = sort(initialGroupInstances);\n const sourceElement = source.sortable.element;\n const targetElement = (_a = initialGroup[source.sortable.initialIndex]) == null ? void 0 : _a.element;\n if (!targetElement || !sourceElement) {\n return;\n }\n reorder(\n sourceElement,\n source.sortable.initialIndex,\n targetElement,\n source.sortable.initialIndex\n );\n batch(() => {\n for (const [_, sortableInstances] of instances.entries()) {\n const entries = Array.from(sortableInstances).values();\n for (const sortable of entries) {\n sortable.index = sortable.initialIndex;\n sortable.group = sortable.initialGroup;\n }\n }\n });\n });\n });\n })\n ];\n this.destroy = () => {\n for (const unsubscribeListener of unsubscribe) {\n unsubscribeListener();\n }\n };\n }\n};\nfunction reorder(sourceElement, sourceIndex, targetElement, targetIndex) {\n const position = targetIndex < sourceIndex ? \"afterend\" : \"beforebegin\";\n targetElement.insertAdjacentElement(position, sourceElement);\n}\nfunction sortByIndex(a, b) {\n return a.index - b.index;\n}\nfunction sort(instances) {\n return Array.from(instances).sort(sortByIndex);\n}\n\n// src/sortable/sortable.ts\nvar defaultPlugins = [\n SortableKeyboardPlugin,\n OptimisticSortingPlugin\n];\nvar defaultSortableTransition = {\n duration: 250,\n easing: \"cubic-bezier(0.25, 1, 0.5, 1)\",\n idle: false\n};\nvar store = new WeakStore();\nvar _group_dec, _index_dec, _init, _index, _previousGroup, _previousIndex, _group, _element;\n_index_dec = [reactive], _group_dec = [reactive];\nvar Sortable2 = class {\n constructor(_a, manager) {\n __privateAdd(this, _index, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);\n __privateAdd(this, _previousGroup);\n __privateAdd(this, _previousIndex);\n __privateAdd(this, _group, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);\n __privateAdd(this, _element);\n this.register = () => {\n batch(() => {\n var _a, _b;\n (_a = this.manager) == null ? void 0 : _a.registry.register(this.droppable);\n (_b = this.manager) == null ? void 0 : _b.registry.register(this.draggable);\n });\n return () => this.unregister();\n };\n this.unregister = () => {\n batch(() => {\n var _a, _b;\n (_a = this.manager) == null ? void 0 : _a.registry.unregister(this.droppable);\n (_b = this.manager) == null ? void 0 : _b.registry.unregister(this.draggable);\n });\n };\n this.destroy = () => {\n batch(() => {\n this.droppable.destroy();\n this.draggable.destroy();\n });\n };\n var _b = _a, {\n effects: inputEffects = () => [],\n group,\n index,\n sensors,\n type,\n transition = defaultSortableTransition,\n plugins = defaultPlugins\n } = _b, input = __objRest(_b, [\n \"effects\",\n \"group\",\n \"index\",\n \"sensors\",\n \"type\",\n \"transition\",\n \"plugins\"\n ]);\n this.droppable = new SortableDroppable(input, manager, this);\n this.draggable = new SortableDraggable(\n __spreadProps(__spreadValues({}, input), {\n effects: () => [\n () => {\n var _a2, _b2, _c;\n const status = (_a2 = this.manager) == null ? void 0 : _a2.dragOperation.status;\n if ((status == null ? void 0 : status.initializing) && this.id === ((_c = (_b2 = this.manager) == null ? void 0 : _b2.dragOperation.source) == null ? void 0 : _c.id)) {\n store.clear(this.manager);\n }\n if (status == null ? void 0 : status.initialized) {\n store.set(\n this.manager,\n this.id,\n untracked(() => ({\n initialIndex: this.index,\n initialGroup: this.group\n }))\n );\n }\n },\n () => {\n const { index: index2, group: group2, manager: _ } = this;\n const previousIndex = __privateGet(this, _previousIndex);\n const previousGroup = __privateGet(this, _previousGroup);\n if (index2 !== previousIndex || group2 !== previousGroup) {\n __privateSet(this, _previousIndex, index2);\n __privateSet(this, _previousGroup, group2);\n this.animate();\n }\n },\n () => {\n const { target } = this;\n const { feedback, isDragSource } = this.draggable;\n if (feedback == \"move\" && isDragSource) {\n this.droppable.disabled = !target;\n }\n },\n () => {\n const { manager: manager2 } = this;\n for (const plugin of plugins) {\n manager2 == null ? void 0 : manager2.registry.register(plugin);\n }\n },\n ...inputEffects()\n ],\n type,\n sensors\n }),\n manager,\n this\n );\n __privateSet(this, _element, input.element);\n this.manager = manager;\n this.index = index;\n __privateSet(this, _previousIndex, index);\n this.group = group;\n __privateSet(this, _previousGroup, group);\n this.type = type;\n this.transition = transition;\n }\n get initialIndex() {\n var _a, _b;\n return (_b = (_a = store.get(this.manager, this.id)) == null ? void 0 : _a.initialIndex) != null ? _b : this.index;\n }\n get initialGroup() {\n var _a, _b;\n return (_b = (_a = store.get(this.manager, this.id)) == null ? void 0 : _a.initialGroup) != null ? _b : this.group;\n }\n animate() {\n untracked(() => {\n const { manager, transition } = this;\n const { shape } = this.droppable;\n if (!manager) return;\n const { idle } = manager.dragOperation.status;\n if (!shape || !transition || idle && !transition.idle) {\n return;\n }\n manager.renderer.rendering.then(() => {\n const { element } = this;\n if (!element) {\n return;\n }\n const updatedShape = this.refreshShape();\n if (!updatedShape) {\n return;\n }\n const delta = {\n x: shape.boundingRectangle.left - updatedShape.boundingRectangle.left,\n y: shape.boundingRectangle.top - updatedShape.boundingRectangle.top\n };\n const { translate } = getComputedStyles(element);\n const currentTranslate = computeTranslate(element, translate, false);\n const finalTranslate = computeTranslate(element, translate);\n if (delta.x || delta.y) {\n animateTransform({\n element,\n keyframes: {\n translate: [\n `${currentTranslate.x + delta.x}px ${currentTranslate.y + delta.y}px ${currentTranslate.z}`,\n `${finalTranslate.x}px ${finalTranslate.y}px ${finalTranslate.z}`\n ]\n },\n options: transition\n }).then(() => {\n if (!manager.dragOperation.status.dragging) {\n this.droppable.shape = void 0;\n }\n });\n }\n });\n });\n }\n get manager() {\n return this.draggable.manager;\n }\n set manager(manager) {\n batch(() => {\n this.draggable.manager = manager;\n this.droppable.manager = manager;\n });\n }\n set element(element) {\n batch(() => {\n const previousElement = __privateGet(this, _element);\n const droppableElement = this.droppable.element;\n const draggableElement = this.draggable.element;\n if (!droppableElement || droppableElement === previousElement) {\n this.droppable.element = element;\n }\n if (!draggableElement || draggableElement === previousElement) {\n this.draggable.element = element;\n }\n __privateSet(this, _element, element);\n });\n }\n get element() {\n var _a, _b;\n const element = __privateGet(this, _element);\n if (!element) return;\n return (_b = (_a = ProxiedElements.get(element)) != null ? _a : element) != null ? _b : this.droppable.element;\n }\n set target(target) {\n this.droppable.element = target;\n }\n get target() {\n return this.droppable.element;\n }\n set source(source) {\n this.draggable.element = source;\n }\n get source() {\n return this.draggable.element;\n }\n get disabled() {\n return this.draggable.disabled && this.droppable.disabled;\n }\n set feedback(value) {\n this.draggable.feedback = value;\n }\n set disabled(value) {\n batch(() => {\n this.droppable.disabled = value;\n this.draggable.disabled = value;\n });\n }\n set data(data) {\n batch(() => {\n this.droppable.data = data;\n this.draggable.data = data;\n });\n }\n set handle(handle) {\n this.draggable.handle = handle;\n }\n set id(id) {\n batch(() => {\n this.droppable.id = id;\n this.draggable.id = id;\n });\n }\n get id() {\n return this.droppable.id;\n }\n set sensors(value) {\n this.draggable.sensors = value;\n }\n set modifiers(value) {\n this.draggable.modifiers = value;\n }\n set collisionPriority(value) {\n this.droppable.collisionPriority = value;\n }\n set collisionDetector(value) {\n this.droppable.collisionDetector = value != null ? value : defaultCollisionDetection;\n }\n set alignment(value) {\n this.draggable.alignment = value;\n }\n get alignment() {\n return this.draggable.alignment;\n }\n set type(type) {\n batch(() => {\n this.droppable.type = type;\n this.draggable.type = type;\n });\n }\n get type() {\n return this.draggable.type;\n }\n set accept(value) {\n this.droppable.accept = value;\n }\n get accept() {\n return this.droppable.accept;\n }\n get isDropTarget() {\n return this.droppable.isDropTarget;\n }\n /**\n * A boolean indicating whether the sortable item is the source of a drag operation.\n */\n get isDragSource() {\n return this.draggable.isDragSource;\n }\n /**\n * A boolean indicating whether the sortable item is being dragged.\n */\n get isDragging() {\n return this.draggable.isDragging;\n }\n /**\n * A boolean indicating whether the sortable item is being dropped.\n */\n get isDropping() {\n return this.draggable.isDropping;\n }\n get status() {\n return this.draggable.status;\n }\n refreshShape() {\n return this.droppable.refreshShape();\n }\n accepts(draggable) {\n return this.droppable.accepts(draggable);\n }\n};\n_init = __decoratorStart();\n_index = new WeakMap();\n_previousGroup = new WeakMap();\n_previousIndex = new WeakMap();\n_group = new WeakMap();\n_element = new WeakMap();\n__decorateElement(_init, 4, \"index\", _index_dec, Sortable2, _index);\n__decorateElement(_init, 4, \"group\", _group_dec, Sortable2, _group);\n__decoratorMetadata(_init, Sortable2);\nvar SortableDraggable = class extends Draggable {\n constructor(input, manager, sortable) {\n super(input, manager);\n this.sortable = sortable;\n }\n get index() {\n return this.sortable.index;\n }\n};\nvar SortableDroppable = class extends Droppable {\n constructor(input, manager, sortable) {\n super(input, manager);\n this.sortable = sortable;\n }\n};\n\nexport { OptimisticSortingPlugin, Sortable2 as Sortable, SortableKeyboardPlugin, defaultSortableTransition, isSortable };\n//# sourceMappingURL=sortable.js.map\n//# sourceMappingURL=sortable.js.map","// src/utilities/currentValue.ts\nfunction isRef(value) {\n return value != null && typeof value === \"object\" && \"current\" in value;\n}\nfunction currentValue(value) {\n var _a;\n if (value == null) {\n return void 0;\n }\n if (isRef(value)) {\n return (_a = value.current) != null ? _a : void 0;\n }\n return value;\n}\n\nexport { currentValue };\n//# sourceMappingURL=utilities.js.map\n//# sourceMappingURL=utilities.js.map","import { useLayoutEffect, useEffect, useRef, useMemo, useState, useCallback } from 'react';\nimport { computed, effect, untracked } from '@dnd-kit/state';\nimport { flushSync } from 'react-dom';\nimport { currentValue } from '@dnd-kit/react/utilities';\n\nfunction useConstant(initializer) {\n const ref = useRef(null);\n if (!ref.current) {\n ref.current = initializer();\n }\n return ref.current;\n}\nvar canUseDOM = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nvar useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\nfunction useForceUpdate() {\n const setState = useState(0)[1];\n return useCallback(() => {\n setState((value) => value + 1);\n }, [setState]);\n}\n\n// src/hooks/useSignal.ts\nfunction useSignal(signal, sync = false) {\n const previous = useRef(signal.peek());\n const read = useRef(false);\n const forceUpdate = useForceUpdate();\n useIsomorphicLayoutEffect(\n () => effect(() => {\n const previousValue = previous.current;\n const currentValue2 = signal.value;\n if (previousValue !== currentValue2) {\n previous.current = currentValue2;\n if (!read.current) return;\n if (sync) {\n flushSync(forceUpdate);\n } else {\n forceUpdate();\n }\n }\n }),\n [signal, sync, forceUpdate]\n );\n return {\n get value() {\n read.current = true;\n return signal.peek();\n }\n };\n}\n\n// src/hooks/useComputed.ts\nfunction useComputed(compute, dependencies = [], sync = false) {\n const $compute = useRef(compute);\n $compute.current = compute;\n return useSignal(\n useMemo(() => computed(() => $compute.current()), dependencies),\n sync\n );\n}\nfunction useDeepSignal(target, synchronous) {\n const tracked = useRef(/* @__PURE__ */ new Map());\n const forceUpdate = useForceUpdate();\n useIsomorphicLayoutEffect(() => {\n if (!target) {\n tracked.current.clear();\n return;\n }\n return effect(() => {\n var _a;\n let stale = false;\n let sync = false;\n for (const entry of tracked.current) {\n const [key] = entry;\n const value = untracked(() => entry[1]);\n const latestValue = target[key];\n if (value !== latestValue) {\n stale = true;\n tracked.current.set(key, latestValue);\n sync = (_a = synchronous == null ? void 0 : synchronous(key, value, latestValue)) != null ? _a : false;\n }\n }\n if (stale) {\n sync ? flushSync(forceUpdate) : forceUpdate();\n }\n });\n }, [target]);\n return useMemo(\n () => target ? new Proxy(target, {\n get(target2, key) {\n const value = target2[key];\n tracked.current.set(key, value);\n return value;\n }\n }) : target,\n [target]\n );\n}\n\n// src/hooks/useImmediateEffect.ts\nfunction useImmediateEffect(callback, _) {\n callback();\n}\nfunction useLatest(value) {\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n valueRef.current = value;\n }, [value]);\n return valueRef;\n}\nfunction useOnValueChange(value, onChange, effect3 = useEffect, compare = Object.is) {\n const tracked = useRef(value);\n effect3(() => {\n const oldValue = tracked.current;\n if (!compare(value, oldValue)) {\n tracked.current = value;\n onChange(value, oldValue);\n }\n }, [onChange, value]);\n}\nfunction useOnElementChange(value, onChange) {\n const previous = useRef(currentValue(value));\n useIsomorphicLayoutEffect(() => {\n const current = currentValue(value);\n if (current !== previous.current) {\n previous.current = current;\n onChange(current);\n }\n });\n}\n\nexport { useComputed, useConstant, useDeepSignal, useImmediateEffect, useIsomorphicLayoutEffect, useLatest, useOnElementChange, useOnValueChange };\n//# sourceMappingURL=hooks.js.map\n//# sourceMappingURL=hooks.js.map","import { useCallback } from 'react';\nimport { batch, deepEqual } from '@dnd-kit/state';\nimport { defaultSortableTransition, Sortable } from '@dnd-kit/dom/sortable';\nexport { isSortable } from '@dnd-kit/dom/sortable';\nimport { useInstance } from '@dnd-kit/react';\nimport { useDeepSignal, useOnValueChange, useIsomorphicLayoutEffect, useImmediateEffect, useOnElementChange } from '@dnd-kit/react/hooks';\nimport { currentValue } from '@dnd-kit/react/utilities';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction useSortable(input) {\n const {\n accept,\n collisionDetector,\n collisionPriority,\n id,\n data,\n element,\n handle,\n index,\n group,\n disabled,\n feedback,\n modifiers,\n sensors,\n target,\n type\n } = input;\n const transition = __spreadValues(__spreadValues({}, defaultSortableTransition), input.transition);\n const sortable = useInstance((manager) => {\n return new Sortable(\n __spreadProps(__spreadValues({}, input), {\n transition,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n target: currentValue(target),\n feedback\n }),\n manager\n );\n });\n const trackedSortable = useDeepSignal(sortable, shouldUpdateSynchronously);\n useOnValueChange(id, () => sortable.id = id);\n useIsomorphicLayoutEffect(() => {\n batch(() => {\n sortable.group = group;\n sortable.index = index;\n });\n }, [sortable, group, index]);\n useOnValueChange(type, () => sortable.type = type);\n useOnValueChange(\n accept,\n () => sortable.accept = accept,\n void 0,\n deepEqual\n );\n useOnValueChange(data, () => data && (sortable.data = data));\n useOnValueChange(\n index,\n () => {\n var _a;\n if (((_a = sortable.manager) == null ? void 0 : _a.dragOperation.status.idle) && (transition == null ? void 0 : transition.idle)) {\n sortable.refreshShape();\n }\n },\n useImmediateEffect\n );\n useOnElementChange(handle, (handle2) => sortable.handle = handle2);\n useOnElementChange(element, (element2) => sortable.element = element2);\n useOnElementChange(target, (target2) => sortable.target = target2);\n useOnValueChange(disabled, () => sortable.disabled = disabled === true);\n useOnValueChange(sensors, () => sortable.sensors = sensors);\n useOnValueChange(\n collisionDetector,\n () => sortable.collisionDetector = collisionDetector\n );\n useOnValueChange(\n collisionPriority,\n () => sortable.collisionPriority = collisionPriority\n );\n useOnValueChange(feedback, () => sortable.feedback = feedback != null ? feedback : \"default\");\n useOnValueChange(\n transition,\n () => sortable.transition = transition,\n void 0,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => sortable.modifiers = modifiers,\n void 0,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => sortable.alignment = input.alignment\n );\n return {\n sortable: trackedSortable,\n get isDragging() {\n return trackedSortable.isDragging;\n },\n get isDropping() {\n return trackedSortable.isDropping;\n },\n get isDragSource() {\n return trackedSortable.isDragSource;\n },\n get isDropTarget() {\n return trackedSortable.isDropTarget;\n },\n handleRef: useCallback(\n (element2) => {\n sortable.handle = element2 != null ? element2 : void 0;\n },\n [sortable]\n ),\n ref: useCallback(\n (element2) => {\n var _a, _b;\n if (!element2 && ((_a = sortable.element) == null ? void 0 : _a.isConnected) && !((_b = sortable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {\n return;\n }\n sortable.element = element2 != null ? element2 : void 0;\n },\n [sortable]\n ),\n sourceRef: useCallback(\n (element2) => {\n var _a, _b;\n if (!element2 && ((_a = sortable.source) == null ? void 0 : _a.isConnected) && !((_b = sortable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {\n return;\n }\n sortable.source = element2 != null ? element2 : void 0;\n },\n [sortable]\n ),\n targetRef: useCallback(\n (element2) => {\n var _a, _b;\n if (!element2 && ((_a = sortable.target) == null ? void 0 : _a.isConnected) && !((_b = sortable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {\n return;\n }\n sortable.target = element2 != null ? element2 : void 0;\n },\n [sortable]\n )\n };\n}\nfunction shouldUpdateSynchronously(key, oldValue, newValue) {\n if (key === \"isDragSource\" && !newValue && oldValue) return true;\n return false;\n}\n\nexport { useSortable };\n//# sourceMappingURL=sortable.js.map\n//# sourceMappingURL=sortable.js.map","import { configurator, Modifier } from '@dnd-kit/abstract';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar _AxisModifier = class _AxisModifier extends Modifier {\n /**\n * Applies the axis restriction to the drag operation.\n *\n * @param operation - The current drag operation\n * @returns The modified transform with the axis restriction applied\n */\n apply({ transform }) {\n if (!this.options) {\n return transform;\n }\n const { axis, value } = this.options;\n return __spreadProps(__spreadValues({}, transform), {\n [axis]: value\n });\n }\n};\n/**\n * Creates a configured instance of the AxisModifier.\n *\n * @param options - The axis restriction options\n * @returns A configured AxisModifier instance\n */\n_AxisModifier.configure = configurator(_AxisModifier);\nvar AxisModifier = _AxisModifier;\nvar RestrictToVerticalAxis = AxisModifier.configure({\n axis: \"x\",\n value: 0\n});\nvar RestrictToHorizontalAxis = AxisModifier.configure({\n axis: \"y\",\n value: 0\n});\n\n// src/modifiers/boundingRectangle.ts\nfunction restrictShapeToBoundingRectangle(shape, transform, boundingRect) {\n const value = __spreadValues({}, transform);\n if (shape.boundingRectangle.top + transform.y <= boundingRect.top) {\n value.y = boundingRect.top - shape.boundingRectangle.top;\n } else if (shape.boundingRectangle.bottom + transform.y >= boundingRect.top + boundingRect.height) {\n value.y = boundingRect.top + boundingRect.height - shape.boundingRectangle.bottom;\n }\n if (shape.boundingRectangle.left + transform.x <= boundingRect.left) {\n value.x = boundingRect.left - shape.boundingRectangle.left;\n } else if (shape.boundingRectangle.right + transform.x >= boundingRect.left + boundingRect.width) {\n value.x = boundingRect.left + boundingRect.width - shape.boundingRectangle.right;\n }\n return value;\n}\nvar _SnapModifier = class _SnapModifier extends Modifier {\n /**\n * Applies the snap grid to the drag operation.\n *\n * @param operation - The current drag operation\n * @returns The modified transform with coordinates snapped to the grid\n */\n apply({ transform }) {\n var _a;\n const { size = 20 } = (_a = this.options) != null ? _a : {};\n const x = typeof size === \"number\" ? size : size.x;\n const y = typeof size === \"number\" ? size : size.y;\n return __spreadProps(__spreadValues({}, transform), {\n x: Math.ceil(transform.x / x) * x,\n y: Math.ceil(transform.y / y) * y\n });\n }\n};\n/**\n * Creates a configured instance of the SnapModifier.\n *\n * @param options - The snap grid options\n * @returns A configured SnapModifier instance\n */\n_SnapModifier.configure = configurator(_SnapModifier);\nvar SnapModifier = _SnapModifier;\n\nexport { AxisModifier, RestrictToHorizontalAxis, RestrictToVerticalAxis, SnapModifier, restrictShapeToBoundingRectangle };\n//# sourceMappingURL=modifiers.js.map\n//# sourceMappingURL=modifiers.js.map","export type PartitionTest<T> = (value: T, index: number) => boolean;\n\nexport function partition<T>(\n array: T[],\n test: PartitionTest<T>,\n pass: T[] = [],\n fail: T[] = []\n): [T[], T[]] {\n for (let i = 0, len = array.length; i < len; i++) {\n (test(array[i], i) ? pass : fail).push(array[i]);\n }\n return [pass, fail];\n}\n\n// Note order of items can be different between arrays\n// If an identityProperty is not defined, item identity is used\nexport function itemsChanged<T = unknown>(\n currentItems: T[],\n newItems: T[],\n identityProperty?: string\n) {\n if (currentItems.length !== newItems.length) {\n return true;\n }\n if (identityProperty === undefined) {\n return !currentItems.every((item) => newItems.includes(item));\n } else {\n return currentItems.some(\n (currentItem) =>\n newItems.findIndex(\n (newItem) =>\n (newItem as { [key: string]: unknown })[identityProperty] ===\n (currentItem as { [key: string]: unknown })[identityProperty]\n ) === -1\n );\n }\n}\n\nexport function itemsOrOrderChanged<T = unknown>(\n currentItems: T[],\n newItems: T[],\n identityProperty?: string\n) {\n if (currentItems.length !== newItems.length) {\n return true;\n }\n if (identityProperty === undefined) {\n return currentItems.some((item, index) => newItems[index] !== item);\n } else {\n return currentItems.some(\n (currentItem, index) =>\n (newItems[index] as { [key: string]: unknown })[identityProperty] !==\n (currentItem as { [key: string]: unknown })[identityProperty]\n );\n }\n}\n\nexport const moveItemDeprecated = <T = unknown>(\n items: T[],\n item: T,\n moveTo: number\n): T[] => {\n const fromIndex = items.indexOf(item);\n if (fromIndex === moveTo) {\n return items;\n }\n const newItems = items.slice();\n if (fromIndex === -1) {\n throw Error(\"moveItem, item to be moved not found\");\n }\n newItems.splice(fromIndex, 1);\n if (moveTo === -1) {\n newItems.push(item);\n } else {\n const offset = moveTo > fromIndex ? 0 : 0;\n newItems.splice(moveTo + offset, 0, item);\n }\n return newItems;\n};\n\nexport const moveItem = <T = unknown>(\n items: T[],\n fromIndex: number,\n toIndex: number\n): T[] => {\n if (fromIndex === toIndex) {\n return items;\n } else {\n const newItems = items.slice();\n const [item] = newItems.splice(fromIndex, 1);\n if (toIndex === -1) {\n return newItems.concat(item);\n } else {\n const offset = toIndex > fromIndex ? 0 : 0;\n newItems.splice(toIndex + offset, 0, item);\n return newItems;\n }\n }\n};\n\nexport const getAddedItems = <T>(values: undefined | T[], newValues: T[]) => {\n const isNew = (v: T) => !values?.includes(v);\n if (values === undefined) {\n return newValues;\n } else if (newValues.some(isNew)) {\n return newValues.filter(isNew);\n } else {\n return [] as T[];\n }\n};\n\nexport const getMissingItems = <T, I>(\n sourceItems: T[],\n items: I[],\n identity: (s: T) => I\n) =>\n items.filter((i) => sourceItems.findIndex((s) => identity(s) === i) === -1);\n","export interface rect {\n bottom: number;\n left: number;\n right: number;\n top: number;\n}\nexport type rectTuple = [number, number, number, number];\n\nexport type dimension = \"width\" | \"height\";\n\nexport function boxContainsPoint(rect: rect, x: number, y: number) {\n if (rect) {\n return x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom;\n }\n}\n\nexport type GridLayoutSplitDirection = \"north\" | \"south\" | \"east\" | \"west\";\n\nexport type GridLayoutDropPosition =\n | GridLayoutSplitDirection\n | \"header\"\n | \"centre\";\n\nexport function getCenteredBox(\n { right, left, top, bottom }: rect,\n pctSize: number,\n) {\n const pctOffset = (1 - pctSize) / 2;\n const w = (right - left) * pctOffset;\n const h = (bottom - top) * pctOffset;\n return { left: left + w, top: top + h, right: right - w, bottom: bottom - h };\n}\n\nexport function pointPositionWithinRect(\n x: number,\n y: number,\n rect: rect,\n borderZone = 30,\n) {\n const width = rect.right - rect.left;\n const height = rect.bottom - rect.top;\n const posX = x - rect.left;\n const posY = y - rect.top;\n let closeToTheEdge = 0;\n\n if (posX < borderZone) closeToTheEdge += 8;\n if (posX > width - borderZone) closeToTheEdge += 2;\n if (posY < borderZone) closeToTheEdge += 1;\n if (posY > height - borderZone) closeToTheEdge += 4;\n\n return { pctX: posX / width, pctY: posY / height, closeToTheEdge };\n}\n\nexport const isGridLayoutSplitDirection = (\n position: GridLayoutDropPosition,\n): position is GridLayoutSplitDirection =>\n position !== \"centre\" && position !== \"header\";\n\nexport function getPositionWithinBox(\n x: number,\n y: number,\n rect: rect,\n pctX: number,\n pctY: number,\n): GridLayoutDropPosition {\n const centerBox = getCenteredBox(rect, 0.2);\n if (boxContainsPoint(centerBox, x, y)) {\n return \"centre\";\n } else {\n const quadrant = `${pctY < 0.5 ? \"north\" : \"south\"}${\n pctX < 0.5 ? \"west\" : \"east\"\n }`;\n\n switch (quadrant) {\n case \"northwest\":\n return pctX > pctY ? \"north\" : \"west\";\n case \"northeast\":\n return 1 - pctX > pctY ? \"north\" : \"east\";\n case \"southeast\":\n return pctX > pctY ? \"east\" : \"south\";\n case \"southwest\":\n return 1 - pctX > pctY ? \"west\" : \"south\";\n default:\n throw Error(\"getPositionWithinBox failed top compute position\");\n }\n }\n}\n","import type {\n DataSourceRow,\n DataValueType,\n DataValueTypeSimple,\n DateTimeDataValueDescriptor,\n SchemaColumn,\n TableSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport type {\n VuuAggType,\n VuuAggregation,\n VuuColumnDataType,\n VuuDataRow,\n VuuDataRowDto,\n VuuGroupBy,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport type {\n ColumnAlignment,\n ColumnDescriptor,\n ColumnLayout,\n DataValueTypeDescriptor,\n ColumnTypeFormatting,\n ColumnTypeRendering,\n ColumnTypeWithValidationRules,\n DefaultColumnConfiguration,\n GroupColumnDescriptor,\n LookupRenderer,\n MappedValueTypeRenderer,\n PinLocation,\n RuntimeColumnDescriptor,\n TableCellRendererProps,\n TableConfig,\n TableHeading,\n TableHeadings,\n ValueListRenderer,\n} from \"@vuu-ui/vuu-table-types\";\nimport { type CSSProperties } from \"react\";\nimport { moveItem } from \"./array-utils\";\nimport { TableModel } from \"@vuu-ui/vuu-table\";\n\n/**\n * ColumnMap provides a lookup of the index position of a data item within a row\n * by column name.\n */\nexport interface ColumnMap {\n [columnName: string]: number;\n}\n\nconst SORT_ASC = \"asc\";\nconst NO_HEADINGS: TableHeadings = [];\nconst DEFAULT_COL_WIDTH = 100;\nconst DEFAULT_MAX_WIDTH = 250;\nconst DEFAULT_MIN_WIDTH = 50;\n// const DEFAULT_FLEX = 0;\n\nexport type SortCriteriaItem = string | [string, \"asc\"]; // TODO where is 'desc'?\n\nexport const AggregationType: { [key: string]: VuuAggType } = {\n Average: 2,\n Count: 3,\n Distinct: 6,\n Sum: 1,\n High: 4,\n Low: 5,\n};\n\nexport function mapSortCriteria(\n sortCriteria: SortCriteriaItem[],\n columnMap: ColumnMap,\n metadataOffset = 0,\n): [number, \"asc\"][] {\n return sortCriteria.map((s) => {\n if (typeof s === \"string\") {\n return [columnMap[s] + metadataOffset, \"asc\"];\n } else if (Array.isArray(s)) {\n const [columnName, sortDir] = s;\n return [columnMap[columnName] + metadataOffset, sortDir || SORT_ASC];\n } else {\n throw Error(\"columnUtils.mapSortCriteria invalid input\");\n }\n });\n}\n\nconst numericTypes = [\"int\", \"long\", \"double\"];\nexport const getDefaultAlignment = (\n serverDataType?: VuuColumnDataType,\n): ColumnAlignment =>\n serverDataType === undefined\n ? \"left\"\n : numericTypes.includes(serverDataType)\n ? \"right\"\n : \"left\";\n\nexport const getRuntimeColumnWidth = (\n col: ColumnDescriptor,\n runtimeColumns: RuntimeColumnDescriptor[],\n) => {\n const runtimeColumn = runtimeColumns.find(({ name }) => name === col.name);\n if (runtimeColumn) {\n return runtimeColumn.width;\n } else {\n return DEFAULT_COL_WIDTH;\n }\n};\n\n// Save the current runtime column widths into the table column config. We do this\n// when user has manually resized a column under a fit layout. From this point,\n// layout becomes manual - there will be no further automatic column sizing.\nexport const applyRuntimeColumnWidthsToConfig = (\n tableConfig: TableConfig,\n columns: RuntimeColumnDescriptor[],\n): TableConfig => {\n return {\n ...tableConfig,\n columns: columns.map((column) => ({\n ...column,\n width: column.width ?? getRuntimeColumnWidth(column, columns),\n })),\n columnLayout: \"manual\",\n };\n};\n\nexport const isValidColumnAlignment = (v: string): v is ColumnAlignment =>\n v === \"left\" || v === \"right\";\n\nexport const isValidPinLocation = (v: string): v is PinLocation =>\n isValidColumnAlignment(v) || v === \"floating\" || v === \"\";\n\nexport type CalculatedColumn = {\n name: string;\n expression: string;\n serverDataType: VuuColumnDataType;\n};\n\nconst VUU_COLUMN_DATA_TYPES: (string | undefined | null)[] = [\n \"long\",\n \"double\",\n \"int\",\n \"string\",\n \"char\",\n \"boolean\",\n];\n\nexport const isVuuColumnDataType = (\n value: string | undefined | null,\n): value is VuuColumnDataType => VUU_COLUMN_DATA_TYPES.includes(value);\n\nexport const fromServerDataType = (\n serverDataType: VuuColumnDataType,\n): DataValueTypeSimple => {\n switch (serverDataType) {\n case \"double\":\n case \"int\":\n case \"long\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n default:\n return \"string\";\n }\n};\n\nexport const isNumericColumn = ({ serverDataType, type }: ColumnDescriptor) => {\n if (\n serverDataType === \"int\" ||\n serverDataType === \"long\" ||\n serverDataType === \"double\"\n ) {\n return true;\n }\n if (typeof type === \"string\") {\n return type === \"number\";\n }\n if (typeof type?.name === \"string\") {\n return type?.name === \"number\";\n }\n\n return false;\n};\n\nexport const isDateTimeDataValue = (\n column: ColumnDescriptor,\n): column is DateTimeDataValueDescriptor =>\n (isTypeDescriptor(column.type) ? column.type.name : column.type) ===\n \"date/time\";\n\nexport const isPinned = (column: ColumnDescriptor) =>\n typeof column.pin === \"string\";\n\nexport const hasHeadings = (column: ColumnDescriptor) =>\n Array.isArray(column.heading) && column.heading.length > 0;\n\nexport const isResizing = (column: RuntimeColumnDescriptor) => column.resizing;\n\nexport const isTextColumn = ({ serverDataType }: ColumnDescriptor) =>\n serverDataType === undefined\n ? false\n : serverDataType === \"char\" || serverDataType === \"string\";\n\nexport const toColumnDescriptor = (name: string): ColumnDescriptor => ({\n name,\n});\n\n/**\n *\n */\nexport const isTypeDescriptor = (\n type?: DataValueType,\n): type is DataValueTypeDescriptor =>\n typeof type !== \"undefined\" && typeof type !== \"string\";\n\nconst EMPTY_COLUMN_MAP = {} as const;\n\nexport const isColumnTypeRenderer = (\n renderer?: unknown,\n): renderer is ColumnTypeRendering =>\n typeof (renderer as ColumnTypeRendering)?.name !== \"undefined\";\n\nexport const hasCustomRenderer = (\n type?: DataValueType,\n): type is DataValueTypeDescriptor =>\n isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer);\n\nexport const isLookupRenderer = (\n renderer?: unknown,\n): renderer is LookupRenderer =>\n typeof (renderer as LookupRenderer)?.name !== \"undefined\" &&\n \"lookup\" in (renderer as LookupRenderer);\n\nexport const isValueListRenderer = (\n renderer?: unknown,\n): renderer is ValueListRenderer =>\n typeof (renderer as ValueListRenderer)?.name !== \"undefined\" &&\n Array.isArray((renderer as ValueListRenderer).values);\n\nexport const hasValidationRules = (\n type?: DataValueType,\n): type is ColumnTypeWithValidationRules =>\n isTypeDescriptor(type) && Array.isArray(type.rules) && type.rules.length > 0;\n\nexport const isMappedValueTypeRenderer = (\n renderer?: unknown,\n): renderer is MappedValueTypeRenderer =>\n renderer !== undefined &&\n typeof (renderer as MappedValueTypeRenderer)?.map !== \"undefined\";\n\nexport function buildColumnMap(\n columns?: (ColumnDescriptor | SchemaColumn | string)[],\n): ColumnMap {\n const start = metadataKeys.count;\n if (columns) {\n return columns.reduce((map, column, i) => {\n if (typeof column === \"string\") {\n map[column] = start + i;\n } else {\n map[column.name] = start + i;\n }\n return map;\n }, {} as ColumnMap);\n } else {\n return EMPTY_COLUMN_MAP;\n }\n}\n\nexport function projectUpdates(updates: number[]): number[] {\n const results: number[] = [];\n const metadataOffset = metadataKeys.count - 2;\n for (let i = 0; i < updates.length; i += 3) {\n results[i] = updates[i] + metadataOffset;\n results[i + 1] = updates[i + 1];\n results[i + 2] = updates[i + 2];\n }\n return results;\n}\n\nconst KEY = 6;\n\nexport const metadataKeys = {\n IDX: 0,\n RENDER_IDX: 1,\n IS_LEAF: 2,\n IS_EXPANDED: 3,\n DEPTH: 4,\n COUNT: 5,\n KEY,\n SELECTED: 7,\n count: 8,\n // TODO following only used in datamodel\n PARENT_IDX: \"parent_idx\",\n IDX_POINTER: \"idx_pointer\",\n FILTER_COUNT: \"filter_count\",\n NEXT_FILTER_IDX: \"next_filter_idx\",\n} as const;\n\n// This method mutates the passed columns array\nconst insertColumn = (\n columns: RuntimeColumnDescriptor[],\n column: RuntimeColumnDescriptor,\n) => {\n const { originalIdx } = column;\n if (typeof originalIdx === \"number\") {\n for (let i = 0; i < columns.length; i++) {\n const { originalIdx: colIdx = -1 } = columns[i];\n if (colIdx > originalIdx) {\n columns.splice(i, 0, column);\n return columns;\n }\n }\n }\n columns.push(column);\n return columns;\n};\n\nexport const flattenColumnGroup = (\n columns: RuntimeColumnDescriptor[],\n): RuntimeColumnDescriptor[] => {\n if (columns[0]?.isGroup) {\n const [groupColumn, ...nonGroupedColumns] = columns as [\n GroupColumnDescriptor,\n ...RuntimeColumnDescriptor[],\n ];\n groupColumn.columns.forEach((groupColumn) => {\n insertColumn(nonGroupedColumns, groupColumn);\n });\n return nonGroupedColumns;\n } else {\n return columns;\n }\n};\n\nexport function extractGroupColumn({\n availableWidth,\n columns,\n groupBy,\n confirmed = true,\n}: ColumnGroupProps): [\n GroupColumnDescriptor | null,\n RuntimeColumnDescriptor[],\n] {\n if (groupBy && groupBy.length > 0) {\n const flattenedColumns = flattenColumnGroup(columns);\n // Note: groupedColumns will be in column order, not groupBy order\n const [groupedColumns, rest] = flattenedColumns.reduce<\n [RuntimeColumnDescriptor[], RuntimeColumnDescriptor[]]\n >(\n (result, column, i) => {\n const [g, r] = result;\n if (groupBy.includes(column.name)) {\n g.push({\n ...column,\n originalIdx: i,\n });\n } else {\n r.push(column);\n }\n\n return result;\n },\n [[], []],\n );\n if (groupedColumns.length !== groupBy.length) {\n throw Error(\n `extractGroupColumn: no column definition found for all groupBy cols ${JSON.stringify(\n groupBy,\n )} `,\n );\n }\n\n const groupOnly = rest.length === 0;\n\n const groupCount = groupBy.length;\n const groupCols: RuntimeColumnDescriptor[] = groupBy.map((name, idx) => {\n // Keep the cols in same order defined on groupBy\n const column = groupedColumns.find(\n (col) => col.name === name,\n ) as RuntimeColumnDescriptor;\n return {\n ...column,\n groupLevel: groupCount - idx,\n };\n });\n\n const width = groupOnly\n ? availableWidth\n : Math.min(\n availableWidth,\n groupCols.map((c) => c.width).reduce((a, b) => a + b) + 100,\n );\n\n const groupCol = {\n ariaColIndex: 1,\n columns: groupCols,\n heading: [\"group-col\"],\n isGroup: true,\n groupConfirmed: confirmed,\n name: \"group-col\",\n width,\n } as GroupColumnDescriptor;\n\n const withAdjustedAriaIndex: RuntimeColumnDescriptor[] = [];\n let colIndex = 2;\n for (const column of rest) {\n withAdjustedAriaIndex.push({\n ...column,\n ariaColIndex: column.hidden ? -1 : colIndex,\n });\n if (!column.hidden) {\n colIndex += 1;\n }\n }\n\n return [groupCol, withAdjustedAriaIndex];\n }\n return [null, flattenColumnGroup(columns)];\n}\n\nexport const isGroupColumn = (\n column: RuntimeColumnDescriptor,\n): column is GroupColumnDescriptor => column.isGroup === true;\n\n/**\n * groupConfirmed is currently the only 'pending' attribute we use. A\n * value of true is only reset by a follow-up value of false. Intermediary\n * values of undefined are discounted.\n */\nexport const checkConfirmationPending = (previousConfig?: TableModel) => {\n if (previousConfig) {\n const [column] = previousConfig.columns;\n if (isGroupColumn(column)) {\n return column.groupConfirmed;\n }\n }\n};\n\nexport const isJsonAttribute = (value: unknown) =>\n typeof value === \"string\" && (value.endsWith(\"{\") || value.endsWith(\"[\"));\n\nexport const isJsonGroup = (\n column: RuntimeColumnDescriptor,\n row: VuuDataRow,\n columnMap: ColumnMap,\n) =>\n (column.type as DataValueTypeDescriptor)?.name === \"json\" &&\n isJsonAttribute(row[columnMap[column.name]]);\n\nexport const isJsonColumn = (column: RuntimeColumnDescriptor) =>\n (column.type as DataValueTypeDescriptor)?.name === \"json\";\n\nexport const sortPinnedColumns = (\n columns: RuntimeColumnDescriptor[],\n): RuntimeColumnDescriptor[] => {\n const leftPinnedColumns: RuntimeColumnDescriptor[] = [];\n const rightPinnedColumns: RuntimeColumnDescriptor[] = [];\n const restColumns: RuntimeColumnDescriptor[] = [];\n // 4 is the selectionEndSize, need to consider how we make this available\n let pinnedWidthLeft = 4;\n for (const column of columns) {\n // prettier-ignore\n switch(column.pin){\n case \"left\": {\n leftPinnedColumns.push({\n ...column,\n endPin: undefined,\n pinnedOffset: pinnedWidthLeft\n });\n pinnedWidthLeft += column.width;\n }\n break;\n // store right pinned columns initially in reverse order\n case \"right\": rightPinnedColumns.unshift(column); break;\n default: restColumns.push(column)\n }\n }\n\n if (leftPinnedColumns.length) {\n leftPinnedColumns.push({\n ...(leftPinnedColumns.pop() as RuntimeColumnDescriptor),\n endPin: true,\n });\n }\n\n const allColumns = leftPinnedColumns.length\n ? leftPinnedColumns.concat(restColumns)\n : restColumns;\n\n if (rightPinnedColumns.length) {\n const measuredRightPinnedColumns: RuntimeColumnDescriptor[] = [];\n let pinnedWidthRight = 0;\n for (const column of rightPinnedColumns) {\n measuredRightPinnedColumns.unshift({\n ...column,\n pinnedOffset: pinnedWidthRight,\n });\n pinnedWidthRight += column.width;\n }\n measuredRightPinnedColumns[0].endPin = true;\n return allColumns.concat(measuredRightPinnedColumns);\n } else {\n return allColumns;\n }\n};\n\nexport const measurePinnedColumns = (\n columns: RuntimeColumnDescriptor[],\n selectionEndSize: number,\n) => {\n let pinnedWidthLeft = 0;\n let pinnedWidthRight = 0;\n let unpinnedWidth = 0;\n for (const column of columns) {\n const { hidden, pin, width } = column;\n const visibleWidth = hidden ? 0 : width;\n if (pin === \"left\") {\n pinnedWidthLeft += visibleWidth;\n } else if (pin === \"right\") {\n pinnedWidthRight += visibleWidth;\n } else {\n unpinnedWidth += visibleWidth;\n }\n }\n return {\n pinnedWidthLeft: pinnedWidthLeft + selectionEndSize,\n pinnedWidthRight: pinnedWidthRight + selectionEndSize,\n unpinnedWidth,\n };\n};\n\nexport const getTableHeadings = (\n columns: RuntimeColumnDescriptor[],\n): TableHeadings => {\n if (columns.some(hasHeadings)) {\n const maxHeadingDepth = columns.reduce<number>(\n (max, { heading }) => Math.max(max, heading?.length ?? 0),\n 0,\n );\n\n let heading: TableHeading | undefined = undefined;\n const tableHeadings: TableHeadings = [];\n let tableHeadingsRow: TableHeading[];\n for (let level = 0; level < maxHeadingDepth; level++) {\n tableHeadingsRow = [];\n columns.forEach(({ heading: columnHeading = NO_HEADINGS, width }) => {\n const label = columnHeading[level] ?? \"\";\n if (heading && heading.label === label) {\n heading.width += width;\n } else {\n heading = { label, width } as TableHeading;\n tableHeadingsRow.push(heading);\n }\n });\n tableHeadings.push(tableHeadingsRow);\n }\n\n return tableHeadings;\n }\n return NO_HEADINGS;\n};\n\nexport const getColumnStyle = ({\n pin,\n // the 4 is `selectionEndSize`, unfortunate if we need to be passed it from cell\n // need to think about how to make this available\n pinnedOffset = pin === \"left\" ? 0 : 4,\n width,\n}: RuntimeColumnDescriptor) =>\n pin === \"left\"\n ? ({\n left: pinnedOffset,\n width,\n \"--pin-width\": `${pinnedOffset + width - 3}px`,\n } as CSSProperties)\n : pin === \"right\"\n ? ({\n right: pinnedOffset,\n width,\n \"--pin-width\": `${pinnedOffset + width}px`,\n } as CSSProperties)\n : { width };\n\nexport const setAggregations = (\n aggregations: VuuAggregation[],\n column: ColumnDescriptor,\n aggType: VuuAggType,\n) => {\n return aggregations\n .filter((agg) => agg.column !== column.name)\n .concat({ column: column.name, aggType });\n};\n\nexport type ColumnGroupProps = {\n columns: RuntimeColumnDescriptor[];\n groupBy: VuuGroupBy;\n confirmed?: boolean;\n availableWidth: number;\n};\n\nexport const applyGroupByToColumns = (props: ColumnGroupProps) => {\n if (props.groupBy.length) {\n const [groupColumn, nonGroupedColumns] = extractGroupColumn(props);\n if (groupColumn) {\n return [groupColumn as RuntimeColumnDescriptor].concat(nonGroupedColumns);\n }\n } else if (props.columns[0]?.isGroup) {\n return flattenColumnGroup(props.columns);\n }\n return props.columns;\n};\n\nexport const applySortToColumns = (\n columns: RuntimeColumnDescriptor[],\n sort: VuuSort,\n) =>\n columns.map((column) => {\n const sorted = getSortType(column, sort);\n if (sorted !== undefined) {\n return {\n ...column,\n sorted,\n };\n } else if (column.sorted) {\n return {\n ...column,\n sorted: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const removeSort = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => (col.sorted ? { ...col, sorted: undefined } : col));\n\nexport const existingSort = (columns: RuntimeColumnDescriptor[]) =>\n columns.some((col) => col.sorted);\n\nconst getSortType = (column: ColumnDescriptor, { sortDefs }: VuuSort) => {\n const sortDef = sortDefs.find((sortCol) => sortCol.column === column.name);\n if (sortDef) {\n return sortDefs.length > 1\n ? (sortDefs.indexOf(sortDef) + 1) * (sortDef.sortType === \"A\" ? 1 : -1)\n : sortDef.sortType;\n }\n};\n\n// Calculated columns have the formal 'name:datatype:expression'\nexport const getColumnName = (name: string) => {\n const pos = name.indexOf(\":\");\n if (pos === -1) {\n return name;\n } else {\n return name.slice(0, pos);\n }\n};\n\nexport const getColumnLabel = (column: ColumnDescriptor) => {\n if (column.label) {\n return column.label;\n } else if (isCalculatedColumn(column.name)) {\n const { name } = getCalculatedColumnDetails(column);\n // calculated column name follows pattern: `name:serverDataType:expression`\n return name ?? column.name;\n } else {\n return column.name;\n }\n};\n\nexport const findColumn = (\n columns: RuntimeColumnDescriptor[],\n columnName: string,\n): RuntimeColumnDescriptor | undefined => {\n const column = columns.find((col) => col.name === columnName);\n if (column) {\n return column;\n } else {\n const groupColumn = columns.find(\n (col) => col.isGroup,\n ) as GroupColumnDescriptor;\n if (groupColumn) {\n return findColumn(groupColumn.columns, columnName);\n }\n }\n};\n\nexport function updateColumn<T extends ColumnDescriptor>(\n columns: T[],\n column: T,\n): T[];\nexport function updateColumn(\n columns: RuntimeColumnDescriptor[],\n column: string,\n options: Partial<ColumnDescriptor>,\n): RuntimeColumnDescriptor[];\nexport function updateColumn(\n columns: RuntimeColumnDescriptor[],\n column: string | RuntimeColumnDescriptor,\n options?: Partial<ColumnDescriptor>,\n) {\n const targetColumn =\n typeof column === \"string\"\n ? columns.find((col) => col.name === column)\n : column;\n if (targetColumn) {\n const replacementColumn = options\n ? { ...targetColumn, ...options }\n : targetColumn;\n return columns.map((col) =>\n col.name === replacementColumn.name ? replacementColumn : col,\n );\n } else {\n throw Error(\"column-utils.replaceColun, column not found\");\n }\n}\n\nexport const toDataSourceColumns = (column: ColumnDescriptor) => column.name;\n\nexport const dataSourceRowToDataRowDto = (\n row: DataSourceRow,\n columnMap: ColumnMap,\n): VuuDataRowDto => {\n return Object.entries(columnMap).reduce<VuuDataRowDto>(\n (map, [colName, key]) => {\n map[colName] = row[key];\n return map;\n },\n {},\n );\n};\n\nexport const isDataLoading = (columns: RuntimeColumnDescriptor[]) => {\n return isGroupColumn(columns[0]) && columns[0].groupConfirmed === false;\n};\n\nexport const getColumnsInViewport = (\n columns: RuntimeColumnDescriptor[],\n vpStart: number,\n vpEnd: number,\n): [RuntimeColumnDescriptor[], number] => {\n const visibleColumns: RuntimeColumnDescriptor[] = [];\n let preSpan = 0;\n let rightPinnedOnly = false;\n\n for (let columnOffset = 0, i = 0; i < columns.length; i++) {\n const column = columns[i];\n // TODO if we were to measure the pinned columns first,\n // might be able to save rendering some columns ?\n if (column.hidden) {\n continue;\n } else if (rightPinnedOnly) {\n if (column.pin === \"right\") {\n visibleColumns.push(column);\n }\n } else if (columnOffset + column.width < vpStart) {\n if (column.pin === \"left\") {\n visibleColumns.push(column);\n } else if (\n columnOffset + column.width + columns[i + 1]?.width >\n vpStart\n ) {\n visibleColumns.push(column);\n } else {\n preSpan += column.width;\n }\n } else if (columnOffset > vpEnd) {\n rightPinnedOnly = true;\n } else {\n visibleColumns.push(column);\n }\n columnOffset += column.width;\n }\n\n return [visibleColumns, preSpan];\n};\n\nexport const isNotHidden = (column: RuntimeColumnDescriptor) =>\n column.hidden !== true;\n\nexport const visibleColumnAtIndex = (\n columns: RuntimeColumnDescriptor[],\n index: number,\n) => {\n if (columns.every(isNotHidden)) {\n return columns[index];\n } else {\n return columns.filter(isNotHidden).at(index);\n }\n};\n\nconst { DEPTH, IS_LEAF } = metadataKeys;\n\nexport const getGroupIcon = (\n columns: RuntimeColumnDescriptor[],\n row: DataSourceRow,\n): string | undefined => {\n const { [DEPTH]: depth, [IS_LEAF]: isLeaf } = row;\n // Depth can be greater tha group columns when we have just removed a column from groupby\n // but new data has not yet been received.\n if (isLeaf || depth > columns.length) {\n return undefined;\n } else if (depth === 0) {\n return undefined;\n } else {\n const { getIcon } = columns[depth - 1];\n return getIcon?.(row);\n }\n};\n\nexport const getGroupValue = (\n columns: RuntimeColumnDescriptor[],\n row: DataSourceRow,\n columnMap: ColumnMap,\n): string | null => {\n const { [DEPTH]: depth, [IS_LEAF]: isLeaf } = row;\n // Depth can be greater tha group columns when we have just removed a column from groupby\n // but new data has not yet been received.\n if (isLeaf || depth > columns.length) {\n return null;\n } else if (depth === 0) {\n return \"$root\";\n } else {\n // offset allows for $root\n const { name, valueFormatter } = columns[depth - 1];\n\n const value = valueFormatter(row[columnMap[name]]);\n return value;\n }\n};\n\nexport const getDefaultColumnType = (\n serverDataType?: VuuColumnDataType,\n): DataValueTypeSimple => {\n switch (serverDataType) {\n case \"int\":\n case \"long\":\n case \"double\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n default:\n return \"string\";\n }\n};\n\nexport const updateColumnFormatting = <\n T extends ColumnDescriptor = ColumnDescriptor,\n>(\n column: T,\n formatting: ColumnTypeFormatting,\n): T => {\n const { serverDataType, type = getDefaultColumnType(serverDataType) } =\n column;\n\n if (isTypeDescriptor(type)) {\n return { ...column, type: { ...type, formatting } };\n } else {\n return { ...column, type: { name: type, formatting } };\n }\n};\n\nexport function updateColumnType<T extends ColumnDescriptor = ColumnDescriptor>(\n column: T,\n type: DataValueTypeSimple,\n): T {\n return isTypeDescriptor(column.type)\n ? { ...column, type: { ...column.type, name: type } }\n : { ...column, type };\n}\n\nexport const updateColumnRenderProps = <\n T extends ColumnDescriptor = ColumnDescriptor,\n>(\n column: T,\n renderer: ColumnTypeRendering,\n): T => {\n const { serverDataType, type = getDefaultColumnType(serverDataType) } =\n column;\n\n if (isTypeDescriptor(type)) {\n return {\n ...column,\n type: {\n ...type,\n // TODO do we need to preserve any existing attributes from renderer ?\n renderer,\n },\n };\n } else {\n return { ...column, type: { name: type, renderer } };\n }\n};\n\nconst NO_TYPE_SETTINGS = {};\nexport const getTypeFormattingFromColumn = (\n column: ColumnDescriptor,\n): ColumnTypeFormatting => {\n if (isTypeDescriptor(column.type)) {\n return column.type.formatting ?? NO_TYPE_SETTINGS;\n } else {\n return NO_TYPE_SETTINGS;\n }\n};\n\n/**\n * Return a filter predicate that will reject columns, names of which\n * are not in provided list. Exception made for columns explicitly\n * configured as client columns.\n */\nexport const subscribedOnly =\n (columnNames?: string[]) => (column: ColumnDescriptor) =>\n column.source === \"client\" || columnNames?.includes(column.name);\n\nexport const addColumnToSubscribedColumns = (\n subscribedColumns: ColumnDescriptor[],\n availableColumns: SchemaColumn[],\n columnName: string,\n) => {\n const byColName =\n (n = columnName) =>\n (column: { name: string }) =>\n column.name === n;\n if (subscribedColumns.findIndex(byColName()) !== -1) {\n throw Error(\n `column-utils, addColumnToSubscribedColumns column ${columnName} is already subscribed`,\n );\n }\n const indexOfAvailableColumn = availableColumns.findIndex(byColName());\n if (indexOfAvailableColumn === -1) {\n throw Error(\n `column-utils, addColumnToSubscribedColumns column ${columnName} is not available`,\n );\n }\n\n const newColumn = {\n ...availableColumns[indexOfAvailableColumn],\n } as ColumnDescriptor;\n\n // find the nearest preceding available column which is subscribed\n let index = -1;\n for (let i = indexOfAvailableColumn - 1; i >= 0; i--) {\n const { name } = availableColumns[i];\n index = subscribedColumns.findIndex(byColName(name));\n if (index !== -1) {\n break;\n }\n }\n\n if (index === -1) {\n return [newColumn].concat(subscribedColumns);\n } else {\n const results: ColumnDescriptor[] = [];\n for (let i = 0; i < subscribedColumns.length; i++) {\n results.push(subscribedColumns[i]);\n if (i === index) {\n results.push(newColumn);\n index = Number.MAX_SAFE_INTEGER;\n }\n }\n return results;\n }\n};\n\nconst CalculatedColumnPattern = /.*:.*:.*/;\n\nexport const isCalculatedColumn = (columnName?: string) =>\n columnName !== undefined && CalculatedColumnPattern.test(columnName);\n\nexport const getCalculatedColumnDetails = (\n column: ColumnDescriptor,\n): Partial<CalculatedColumn> => {\n if (isCalculatedColumn(column.name)) {\n const [name, serverDataType, expression] = column.name.split(/:=?/);\n if (serverDataType && !isVuuColumnDataType(serverDataType)) {\n throw Error(\n `column-utils, getCalculatedColumnDetails ${serverDataType} is not valid type for column ${column.name}`,\n );\n }\n return {\n name: name ?? \"\",\n expression: expression ?? \"\",\n serverDataType: isVuuColumnDataType(serverDataType)\n ? serverDataType\n : undefined,\n };\n } else {\n throw Error(`column.name is nor a calculated column`);\n }\n};\n\nexport const setCalculatedColumnName = (\n column: ColumnDescriptor,\n name: string,\n): ColumnDescriptor => {\n const [, type, expression] = column.name.split(\":\");\n return {\n ...column,\n name: `${name}:${type}:${expression}`,\n };\n};\n\nexport const setCalculatedColumnType = (\n column: ColumnDescriptor,\n type: string,\n): ColumnDescriptor => {\n const [name, , expression] = column.name.split(\":\");\n return {\n ...column,\n name: `${name}:${type}:${expression}`,\n };\n};\n\n// TODO should we validate the expression here ?\nexport const setCalculatedColumnExpression = (\n column: ColumnDescriptor,\n expression: string,\n): ColumnDescriptor => {\n const [name, type] = column.name.split(\":\");\n return {\n ...column,\n name: `${name}:${type}:=${expression}`,\n };\n};\n\nexport const moveColumnTo = (\n columns: ColumnDescriptor[],\n column: ColumnDescriptor,\n newIndex: number,\n) => {\n const index = columns.findIndex((col) => col.name === column.name);\n return moveItem(columns, index, newIndex);\n};\n\nexport function replaceColumn<\n C extends ColumnDescriptor = RuntimeColumnDescriptor,\n>(columns: C[], column: C) {\n return columns.map((col) => (col.name === column.name ? column : col));\n}\n\nexport const applyDefaultColumnConfig = (\n { columns, table }: TableSchema,\n getDefaultColumnConfig?: DefaultColumnConfiguration,\n) => {\n if (typeof getDefaultColumnConfig === \"function\") {\n return columns.map((column) => {\n const config = getDefaultColumnConfig(table.table, column.name);\n if (config) {\n return {\n ...column,\n ...config,\n };\n } else {\n return column;\n }\n });\n } else {\n return columns;\n }\n};\n\nexport type columnOptions = {\n availableWidth?: number;\n columnLayout?: ColumnLayout;\n defaultWidth?: number;\n defaultMinWidth?: number;\n defaultMaxWidth?: number;\n defaultFlex?: number;\n};\n\ntype ColumnLayoutOptions = Pick<\n columnOptions,\n \"defaultMinWidth\" | \"defaultMaxWidth\" | \"defaultWidth\"\n>;\n\ninterface StaticColumnLayoutOptions extends ColumnLayoutOptions {\n columnLayout: \"manual\" | \"static\";\n}\ninterface FitColumnLayoutOptions extends ColumnLayoutOptions {\n availableWidth?: number;\n columnLayout: \"fit\";\n}\n\ntype ColumnStats = {\n flexCount: number;\n totalMinWidth: number;\n totalMaxWidth: number;\n totalWidth: number;\n};\n\nconst measureColumns = (\n columns: RuntimeColumnDescriptor[],\n defaultMaxWidth: number,\n defaultMinWidth: number,\n) =>\n columns.reduce<ColumnStats>(\n (aggregated, column) => {\n if (column.hidden !== true) {\n aggregated.totalMinWidth += column.minWidth ?? defaultMinWidth;\n aggregated.totalMaxWidth += column.maxWidth ?? defaultMaxWidth;\n aggregated.totalWidth += column.width;\n aggregated.flexCount += column.flex ?? 0;\n }\n return aggregated;\n },\n { totalMinWidth: 0, totalMaxWidth: 0, totalWidth: 0, flexCount: 0 },\n );\n\nexport function applyWidthToColumns(\n columns: RuntimeColumnDescriptor[],\n options: StaticColumnLayoutOptions | FitColumnLayoutOptions,\n): RuntimeColumnDescriptor[];\n\nexport function applyWidthToColumns(\n columns: RuntimeColumnDescriptor[],\n {\n availableWidth = 0,\n columnLayout = \"static\",\n defaultWidth = DEFAULT_COL_WIDTH,\n defaultMinWidth = DEFAULT_MIN_WIDTH,\n defaultMaxWidth = DEFAULT_MAX_WIDTH,\n }: // defaultFlex = DEFAULT_FLEX,\n columnOptions,\n): RuntimeColumnDescriptor[] {\n if (columnLayout === \"fit\") {\n const { totalMinWidth, totalMaxWidth, totalWidth, flexCount } =\n measureColumns(columns, defaultMaxWidth, defaultMinWidth);\n\n if (totalMaxWidth < availableWidth) {\n return assignMaxWidthToAll(columns, defaultMaxWidth);\n } else if (totalMinWidth > availableWidth) {\n return columns;\n } else if (totalWidth > availableWidth) {\n return shrinkColumnsToFitAvailableSpace(\n columns,\n availableWidth,\n totalWidth,\n defaultMinWidth,\n defaultWidth,\n flexCount,\n );\n } else if (totalWidth < availableWidth) {\n return stretchColumnsToFillAvailableSpace(\n columns,\n availableWidth,\n totalWidth,\n defaultMaxWidth,\n defaultWidth,\n );\n }\n }\n return columns;\n}\n\nconst assignMaxWidthToAll = (\n columns: RuntimeColumnDescriptor[],\n defaultMaxWidth: number,\n) => {\n return columns.map((column) => {\n const { maxWidth = defaultMaxWidth } = column;\n if (column.width === maxWidth) {\n return column;\n } else {\n return {\n ...column,\n width: maxWidth,\n };\n }\n });\n};\n\nconst shrinkColumnsToFitAvailableSpace = (\n columns: RuntimeColumnDescriptor[],\n availableWidth: number,\n totalWidth: number,\n defaultMinWidth: number,\n defaultWidth: number,\n flexCount: number,\n) => {\n const excessWidth = totalWidth - availableWidth;\n const inFlexMode = flexCount > 0;\n let excessWidthPerColumn = excessWidth / (flexCount || columns.length);\n let columnsNotYetAtMinWidth = columns.length;\n let unassignedExcess = 0;\n let newColumns = columns.map<RuntimeColumnDescriptor>((column) => {\n const {\n minWidth = defaultMinWidth,\n width = defaultWidth,\n flex = 0,\n } = column;\n if (inFlexMode && flex === 0) {\n return column;\n }\n const adjustedWidth = width - excessWidthPerColumn;\n if (adjustedWidth < minWidth) {\n columnsNotYetAtMinWidth -= 1;\n unassignedExcess += minWidth - adjustedWidth;\n return { ...column, width: minWidth };\n } else {\n return { ...column, width: adjustedWidth };\n }\n });\n if (unassignedExcess === 0) {\n return newColumns;\n } else {\n excessWidthPerColumn = unassignedExcess / columnsNotYetAtMinWidth;\n newColumns = newColumns.map((column) => {\n const adjustedWidth = column.width - excessWidthPerColumn;\n if (column.width !== column.minWidth) {\n return { ...column, width: adjustedWidth };\n } else {\n return column;\n }\n });\n return newColumns;\n }\n};\n\nconst hasFlex = ({ flex }: ColumnDescriptor) => typeof flex === \"number\";\n\nconst stretchColumnsToFillAvailableSpace = (\n columns: RuntimeColumnDescriptor[],\n availableWidth: number,\n totalWidth: number,\n defaultMaxWidth: number,\n defaultWidth: number,\n) => {\n let freeSpaceToBeFilled = availableWidth - totalWidth;\n let adjustedColumns = columns;\n\n const canGrow = ({\n width = defaultWidth,\n maxWidth = defaultMaxWidth,\n }: ColumnDescriptor) => width < maxWidth;\n\n while (freeSpaceToBeFilled > 0) {\n const flexCols = adjustedColumns.filter(\n (col) => hasFlex(col) && canGrow(col),\n );\n const columnsNotYetAtMaxWidth =\n flexCols.length || adjustedColumns.filter(canGrow).length;\n\n // THis deos not take flex correctly into account\n const additionalWidthPerColumn = Math.ceil(\n freeSpaceToBeFilled / columnsNotYetAtMaxWidth,\n );\n adjustedColumns = columns.map((column) => {\n const {\n maxWidth = defaultMaxWidth,\n width = defaultWidth,\n flex = 0,\n } = column;\n if (flexCols.length > 0 && flex === 0) {\n return column;\n }\n\n // we rounded the additionalWidthPerColumn up, so make sure\n // we don't over-assign\n const adjustmentAmount = Math.min(\n additionalWidthPerColumn,\n freeSpaceToBeFilled,\n );\n const adjustedWidth = width + adjustmentAmount;\n if (adjustedWidth > maxWidth) {\n freeSpaceToBeFilled -= adjustedWidth - maxWidth;\n return { ...column, width: maxWidth };\n } else {\n freeSpaceToBeFilled -= adjustmentAmount;\n return { ...column, width: adjustedWidth };\n }\n });\n }\n return adjustedColumns;\n};\n\n/**\n * A memo compare function for cell renderers. Can be used to suppress\n * render where column and data are both unchanged. Avoids render\n * when row changes, where changes in row are unrelated to this cell.\n * Suitabnle only for readonly cell renderers. See below for editable\n * cell renderers.\n */\nexport const dataAndColumnUnchanged = (\n p: TableCellRendererProps,\n p1: TableCellRendererProps,\n) =>\n p.column === p1.column &&\n p.column.valueFormatter(p.row[p.columnMap[p.column.name]]) ===\n p1.column.valueFormatter(p1.row[p1.columnMap[p1.column.name]]);\n\n/**\n * A memo compare function for cell renderers. Can be used to suppress\n * render where column, row key and data are all unchanged. Avoids render\n * when row changes, where changes in row are unrelated to this cell.\n * Suitable for editable cells. Including key in compare is not strictly\n * necessary for rendering, but it is important in the event that user\n * edits data - ensures we never have a stale key.\n */\nexport const dataColumnAndKeyUnchanged = (\n p: TableCellRendererProps,\n p1: TableCellRendererProps,\n) =>\n p.column === p1.column &&\n p.row[KEY] === p1.row[KEY] &&\n p.column.valueFormatter(p.row[p.columnMap[p.column.name]]) ===\n p1.column.valueFormatter(p1.row[p1.columnMap[p1.column.name]]);\n\nexport const toColumnName = (column: ColumnDescriptor) => column.name;\nexport const isStringColumn = (column: ColumnDescriptor) =>\n column.serverDataType === \"string\";\n\n/**\n * Given an ordered list of column names, return column items in same order\n */\nexport const reorderColumnItems = <\n T extends { name: string } = { name: string },\n>(\n columnItems: Array<T>,\n orderedNames: string[],\n): T[] => {\n const columns: T[] = [];\n for (const name of orderedNames) {\n const columnItem = columnItems.find((c) => c.name === name);\n if (columnItem) {\n columns.push(columnItem);\n }\n }\n return columns;\n};\n","export const getCookieValue = (name: string): string | number | undefined => {\n if (globalThis.document?.cookie !== undefined) {\n return globalThis.document.cookie\n .split(\"; \")\n .find((row) => row.startsWith(`${name}=`))\n ?.split(\"=\")[1];\n }\n};\n","import { DataSourceRow, EditRuleValidator } from \"@vuu-ui/vuu-data-types\";\nimport { VuuColumnDataType } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n ColumnDescriptor,\n ColumnDescriptorCustomRenderer,\n ColumnTypeRendering,\n HeaderCellProps,\n TableCellRendererProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport { FunctionComponent as FC, HTMLAttributes } from \"react\";\nimport {\n ColumnMap,\n hasCustomRenderer,\n isColumnTypeRenderer,\n isTypeDescriptor,\n} from \"./column-utils\";\n\nexport interface CellConfigPanelProps extends HTMLAttributes<HTMLDivElement> {\n onConfigChange: () => void;\n}\n\nexport type PropertyChangeHandler = (\n propertyName: string,\n propertyValue: string | number | boolean,\n) => void;\n\nexport type ColumnRenderPropsChangeHandler = (\n renderProps: ColumnTypeRendering,\n) => void;\n\nexport interface ConfigurationEditorProps {\n column: ColumnDescriptorCustomRenderer;\n onChangeRendering: ColumnRenderPropsChangeHandler;\n}\n\nexport type RowClassNameGenerator = (\n row: DataSourceRow,\n columnMap: ColumnMap,\n) => string | undefined;\n\nexport type RowClassGenerator = {\n id: string;\n fn: RowClassNameGenerator;\n};\n\nexport type ConfigEditorComponent = FC<CellConfigPanelProps>;\n\nconst containersSet = new Set<string>();\nconst viewsSet = new Set<string>();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst layoutComponentsMap = new Map<string, FC<any>>();\nconst cellRenderersMap = new Map<string, FC<TableCellRendererProps>>();\nconst columnHeaderRenderersMap = new Map<\n string,\n FC<Omit<HeaderCellProps, \"id\" | \"index\">>\n>();\nconst configEditorsMap = new Map<string, FC<ConfigurationEditorProps>>();\nconst cellConfigPanelsMap = new Map<string, ConfigEditorComponent>();\nconst editRuleValidatorsMap = new Map<string, EditRuleValidator>();\nconst optionsMap = new Map<string, CellRendererOptions>();\nconst rowClassGeneratorsMap = new Map<string, RowClassGenerator>();\n\nexport type layoutComponentType = \"container\" | \"view\";\n\nexport type ComponentType =\n | layoutComponentType\n | \"cell-renderer\"\n | \"cell-config-panel\"\n | \"column-header-content-renderer\"\n | \"column-header-label-renderer\"\n | \"component\"\n | \"data-edit-validator\"\n | \"row-class-generator\";\n\ntype CellRendererOptions = {\n configEditor?: string;\n description?: string;\n label?: string;\n serverDataType?: VuuColumnDataType | VuuColumnDataType[] | \"json\" | \"private\";\n userCanAssign?: boolean;\n};\nexport interface CellRendererDescriptor extends CellRendererOptions {\n name: string;\n}\n\nconst isTypeCompatible = (\n rendererType:\n | VuuColumnDataType\n | (VuuColumnDataType | \"json\")[]\n | \"json\"\n | \"private\"\n | undefined,\n serverDataType: VuuColumnDataType | \"json\",\n) => {\n if (rendererType === undefined || rendererType === \"private\") {\n return true;\n } else if (Array.isArray(rendererType)) {\n return rendererType.includes(serverDataType);\n } else {\n return rendererType === serverDataType;\n }\n};\n\n/**\n * This check is performed during construction of UI from JSON. If component\n * is not registered, it will log a warning.\n */\nexport const isContainer = (componentType: string) => {\n return containersSet.has(componentType);\n};\n\n/**\n * This check is performed during construction of UI from JSON. If component\n * is not registered, it will log a warning.\n */\nexport const isView = (componentType: string) => {\n return viewsSet.has(componentType);\n};\n\n/**\n * This check is performed during construction of UI from JSON. If component\n * is not registered, it will log a warning.\n */\nexport const isLayoutComponent = (\n componentType: string,\n): componentType is layoutComponentType =>\n isContainer(componentType) || isView(componentType);\n\nconst isCellRenderer = (\n type: ComponentType,\n component: unknown,\n): component is FC<TableCellRendererProps> =>\n component !== undefined && type === \"cell-renderer\";\n\nconst isColumnHeaderContentRenderer = (\n type: ComponentType,\n component: unknown,\n): component is FC<Omit<HeaderCellProps, \"id\" | \"index\">> =>\n type === \"column-header-content-renderer\";\nconst isColumnHeaderLabelRenderer = (\n type: ComponentType,\n component: unknown,\n): component is FC<Omit<HeaderCellProps, \"id\" | \"index\">> =>\n type === \"column-header-label-renderer\";\n\nconst isCellConfigPanel = (\n type: ComponentType,\n component: unknown,\n): component is FC<CellConfigPanelProps> => type === \"cell-config-panel\";\n\nconst isEditRuleValidator = (\n type: ComponentType,\n component: unknown,\n): component is EditRuleValidator => type === \"data-edit-validator\";\n\nconst isRowClassGenerator = (\n type: ComponentType,\n component: unknown,\n): component is RowClassGenerator => type === \"row-class-generator\";\n\nexport function registerComponent(\n componentName: string,\n component: RowClassGenerator,\n componentType: \"row-class-generator\",\n options?: CellRendererOptions,\n): void;\nexport function registerComponent(\n componentName: string,\n component: EditRuleValidator,\n componentType: \"data-edit-validator\",\n options?: CellRendererOptions,\n): void;\nexport function registerComponent(\n componentName: string,\n // unknown won't work for us here, we'll get the default children\n // definition for FC which conflicts with some components props.\n // VoidFunctionComponent doesn't help either\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n component: FC<any>,\n componentType: Omit<\n ComponentType,\n \"data-edit-validator\" | \"row-class-generator\"\n >,\n options?: CellRendererOptions,\n): void;\nexport function registerComponent(\n componentName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n component: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n componentType: any,\n options?: CellRendererOptions,\n): void {\n if (\n componentType === \"container\" ||\n componentType === \"view\" ||\n componentType === \"component\"\n ) {\n layoutComponentsMap.set(componentName, component);\n if (componentType === \"container\") {\n containersSet.add(componentName);\n } else if (componentType === \"view\") {\n viewsSet.add(componentName);\n }\n } else if (isCellRenderer(componentType, component)) {\n cellRenderersMap.set(componentName, component);\n } else if (isColumnHeaderContentRenderer(componentType, component)) {\n columnHeaderRenderersMap.set(componentName, component);\n } else if (isColumnHeaderLabelRenderer(componentType, component)) {\n columnHeaderRenderersMap.set(componentName, component);\n } else if (isCellConfigPanel(componentType, component)) {\n cellConfigPanelsMap.set(componentName, component);\n } else if (isEditRuleValidator(componentType, component)) {\n editRuleValidatorsMap.set(componentName, component);\n } else if (isRowClassGenerator(componentType, component)) {\n rowClassGeneratorsMap.set(componentName, component);\n }\n if (options) {\n optionsMap.set(componentName, options);\n }\n}\n\nexport const registerConfigurationEditor = (\n componentName: string,\n configurationEditor: FC<ConfigurationEditorProps>,\n) => {\n configEditorsMap.set(componentName, configurationEditor);\n};\n\n// This is invoked by settings panel to allow users to assign\n// non-default, cell renderers. Ignore renderers registered\n// with the attribute userCanAssign = false\nexport const getRegisteredCellRenderers = (\n serverDataType?: VuuColumnDataType | \"json\",\n): CellRendererDescriptor[] => {\n const rendererNames = Array.from(cellRenderersMap.keys());\n const allRenderers = rendererNames\n .map<CellRendererDescriptor>((name) => ({\n name,\n ...(optionsMap.get(name) as CellRendererOptions),\n }))\n .filter(({ userCanAssign }) => userCanAssign !== false);\n if (serverDataType) {\n return allRenderers.filter((renderer) =>\n isTypeCompatible(renderer.serverDataType, serverDataType),\n );\n } else {\n return allRenderers;\n }\n};\n\nexport const getLayoutComponent = (componentName: string) => {\n const layoutComponent = layoutComponentsMap.get(componentName);\n if (layoutComponent) {\n return layoutComponent;\n } else {\n throw Error(\n `layout component ${componentName} not found in ComponentRegistry`,\n );\n }\n};\n\nexport const getCellRendererOptions = (renderName: string) =>\n optionsMap.get(renderName);\n\nexport function getCellRenderer(column: ColumnDescriptor) {\n return dataCellRenderer(column);\n}\nexport function getColumnHeaderContentRenderer(column: ColumnDescriptor) {\n if (column.colHeaderContentRenderer) {\n return columnHeaderRenderersMap.get(column.colHeaderContentRenderer);\n }\n}\nexport function getColumnHeaderLabelRenderer(column: ColumnDescriptor) {\n if (column.colHeaderLabelRenderer) {\n return columnHeaderRenderersMap.get(column.colHeaderLabelRenderer);\n }\n}\nexport const getRowClassNameGenerator = (generatorId: string) =>\n rowClassGeneratorsMap.get(generatorId);\n\nexport function getConfigurationEditor(configEditor = \"\") {\n return configEditorsMap.get(configEditor);\n}\n\nexport function getCellConfigPanelRenderer(name: string) {\n return cellConfigPanelsMap.get(name);\n}\n\nexport function getEditRuleValidator(name: string) {\n return editRuleValidatorsMap.get(name);\n}\n\nfunction dataCellRenderer(column: ColumnDescriptor) {\n if (column.serverDataType === \"boolean\" && !hasCustomRenderer(column.type)) {\n return cellRenderersMap.get(\"checkbox-cell\");\n } else if (column.editable && !hasCustomRenderer(column.type)) {\n // we can only offer a text input edit as a generic editor.\n // If a more specialised editor is required, user must configure\n // it in column config.\n return cellRenderersMap.get(\"input-cell\");\n } else if (\n isTypeDescriptor(column.type) &&\n isColumnTypeRenderer(column.type.renderer)\n ) {\n return cellRenderersMap.get(column.type.renderer?.name);\n } else if (column.serverDataType === \"boolean\") {\n return cellRenderersMap.get(\"checkbox-cell\");\n }\n}\n","import { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\n\ninterface FromToRange {\n from: number;\n to: number;\n}\n\nexport interface Range extends VuuRange {\n equals: (vuuRange: VuuRange) => boolean;\n firstRowInViewport: number;\n lastRowInViewport: number;\n renderBufferSize?: number;\n reset: Range;\n rowCount?: number;\n}\n\nexport interface RangeOptions {\n renderBufferSize?: number;\n rowCount?: number;\n}\n\nconst defaultRangeOptions = {\n renderBufferSize: 0,\n rowCount: -1,\n};\nclass RangeImpl implements Range {\n #baseFrom: number;\n #renderBufferSize = 0;\n #rowCount = -1;\n #baseTo: number;\n\n // We have to keep these as simple public properties (not getters) so they survive structuredClone\n public from = 0;\n public to = 0;\n\n constructor(\n /** Index position of first visible row in viewport */\n from: number,\n /** Index position of last visible row in viewport + 1 */\n to: number,\n rangeOptions: RangeOptions = defaultRangeOptions,\n ) {\n this.#baseFrom = from;\n this.#baseTo = to;\n this.renderBufferSize =\n rangeOptions.renderBufferSize ?? defaultRangeOptions.renderBufferSize;\n this.rowCount = rangeOptions.rowCount ?? defaultRangeOptions.rowCount;\n }\n\n get firstRowInViewport() {\n return this.#baseFrom + 1;\n }\n\n get lastRowInViewport() {\n if (this.#rowCount > 0) {\n return Math.min(this.#baseTo, this.#rowCount);\n } else {\n return this.#baseTo;\n }\n }\n\n get renderBufferSize() {\n return this.#renderBufferSize;\n }\n\n set renderBufferSize(value: number) {\n this.#renderBufferSize = value;\n this.from = Math.max(0, this.#baseFrom - value);\n if (this.#rowCount > 0) {\n this.to = Math.max(this.#baseTo + this.#renderBufferSize, this.#rowCount);\n } else {\n this.to = this.#baseTo + this.#renderBufferSize;\n }\n }\n\n get rowCount() {\n return this.#rowCount;\n }\n\n set rowCount(value: number) {\n this.#rowCount = value;\n if (value > 0) {\n this.to = Math.min(this.#baseTo + this.#renderBufferSize, value);\n } else {\n this.to = this.#baseTo + this.#renderBufferSize;\n }\n }\n\n get reset() {\n return new RangeImpl(0, this.#baseTo - this.#baseFrom, {\n rowCount: this.#rowCount,\n renderBufferSize: this.#renderBufferSize,\n });\n }\n\n equals(range: VuuRange) {\n return range.from === this.#baseFrom && range.to === this.#baseTo;\n }\n\n toJson() {\n return {\n from: this.from,\n to: this.to,\n baseFrom: this.#baseFrom,\n baseTo: this.#baseTo,\n renderBufferSize: this.#renderBufferSize,\n rowCount: this.#rowCount,\n };\n }\n}\n\nexport const Range = (\n from: number,\n to: number,\n rangeOptions?: RangeOptions,\n): Range => new RangeImpl(from, to, rangeOptions);\n\nexport const NULL_RANGE = Range(0, 0);\n\nexport function getFullRange(\n { from, to }: VuuRange,\n bufferSize = 0,\n totalRowCount: number = Number.MAX_SAFE_INTEGER,\n): FromToRange {\n if (from === 0 && to === 0) {\n return { from, to };\n } else if (bufferSize === 0) {\n if (totalRowCount < from) {\n return { from: 0, to: 0 };\n } else {\n return { from, to: Math.min(to, totalRowCount) };\n }\n } else if (from === 0) {\n return { from, to: Math.min(to + bufferSize, totalRowCount) };\n } else {\n const shortfallBefore = from - bufferSize < 0;\n const shortfallAfter = totalRowCount - (to + bufferSize) < 0;\n if (shortfallBefore && shortfallAfter) {\n return { from: 0, to: totalRowCount };\n } else if (shortfallBefore) {\n return { from: 0, to: to + bufferSize };\n } else if (shortfallAfter) {\n return {\n from: Math.max(0, from - bufferSize),\n to: totalRowCount,\n };\n } else {\n return { from: from - bufferSize, to: to + bufferSize };\n }\n }\n}\n\nexport const withinRange = (value: number, { from, to }: VuuRange) =>\n value >= from && value < to;\n\n// export const rangeOverlap = (\n// { from: from1, to: to1 }: VuuRange,\n// { from: from2, to: to2 }: VuuRange\n// ): VuuRange => {\n// return from2 >= to1 || to2 < from1\n// ? { from: 0, to: 0 }\n// : { from: Math.max(from2, from1), to: Math.min(to2, to1) };\n// };\n\nexport const rangeNewItems = (\n { from: from1, to: to1 }: VuuRange,\n newRange: VuuRange,\n): VuuRange => {\n const { from: from2, to: to2 } = newRange;\n const noOverlap = from2 >= to1 || to2 <= from1;\n const newFullySubsumesOld = from2 < from1 && to2 > to1;\n return noOverlap || newFullySubsumesOld\n ? newRange\n : to2 > to1\n ? { from: to1, to: to2 }\n : { from: from2, to: from1 };\n};\n\nexport class WindowRange {\n public from: number;\n public to: number;\n\n constructor(from: number, to: number) {\n this.from = from;\n this.to = to;\n }\n\n public isWithin(index: number) {\n return withinRange(index, this);\n }\n\n //find the overlap of this range and a new one\n public overlap(from: number, to: number): [number, number] {\n return from >= this.to || to < this.from\n ? [0, 0]\n : [Math.max(from, this.from), Math.min(to, this.to)];\n }\n\n public copy(): WindowRange {\n return new WindowRange(this.from, this.to);\n }\n}\n","import { WindowRange } from \"./range-utils\";\nimport { metadataKeys } from \"./column-utils\";\n\nexport type DataItem = string | number | boolean;\nexport type DataRow = [\n /** index */\n number,\n /** render index */\n number,\n /** isLeaf */\n boolean,\n /** isExpanded */\n boolean,\n /** depth */\n number,\n /** child count */\n number,\n /** key */\n string,\n /** selected */\n number,\n /** data values */\n ...DataItem[]\n];\nexport type RangeLike = { from: number; to: number };\n\nconst { KEY } = metadataKeys;\n\n// const log = (message: string) =>\n// console.log(`%c[DataWindow] ${message}`, \"color: purple;font-weight: bold;\");\nexport class DataWindow {\n private range: WindowRange;\n public data: DataRow[];\n public rowCount = 0;\n constructor({ from, to }: RangeLike) {\n this.range = new WindowRange(from, to);\n //internal data is always 0 based, we add range.from to determine an offset\n this.data = new Array(to - from);\n // window.dataWindow = this.data;\n // log(`constructor initial range ${from} - ${to}`);\n }\n\n setRowCount = (rowCount: number) => {\n // log(`rowCount => ${rowCount}`);\n if (rowCount < this.data.length) {\n this.data.length = rowCount;\n }\n this.rowCount = rowCount;\n };\n\n // return true if existing row was updated\n add(data: DataRow) {\n const [index] = data;\n if (this.isWithinRange(index)) {\n const internalIndex = index - this.range.from;\n const isUpdate = this.data[internalIndex] !== undefined;\n this.data[internalIndex] = data;\n return isUpdate;\n } else {\n return false;\n }\n }\n\n getAtIndex(index: number) {\n return this.range.isWithin(index) &&\n this.data[index - this.range.from] != null\n ? this.data[index - this.range.from]\n : undefined;\n }\n\n getByKey(key: string) {\n return this.data.find((row) => row[KEY] === key);\n }\n\n isWithinRange(index: number) {\n return this.range.isWithin(index) && index <= this.rowCount;\n }\n\n setRange(from: number, to: number) {\n // log(`setRange ${from} ${to}`);\n if (from !== this.range.from || to !== this.range.to) {\n const [overlapFrom, overlapTo] = this.range.overlap(from, to);\n const newData = new Array(to - from);\n for (let i = overlapFrom; i < overlapTo; i++) {\n const data = this.getAtIndex(i);\n if (data) {\n const index = i - from;\n newData[index] = data;\n }\n }\n this.data = newData;\n this.range.from = from;\n this.range.to = to;\n }\n }\n\n hasData(from: number, to: number) {\n const offset = this.range.from;\n const start = from - offset;\n const end = Math.min(to - offset - 1, this.rowCount - 1);\n return this.data[start] !== undefined && this.data[end] !== undefined;\n }\n\n getData(from: number, to: number): any[] {\n const { from: clientFrom } = this.range;\n const startOffset = Math.max(0, from - clientFrom);\n const endOffset = Math.min(to - clientFrom, this.rowCount ?? to);\n return this.data.slice(startOffset, endOffset);\n }\n}\n","export type orientationType = \"horizontal\" | \"vertical\";\n\ntype measureProp = keyof DOMRect;\ntype measureType = Record<string, measureProp>;\ntype measuresType = Record<orientationType, measureType>;\n\nexport const MEASURES: measuresType = {\n horizontal: {\n positionProp: \"left\",\n sizeProp: \"width\",\n },\n vertical: {\n positionProp: \"top\",\n sizeProp: \"height\",\n },\n};\n","export const importCSS = async (path: string) => {\n const container = new CSSStyleSheet();\n return fetch(path)\n .then((x) => x.text())\n .then((x) => container.replace(x));\n};\n","export type valueChangeDirection = \"up1\" | \"up2\" | \"down1\" | \"down2\" | \"\";\n\nexport const UP1 = \"up1\";\nexport const UP2 = \"up2\";\nexport const DOWN1 = \"down1\";\nexport const DOWN2 = \"down2\";\n\nconst decimalPattern = /^-?[0-9]*\\.[0-9]+$/;\n\nexport const stringIsValidInt = (val: string) =>\n parseInt(val, 10).toString() === val;\n\nexport const stringIsValidDecimal = (val: string) =>\n stringIsValidInt(val) || decimalPattern.test(val);\n\nexport const stringIsValidNumber = (val: string) =>\n stringIsValidInt(val) || stringIsValidDecimal(val);\n\nexport const numericTypeOfStringValue = (val: string) =>\n stringIsValidInt(val) ? \"int\" : stringIsValidDecimal(val) ? \"double\" : \"NaN\";\n\nexport const isValidNumber = (n: unknown): n is number =>\n typeof n === \"number\" && isFinite(n);\n\nconst EMPTY = {};\nexport const shallowEquals = (\n o1: { [key: string]: unknown } = EMPTY,\n o2: { [key: string]: unknown } = EMPTY,\n) => {\n const props1 = Object.keys(o1);\n const props2 = Object.keys(o2);\n return (\n props1.length === props2.length &&\n props1.every((key) => o1[key] === o2[key])\n );\n};\n\nexport function getMovingValueDirection(\n newValue?: number,\n direction?: valueChangeDirection,\n prevValue?: number,\n /** the number of decimal places to take into account when highlighting a change */\n decimalPlaces?: number,\n): valueChangeDirection {\n if (newValue === undefined) {\n return \"\";\n }\n if (\n !isFinite(newValue) ||\n prevValue === undefined ||\n direction === undefined\n ) {\n return \"\";\n } else {\n let diff = newValue - prevValue;\n if (diff) {\n // make sure there is still a diff when reduced to number of decimals to be displayed\n if (typeof decimalPlaces === \"number\") {\n diff =\n +newValue.toFixed(decimalPlaces) - +prevValue.toFixed(decimalPlaces);\n }\n }\n\n if (diff) {\n if (direction === \"\") {\n if (diff < 0) {\n return DOWN1;\n } else {\n return UP1;\n }\n } else if (diff > 0) {\n if (direction === DOWN1 || direction === DOWN2 || direction === UP2) {\n return UP1;\n } else {\n return UP2;\n }\n } else if (\n direction === UP1 ||\n direction === UP2 ||\n direction === DOWN2\n ) {\n return DOWN1;\n } else {\n return DOWN2;\n }\n } else {\n return \"\";\n }\n }\n}\n\nexport function asInteger(\n index: number | string | undefined,\n defaultValue?: number,\n) {\n if (typeof index === \"number\") {\n return index;\n } else {\n const numIdx = parseInt(index ?? \"\");\n if (!isNaN(numIdx)) {\n return numIdx;\n } else if (typeof defaultValue === \"number\") {\n return defaultValue;\n }\n throw Error(`parseIndex invalid value ${index}`);\n }\n}\n","type Listener = (...args: any[]) => void;\nexport type EmittedEvents = Record<string, Listener>;\n\nfunction isArrayOfListeners(\n listeners: EventListener | EventListener[],\n): listeners is EventListener[] {\n return Array.isArray(listeners);\n}\n\nfunction isOnlyListener(\n listeners: EventListener | EventListener[],\n): listeners is EventListener {\n return !Array.isArray(listeners);\n}\n\nexport interface IEventEmitter<Events extends EmittedEvents> {\n addListener<E extends keyof Events>(event: E, listener: Events[E]): void;\n emit<E extends keyof Events>(event: E, ...args: Parameters<Events[E]>): void;\n on<E extends keyof Events>(event: E, listener: Events[E]): void;\n removeListener<E extends keyof Events>(event: E, listener: Events[E]): void;\n removeAllListeners<E extends keyof Events>(event?: E): void;\n}\n\nexport class EventEmitter<Events extends EmittedEvents>\n implements IEventEmitter<Events>\n{\n #events: Map<keyof Events, Listener | Listener[]> = new Map();\n\n addListener<E extends keyof Events>(event: E, listener: Events[E]) {\n const listeners = this.#events.get(event);\n\n if (!listeners) {\n this.#events.set(event, listener);\n } else if (isArrayOfListeners(listeners)) {\n listeners.push(listener);\n } else if (isOnlyListener(listeners)) {\n this.#events.set(event, [listeners, listener]);\n }\n }\n\n removeListener<E extends keyof Events>(event: E, listener: Events[E]) {\n if (!this.#events.has(event)) {\n return;\n }\n\n const listenerOrListeners = this.#events.get(event);\n let position = -1;\n\n if (listenerOrListeners === listener) {\n this.#events.delete(event);\n } else if (Array.isArray(listenerOrListeners)) {\n for (let i = listenerOrListeners.length; i-- > 0; ) {\n if (listenerOrListeners[i] === listener) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n return;\n }\n\n if (listenerOrListeners.length === 1) {\n listenerOrListeners.length = 0;\n this.#events.delete(event);\n } else {\n listenerOrListeners.splice(position, 1);\n }\n }\n }\n\n removeAllListeners<E extends keyof Events>(event?: E) {\n if (event && this.#events.has(event)) {\n this.#events.delete(event);\n } else if (event === undefined) {\n this.#events.clear();\n }\n }\n\n emit<E extends keyof Events>(event: E, ...args: Parameters<Events[E]>) {\n if (this.#events) {\n const handler = this.#events.get(event);\n if (handler) {\n this.invokeHandler(handler, args);\n }\n }\n }\n\n once<E extends keyof Events>(event: E, listener: Events[E]) {\n const handler = ((...args) => {\n this.removeListener(event, handler);\n listener(...args);\n }) as Events[E];\n\n this.on(event, handler);\n }\n\n on<E extends keyof Events>(event: E, listener: Events[E]) {\n this.addListener(event, listener);\n }\n\n hasListener<E extends keyof Events>(event: E, listener: Events[E]) {\n const listeners = this.#events.get(event);\n if (Array.isArray(listeners)) {\n return listeners.includes(listener);\n } else {\n return listeners === listener;\n }\n }\n\n private invokeHandler(handler: Listener | Array<Listener>, args: unknown[]) {\n if (isArrayOfListeners(handler)) {\n handler.slice().forEach((listener) => this.invokeHandler(listener, args));\n } else {\n switch (args.length) {\n case 0:\n handler();\n break;\n case 1:\n handler(args[0]);\n break;\n case 2:\n handler(args[0], args[1]);\n break;\n // slower\n default:\n handler.call(null, ...args);\n }\n }\n }\n}\n","// This is the index.browser.js file from nanoid\n// couldn't get original code to work as npm import without crypro warnings -\n// seemed to be picking up node version, not browser version\n\nexport const uuid = (size = 21): string => {\n let id = '';\n const bytes = crypto.getRandomValues(new Uint8Array(size));\n\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n while (size--) {\n // It is incorrect to use bytes exceeding the alphabet size.\n // The following mask reduces the random byte in the 0-255 value\n // range to the 0-63 value range. Therefore, adding hacks, such\n // as empty string fallback or magic numbers, is unneccessary because\n // the bitmask trims bytes down to the alphabet size.\n const byte = bytes[size] & 63;\n if (byte < 36) {\n // `0-9a-z`\n id += byte.toString(36);\n } else if (byte < 62) {\n // `A-Z`\n id += (byte - 26).toString(36).toUpperCase();\n } else if (byte < 63) {\n id += '_';\n } else {\n id += '-';\n }\n }\n return id;\n};\n","import {\n ConnectionQualityMetrics,\n DataSourceCallbackMessage,\n DataSourceConfig,\n DataSourceDataMessage,\n DataSourceRow,\n RpcResponse,\n TypeaheadSuggestionProvider,\n VuuUIMessageIn,\n VuuUIMessageInRPC,\n VuuUIMessageInRPCEditReject,\n VuuUIMessageInTableMeta,\n VuuUIMessageOutViewport,\n WithBaseFilter,\n WithFilter,\n WithFullConfig,\n WithGroupBy,\n WithSort,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n LinkDescriptorWithLabel,\n VuuCreateVisualLink,\n VuuFilter,\n VuuRemoveVisualLink,\n VuuRowDataItemType,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnMap } from \"../column-utils\";\n\nexport const NoFilter: VuuFilter = { filter: \"\" };\nexport const NoSort: VuuSort = { sortDefs: [] };\n\nexport const vanillaConfig: WithFullConfig = {\n aggregations: [],\n columns: [],\n filterSpec: NoFilter,\n groupBy: [],\n sort: NoSort,\n};\n\nexport type DataSourceConfigChanges = {\n aggregationsChanged: boolean;\n baseFilterChanged: boolean;\n columnsChanged: boolean;\n filterChanged: boolean;\n groupByChanged: boolean;\n sortChanged: boolean;\n visualLinkChanged: boolean;\n};\n\nexport type MaybeDataSourceConfigChanges = DataSourceConfigChanges & {\n noChanges: boolean;\n};\n\ntype DataConfigPredicate = (\n config: WithBaseFilter<DataSourceConfig>,\n newConfig: WithBaseFilter<DataSourceConfig>,\n) => boolean;\n\nconst equivalentAggregations: DataConfigPredicate = (\n { aggregations: agg1 },\n { aggregations: agg2 },\n) =>\n (agg1 === undefined && agg2?.length === 0) ||\n (agg2 === undefined && agg1?.length === 0);\n\nconst equivalentColumns: DataConfigPredicate = (\n { columns: cols1 },\n { columns: cols2 },\n) =>\n (cols1 === undefined && cols2?.length === 0) ||\n (cols2 === undefined && cols1?.length === 0);\n\nconst equivalentFilter: DataConfigPredicate = (\n { filterSpec: f1 },\n { filterSpec: f2 },\n) =>\n (f1 === undefined && f2?.filter === \"\") ||\n (f2 === undefined && f1?.filter === \"\");\n\nconst equivalentGroupBy: DataConfigPredicate = (\n { groupBy: val1 },\n { groupBy: val2 },\n) =>\n (val1 === undefined && val2?.length === 0) ||\n (val2 === undefined && val1?.length === 0);\n\nconst equivalentSort: DataConfigPredicate = ({ sort: s1 }, { sort: s2 }) =>\n (s1 === undefined && s2?.sortDefs.length === 0) ||\n (s2 === undefined && s1?.sortDefs.length === 0);\n\nconst exactlyTheSame = (a: unknown, b: unknown) => {\n if (a === b) {\n return true;\n } else if (a === undefined && b === undefined) {\n return true;\n } else {\n return false;\n }\n};\n\nconst isAggregationsChanged: DataConfigPredicate = (config, newConfig) => {\n const { aggregations: agg1 } = config;\n const { aggregations: agg2 } = newConfig;\n if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {\n return false;\n } else if (agg1 === undefined || agg2 === undefined) {\n return true;\n } else if (agg1.length !== agg2.length) {\n return true;\n }\n return agg1.some(\n ({ column, aggType }, i) =>\n column !== agg2[i].column || aggType !== agg2[i].aggType,\n );\n};\n\nconst isColumnsChanged: DataConfigPredicate = (config, newConfig) => {\n const { columns: cols1 } = config;\n const { columns: cols2 } = newConfig;\n\n if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {\n return false;\n } else if (cols1 === undefined || cols2 === undefined) {\n return true;\n } else if (cols1?.length !== cols2?.length) {\n return true;\n }\n return cols1.some((column, i) => column !== cols2?.[i]);\n};\n\nexport const isBaseFilterChanged: DataConfigPredicate = (c1, c2) => {\n if (equivalentFilter(c1, c2)) {\n return false;\n } else {\n return c1.baseFilterSpec?.filter !== c2.baseFilterSpec?.filter;\n }\n};\n\nexport const isFilterChanged: DataConfigPredicate = (c1, c2) => {\n if (equivalentFilter(c1, c2)) {\n return false;\n } else {\n return c1.filterSpec?.filter !== c2.filterSpec?.filter;\n }\n};\n\nexport const isGroupByChanged: DataConfigPredicate = (config, newConfig) => {\n const { groupBy: g1 } = config;\n const { groupBy: g2 } = newConfig;\n if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {\n return false;\n } else if (g1 === undefined || g2 === undefined) {\n return true;\n } else if (g1?.length !== g2?.length) {\n return true;\n }\n return g1.some((column, i) => column !== g2?.[i]);\n};\n\nconst isSortChanged: DataConfigPredicate = (config, newConfig) => {\n const { sort: s1 } = config;\n const { sort: s2 } = newConfig;\n if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {\n return false;\n } else if (s1 === undefined || s2 === undefined) {\n return true;\n } else if (s1?.sortDefs.length !== s2?.sortDefs.length) {\n return true;\n }\n return s1.sortDefs.some(\n ({ column, sortType }, i) =>\n column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType,\n );\n};\n\nconst isVisualLinkChanged: DataConfigPredicate = (\n { visualLink: v1 },\n { visualLink: v2 },\n) => {\n if (exactlyTheSame(v1, v2)) {\n return false;\n }\n if (v1 === undefined || v2 === undefined) {\n return true;\n }\n return v1.label !== v2.label || v2.parentVpId !== v2.parentVpId;\n};\n\nexport const NO_CONFIG_CHANGES: MaybeDataSourceConfigChanges = {\n aggregationsChanged: false,\n baseFilterChanged: false,\n columnsChanged: false,\n filterChanged: false,\n groupByChanged: false,\n noChanges: true,\n sortChanged: false,\n visualLinkChanged: false,\n};\n\nexport const isConfigChanged = (\n config: DataSourceConfig | undefined,\n newConfig: DataSourceConfig | undefined,\n): MaybeDataSourceConfigChanges => {\n if (exactlyTheSame(config, newConfig)) {\n return NO_CONFIG_CHANGES;\n }\n\n if (config === undefined && newConfig == undefined) {\n return NO_CONFIG_CHANGES;\n } else if (config === undefined) {\n return isConfigChanged({}, newConfig);\n } else if (newConfig === undefined) {\n return isConfigChanged(config, {});\n }\n\n const aggregationsChanged = isAggregationsChanged(config, newConfig);\n const baseFilterChanged = isBaseFilterChanged(config, newConfig);\n const columnsChanged = isColumnsChanged(config, newConfig);\n const filterChanged = isFilterChanged(config, newConfig);\n const groupByChanged = isGroupByChanged(config, newConfig);\n const sortChanged = isSortChanged(config, newConfig);\n const visualLinkChanged = isVisualLinkChanged(config, newConfig);\n\n const noChanges = !(\n aggregationsChanged ||\n baseFilterChanged ||\n columnsChanged ||\n filterChanged ||\n groupByChanged ||\n sortChanged ||\n visualLinkChanged\n );\n\n return {\n aggregationsChanged,\n baseFilterChanged,\n columnsChanged,\n filterChanged,\n groupByChanged,\n noChanges,\n sortChanged,\n visualLinkChanged,\n };\n};\n\nexport const hasGroupBy = (\n config?: WithBaseFilter<DataSourceConfig>,\n): config is WithGroupBy =>\n config !== undefined &&\n config.groupBy !== undefined &&\n config.groupBy.length > 0;\n\nexport const hasBaseFilter = (\n config?: WithBaseFilter<DataSourceConfig>,\n): config is WithFilter =>\n config?.baseFilterSpec !== undefined &&\n config.baseFilterSpec.filter.length > 0;\n\nexport const hasFilter = (config?: DataSourceConfig): config is WithFilter =>\n config?.filterSpec !== undefined && config.filterSpec.filter.length > 0;\n\nexport const hasSort = (config?: DataSourceConfig): config is WithSort =>\n config?.sort !== undefined &&\n Array.isArray(config.sort?.sortDefs) &&\n config.sort.sortDefs.length > 0;\n\nexport const isTypeaheadSuggestionProvider = (\n source: unknown,\n): source is TypeaheadSuggestionProvider =>\n typeof (source as TypeaheadSuggestionProvider)[\"getTypeaheadSuggestions\"] ===\n \"function\";\n\nexport const isTableSchemaMessage = (\n message: VuuUIMessageIn,\n): message is VuuUIMessageInTableMeta => message.type === \"TABLE_META_RESP\";\n\nexport const isConnectionQualityMetrics = (\n msg: object,\n): msg is ConnectionQualityMetrics =>\n (msg as ConnectionQualityMetrics).type === \"connection-metrics\";\n\nexport const messageHasResult = (msg: object): msg is VuuUIMessageInRPC =>\n typeof (msg as VuuUIMessageInRPC).result !== \"undefined\";\n\nexport const isErrorResponse = (\n response?: Partial<RpcResponse>,\n): response is VuuUIMessageInRPCEditReject =>\n response?.type === \"VP_EDIT_RPC_REJECT\";\n\nexport const isVisualLinkMessage = (\n msg: unknown,\n): msg is VuuCreateVisualLink | VuuRemoveVisualLink =>\n (msg as VuuCreateVisualLink).type.endsWith(\"_VISUAL_LINK\");\n\nexport const isViewportMessage = (\n msg: object,\n): msg is VuuUIMessageOutViewport => \"viewport\" in msg;\n\nexport type DataSourceDataMessageWithRows = Omit<\n DataSourceDataMessage,\n \"rows\"\n> & {\n rows: DataSourceRow[];\n};\nexport const messageHasDataRows = (\n message: DataSourceCallbackMessage,\n): message is DataSourceDataMessageWithRows =>\n message.type === \"viewport-update\" && Array.isArray(message.rows);\n\nexport const withConfigDefaults = (\n config: WithBaseFilter<DataSourceConfig>,\n): WithBaseFilter<WithFullConfig> & {\n visualLink?: LinkDescriptorWithLabel;\n} => {\n if (\n config.aggregations &&\n config.baseFilterSpec &&\n config.columns &&\n config.filterSpec &&\n config.groupBy &&\n config.sort\n ) {\n return config as WithFullConfig;\n } else {\n const {\n aggregations = [],\n baseFilterSpec: baseFilter = { filter: \"\" },\n columns = [],\n filterSpec: filter = { filter: \"\" },\n groupBy = [],\n sort = { sortDefs: [] },\n visualLink,\n } = config;\n\n return {\n aggregations,\n baseFilterSpec: baseFilter,\n columns,\n filterSpec: filter,\n groupBy,\n sort,\n visualLink,\n };\n }\n};\n\nexport type Entity = Record<string, VuuRowDataItemType>;\n// export type EntityKey<T extends Entity = Entity> = Extract<keyof T, \"string\">;\n\nexport const dataSourceRowToEntity = <T extends Entity = Entity>(\n row: DataSourceRow,\n columnMap: ColumnMap,\n) =>\n Object.entries(columnMap).reduce(\n (entity, [name, index]) => ({\n ...entity,\n [name]: row[index],\n }),\n {} as T,\n );\n","import type {\n DataSource,\n DataSourceConfig,\n DataSourceConstructorProps,\n DataSourceEvents,\n DataSourceFilter,\n DataSourceSubscribeCallback,\n DataSourceSubscribeProps,\n WithBaseFilter,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n LinkDescriptorWithLabel,\n VuuAggregation,\n VuuRange,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { uuid } from \"../nanoid\";\nimport {\n DataSourceConfigChanges,\n isConfigChanged,\n vanillaConfig,\n withConfigDefaults,\n} from \"./datasource-utils\";\nimport { Range } from \"../range-utils\";\n\nexport type RuntimeConfig = WithBaseFilter<WithFullConfig> & {\n visualLink?: LinkDescriptorWithLabel;\n};\n\nexport abstract class BaseDataSource\n extends EventEmitter<DataSourceEvents>\n implements Pick<DataSource, \"config\">\n{\n // This should simply be id\n public viewport: string;\n\n protected _clientCallback: DataSourceSubscribeCallback | undefined;\n protected _config: RuntimeConfig = vanillaConfig;\n protected _impendingConfig: RuntimeConfig | undefined = undefined;\n protected _range = Range(0, 0);\n protected _size = 0;\n protected _title: string | undefined;\n\n #pageCount = 0;\n\n private awaitingConfirmationOfConfigChanges = false;\n\n constructor({\n aggregations,\n baseFilterSpec,\n columns,\n filterSpec,\n groupBy,\n sort,\n title,\n viewport,\n }: Omit<DataSourceConstructorProps, \"table\">) {\n super();\n this._config = {\n ...this._config,\n aggregations: aggregations || this._config.aggregations,\n baseFilterSpec: baseFilterSpec || this._config.baseFilterSpec,\n columns: columns || this._config.columns,\n filterSpec: filterSpec || this._config.filterSpec,\n groupBy: groupBy || this._config.groupBy,\n sort: sort || this._config.sort,\n };\n\n this._title = title;\n this.viewport = viewport ?? \"\";\n }\n\n subscribe(\n {\n baseFilterSpec,\n columns,\n aggregations,\n range,\n sort,\n groupBy,\n filterSpec,\n viewport = this.viewport || (this.viewport = uuid()),\n }: DataSourceSubscribeProps,\n callback: DataSourceSubscribeCallback,\n ) {\n this._clientCallback = callback;\n this.viewport = viewport;\n\n if (\n aggregations ||\n baseFilterSpec ||\n columns ||\n filterSpec ||\n groupBy ||\n sort\n ) {\n this._config = {\n ...this._config,\n aggregations: aggregations || this._config.aggregations,\n baseFilterSpec: baseFilterSpec || this._config.baseFilterSpec,\n columns: columns || this._config.columns,\n filterSpec: filterSpec || this._config.filterSpec,\n groupBy: groupBy || this._config.groupBy,\n sort: sort || this._config.sort,\n };\n }\n\n // store the range before we await the server. It's is possible the\n // range will be updated from the client before we have been able to\n // subscribe. This ensures we will subscribe with latest value.\n if (range) {\n this._range = range;\n }\n }\n\n get aggregations() {\n return this._config.aggregations;\n }\n\n set aggregations(aggregations: VuuAggregation[]) {\n this.config = {\n ...this._config,\n aggregations,\n };\n this.emit(\"config\", this._config, this.range);\n }\n\n get baseFilter() {\n return this._config.baseFilterSpec;\n }\n\n set baseFilter(baseFilter: DataSourceFilter | undefined) {\n this.config = {\n ...this._config,\n baseFilterSpec: baseFilter,\n };\n }\n\n get columns() {\n return this._config.columns;\n }\n\n set columns(columns: string[]) {\n this.config = {\n ...this._config,\n columns,\n };\n this.emit(\"config\", this._config, this.range);\n }\n\n get filter() {\n return this._config.filterSpec;\n }\n\n set filter(filter: DataSourceFilter) {\n this.config = {\n ...this._config,\n filterSpec: filter,\n };\n }\n\n get isAwaitingConfirmationOfConfigChange() {\n return this._impendingConfig !== undefined;\n }\n\n protected confirmConfigChange() {\n if (this._impendingConfig) {\n this._config = this._impendingConfig;\n console.log(\n \"%cclear impending config and emit config change\",\n \"color:red\",\n );\n this._impendingConfig = undefined;\n this.emit(\"config\", this._config, this.range, true);\n } else {\n throw Error(\n `[BaseDataSource], unexpected call to confirmConfigChange, no changes pending`,\n );\n }\n }\n\n get config() {\n return this._impendingConfig ?? this._config;\n }\n\n set config(config: WithBaseFilter<WithFullConfig>) {\n const confirmed = this.awaitingConfirmationOfConfigChanges\n ? true\n : undefined;\n // TODO what happens if config is set and we still have an unconfirmed change ?\n this.awaitingConfirmationOfConfigChanges = false;\n const configChanges = this.applyConfig(config);\n if (configChanges) {\n this.emit(\"config\", this.config, this.range, confirmed, configChanges);\n }\n }\n\n set impendingConfig(config: WithBaseFilter<WithFullConfig>) {\n this.awaitingConfirmationOfConfigChanges = true;\n const configChanges = this.applyConfig(config);\n if (configChanges) {\n this.emit(\"config\", this.config, this.range, false, configChanges);\n }\n }\n\n get pageCount() {\n return this.#pageCount;\n }\n\n set pageCount(pageCount: number) {\n if (pageCount !== this.#pageCount) {\n this.#pageCount = pageCount;\n this.emit(\"page-count\", pageCount);\n }\n }\n\n get range() {\n return this._range;\n }\n\n set range(range: Range) {\n if (range.from !== this._range.from || range.to !== this._range.to) {\n this._range = range;\n this.pageCount = Math.ceil(this._size / (range.to - range.from));\n this.rangeRequest(range);\n requestAnimationFrame(() => {\n this.emit(\"range\", range);\n });\n }\n }\n\n get size() {\n return this._size;\n }\n\n set size(size: number) {\n this._size = size;\n if (this.range.to !== 0) {\n const pageCount = Math.ceil(size / (this.range.to - this.range.from));\n this.pageCount = pageCount;\n }\n }\n\n get sort() {\n return this._config.sort;\n }\n\n set sort(sort: VuuSort) {\n this.config = {\n ...this._config,\n sort,\n };\n this.emit(\"config\", this._config, this.range);\n }\n\n get title() {\n return this._title ?? \"\";\n }\n\n set title(title: string) {\n this._title = title;\n this.emit(\"title-changed\", this.viewport ?? \"\", title);\n }\n\n // Public while we use this from useSessionDataSource\n public applyConfig(\n config: WithBaseFilter<DataSourceConfig>,\n preserveExistingConfigAttributes = false,\n ): DataSourceConfigChanges | undefined {\n const { noChanges, ...otherChanges } = isConfigChanged(\n this._config,\n config,\n );\n if (noChanges !== true) {\n if (config) {\n const newConfig: DataSourceConfig =\n config?.filterSpec?.filter &&\n config?.filterSpec.filterStruct === undefined\n ? {\n ...config,\n filterSpec: {\n filter: config.filterSpec.filter,\n filterStruct: parseFilter(config.filterSpec.filter),\n },\n }\n : config;\n if (preserveExistingConfigAttributes) {\n if (this.awaitingConfirmationOfConfigChanges) {\n this._impendingConfig = {\n ...this._config,\n ...config,\n };\n } else {\n this._impendingConfig = undefined;\n this._config = {\n ...this._config,\n ...config,\n };\n }\n } else {\n if (this.awaitingConfirmationOfConfigChanges) {\n this._impendingConfig = withConfigDefaults(newConfig);\n } else {\n this._impendingConfig = undefined;\n this._config = withConfigDefaults(newConfig);\n }\n }\n return otherChanges;\n }\n }\n }\n\n abstract rangeRequest(range: VuuRange): void;\n}\n","import {\n DataSourceMenusMessage,\n DataSourceVisualLinkCreatedMessage,\n DataSourceVisualLinkRemovedMessage,\n DataSourceVisualLinksMessage,\n VuuFeatureMessage,\n} from \"@vuu-ui/vuu-data-types\";\nimport { GridAction } from \"@vuu-ui/vuu-table-types\";\n\nexport const isVisualLinksAction = (\n action: GridAction,\n): action is DataSourceVisualLinksMessage => action.type === \"vuu-links\";\n\nexport const isVisualLinkCreatedAction = (\n action: GridAction,\n): action is DataSourceVisualLinkCreatedMessage =>\n action.type === \"vuu-link-created\";\n\nexport const isVisualLinkRemovedAction = (\n action: GridAction,\n): action is DataSourceVisualLinkRemovedMessage =>\n action.type === \"vuu-link-removed\";\n\nexport const isViewportMenusAction = (\n action: GridAction,\n): action is DataSourceMenusMessage => action.type === \"vuu-menu\";\n\nexport const isVuuFeatureAction = (\n action: GridAction,\n): action is VuuFeatureMessage =>\n isViewportMenusAction(action) || isVisualLinksAction(action);\n","import { WithBaseFilter, WithFullConfig } from \"@vuu-ui/vuu-data-types\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\n\nexport const combineFilters = ({\n baseFilterSpec,\n filterSpec,\n ...config\n}: WithBaseFilter<WithFullConfig>) => {\n const baseFilterQuery = baseFilterSpec?.filter ?? \"\";\n const combinedFilter =\n filterSpec.filter.length > 0 && baseFilterQuery.length > 0\n ? `${filterSpec.filter} and ${baseFilterQuery}`\n : filterSpec.filter || baseFilterQuery;\n\n const newConfig: WithFullConfig = {\n ...config,\n filterSpec: {\n filter: combinedFilter,\n filterStruct:\n combinedFilter.length > 0 ? parseFilter(combinedFilter) : undefined,\n },\n };\n\n return newConfig;\n};\n","import { JSXElementConstructor, ReactElement } from \"react\";\nimport { LayoutJSON } from \"./json-types\";\n\nexport function isNotNullOrUndefined<T>(\n value: T | undefined | null,\n): value is NonNullable<T> {\n return value !== undefined && value !== null;\n}\n\nexport const isObject = (o: unknown): o is object =>\n typeof o === \"object\" && o !== null;\n\nexport type OptionalProperty<T, K extends keyof T> = Omit<T, K> &\n Partial<Pick<T, K>>;\n\n/**\n * test whether a given react element implements a custom toJSON\n * serialisation (static) method.\n */\ntype JsonEnabledJSXElementConstructor<P> = JSXElementConstructor<P> & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n toJSON: (el: ReactElement) => LayoutJSON<any>;\n};\n\ninterface ReactElementWithJSON<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n P = any,\n T extends // eslint-disable-next-line @typescript-eslint/no-explicit-any\n JsonEnabledJSXElementConstructor<any> = JsonEnabledJSXElementConstructor<any>,\n> {\n type: T;\n props: P;\n key: string | null;\n}\nexport const elementImplementsJSONSerialization = (\n element: ReactElement,\n): element is ReactElementWithJSON =>\n typeof (element.type as JsonEnabledJSXElementConstructor<unknown>).toJSON ===\n \"function\";\n","import { DateFormatter } from \"@internationalized/date\";\nimport { isNotNullOrUndefined } from \"../ts-utils\";\nimport { DatePattern, DateTimePattern, TimePattern } from \"./types\";\n\ntype DateTimeFormatConfig = {\n locale: string;\n options: Intl.DateTimeFormatOptions;\n};\n\n// Time format config\nconst baseTimeFormatOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n};\nconst formatConfigByTimePatterns: Record<TimePattern, DateTimeFormatConfig> = {\n \"hh:mm:ss\": {\n locale: \"en-GB\",\n options: { ...baseTimeFormatOptions, hour12: false },\n },\n \"hh:mm:ss a\": {\n locale: \"en-GB\",\n options: { ...baseTimeFormatOptions, hour12: true },\n },\n};\n\n// Date format config\nconst baseDateFormatOptions: Intl.DateTimeFormatOptions = {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n};\nconst formatConfigByDatePatterns: Record<DatePattern, DateTimeFormatConfig> = {\n \"dd.mm.yyyy\": {\n locale: \"de-De\",\n options: { ...baseDateFormatOptions },\n },\n \"dd/mm/yyyy\": { locale: \"en-GB\", options: { ...baseDateFormatOptions } },\n \"dd MMM yyyy\": {\n locale: \"en-GB\",\n options: { ...baseDateFormatOptions, month: \"short\" },\n },\n \"dd MMMM yyyy\": {\n locale: \"en-GB\",\n options: { ...baseDateFormatOptions, month: \"long\" },\n },\n \"mm/dd/yyyy\": { locale: \"en-US\", options: { ...baseDateFormatOptions } },\n \"MMM dd, yyyy\": {\n locale: \"en-US\",\n options: { ...baseDateFormatOptions, month: \"short\" },\n },\n \"MMMM dd, yyyy\": {\n locale: \"en-US\",\n options: { ...baseDateFormatOptions, month: \"long\" },\n },\n};\n\nfunction getFormatConfigs(pattern: DateTimePattern) {\n return [\n pattern.date ? formatConfigByDatePatterns[pattern.date] : null,\n pattern.time ? formatConfigByTimePatterns[pattern.time] : null,\n ];\n}\n\nexport function formatDate(pattern: DateTimePattern): (d: Date) => string {\n const formatters = getFormatConfigs(pattern)\n .filter(isNotNullOrUndefined)\n .map((c) => getDateFormatter(c.locale, c.options));\n\n return (d) => formatters.map((f) => f.format(d)).join(\" \");\n}\n\nexport function getDateFormatter(\n locale: string,\n options?: Intl.DateTimeFormatOptions\n) {\n return new DateFormatter(locale, options);\n}\n","import { ColumnTypeFormatting } from \"@vuu-ui/vuu-table-types\";\n\nconst supportedDatePatterns = [\n \"dd.mm.yyyy\",\n \"dd/mm/yyyy\",\n \"dd MMM yyyy\",\n \"dd MMMM yyyy\",\n \"mm/dd/yyyy\",\n \"MMM dd, yyyy\",\n \"MMMM dd, yyyy\",\n] as const;\n\nconst supportedTimePatterns = [\"hh:mm:ss\", \"hh:mm:ss a\"] as const;\n\nexport const supportedDateTimePatterns = {\n date: supportedDatePatterns,\n time: supportedTimePatterns,\n};\nexport const dateTimeLabelByType = { date: \"Date\", time: \"Time\" } as const;\n\nexport type DatePattern = (typeof supportedDatePatterns)[number];\nexport type TimePattern = (typeof supportedTimePatterns)[number];\n\nexport type DateTimePattern =\n | { date?: DatePattern; time: TimePattern }\n | { date: DatePattern; time?: TimePattern };\n\nexport const isDatePattern = (pattern?: string): pattern is DatePattern =>\n supportedDatePatterns.includes(pattern as DatePattern);\n\nexport const isTimePattern = (pattern?: string): pattern is TimePattern =>\n supportedTimePatterns.includes(pattern as TimePattern);\n\nexport const isDateTimePattern = (\n pattern?: ColumnTypeFormatting[\"pattern\"],\n): pattern is DateTimePattern =>\n isDatePattern(pattern?.date) || isTimePattern(pattern?.time);\n","import { CalendarDate } from \"@internationalized/date\";\n\nexport function toCalendarDate(d: Date) {\n return new CalendarDate(d.getFullYear(), d.getMonth() + 1, d.getDate());\n}\n","import { DateTimeDataValueDescriptor } from \"@vuu-ui/vuu-data-types\";\nimport { isTypeDescriptor } from \"../column-utils\";\nimport { DateTimePattern, isDateTimePattern } from \"./types\";\n\nexport const defaultPatternsByType = {\n time: \"hh:mm:ss\",\n date: \"dd.mm.yyyy\",\n} as const;\n\nexport const fallbackDateTimePattern: DateTimePattern = {\n date: defaultPatternsByType[\"date\"],\n};\n\nexport function dateTimePattern(\n type: DateTimeDataValueDescriptor[\"type\"],\n): DateTimePattern {\n if (isTypeDescriptor(type)) {\n if (type.formatting && isDateTimePattern(type.formatting.pattern)) {\n return type.formatting.pattern;\n }\n }\n\n return fallbackDateTimePattern;\n}\n","import { getCookieValue } from \"./cookie-utils\";\n\ndeclare global {\n const loggingSettings: loggingSettings;\n}\n\nexport interface LogFn {\n (message?: unknown, ...optionalParams: unknown[]): void;\n}\nexport interface AssertLogFn {\n (condition: boolean, message?: unknown, errorMessaage?: unknown): void;\n}\n\nexport interface TableLogFn {\n (properties?: object): void;\n}\n\ntype loggingSettings = {\n loggingLevel: LogLevel;\n};\n\nexport interface Logger {\n warn: LogFn;\n error: LogFn;\n debug: LogFn;\n info: LogFn;\n}\n\nexport type LogLevel = keyof Logger;\n\nconst logLevels = [\"error\", \"warn\", \"info\", \"debug\"];\nconst isValidLogLevel = (value: unknown): value is LogLevel =>\n typeof value === \"string\" && logLevels.includes(value);\n\nconst DEFAULT_LOG_LEVEL: LogLevel = \"error\";\n\nexport type BuildEnv = \"production\" | \"development\";\n\nconst NO_OP = () => undefined;\n\nconst DEFAULT_DEBUG_LEVEL: LogLevel =\n process.env.NODE_ENV === \"production\" ? \"error\" : \"info\";\n\nconst { loggingLevel = DEFAULT_DEBUG_LEVEL } = getLoggingSettings();\n// typeof loggingSettings !== \"undefined\" ? loggingSettings : {};\n// const { loggingLevel = DEFAULT_DEBUG_LEVEL } =\n// typeof loggingSettings !== \"undefined\" ? loggingSettings : {};\n\nexport const logger = (category: string) => {\n const debugEnabled = loggingLevel === \"debug\";\n const infoEnabled = debugEnabled || loggingLevel === \"info\";\n const warnEnabled = infoEnabled || loggingLevel === \"warn\";\n const errorEnabled = warnEnabled || loggingLevel === \"error\";\n\n const info = infoEnabled\n ? (message: string) => console.info(`[${category}] ${message}`)\n : NO_OP;\n const warn = warnEnabled\n ? (message: string) => console.warn(`[${category}] ${message}`)\n : NO_OP;\n const debug = debugEnabled\n ? (message: string) => console.debug(`[${category}] ${message}`)\n : NO_OP;\n const error = errorEnabled\n ? (message: string) => console.error(`[${category}] ${message}`)\n : NO_OP;\n\n if (process.env.NODE_ENV === \"production\") {\n return {\n errorEnabled,\n error,\n };\n } else {\n return {\n debugEnabled,\n infoEnabled,\n warnEnabled,\n errorEnabled,\n info,\n warn,\n debug,\n error,\n };\n }\n};\n\nfunction getLoggingSettings() {\n if (typeof loggingSettings !== \"undefined\") {\n return loggingSettings;\n } else {\n return {\n loggingLevel: getLoggingLevelFromCookie(),\n };\n }\n}\n\nfunction getLoggingLevelFromCookie(): LogLevel {\n const value = getCookieValue(\"vuu-logging-level\");\n if (isValidLogLevel(value)) {\n return value;\n } else {\n return DEFAULT_LOG_LEVEL;\n }\n}\n\nexport const getLoggingConfigForWorker = () => {\n return `const loggingSettings = { loggingLevel: \"${getLoggingLevelFromCookie()}\"};`;\n};\n\nexport const logUnhandledMessage = (\n message: never,\n context = \"[logUnhandledStruct]\",\n) => {\n console.log(`${context} ${JSON.stringify(message)}`);\n};\n","import { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport { logger } from \"./logging-utils\";\n\nconst { debug, debugEnabled } = logger(\"range-monitor\");\n\nexport class RangeMonitor {\n public range: VuuRange = { from: 0, to: 0 };\n public timestamp = 0;\n\n constructor(private source: string) {}\n\n isSet() {\n return this.timestamp !== 0;\n }\n set({ from, to }: VuuRange) {\n const { timestamp } = this;\n this.range.from = from;\n this.range.to = to;\n this.timestamp = performance.now();\n if (timestamp) {\n debugEnabled &&\n debug(\n `<${this.source}> [${from}-${to}], ${(\n this.timestamp - timestamp\n ).toFixed(0)} ms elapsed`,\n );\n } else {\n return 0;\n }\n }\n}\n","export const createEl = (\n elementType: \"div\" | \"p\" | \"span\",\n className?: string,\n textContent?: string,\n): HTMLElement => {\n const el = document.createElement(elementType);\n if (className) {\n el.className = className;\n }\n if (textContent) {\n el.textContent = textContent;\n }\n return el;\n};\n\nexport const getFocusableElement = (\n el: HTMLElement | null,\n tabIndex?: number,\n) => {\n if (el) {\n if (el.hasAttribute(\"tabindex\")) {\n const rootTabIndex = parseInt(el.getAttribute(\"tabindex\") as string);\n if (\n !isNaN(rootTabIndex) &&\n (tabIndex === undefined || rootTabIndex === tabIndex)\n ) {\n return el;\n }\n }\n const focusableEl =\n typeof tabIndex === \"number\"\n ? (el.querySelector(`[tabindex=\"${tabIndex}\"]`) as HTMLElement)\n : (el.querySelector(\"[tabindex]\") as HTMLElement);\n if (focusableEl) {\n return focusableEl as HTMLElement;\n }\n }\n};\n\nexport const getElementDataIndex = (el: HTMLElement | null) => {\n if (el) {\n const index = parseInt(el.dataset.index || \"\");\n if (!isNaN(index)) {\n return index;\n }\n }\n return -1;\n};\n\nexport function queryClosest<T extends HTMLElement = HTMLElement>(\n el: HTMLElement | EventTarget | null,\n cssQueryString: string,\n throwIfNotFound?: false,\n): T | null;\nexport function queryClosest<T extends HTMLElement = HTMLElement>(\n el: HTMLElement | EventTarget | null,\n cssQueryString: string,\n throwIfNotFound: true,\n): T;\nexport function queryClosest<T extends HTMLElement = HTMLElement>(\n el: HTMLElement | EventTarget | null,\n cssQueryString: string,\n throwIfNotFound?: boolean,\n) {\n if (el) {\n const result = (el as HTMLElement).closest(cssQueryString) as T;\n if (result) {\n return result;\n }\n }\n if (throwIfNotFound) {\n throw Error(`no element found to match '${cssQueryString}'`);\n } else {\n return null;\n }\n}\n\nexport const getClosest = (el: HTMLElement, dataProperty: string) =>\n queryClosest(el, `[data-${dataProperty}]`);\n\nexport const getClosestIndexItem = (el: HTMLElement) => getClosest(el, \"index\");\n\nexport function getElementByDataIndex(\n c: HTMLElement | null | undefined,\n i: number | string,\n throwIfNotFound: true,\n): HTMLElement;\nexport function getElementByDataIndex(\n c: HTMLElement | null | undefined,\n i: number | string,\n throwIfNotFound?: false,\n): HTMLElement | undefined;\nexport function getElementByDataIndex(\n container: HTMLElement | null | undefined,\n index: number | string,\n throwIfNotFound = false,\n) {\n if (container == null && throwIfNotFound) {\n throw Error(\"html-utils getElementByDataIndex, container is null\");\n }\n const element = container?.querySelector(\n `[data-index=\"${index}\"]`,\n ) as HTMLElement;\n if (element) {\n return element;\n } else if (throwIfNotFound) {\n throw Error(\n \"html-utils getElementByDataIndex, Item not found with data-index='${index}'\",\n );\n } else {\n return undefined;\n }\n}\n\nexport const focusFirstFocusableElement = (\n el: HTMLElement | null,\n tabIndex?: number,\n) => {\n // TODO test el for focusable\n requestAnimationFrame(() => {\n const focusableElement = getFocusableElement(el, tabIndex);\n if (focusableElement) {\n focusableElement.focus();\n }\n });\n};\n\nexport const isSelectableElement = (el?: HTMLElement | null) => {\n const item = el?.closest(\"[data-index]\") as HTMLElement;\n if (\n !item ||\n item.ariaDisabled ||\n item.dataset.selectable === \"false\" ||\n item.querySelector('[data-selectable=\"false\"],[aria-disabled=\"true\"]')\n ) {\n return false;\n } else {\n return true;\n }\n};\n\nexport const isInputElement = (\n el: HTMLElement | EventTarget | null,\n): el is HTMLInputElement => {\n if (el === null) {\n return false;\n } else {\n return (el as HTMLElement).tagName === \"INPUT\";\n }\n};\n\nexport const isDateInput = (\n el: HTMLElement | EventTarget | null,\n): el is HTMLInputElement =>\n isInputElement(el) && el.classList.contains(\"saltDateInput-input\");\n\nexport const hasOpenOptionList = (el: HTMLElement | EventTarget | null) => {\n if (el !== null) {\n return (el as HTMLElement).ariaExpanded === \"true\";\n }\n};\n\nlet size: number;\n\nexport function getScrollbarSize() {\n if (size === undefined) {\n let outer: HTMLElement | null = document.createElement(\"div\");\n outer.className = \"scrollable-content\";\n outer.style.width = \"50px\";\n outer.style.height = \"50px\";\n outer.style.overflowY = \"scroll\";\n outer.style.position = \"absolute\";\n outer.style.top = \"-200px\";\n outer.style.left = \"-200px\";\n const inner = document.createElement(\"div\");\n inner.style.height = \"100px\";\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n document.body.appendChild(outer);\n const outerWidth = outer.offsetWidth;\n const innerWidth = inner.offsetWidth;\n document.body.removeChild(outer);\n size = outerWidth - innerWidth;\n outer = null;\n }\n\n return size;\n}\n\nexport type MouseEventTypes = \"dblclick\" | \"click\";\nexport type KeyboardEventTypes = \"keydown\" | \"keypress\" | \"keyup\";\n\nexport const dispatchMouseEvent = (el: HTMLElement, type: MouseEventTypes) => {\n const evt = new MouseEvent(type, {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n el.dispatchEvent(evt);\n};\nexport const dispatchKeyboardEvent = (\n el: HTMLElement,\n type: KeyboardEventTypes,\n key: string,\n) => {\n const evt = new KeyboardEvent(type, {\n key,\n view: window,\n bubbles: true,\n cancelable: true,\n });\n el.dispatchEvent(evt);\n};\n\nexport type VuuDomEventType = \"vuu-commit\" | \"vuu-dropped\";\n\nexport const dispatchCustomEvent = (el: HTMLElement, type: VuuDomEventType) => {\n const evt = new Event(type, {\n bubbles: true,\n cancelable: true,\n });\n el.dispatchEvent(evt);\n};\n","import {\n VuuColumnDataType,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { KeyboardEvent, SyntheticEvent } from \"react\";\nimport { queryClosest } from \"./html-utils\";\nimport { stringIsValidDecimal, stringIsValidInt } from \"./data-utils\";\n\n/**\n * Use with the following convention:\n *\n * <FormField data-field=\"my-field-name\">\n */\nexport const getFieldName = (target: EventTarget | HTMLElement): string => {\n const saltFormField = queryClosest(target, \"[data-field]\") as HTMLElement;\n const fieldName = saltFormField?.dataset.field;\n if (fieldName) {\n return fieldName;\n } else {\n throw Error(\"named form field not found\");\n }\n};\n\nexport type InputSource = \"typeahead-suggestion\" | \"text-input\";\n\nexport const isNumber = (\n type: string,\n value: VuuRowDataItemType,\n): value is number => type === \"number\";\n\nexport type CommitHandler<\n E extends HTMLElement = HTMLInputElement,\n T extends VuuRowDataItemType = VuuRowDataItemType,\n> = (\n evt: SyntheticEvent<E> | KeyboardEvent<E>,\n value: T,\n source?: InputSource,\n) => void;\n\n/**\n * Convert a string value to the type appropriate for the associated\n * column or form field. Can be used when processing a string value\n * from an input used for user editing.\n *\n * @param value\n * @param type\n * @param throwIfInvalid\n */\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | \"number\",\n throwIfInvalid?: false,\n): VuuRowDataItemType | undefined;\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | \"number\",\n throwIfInvalid: true,\n): VuuRowDataItemType;\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | \"number\",\n throwIfInvalid = false,\n): VuuRowDataItemType | undefined {\n switch (type) {\n case \"int\":\n case \"long\": {\n if (stringIsValidInt(value)) {\n return parseInt(value, 10);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n }\n\n case \"double\":\n case \"number\": {\n if (stringIsValidDecimal(value)) {\n return parseFloat(value);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n }\n\n case \"boolean\":\n return value === \"true\" ? true : false;\n default:\n return value;\n }\n}\n","import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n AndFilter,\n Filter,\n FilterClauseOp,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n OrFilter,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { VuuFilter, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getTypedValue } from \"../form-utils\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (f: Partial<Filter>): f is AndFilter =>\n f.op === \"and\";\nexport const isOrFilter = (f: Partial<Filter>): f is OrFilter => f.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport type FilterEvents = {\n filter: (vuuFilter: VuuFilter) => void;\n};\n\nconst createFilterClause = (column: string, value: VuuRowDataItemType) =>\n typeof value === \"string\"\n ? `${column} contains \"${value}\"`\n : `${column} = ${value}`;\n\nexport class FilterAggregator extends EventEmitter<FilterEvents> {\n #columns = new Map<string, ColumnDescriptor>();\n #filters = new Map<string, VuuRowDataItemType>();\n\n addFilter(column: ColumnDescriptor, value: string | number) {\n this.#columns.set(column.name, column);\n const { serverDataType = \"string\" } = column;\n const typedValue = getTypedValue(value.toString(), serverDataType, true);\n\n this.#filters.set(column.name, typedValue);\n // this.emit(\"filter\", this.filter);\n }\n\n removeFilter(column: ColumnDescriptor) {\n if (this.#columns.has(column.name)) {\n this.#columns.delete(column.name);\n this.#filters.delete(column.name);\n return true;\n } else {\n return false;\n }\n }\n\n get filter(): VuuFilter {\n const { size } = this.#filters;\n if (size === 0) {\n return { filter: \"\" };\n } else {\n return {\n filter: Array.from(this.#filters.entries())\n .map((args) => createFilterClause(...args))\n .join(\" and \"),\n };\n }\n }\n}\n","import {\n ColumnDescriptorsByName,\n Filter,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport type { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { isDateTimeDataValue } from \"../column-utils\";\nimport { isMultiClauseFilter, isMultiValueFilter } from \"./filter-utils\";\n\nconst filterValue = (value: string | number | boolean) =>\n typeof value === \"string\" ? `\"${value}\"` : value;\n\nconst quotedStrings = (value: string | number | boolean) =>\n typeof value === \"string\" ? `\"${value}\"` : value;\n\nconst removeOuterMostParentheses = (s: string) => s.replace(/^\\((.*)\\)$/, \"$1\");\n\nexport const filterAsQuery = (\n f: Filter,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string => {\n return removeOuterMostParentheses(filterAsQueryCore(f, opts));\n};\n\nconst filterAsQueryCore = (\n f: Filter,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string => {\n if (isMultiClauseFilter(f)) {\n const multiClauseFilter = f.filters\n .map((filter) => filterAsQueryCore(filter, opts))\n .join(` ${f.op} `);\n return `(${multiClauseFilter})`;\n } else if (isMultiValueFilter(f)) {\n return `${f.column} ${f.op} [${f.values.map(quotedStrings).join(\",\")}]`;\n } else {\n return singleValueFilterAsQuery(f, opts);\n }\n};\n\nfunction singleValueFilterAsQuery(\n f: SingleValueFilterClause,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string {\n const column = opts?.columnsByName?.[f.column];\n if (column && isDateTimeDataValue(column)) {\n return dateFilterAsQuery(f as SingleValueFilterClause<number>);\n } else {\n return defaultSingleValueFilterAsQuery(f);\n }\n}\n\nconst ONE_DAY_IN_MILIS = 1000 * 60 * 60 * 24;\nexport function dateFilterAsQuery(f: SingleValueFilterClause<number>): string {\n switch (f.op) {\n case \"=\": {\n const filters: Array<Filter> = [\n { op: \">=\", column: f.column, value: f.value },\n {\n op: \"<\",\n column: f.column,\n value: f.value + ONE_DAY_IN_MILIS,\n },\n ];\n return filterAsQueryCore({ op: \"and\", filters });\n }\n case \"!=\": {\n const filters: Array<Filter> = [\n { op: \"<\", column: f.column, value: f.value },\n {\n op: \">=\",\n column: f.column,\n value: f.value + ONE_DAY_IN_MILIS,\n },\n ];\n return filterAsQueryCore({ op: \"or\", filters });\n }\n default:\n return defaultSingleValueFilterAsQuery(f);\n }\n}\n\nconst defaultSingleValueFilterAsQuery = (f: SingleValueFilterClause) =>\n `${f.column} ${f.op} ${filterValue(f.value)}`;\n\nexport const removeColumnFromFilter = (\n column: RuntimeColumnDescriptor,\n filter: Filter,\n): [Filter | undefined, string] => {\n if (isMultiClauseFilter(filter)) {\n const [clause1, clause2] = filter.filters;\n if (clause1.column === column.name) {\n return [clause2, filterAsQuery(clause2)];\n }\n if (clause2.column === column.name) {\n return [clause1, filterAsQuery(clause1)];\n }\n }\n return [undefined, \"\"];\n};\n","export const lastWord = (text: string): string => {\n const trimmedText = text.trim();\n const pos = trimmedText.lastIndexOf(\" \");\n if (pos === -1) {\n return trimmedText;\n } else {\n return trimmedText.slice(pos + 1);\n }\n};\n\nconst capitalize = (text: string) =>\n text.length === 0 ? \"\" : text[0].toUpperCase() + text.slice(1);\n\nconst regexp_worfify = /(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])/;\nexport const wordify = (text: string) => {\n const [firstWord, ...rest] = text.split(regexp_worfify);\n return `${capitalize(firstWord)} ${rest.join(\" \")}`;\n};\n","import type { TableSchema } from \"@vuu-ui/vuu-data-types\";\nimport type { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { ListOption } from \"@vuu-ui/vuu-table-types\";\nimport { partition } from \"./array-utils\";\nimport { wordify } from \"./text-utils\";\nimport React, { ReactElement } from \"react\";\nimport { getLayoutComponent } from \"./component-registry\";\n\nexport type PathMap = {\n [key: string]: Pick<DynamicFeatureDescriptor, \"css\" | \"url\">;\n};\nexport type Environment = \"development\" | \"production\";\nexport const env = process.env.NODE_ENV as Environment;\n\nexport type LookupTableProvider = (table: VuuTable) => ListOption[];\n\nexport interface ViewConfig {\n allowRename?: boolean;\n closeable?: boolean;\n header?: boolean;\n}\n\nexport interface DynamicFeatureProps<P extends object | undefined = object> {\n /**\n props that will be passed to the lazily loaded component.\n */\n ComponentProps?: P;\n ViewProps?: ViewConfig;\n css?: string;\n height?: number;\n title?: string;\n /** \n The url of javascript bundle to lazily load. Bundle must provide a default export\n and that export must be a React component.\n */\n url: string;\n width?: number;\n}\n\ndeclare global {\n const vuuConfig: Promise<VuuConfig>;\n}\n\nexport interface DynamicFeatureDescriptor {\n name: string;\n title: string;\n url: string;\n css?: string;\n leftNavLocation: \"vuu-features\" | \"vuu-tables\";\n featureProps?: {\n vuuTables?: \"*\" | VuuTable[];\n };\n viewProps?: ViewConfig;\n}\n\nexport interface StaticFeatureDescriptor {\n group?: string;\n label: string;\n type: string;\n}\n\nconst isStaticFeature = (\n feature: unknown,\n): feature is StaticFeatureDescriptor =>\n feature !== null && typeof feature === \"object\" && \"type\" in feature;\n\nexport const isStaticFeatures = (\n features: unknown,\n): features is StaticFeatureDescriptor[] =>\n Array.isArray(features) && features.every(isStaticFeature);\n\nexport interface FilterTableFeatureProps {\n tableSchema: TableSchema;\n}\n\nexport type DynamicFeatures = {\n [key: string]: DynamicFeatureDescriptor;\n};\n\nexport function featureFromJson({ type }: { type: string }): ReactElement {\n const componentType = type.match(/^[a-z]/) ? type : getLayoutComponent(type);\n if (componentType === undefined) {\n throw Error(\n `layoutUtils unable to create feature component from JSON, unknown type ${type}`,\n );\n }\n return React.createElement(componentType);\n}\n\nexport interface VuuConfig {\n features: DynamicFeatures;\n authUrl?: string;\n websocketUrl: string;\n ssl: boolean;\n}\n\n/**\n * We currently categorize 'features' simply by the leftNavLocation\n * @param feature\n * @returns\n */\nexport const isCustomFeature = (feature: DynamicFeatureDescriptor) =>\n feature.leftNavLocation === \"vuu-features\";\n\nexport const isWildcardSchema = (\n vuuTables?: \"*\" | VuuTable[],\n): vuuTables is \"*\" => vuuTables === \"*\";\nexport const isVuuTables = (\n vuuTables?: \"*\" | VuuTable[],\n): vuuTables is VuuTable[] => Array.isArray(vuuTables);\n\nexport interface FeaturePropsWithFilterTableFeature\n extends Omit<DynamicFeatureProps, \"ComponentProps\"> {\n ComponentProps: FilterTableFeatureProps;\n}\n\nexport const hasFilterTableFeatureProps = (\n props: DynamicFeatureProps,\n): props is FeaturePropsWithFilterTableFeature =>\n typeof props.ComponentProps === \"object\" &&\n props.ComponentProps !== null &&\n \"tableSchema\" in props.ComponentProps;\n\nexport const isSameTable = (t1: VuuTable, t2: VuuTable) => {\n t1.module === t2.module && t1.table == t2.table;\n};\n\n// Sort TableScheas by module\nexport const byModule = (schema1: TableSchema, schema2: TableSchema) => {\n const m1 = schema1.table.module.toLowerCase();\n const m2 = schema2.table.module.toLowerCase();\n if (m1 < m2) {\n return -1;\n } else if (m1 > m2) {\n return 1;\n } else if (schema1.table.table < schema2.table.table) {\n return -1;\n } else if (schema1.table.table > schema2.table.table) {\n return 1;\n } else {\n return 0;\n }\n};\n\nexport type GetFeaturePaths = (params: {\n env: Environment;\n fileName: string;\n withCss?: boolean;\n}) => DynamicFeatureProps;\n\nexport const getFilterTableFeatures = (\n schemas: TableSchema[],\n getFeaturePath: GetFeaturePaths,\n) =>\n schemas\n .sort(byModule)\n .map<DynamicFeatureProps<FilterTableFeatureProps>>((schema) => ({\n ...getFeaturePath({ env, fileName: \"FilterTable\" }),\n ComponentProps: {\n tableSchema: schema,\n },\n ViewProps: {\n allowRename: true,\n },\n title: `${schema.table.module} ${schema.table.table}`,\n }));\n\nexport type Component = {\n componentName: string;\n component: unknown;\n};\n\nexport const assertComponentRegistered = (\n componentName: string,\n component: unknown,\n) => {\n if (typeof component !== \"function\") {\n console.warn(\n `${componentName} module not loaded, will be unabale to deserialize from layout JSON`,\n );\n }\n};\n\nexport const assertComponentsRegistered = (componentList: Component[]) => {\n for (const { componentName, component } of componentList) {\n assertComponentRegistered(componentName, component);\n }\n};\n/**\n * Process the DynamicFeature descriptors. Identify\n * the vuu tables required and inject the appropriate TableSchemas\n *\n * @param dynamicFeatures\n * @param tableSchemas\n * @returns\n */\nexport const getCustomAndTableFeatures = (\n dynamicFeatures: DynamicFeatureDescriptor[],\n tableSchemas: TableSchema[],\n): {\n dynamicFeatures: DynamicFeatureProps[];\n tableFeatures: DynamicFeatureProps<FilterTableFeatureProps>[];\n} => {\n // Split features into simple tables and 'custom' features\n const [customFeatureConfig, tableFeaturesConfig] = partition(\n dynamicFeatures,\n isCustomFeature,\n );\n\n const customFeatures: DynamicFeatureProps[] = [];\n const tableFeatures: DynamicFeatureProps<FilterTableFeatureProps>[] = [];\n\n for (const {\n featureProps = {},\n viewProps,\n ...feature\n } of tableFeaturesConfig) {\n const { vuuTables } = featureProps;\n // Currently FilterTable is the only 'tableFeature' and it uses the wildcard\n if (isWildcardSchema(vuuTables)) {\n if (tableSchemas) {\n for (const tableSchema of tableSchemas) {\n tableFeatures.push({\n ...feature,\n ComponentProps: {\n tableSchema,\n },\n title: `${tableSchema.table.module} ${wordify(\n tableSchema.table.table,\n )}`,\n ViewProps: {\n ...viewProps,\n allowRename: true,\n },\n });\n }\n }\n } /*else if (isVuuTables(vuuTables) && tableSchemas) {\n const tableSchema = tableSchemas.find((tableSchema) =>\n isSameTable(vuuTable, tableSchema.table),\n );\n if (tableSchema) {\n tableFeatures.push({\n ...feature,\n ComponentProps: {\n tableSchema,\n },\n ViewProps: viewProps,\n });\n }\n }*/\n }\n\n for (const {\n featureProps = {},\n viewProps,\n ...feature\n } of customFeatureConfig) {\n const { vuuTables } = featureProps;\n if (isVuuTables(vuuTables)) {\n if (tableSchemas) {\n customFeatures.push({\n ...feature,\n ComponentProps: vuuTables.reduce<Record<string, TableSchema>>(\n (map, vuuTable) => {\n map[`${vuuTable.table}Schema`] = tableSchemas.find(\n (tableSchema) => isSameTable(vuuTable, tableSchema.table),\n ) as TableSchema;\n return map;\n },\n {},\n ),\n ViewProps: viewProps,\n });\n }\n } else {\n customFeatures.push(feature);\n }\n }\n return { dynamicFeatures: customFeatures, tableFeatures: tableFeatures };\n};\n","const PUNCTUATION_STR = String.fromCharCode(8200);\nconst DIGIT_STR = String.fromCharCode(8199);\nconst DECIMALS_AUTO = -1;\n\ntype PadMap = {\n DIGIT: string;\n TWO_DIGITS: string;\n THREE_DIGITS: string;\n FULL_PADDING: [null, string, string, string, string];\n};\n\nconst Space: PadMap = {\n DIGIT: DIGIT_STR,\n TWO_DIGITS: DIGIT_STR + DIGIT_STR,\n THREE_DIGITS: DIGIT_STR + DIGIT_STR + DIGIT_STR,\n FULL_PADDING: [\n null,\n PUNCTUATION_STR + DIGIT_STR,\n PUNCTUATION_STR + DIGIT_STR + DIGIT_STR,\n PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR,\n PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR,\n ],\n};\n\nconst Zero: PadMap = {\n DIGIT: \"0\",\n TWO_DIGITS: \"00\",\n THREE_DIGITS: \"000\",\n FULL_PADDING: [null, \"0\", \"00\", \"000\", \"0000\"],\n};\n\nfunction padLeft(value: string, maxLength = 6) {\n return (LEADING_FILL + value).slice(-maxLength);\n}\n\nconst LEADING_FILL =\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR;\n\nconst Align = {\n Right: \"right\",\n Center: \"center\",\n Left: \"left\",\n};\n\nfunction pad(n: string, dp: number, Pad: PadMap): string {\n let len = n.length;\n const diff = dp - len;\n\n if (diff > 0) {\n if (diff === 1) {\n n = n + Pad.DIGIT;\n } else if (diff === 2) {\n n = n + Pad.TWO_DIGITS;\n } else if (diff === 3) {\n n = n + Pad.THREE_DIGITS;\n }\n } else {\n if (diff < 0) {\n n = n.slice(0, dp);\n len = dp;\n }\n\n if (Pad === Space && n.charAt(len - 1) === \"0\") {\n n = n.replace(/0+$/, \"\");\n return pad(n, dp, Pad);\n }\n }\n return n;\n}\n\nexport function roundDecimal(\n value?: number,\n align = Align.Right,\n decimals = 4,\n zeroPad?: boolean,\n alignOnDecimals?: boolean\n) {\n if (value === undefined || typeof value !== \"number\" || isNaN(value)) {\n return \"\";\n }\n let integral, fraction, Pad;\n\n const [part1, part2 = \"\"] = value.toString().split(\".\");\n const actualDecimals = part2.length;\n\n integral = parseFloat(part1).toLocaleString();\n\n if (align === Align.Left && alignOnDecimals) {\n integral = padLeft(integral);\n }\n\n if (decimals === DECIMALS_AUTO || actualDecimals === decimals) {\n fraction = part2;\n } else if (actualDecimals > decimals) {\n fraction = parseFloat(\"0.\" + part2)\n .toFixed(decimals)\n .slice(2);\n } else {\n /* eslint-disable no-cond-assign */\n if (\n (Pad = zeroPad\n ? Zero\n : alignOnDecimals && align !== Align.Left\n ? Space\n : null)\n ) {\n if (actualDecimals === 0) {\n fraction = Pad.FULL_PADDING[decimals];\n } else {\n fraction = pad(part2, decimals, Pad);\n }\n } else {\n fraction = part2;\n }\n }\n\n return integral + (fraction ? \".\" + fraction : \"\");\n}\n","import { DateTimeDataValueDescriptor } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n ColumnTypeFormatting,\n ColumnTypeValueMap,\n ValueFormatter,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n isDateTimeDataValue,\n isMappedValueTypeRenderer,\n isTypeDescriptor,\n} from \"./column-utils\";\nimport { dateTimePattern, formatDate } from \"./date\";\nimport { roundDecimal } from \"./round-decimal\";\n\nexport type ValueFormatters = {\n [key: string]: ValueFormatter;\n};\n\nconst DEFAULT_NUMERIC_FORMAT: ColumnTypeFormatting = {};\n\nexport const defaultValueFormatter = (value: unknown) =>\n value == null ? \"\" : typeof value === \"string\" ? value : value.toString();\n\nconst dateFormatter = (column: DateTimeDataValueDescriptor) => {\n const pattern = dateTimePattern(column.type);\n const formatter = formatDate(pattern);\n\n return (value: unknown) => {\n if (typeof value === \"number\" && value !== 0) {\n return formatter(new Date(value));\n } else {\n return \"\";\n }\n };\n};\n\nexport const numericFormatter = ({\n align = \"right\",\n type,\n}: Partial<ColumnDescriptor>) => {\n if (type === undefined || typeof type === \"string\") {\n return defaultValueFormatter;\n } else {\n const {\n alignOnDecimals = false,\n decimals,\n zeroPad = false,\n } = type.formatting ?? DEFAULT_NUMERIC_FORMAT;\n return (value: unknown) => {\n if (\n typeof value === \"string\" &&\n (value.startsWith(\"Σ\") || value.startsWith(\"[\"))\n ) {\n return value;\n }\n const number =\n typeof value === \"number\"\n ? value\n : typeof value === \"string\"\n ? parseFloat(value)\n : undefined;\n return roundDecimal(number, align, decimals, zeroPad, alignOnDecimals);\n };\n }\n};\n\nconst mapFormatter = (map: ColumnTypeValueMap) => {\n return (value: unknown) => {\n return map[value as string] ?? \"\";\n };\n};\n\nexport const getValueFormatter = (\n column: ColumnDescriptor,\n serverDataType = column.serverDataType,\n): ValueFormatter => {\n if (isDateTimeDataValue(column)) {\n return dateFormatter(column);\n }\n\n const { type } = column;\n if (isTypeDescriptor(type) && isMappedValueTypeRenderer(type?.renderer)) {\n return mapFormatter(type.renderer.map);\n } else if (serverDataType === \"string\" || serverDataType === \"char\") {\n return (value: unknown) => value as string;\n } else if (serverDataType === \"double\") {\n return numericFormatter(column);\n }\n return defaultValueFormatter;\n};\n\n/**\n * Lowercases a string and returns as Lowercase typescript type\n *\n * @param str the input string\n * @returns str converted to Lowercase\n */\nexport const lowerCase = (str: string) =>\n str.toLowerCase() as Lowercase<string>;\n","export const getUniqueId = () => `hw-${Math.round(Math.random() * 1e5)}`;\n","import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { VuuGroupBy } from \"@vuu-ui/vuu-protocol-types\";\n\nexport function addGroupColumn(groupBy: VuuGroupBy, column: ColumnDescriptor) {\n if (groupBy.length > 0) {\n return groupBy.concat(column.name);\n } else {\n return [column.name];\n }\n}\n\nexport const removeGroupColumn = (\n groupBy: VuuGroupBy,\n column: ColumnDescriptor,\n) => groupBy.filter((colName) => colName !== column.name);\n\nexport type ColumnGroupStatus =\n | \"no-groupby\"\n | \"single-groupby-other-column\"\n | \"single-groupby\"\n | \"multi-groupby-other-columns\"\n | \"multi-groupby-includes-column\";\n\n/**\n * Given a VuuGroupby definition and a column, determine whether the given column\n * is included in the grouping and if so, in what position/direction.\n */\nexport const getGroupStatus = (\n columnName: string,\n groupBy?: VuuGroupBy,\n): ColumnGroupStatus => {\n if (groupBy === undefined || groupBy.length === 0) {\n return \"no-groupby\";\n } else {\n const indexPos = groupBy.indexOf(columnName);\n if (indexPos === -1) {\n return groupBy.length === 1\n ? \"single-groupby-other-column\"\n : \"multi-groupby-other-columns\";\n } else {\n return groupBy.length === 1\n ? \"single-groupby\"\n : \"single-groupby-other-column\";\n }\n }\n};\n","export const isCharacterKey = (key: string) => key.length === 1;\n\nexport const isQuoteKey = (evt: KeyboardEvent) => {\n return evt.key === '\"' || evt.key === \"'\";\n};\n","export function invariant(condition: boolean, message: string) {\n if (!condition) {\n const error = new Error(message);\n error.name = \"Invariant Violation\";\n // TODO what is framesToPop?\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ItemToStringFunction = (item: any) => string;\n\nconst isPlainObject = (obj: unknown) =>\n Object.prototype.toString.call(obj) === \"[object Object]\";\n\nexport function itemToString(item: unknown): string {\n if (typeof item === \"string\") {\n return item;\n } else if (!isPlainObject(item)) {\n return String(item);\n }\n\n if (Object.prototype.hasOwnProperty.call(item, \"label\")) {\n return String((item as { label?: string }).label);\n }\n\n console.warn(\n [\n \"itemToString: you've likely forgotten to set the label prop on the item object.\",\n \"You can also provide your own `itemToString` implementation.\",\n ].join(\"\\n\")\n );\n\n return \"\";\n}\n","import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n DataValueTypeDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { metadataKeys } from \"./column-utils\";\n\nconst { COUNT } = metadataKeys;\n\nexport type JsonData =\n | {\n [key: string]: unknown;\n }\n | JsonData[];\n\ntype Index = { value: number };\n\ntype CellValue = {\n attribute: string;\n attributeValue: JsonData | VuuRowDataItemType | null;\n isLeaf: boolean;\n};\n\nconst isJsonData = (value: unknown): value is JsonData =>\n typeof value === \"object\" && value !== null;\n\nconst vuuRowDataItemTypes = [\"boolean\", \"number\", \"string\"];\nconst isVuuRowDataItem = (value: unknown): value is VuuRowDataItemType =>\n vuuRowDataItemTypes.includes(typeof value);\n\nconst getCellValue = (\n attribute: string,\n attributeValue: unknown,\n): CellValue => {\n if (Array.isArray(attributeValue)) {\n return {\n attribute: `${attribute}[`,\n attributeValue: \"\",\n isLeaf: false,\n };\n } else if (isJsonData(attributeValue)) {\n return {\n attribute: `${attribute}{`,\n attributeValue: \"\",\n isLeaf: false,\n };\n } else if (attributeValue === undefined) {\n return {\n attribute,\n attributeValue: \"undefined\",\n isLeaf: true,\n };\n } else if (isVuuRowDataItem(attributeValue)) {\n return {\n attribute,\n attributeValue,\n isLeaf: true,\n };\n } else {\n throw Error(`unsupported type ${typeof attributeValue} in JSON`);\n }\n};\n\nconst jsonColumnType: DataValueTypeDescriptor = {\n name: \"json\",\n renderer: {\n name: \"json\",\n },\n};\n\nexport const jsonToDataSourceRows = (\n json: JsonData,\n): [ColumnDescriptor[], DataSourceRow[]] => {\n const cols: ColumnDescriptor[] = [];\n\n cols.push(\n {\n className: \"vuuJsonCell\",\n name: \"Level 1\",\n type: jsonColumnType,\n },\n {\n className: \"vuuJsonCell\",\n name: \"Level 2\",\n type: jsonColumnType,\n },\n );\n\n const rows: DataSourceRow[] = [];\n\n addChildValues(rows, json, cols);\n return [cols, rows];\n};\n\nconst addChildValues = (\n rows: DataSourceRow[],\n json: JsonData,\n cols: ColumnDescriptor[],\n index: Index = { value: 0 },\n keyBase = \"$root\",\n depth = 0,\n): [number, number] => {\n let leafCount = 0;\n let rowCount = 0;\n if (depth === cols.length - 1) {\n cols.push({\n className: \"vuuJsonCell\",\n name: `Level ${cols.length + 1}`,\n hidden: true,\n type: jsonColumnType,\n });\n }\n const columnEntries = Object.entries(json);\n for (let i = 0; i < columnEntries.length; i++, index.value += 1) {\n const [key, value] = columnEntries[i];\n const { attribute, attributeValue, isLeaf } = getCellValue(key, value);\n const blanks = Array(depth).fill(\"\");\n const fullKey = `${keyBase}|${key}`;\n // prettier-ignore\n const row = [index.value, index.value, isLeaf,false,depth,0,fullKey,0, ...blanks, attribute, attributeValue ] as DataSourceRow\n rows.push(row);\n rowCount += 1;\n\n if (isJsonData(value)) {\n const [nestedLeafCount, nestedRowCount] = addChildValues(\n rows,\n value,\n cols,\n { value: index.value + 1 },\n fullKey,\n depth + 1,\n );\n row[COUNT] = nestedLeafCount;\n leafCount += nestedLeafCount;\n rowCount += nestedRowCount;\n index.value += nestedRowCount;\n } else {\n leafCount += 1;\n }\n }\n\n return [leafCount, rowCount];\n};\n","export const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Home = \"Home\";\nexport const End = \"End\";\nexport const PageUp = \"PageUp\";\nexport const PageDown = \"PageDown\";\nexport const Space = \" \";\nexport const Tab = \"Tab\";\n\nexport type ArrowKey = \"ArrowUp\" | \"ArrowDown\" | \"ArrowLeft\" | \"ArrowRight\";\nexport type PageKey = \"Home\" | \"End\" | \"PageUp\" | \"PageDown\";\n\nexport const isArrowKey = (key: string): key is ArrowKey =>\n key === \"ArrowUp\" ||\n key === \"ArrowDown\" ||\n key === \"ArrowLeft\" ||\n key === \"ArrowRight\";\n","import { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\n\nconst EMPTY: number[] = [];\nexport class KeySet {\n private keys = new Map<number, number>();\n private nextKeyValue = 0;\n private range: VuuRange;\n\n constructor(range: VuuRange) {\n this.range = range;\n this.init(range);\n }\n\n public next(free: number[] = EMPTY): number {\n if (free.length > 0) {\n return free.shift() as number;\n } else {\n return this.nextKeyValue++;\n }\n }\n\n private init({ from, to }: VuuRange) {\n this.keys.clear();\n this.nextKeyValue = 0;\n\n for (let rowIndex = from; rowIndex < to; rowIndex++) {\n const nextKeyValue = this.next();\n this.keys.set(rowIndex, nextKeyValue);\n }\n\n return true;\n }\n\n public reset(range: VuuRange) {\n const { from, to } = range;\n\n const newSize = to - from;\n const currentSize = this.range.to - this.range.from;\n this.range = range;\n\n if (currentSize > newSize) {\n // We re-initialize the range when the range size reduces, even though this will\n // potentially re-render all items.\n return this.init(range);\n }\n\n const freeKeys: number[] = [];\n\n this.keys.forEach((keyValue, rowIndex) => {\n if (rowIndex < from || rowIndex >= to) {\n freeKeys.push(keyValue);\n this.keys.delete(rowIndex);\n }\n });\n\n for (let rowIndex = from; rowIndex < to; rowIndex++) {\n if (!this.keys.has(rowIndex)) {\n const nextKeyValue = this.next(freeKeys);\n this.keys.set(rowIndex, nextKeyValue);\n }\n }\n\n return false;\n }\n\n public keyFor(rowIndex: number): number {\n const key = this.keys.get(rowIndex);\n if (key === undefined) {\n console.log(`key not found\n keys: ${this.toDebugString()}\n `);\n throw Error(`KeySet, no key found for rowIndex ${rowIndex}`);\n }\n return key;\n }\n\n public toDebugString() {\n return `${this.keys.size} keys\n${Array.from(this.keys.entries())\n .sort(([key1], [key2]) => key1 - key2)\n .map<string>(([k, v]) => `${k}=>${v}`)\n .join(\",\")}]\\n`;\n }\n}\n","import type { ListOption } from \"@vuu-ui/vuu-table-types\";\n\nexport const getSelectedOption = (\n values: ListOption[],\n selectedValue: string | number | undefined,\n) => {\n if (selectedValue === undefined) {\n return undefined;\n }\n return values.find((option) => option.value === selectedValue);\n};\n","export const getLocalEntity = <T>(url: string): T | undefined => {\n const data = localStorage.getItem(url);\n return data ? JSON.parse(data) : undefined;\n};\n\nexport const getAllLocalEntity = <T>(url: string): T[] =>\n Object.entries(localStorage)\n .filter(([key]) => key.includes(url))\n .map(([, value]) => JSON.parse(value) as T);\n\nexport const saveLocalEntity = <T>(url: string, data: T): T | undefined => {\n try {\n localStorage.setItem(url, JSON.stringify(data));\n return data;\n } catch {\n return undefined;\n }\n};\n","import {\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n ShowNotificationAction,\n VuuRpcResponse,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport {\n ContextMenuGroupItemDescriptor,\n ContextMenuItemDescriptor,\n} from \"@vuu-ui/vuu-context-menu\";\n\nexport const isGroupMenuItemDescriptor = (\n menuItem?: ContextMenuItemDescriptor,\n): menuItem is ContextMenuGroupItemDescriptor =>\n menuItem !== undefined && \"children\" in menuItem;\n\nexport const isOpenBulkEditResponse = (\n rpcResponse: Partial<VuuRpcResponse>,\n): rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema> =>\n (rpcResponse as MenuRpcResponse).rpcName === \"VP_BULK_EDIT_BEGIN_RPC\";\n\nexport const hasShowNotificationAction = (\n res: Partial<VuuRpcResponse>,\n): res is MenuRpcResponse<ShowNotificationAction> =>\n (res as MenuRpcResponse).action?.type === \"SHOW_NOTIFICATION_ACTION\";\n","import { ReactElement } from \"react\";\n\nexport type ReactComponent = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props?: any): ReactElement;\n};\n\nexport const isModule = (entity: Module | ReactComponent): entity is Module =>\n entity !== undefined && typeof entity !== \"function\";\n\nexport interface Module<T = ReactComponent> {\n [key: string]: Module<T> | T;\n}\n","import {\n DataSourceRow,\n RangeTuple,\n Selection,\n SelectionItem,\n} from \"@vuu-ui/vuu-data-types\";\nimport { TableSelectionModel } from \"@vuu-ui/vuu-table-types\";\nimport { metadataKeys } from \"./column-utils\";\n\nconst NO_SELECTION: number[] = [];\n\nconst { SELECTED } = metadataKeys;\n\nexport const RowSelected = {\n False: 0,\n True: 1,\n First: 2,\n Last: 4,\n};\n\nexport const isRowSelected = (row: DataSourceRow): boolean =>\n (row[SELECTED] & RowSelected.True) === RowSelected.True;\n\nexport const isRowSelectedLast = (row?: DataSourceRow): boolean =>\n row !== undefined && (row[SELECTED] & RowSelected.Last) === RowSelected.Last;\n\nconst inAscendingOrder = (item1: SelectionItem, item2: SelectionItem) => {\n const n1: number = typeof item1 === \"number\" ? item1 : item1[0];\n const n2: number = typeof item2 === \"number\" ? item2 : item2[0];\n return n1 - n2;\n};\n\nexport const deselectItem = (\n selectionModel: TableSelectionModel,\n selected: Selection,\n itemIndex: number,\n rangeSelect: boolean,\n keepExistingSelection = false,\n): Selection => {\n const singleSelect = selectionModel === \"single\";\n const multiSelect =\n selectionModel === \"extended\" || selectionModel === \"checkbox\";\n const actsLikeSingleSelect =\n singleSelect || (multiSelect && !keepExistingSelection && !rangeSelect);\n\n if (actsLikeSingleSelect || (!rangeSelect && !keepExistingSelection)) {\n return NO_SELECTION;\n } else if (!rangeSelect && keepExistingSelection) {\n return removeSelectedItem(selected, itemIndex);\n }\n return NO_SELECTION;\n};\n\nconst newSelectedFillsGapOrExtends = (\n selection: Selection,\n itemIndex: number,\n): boolean => {\n for (let i = 0; i < selection.length; i++) {\n const item = selection[i];\n if (typeof item === \"number\") {\n if (item === itemIndex - 1) {\n return true;\n } else if (item > itemIndex) {\n return false;\n }\n } else if (item[0] === itemIndex + 1 || item[1] === itemIndex - 1) {\n return true;\n } else if (item[0] > itemIndex) {\n return false;\n }\n }\n return false;\n};\n\nconst fillGapOrExtendSelection = (\n selection: Selection,\n itemIndex: number,\n): Selection => {\n for (let i = 0; i < selection.length; i++) {\n const item = selection[i];\n if (typeof item === \"number\") {\n if (item === itemIndex - 1) {\n const nextSelectionItem = selection[i + 1];\n if (nextSelectionItem === itemIndex + 1) {\n const newRange: SelectionItem = [item, nextSelectionItem];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 2));\n } else {\n const newRange: SelectionItem = [item, itemIndex];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 1));\n }\n } else if (item > itemIndex) {\n break;\n }\n } else if (item[0] === itemIndex + 1) {\n const newRange: SelectionItem = [itemIndex, item[1]];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 1));\n } else if (item[1] === itemIndex - 1) {\n // check to see whether another contiguous range follows\n const nextItem = selection[i + 1];\n if (Array.isArray(nextItem) && nextItem[0] === itemIndex + 1) {\n const newRange: SelectionItem = [item[0], nextItem[1]];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 2));\n } else if (typeof nextItem === \"number\" && nextItem === itemIndex + 1) {\n const newRange: SelectionItem = [item[0], nextItem];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 2));\n } else {\n const newRange: SelectionItem = [item[0], itemIndex];\n return selection\n .slice(0, i)\n .concat([newRange])\n .concat(selection.slice(i + 1));\n }\n }\n }\n\n return selection;\n};\n\nexport const selectItem = (\n selectionModel: TableSelectionModel,\n selected: Selection,\n itemIndex: number,\n rangeSelect: boolean,\n keepExistingSelection = false,\n activeItemIndex = -1,\n): Selection => {\n const singleSelect = selectionModel === \"single\";\n const multiSelect =\n selectionModel === \"extended\" || selectionModel === \"checkbox\";\n const actsLikeSingleSelect =\n singleSelect ||\n (multiSelect && !keepExistingSelection && !rangeSelect) ||\n (rangeSelect && activeItemIndex === -1);\n\n if (selectionModel === \"none\") {\n return NO_SELECTION;\n } else if (actsLikeSingleSelect) {\n return [itemIndex];\n } else if (rangeSelect) {\n if (selected.length === 0) {\n return [itemIndex];\n } else {\n const range: RangeTuple =\n itemIndex > activeItemIndex\n ? [activeItemIndex, itemIndex]\n : [itemIndex, activeItemIndex];\n return insertRange(selected, range);\n }\n } else if (!rangeSelect) {\n // what if we now have a range because we just filled agap between 2\n if (newSelectedFillsGapOrExtends(selected, itemIndex)) {\n return fillGapOrExtendSelection(selected, itemIndex);\n } else {\n return selected?.concat(itemIndex).sort(inAscendingOrder);\n }\n } else if (multiSelect) {\n // const [from, to] = idx > active ? [active, idx] : [idx, active];\n // newSelected = selected?.slice();\n // for (let i = from; i <= to; i++) {\n // if (!selected?.includes(i)) {\n // newSelected.push(i);\n // }\n // }\n }\n return NO_SELECTION;\n};\n\nfunction removeSelectedItem(selected: Selection, itemIndex: number) {\n if (selected.includes(itemIndex)) {\n return selected.filter((selectedItem) => selectedItem !== itemIndex);\n } else {\n const newSelected: Selection = [];\n for (const selectedItem of selected) {\n if (Array.isArray(selectedItem)) {\n if (rangeIncludes(selectedItem, itemIndex)) {\n newSelected.push(...splitRange(selectedItem, itemIndex));\n } else {\n newSelected.push(selectedItem);\n }\n } else {\n newSelected.push(selectedItem);\n }\n }\n return newSelected;\n }\n}\n\nfunction insertRange(selected: Selection, range: RangeTuple): Selection {\n const [from, to] = range;\n return selected.reduce<Selection>((newSelected, selectedItem) => {\n if (typeof selectedItem === \"number\") {\n if (selectedItem < from || selectedItem > to) {\n newSelected.push(selectedItem);\n } else if (!includedInRange(newSelected.at(-1), selectedItem)) {\n newSelected.push(range);\n }\n } else if (overlappingRange(selectedItem, range)) {\n newSelected.push(mergeRanges(selectedItem, range));\n } else {\n if (range[1] < selectedItem[0]) {\n newSelected.push(range);\n }\n newSelected.push(selectedItem);\n }\n\n return newSelected;\n }, []);\n}\n\nconst overlappingRange = (r1: RangeTuple, r2: RangeTuple) =>\n (r1[1] >= r2[0] && r1[1] <= r2[1]) || (r1[0] >= r2[0] && r1[0] <= r2[1]);\nconst mergeRanges = (r1: RangeTuple, r2: RangeTuple): RangeTuple => [\n Math.min(r1[0], r2[0]),\n Math.max(r1[1], r2[1]),\n];\n\nconst includedInRange = (\n selectedItem: SelectionItem | undefined,\n index: number,\n) => {\n if (typeof selectedItem === \"undefined\" || typeof selectedItem === \"number\") {\n return false;\n } else return rangeIncludes(selectedItem, index);\n};\n\nconst rangeIncludes = (range: RangeTuple, index: number) =>\n index >= range[0] && index <= range[1];\n\nconst SINGLE_SELECTED_ROW =\n RowSelected.True + RowSelected.First + RowSelected.Last;\nconst FIRST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.First;\nconst LAST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.Last;\n\n/**\n * Determine the value for selected. We use a bitmap to represent a number of selection states\n * a row might exhibit. selected/not-selected is the fundamental value. We also identify first\n * row of a selected block, last row of a selected block;\n */\nexport const getSelectionStatus = (\n selected: Selection,\n itemIndex: number,\n): number => {\n for (const item of selected) {\n if (typeof item === \"number\") {\n if (item === itemIndex) {\n return SINGLE_SELECTED_ROW;\n }\n } else if (rangeIncludes(item, itemIndex)) {\n if (itemIndex === item[0]) {\n return FIRST_SELECTED_ROW_OF_BLOCK;\n } else if (itemIndex === item[1]) {\n return LAST_SELECTED_ROW_OF_BLOCK;\n } else {\n return RowSelected.True;\n }\n }\n }\n return RowSelected.False;\n};\n\nexport const isSelected = (selected: Selection, itemIndex: number) => {\n for (const item of selected) {\n if (typeof item === \"number\") {\n if (item === itemIndex) {\n return true;\n } else if (item > itemIndex) {\n return false;\n }\n } else if (rangeIncludes(item, itemIndex)) {\n return true;\n } else if (item[0] > itemIndex) {\n return false;\n }\n }\n\n return false;\n};\n/**\n * Vuu server expects a full list if indexes of selected rows. Client represents selection in a more\n * efficient structure. This converts client structure to full server format.\n */\nexport const expandSelection = (selected: Selection): number[] => {\n if (selected.every((selectedItem) => typeof selectedItem === \"number\")) {\n return selected as number[];\n }\n const expandedSelected = [];\n for (const selectedItem of selected) {\n if (typeof selectedItem === \"number\") {\n expandedSelected.push(selectedItem);\n } else {\n for (let i = selectedItem[0]; i <= selectedItem[1]; i++) {\n expandedSelected.push(i);\n }\n }\n }\n return expandedSelected;\n};\n\nfunction splitRange([from, to]: RangeTuple, itemIndex: number): Selection {\n if (itemIndex === from) {\n return [[from + 1, to]];\n } else if (itemIndex === to) {\n return [[from, to - 1]];\n } else if (to - from === 2) {\n return [from, to];\n } else if (itemIndex === to - 1) {\n return [[from, to - 2], to];\n } else {\n return [\n [from, itemIndex - 1],\n [itemIndex + 1, to],\n ];\n }\n}\n\nexport type SelectionDiff = {\n added: SelectionItem[];\n removed: SelectionItem[];\n};\n\nexport const selectionCount = (selected: Selection = NO_SELECTION) => {\n let count = selected.length;\n for (const selectionItem of selected) {\n if (Array.isArray(selectionItem)) {\n const [from, to] = selectionItem;\n count += to - (from + 1);\n }\n }\n return count;\n};\n","import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport { metadataKeys } from \"./column-utils\";\nimport { WindowRange } from \"./range-utils\";\nimport { isRowSelectedLast } from \"./selection-utils\";\n\nconst { SELECTED } = metadataKeys;\n\nexport class MovingWindow {\n public data: DataSourceRow[];\n public rowCount = 0;\n #range: WindowRange;\n\n constructor({ from, to }: VuuRange) {\n this.#range = new WindowRange(from, to);\n //internal data is always 0 based, we add range.from to determine an offset\n this.data = new Array(Math.max(0, to - from));\n this.rowCount = 0;\n }\n\n setRowCount = (rowCount: number) => {\n if (rowCount < this.data.length) {\n this.data.length = rowCount;\n }\n\n this.rowCount = rowCount;\n };\n\n add(data: DataSourceRow) {\n const [index] = data;\n if (this.isWithinRange(index)) {\n const internalIndex = index - this.#range.from;\n this.data[internalIndex] = data;\n\n // Hack until we can deal with this more elegantly. When we have a block\n // select operation, first row is selected (and updated via server), then\n // remaining rows are selected when we select the block-end row. We get an\n // update for all rows except first. Because we're extending the select status\n // on the client, we have to adjust the first row selected (its still selected\n // but is no longer the 'last selected row in block')\n // Maybe answer is to apply ALL the selection status code here, not in Viewport\n if (data[SELECTED]) {\n const previousRow = this.data[internalIndex - 1];\n if (isRowSelectedLast(previousRow)) {\n this.data[internalIndex - 1] = previousRow.slice() as DataSourceRow;\n this.data[internalIndex - 1][SELECTED] -= 4;\n }\n }\n }\n }\n\n getAtIndex(index: number) {\n return this.#range.isWithin(index) &&\n this.data[index - this.#range.from] != null\n ? this.data[index - this.#range.from]\n : undefined;\n }\n\n isWithinRange(index: number) {\n return this.#range.isWithin(index);\n }\n\n setRange({ from, to }: VuuRange) {\n if (from !== this.#range.from || to !== this.#range.to) {\n const [overlapFrom, overlapTo] = this.#range.overlap(from, to);\n const newData = new Array(Math.max(0, to - from));\n for (let i = overlapFrom; i < overlapTo; i++) {\n const data = this.getAtIndex(i);\n if (data) {\n const index = i - from;\n newData[index] = data;\n }\n }\n this.data = newData;\n this.#range.from = from;\n this.#range.to = to;\n }\n }\n\n getSelectedRows() {\n return this.data.filter((row) => row[SELECTED] !== 0);\n }\n\n get range() {\n return this.#range;\n }\n\n slice(): DataSourceRow[] {\n const data: DataSourceRow[] = [];\n const { from } = this.range;\n for (let i = 0; i < this.data.length; i++) {\n if (this.data[i]) {\n data.push(this.data[i]);\n } else {\n data.push([from + i, from + i, true, false, 1, 0, \"\", 0]);\n }\n }\n return data;\n }\n\n // TODO make this more performant, see implementation in\n // array-backed-moving-window - use same implementation\n get hasAllRowsWithinRange(): boolean {\n const { from, to } = this.#range;\n\n for (let i = from; i < to; i++) {\n if (this.getAtIndex(i) === undefined) {\n return false;\n }\n }\n return true;\n }\n}\n","import {\n Children,\n isValidElement,\n ReactElement,\n ReactNode,\n SetStateAction,\n useEffect,\n useRef,\n} from \"react\";\n\nconst EMPTY_ARRAY: ReactElement[] = [];\n\nexport const asReactElements = (children: ReactNode): ReactElement[] => {\n const isArray = Array.isArray(children);\n const count = isArray ? children.length : Children.count(children);\n if (isArray && children.every(isValidElement)) {\n return children;\n } else if (count === 1 && !isArray && isValidElement(children)) {\n return [children];\n } else if (count > 1) {\n return children as ReactElement[];\n } else {\n return EMPTY_ARRAY;\n }\n};\n\nexport const useIsMounted = (id = \"\") => {\n const isMountedRef = useRef(false);\n useEffect(() => {\n console.log(`is MOUNTED ${id}`);\n isMountedRef.current = true;\n return () => {\n console.log(`is UNMOUNTED ${id}`);\n isMountedRef.current = false;\n };\n }, [id]);\n\n return isMountedRef;\n};\n\nexport const isSimpleStateValue = <T>(arg: SetStateAction<T>): arg is T =>\n typeof arg !== \"function\";\n","type VoidFunction = (...args: any) => void;\nexport type PerfFunction<T extends VoidFunction> = (\n ...args: Parameters<T>\n) => void;\n\nexport function debounce<T extends VoidFunction>(\n callback: T,\n timeInterval: number\n): PerfFunction<T> {\n let timeout: number | undefined;\n return (...args: unknown[]) => {\n clearTimeout(timeout);\n timeout = window.setTimeout(() => callback(...args), timeInterval);\n };\n}\n\nexport function throttle<T extends VoidFunction>(\n callback: T,\n limit: number\n): PerfFunction<T> {\n let wait = false;\n let lastArgs: unknown[] | undefined = undefined;\n\n function checkLastArgs() {\n if (lastArgs == undefined) {\n wait = false;\n } else {\n callback(...lastArgs);\n lastArgs = undefined;\n setTimeout(checkLastArgs, limit);\n }\n }\n\n return (...args: unknown[]) => {\n if (wait) {\n lastArgs = args;\n } else {\n callback(...args);\n wait = true;\n setTimeout(checkLastArgs, limit);\n }\n };\n}\n","export class DeferredPromise<T = unknown> {\n #promise: Promise<T>;\n #resolve: (value: T) => void = () => console.log(\"resolve was not set\");\n #reject: (err: unknown) => void = () => console.log(\"reject was not set\");\n #resolved = false;\n\n constructor() {\n this.#promise = new Promise<T>((resolve, reject) => {\n this.#resolve = resolve;\n this.#reject = reject;\n });\n }\n\n get promise() {\n return this.#promise;\n }\n\n get isResolved() {\n return this.#resolved;\n }\n\n resolve(value: T) {\n this.#resolved = true;\n return this.#resolve(value);\n }\n\n get reject() {\n return this.#reject;\n }\n}\n","import type {\n MenuRpcAction,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n RpcResponse,\n TableSchema,\n VuuUiMessageInRequestResponse,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuRpcMenuRequest,\n OpenDialogAction,\n VuuRpcEditCellRequest,\n VuuRowDataItemType,\n VuuRpcRequest,\n VuuRpcEditAddRowRequest,\n VuuDataRowDto,\n VuuRpcEditDeleteRowRequest,\n VuuRpcViewportRequest,\n VuuRpcResponse,\n VuuRpcMenuSuccess,\n VuuTable,\n VuuRpcViewportResponse,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nconst MENU_RPC_TYPES = [\n \"VIEW_PORT_MENUS_SELECT_RPC\",\n \"VIEW_PORT_MENU_TABLE_RPC\",\n \"VIEW_PORT_MENU_ROW_RPC\",\n \"VIEW_PORT_MENU_CELL_RPC\",\n \"VP_EDIT_CELL_RPC\",\n \"VP_EDIT_ROW_RPC\",\n \"VP_EDIT_ADD_ROW_RPC\",\n \"VP_EDIT_DELETE_CELL_RPC\",\n \"VP_EDIT_DELETE_ROW_RPC\",\n \"VP_EDIT_SUBMIT_FORM_RPC\",\n];\n\nexport const isVuuMenuRpcRequest = (\n message: VuuRpcRequest | Omit<VuuRpcRequest, \"vpId\">,\n): message is VuuRpcMenuRequest => MENU_RPC_TYPES.includes(message[\"type\"]);\n\nexport const isRequestResponse = (\n message: object,\n): message is VuuUiMessageInRequestResponse => \"requestId\" in message;\n\nexport const isOpenSessionTableDialogMessage = (\n rpcResponse: RpcResponse,\n): rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema> =>\n rpcResponse.type === \"VIEW_PORT_MENU_RESP\" &&\n isOpenDialogAction(rpcResponse.action) &&\n \"tableSchema\" in rpcResponse.action;\n\nexport const isOpenDialogAction = (\n action?: MenuRpcAction,\n): action is OpenDialogAction =>\n action !== undefined && action.type === \"OPEN_DIALOG_ACTION\";\n\nexport function isViewportRpcRequest(\n request: VuuRpcRequest,\n): request is VuuRpcViewportRequest;\nexport function isViewportRpcRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is Omit<VuuRpcViewportRequest, \"vpId\">;\nexport function isViewportRpcRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is VuuRpcViewportRequest | Omit<VuuRpcViewportRequest, \"vpId\"> {\n return request.type === \"VIEW_PORT_RPC_CALL\";\n}\n\nexport function isEditCellRequest(\n request: VuuRpcRequest,\n): request is VuuRpcEditCellRequest;\nexport function isEditCellRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is Omit<VuuRpcEditCellRequest, \"vpId\">;\nexport function isEditCellRequest(\n request: VuuRpcRequest | Omit<VuuRpcRequest, \"vpId\">,\n): request is VuuRpcEditCellRequest | Omit<VuuRpcEditCellRequest, \"vpId\"> {\n return request.type === \"VP_EDIT_CELL_RPC\";\n}\n\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n vpId: string,\n): VuuRpcEditCellRequest;\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n): Omit<VuuRpcEditCellRequest, \"vpId\">;\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n vpId?: string,\n): VuuRpcEditCellRequest | Omit<VuuRpcEditCellRequest, \"vpId\"> {\n return {\n rowKey,\n field,\n value,\n type: \"VP_EDIT_CELL_RPC\",\n vpId,\n };\n}\n\nexport function viewportRpcRequest(\n rpcName: string,\n vpId: string,\n): VuuRpcViewportRequest;\nexport function viewportRpcRequest(\n rpcName: string,\n): Omit<VuuRpcViewportRequest, \"vpId\">;\nexport function viewportRpcRequest(\n rpcName: string,\n vpId?: string,\n): VuuRpcViewportRequest | Omit<VuuRpcViewportRequest, \"vpId\"> {\n return {\n namedParams: {},\n params: [],\n rpcName,\n type: \"VIEW_PORT_RPC_CALL\",\n vpId,\n };\n}\n\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n vpId: string,\n): VuuRpcEditAddRowRequest;\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n): Omit<VuuRpcEditAddRowRequest, \"vpId\">;\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n vpId?: string,\n): VuuRpcEditAddRowRequest | Omit<VuuRpcEditAddRowRequest, \"vpId\"> {\n return {\n rowKey,\n data,\n type: \"VP_EDIT_ADD_ROW_RPC\",\n vpId,\n };\n}\n\nexport function vuuDeleteRowRequest(\n rowKey: string,\n vpId: string,\n): VuuRpcEditDeleteRowRequest;\nexport function vuuDeleteRowRequest(\n rowKey: string,\n): Omit<VuuRpcEditDeleteRowRequest, \"vpId\">;\nexport function vuuDeleteRowRequest(\n rowKey: string,\n vpId?: string,\n): VuuRpcEditDeleteRowRequest | Omit<VuuRpcEditDeleteRowRequest, \"vpId\"> {\n return {\n rowKey,\n type: \"VP_EDIT_DELETE_ROW_RPC\",\n vpId,\n };\n}\n\n// export type WithTableSchema<\n// T extends VuuRpcMenuSuccess | VuuRpcViewportResponse = VuuRpcMenuSuccess,\n// > = T & {\n// action: T extends VuuRpcMenuSuccess\n// ? VuuRpcMenuSuccess[\"action\"] & { tableSchema: TableSchema }\n// : VuuRpcViewportResponse[\"action\"] & { tableSchema: TableSchema };\n// };\n\nexport const isSessionTable = (table?: unknown) => {\n if (\n table !== null &&\n typeof table === \"object\" &&\n \"table\" in table &&\n \"module\" in table\n ) {\n return (table as VuuTable).table.startsWith(\"session\");\n }\n return false;\n};\n\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcViewportResponse | VuuRpcMenuSuccess;\nexport function isActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is\n | Omit<VuuRpcViewportResponse, \"vpId\">\n | Omit<VuuRpcMenuSuccess, \"vpId\">;\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n) {\n return (\n rpcResponse.type === \"VIEW_PORT_MENU_RESP\" ||\n rpcResponse.type === \"VIEW_PORT_RPC_REPONSE\"\n );\n}\n\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is Omit<\n VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n >,\n \"vpId\"\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n> {\n return (\n isActionMessage(rpcResponse) &&\n isOpenDialogAction(rpcResponse.action) &&\n isSessionTable(rpcResponse.action.table) &&\n rpcResponse.action?.renderComponent === \"inline-form\"\n );\n}\n\nexport const isRpcSuccess = (\n response: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n): response is VuuRpcViewportResponse =>\n isActionMessage(response) && response.action.type === \"VP_RPC_SUCCESS\";\n","//TODO this all probably belongs in vuu-table\nimport type {\n DataSourceRow,\n DataSourceRowObject,\n} from \"@vuu-ui/vuu-data-types\";\nimport type { MutableRefObject } from \"react\";\nimport { ColumnMap, metadataKeys } from \"./column-utils\";\nimport { isRowSelected } from \"./selection-utils\";\n\nconst { IS_LEAF, KEY, IDX } = metadataKeys;\n\nexport type RowOffsetFunc = (\n row: DataSourceRow,\n pctScrollTop?: number,\n) => number;\nexport type RowAtPositionFunc = (position: number) => number;\n\n/**\n * RowOffset function, RowAtPosition function, isVirtualScroll\n */\nexport type RowPositioning = [RowOffsetFunc, RowAtPositionFunc, boolean];\n\nexport const actualRowPositioning = (rowHeight: number): RowPositioning => [\n (row) => row[IDX] * rowHeight,\n (position) => Math.floor(position / rowHeight),\n false,\n];\n\n/**\n * return functions for determining a) the pixel offset to apply to a row, given the\n * row index and b) the index of the row at a given scroll offset. This implementation\n * is used when we are forced to 'virtualise' scrolling - because the number of rows\n * is high enough that we cannot create a large enough HTML content container.\n *\n * @param rowHeight\n * @param virtualisedExtent\n * @param pctScrollTop\n * @returns\n */\nexport const virtualRowPositioning = (\n rowHeight: number,\n virtualisedExtent: number,\n pctScrollTop: MutableRefObject<number>,\n): RowPositioning => [\n (row, offset = 0) => {\n const rowOffset = pctScrollTop.current * virtualisedExtent;\n return (row[IDX] - offset) * rowHeight - rowOffset;\n },\n /*\n Return index position of closest row \n */\n (position) => {\n const rowOffset = pctScrollTop.current * virtualisedExtent;\n return Math.round((position + rowOffset) / rowHeight);\n },\n true,\n];\n\nexport type RowToObjectMapper = (\n row: DataSourceRow,\n columnMap: ColumnMap,\n) => DataSourceRowObject;\n\nexport const asDataSourceRowObject: RowToObjectMapper = (\n row,\n columnMap,\n): DataSourceRowObject => {\n const { [IS_LEAF]: isLeaf, [KEY]: key, [IDX]: index } = row;\n\n const rowObject: DataSourceRowObject = {\n key,\n index,\n isGroupRow: !isLeaf,\n isSelected: isRowSelected(row),\n data: {},\n };\n\n for (const [colName, colIdx] of Object.entries(columnMap)) {\n rowObject.data[colName] = row[colIdx];\n }\n\n return rowObject;\n};\n","/**\n * The Vuu Shell creates the outermost application layout. This includes some\n * 'special' identifiers that can be targetted by layout commands to effect or\n * react to layout changes.\n */\nexport const VuuShellLocation = {\n ContextPanel: \"context-panel\",\n MultiWorkspaceContainer: \"vuu-multi-workspace-container\",\n SidePanel: \"vuu-side-panel\",\n SideToolbar: \"vuu-side-toolbar\",\n Workspace: \"vuu-workspace\",\n WorkspaceContainer: \"vuu-workspace-container\",\n} as const;\n\nexport type VuuShellLocation =\n (typeof VuuShellLocation)[keyof typeof VuuShellLocation];\n","import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { VuuSort, VuuSortCol, VuuSortType } from \"@vuu-ui/vuu-protocol-types\";\n\nconst cycleSortType = (sortType: VuuSortType) =>\n sortType === \"A\" ? \"D\" : sortType === \"D\" ? undefined : \"A\";\n\nconst NO_SORT: VuuSort = { sortDefs: [] };\n\n// Given an existing sort spec and a column we wish to sort by,\n// construct and return a new sort spec.\nexport const toggleOrApplySort = (\n { sortDefs }: VuuSort,\n { name: column }: ColumnDescriptor,\n extendSort = false,\n sortType?: VuuSortType,\n): VuuSort => {\n if (extendSort) {\n const existingDef = sortDefs.find((sortDef) => sortDef.column === column);\n if (existingDef) {\n return {\n sortDefs: sortDefs.map((sortDef) =>\n sortDef.column === column\n ? {\n column,\n sortType: sortDef.sortType === \"A\" ? \"D\" : \"A\",\n }\n : sortDef,\n ),\n };\n } else {\n return {\n sortDefs: sortDefs.concat({\n column,\n sortType: sortType ?? \"A\",\n }),\n };\n }\n }\n\n const newSortType =\n typeof sortType === \"string\"\n ? sortType\n : sortDefs.length === 1 && sortDefs[0].column === column\n ? cycleSortType(sortDefs[0].sortType)\n : \"A\";\n\n return newSortType\n ? {\n sortDefs: [{ column, sortType: newSortType }],\n }\n : NO_SORT;\n};\n\nexport const setSortColumn = (\n { sortDefs }: VuuSort,\n column: ColumnDescriptor,\n sortType?: \"A\" | \"D\",\n): VuuSort => {\n if (sortType === undefined) {\n const columnSort = sortDefs.find((item) => item.column === column.name);\n if (columnSort) {\n return {\n sortDefs: [\n {\n column: column.name,\n sortType: columnSort.sortType === \"A\" ? \"D\" : \"A\",\n },\n ],\n };\n }\n }\n return { sortDefs: [{ column: column.name, sortType: sortType ?? \"A\" }] };\n};\n\nexport const addSortColumn = (\n { sortDefs }: VuuSort,\n column: ColumnDescriptor,\n sortType: \"A\" | \"D\" = \"A\",\n): VuuSort => {\n const sortEntry: VuuSortCol = { column: column.name, sortType };\n if (sortDefs.length > 0) {\n return {\n sortDefs: sortDefs.concat(sortEntry),\n };\n } else {\n return { sortDefs: [sortEntry] };\n }\n};\n\nexport type ColumnSortStatus =\n | \"no-sort\"\n | \"sort-other-column\"\n | \"single-sort-asc\"\n | \"single-sort-desc\"\n | \"multi-sort-includes-column-asc\"\n | \"multi-sort-includes-column-desc\";\n\n/**\n * Given a VuuSort definition and a column, determine whether the given column\n * is included in the sort and if so, in what position/direction.\n */\nexport const getSortStatus = (\n columnName: string,\n vuuSort?: VuuSort,\n): ColumnSortStatus => {\n if (vuuSort === undefined || vuuSort.sortDefs.length === 0) {\n return \"no-sort\";\n } else {\n const sortDef = vuuSort.sortDefs.find((sd) => sd.column === columnName);\n if (sortDef) {\n if (vuuSort.sortDefs.length === 1) {\n return sortDef.sortType === \"A\"\n ? \"single-sort-asc\"\n : \"single-sort-desc\";\n } else {\n return sortDef.sortType === \"A\"\n ? \"multi-sort-includes-column-asc\"\n : \"multi-sort-includes-column-desc\";\n }\n } else {\n return \"sort-other-column\";\n }\n }\n};\n","import { TableSchemaTable } from \"@vuu-ui/vuu-data-types\";\nimport { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\n\nexport const getVuuTable = (schemaTable: TableSchemaTable): VuuTable => {\n if (schemaTable.session) {\n const { module, session } = schemaTable;\n return { module, table: session };\n } else {\n return schemaTable;\n }\n};\n","export const NO_DATA_MATCH = [\"No matching data\"];\n","import { TreeSourceNode } from \"./tree-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { metadataKeys } from \"./column-utils\";\nimport { IconProvider } from \"@vuu-ui/vuu-data-local/src/tree-data-source/IconProvider\";\n\nconst { COUNT, DEPTH, IDX, KEY } = metadataKeys;\n\ntype Index = { value: number };\n\nexport const treeToDataSourceRows = (\n treeSourceNodes: TreeSourceNode[],\n iconProvider?: IconProvider,\n): [ColumnDescriptor[], DataSourceRow[]] => {\n const columns: ColumnDescriptor[] = [];\n\n columns.push(\n {\n hidden: true,\n name: \"nodeData\",\n type: \"json\",\n },\n {\n getIcon: iconProvider?.getIcon,\n name: \"Level 1\",\n type: \"string\",\n },\n {\n getIcon: iconProvider?.getIcon,\n name: \"Level 2\",\n type: \"string\",\n },\n );\n\n const rows: DataSourceRow[] = [];\n\n addChildValues(rows, treeSourceNodes, columns, iconProvider);\n return [columns, rows];\n};\n\nconst addChildValues = (\n rows: DataSourceRow[],\n treeSourceNodes: TreeSourceNode[],\n cols: ColumnDescriptor[],\n iconProvider: IconProvider | undefined,\n index: Index = { value: 0 },\n keyBase = \"$root\",\n depth = 1,\n): [number, number] => {\n let leafCount = 0;\n let rowCount = 0;\n if (depth === cols.length - 1) {\n cols.push({\n getIcon: iconProvider?.getIcon,\n name: `Level ${cols.length}`,\n type: \"string\",\n });\n }\n for (let i = 0; i < treeSourceNodes.length; i++, index.value += 1) {\n const { childNodes, icon, label, nodeData } = treeSourceNodes[i];\n const blanks = Array(depth - 1).fill(\"\");\n const fullKey = `${keyBase}|${label}`;\n // prettier-ignore\n const row = [index.value, index.value, false,false,depth,0,fullKey,0, nodeData, ...blanks, label ] as DataSourceRow;\n if (icon) {\n iconProvider?.setIcon(fullKey, icon);\n }\n rows.push(row);\n rowCount += 1;\n\n if (childNodes && childNodes.length > 0) {\n const [nestedLeafCount, nestedRowCount] = addChildValues(\n rows,\n childNodes,\n cols,\n iconProvider,\n { value: index.value + 1 },\n fullKey,\n depth + 1,\n );\n row[COUNT] = nestedLeafCount;\n leafCount += nestedLeafCount;\n rowCount += nestedRowCount;\n index.value += nestedRowCount;\n } else {\n leafCount += 1;\n }\n }\n\n return [leafCount, rowCount];\n};\n\nexport const lastPathSegment = (path: string, separator = \"/\") => {\n const root = path.endsWith(separator) ? path.slice(0, -1) : path;\n return root.slice(root.lastIndexOf(separator) + 1);\n};\n\nexport const dropLastPathSegment = (path: string, separator = \"/\") => {\n return path.slice(0, path.lastIndexOf(separator));\n};\n\nexport const getParentRow = (rows: DataSourceRow[], row: DataSourceRow) => {\n const { [IDX]: idx, [DEPTH]: depth } = row;\n for (let i = idx - 1; i >= 0; i--) {\n const nextRow = rows[i];\n if (nextRow[DEPTH] === depth - 1) {\n return nextRow;\n }\n }\n};\n\nconst rowsAreSiblings = (key1: string, key2: string) =>\n dropLastPathSegment(key1, \"|\") === dropLastPathSegment(key2, \"|\");\n\nexport const missingAncestor = (\n row: DataSourceRow,\n previousRow?: DataSourceRow,\n) => {\n if (previousRow) {\n const prevKey = previousRow[KEY];\n const key = row[KEY];\n\n if (key.startsWith(prevKey)) {\n return false;\n } else if (!rowsAreSiblings(prevKey, key)) {\n return true;\n }\n } else if (row[DEPTH] > 1) {\n return true;\n }\n\n return false;\n};\n","import React, {\n createContext,\n HTMLAttributes,\n ReactNode,\n isValidElement,\n cloneElement,\n useContext,\n} from \"react\";\nimport cx from \"clsx\";\n\nexport const DEFAULT_DENSITY: Density = \"medium\";\nexport const DEFAULT_THEME = \"salt-theme\";\nexport const DEFAULT_THEME_MODE: ThemeMode = \"light\";\n\nexport type Density = \"high\" | \"medium\" | \"low\" | \"touch\";\nexport type ThemeMode = \"light\" | \"dark\";\nexport type TargetElement = \"root\" | \"scope\" | \"child\";\n\nexport interface ThemeContextProps {\n density: Density;\n theme: string;\n themeMode: ThemeMode;\n}\n\nexport const ThemeContext = createContext<ThemeContextProps>({\n density: \"high\",\n theme: \"vuu\",\n themeMode: \"light\",\n});\n\nexport type ThemeClasses = [string, string, ThemeMode];\n\nconst DEFAULT_THEME_ATTRIBUTES: ThemeClasses = [\n \"vuu\",\n \"salt-density-high\",\n \"light\" as ThemeMode,\n];\n\nexport type ThemeAttributes = {\n themeClass: string;\n densityClass: string;\n dataMode: ThemeMode;\n};\n\nexport const useThemeAttributes = (\n themeAttributes?: ThemeAttributes\n): [string, string, ThemeMode] => {\n const context = useContext(ThemeContext);\n if (themeAttributes) {\n return [\n themeAttributes.themeClass,\n themeAttributes.densityClass,\n themeAttributes.dataMode,\n ];\n } else if (context) {\n return [\n `${context.theme}-theme`,\n `salt-density-${context.density}`,\n context.themeMode,\n ];\n }\n return DEFAULT_THEME_ATTRIBUTES;\n};\n\nconst createThemedChildren = (\n children: ReactNode,\n theme: string,\n themeMode: ThemeMode,\n density: Density\n) => {\n if (isValidElement<HTMLAttributes<HTMLElement>>(children)) {\n return cloneElement(children, {\n className: cx(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n children.props?.className,\n `${theme}-theme`,\n `salt-density-${density}`\n ),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n \"data-mode\": themeMode,\n });\n } else {\n console.warn(\n `\\nThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.\n Wrap elements with a single container`\n );\n return children;\n }\n};\n\ninterface ThemeProviderProps {\n applyThemeClasses?: boolean;\n children: ReactNode;\n density?: Density;\n theme?: string;\n themeMode?: ThemeMode;\n}\n\nexport const ThemeProvider = ({\n applyThemeClasses = false,\n children,\n theme: themeProp,\n themeMode: themeModeProp,\n density: densityProp,\n}: ThemeProviderProps) => {\n const {\n density: inheritedDensity,\n themeMode: inheritedThemeMode,\n theme: inheritedTheme,\n } = useContext(ThemeContext);\n const density = densityProp ?? inheritedDensity ?? DEFAULT_DENSITY;\n const themeMode = themeModeProp ?? inheritedThemeMode ?? DEFAULT_THEME_MODE;\n const theme = themeProp ?? inheritedTheme ?? DEFAULT_THEME;\n const themedChildren = applyThemeClasses\n ? createThemedChildren(children, theme, themeMode, density)\n : children;\n\n return (\n <ThemeContext.Provider value={{ themeMode, density, theme }}>\n {themedChildren}\n </ThemeContext.Provider>\n );\n};\n\nThemeProvider.displayName = \"ThemeProvider\";\n","export const getUrlParameter = (paramName: string, defaultValue?: string) => {\n const url = new URL(document.location.href);\n const parameter = url.searchParams.get(paramName);\n if (parameter) {\n return parameter;\n }\n const hashParams = url.hash;\n const regex = new RegExp(`${paramName}=([a-zA-Z]*)`);\n const result = regex.exec(hashParams);\n if (result) {\n return result[1];\n }\n return defaultValue;\n};\n\nexport const hasUrlParameter = (paramName: string) =>\n new URL(document.location.href).searchParams.has(paramName);\n","import { useMemo } from \"react\";\n\nlet vuuComponentIdCount = 0;\n\nexport const useId = (id?: string) =>\n useMemo(() => id ?? `vuu-${++vuuComponentIdCount}`, [id]);\n","import {\n Dispatch,\n MutableRefObject,\n SetStateAction,\n useCallback,\n useRef,\n useState,\n} from \"react\";\n\n/**\n * Extension to useState that maintains a ref for the\n * current state value. Useful where use of the ref can\n * avoid referencing the state vale in a dependency array\n * eg on a native event handler.\n *\n * @param value the initial value to store\n */\n\nconst isSimpleStateValue = <T>(arg: SetStateAction<T>): arg is T =>\n typeof arg !== \"function\";\n\n// Keeps a ref value in sync with a state value\nexport const useStateRef = <T = string>(\n initialValue: T,\n): [MutableRefObject<T>, Dispatch<SetStateAction<T>>] => {\n const [value, _setValue] = useState<T>(initialValue);\n const ref = useRef<T>(value);\n\n const setValue = useCallback<Dispatch<SetStateAction<T>>>((arg) => {\n if (isSimpleStateValue(arg)) {\n ref.current = arg;\n _setValue(arg);\n } else {\n const { current: prev } = ref;\n ref.current = arg(prev);\n _setValue(ref.current);\n }\n }, []);\n return [ref, setValue];\n};\n","import { DependencyList, EffectCallback, useLayoutEffect, useRef } from \"react\";\n\nexport const useLayoutEffectSkipFirst = (\n func: EffectCallback,\n deps: DependencyList\n) => {\n const goodToGo = useRef(false);\n useLayoutEffect(() => {\n if (goodToGo.current) {\n func();\n } else {\n goodToGo.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n","import type { RpcResponseHandler } from \"@vuu-ui/vuu-data-types\";\nimport type {\n DefaultColumnConfiguration,\n DefaultTableConfiguration,\n} from \"@vuu-ui/vuu-table-types\";\nimport { createContext, useContext } from \"react\";\nimport { LookupTableProvider } from \"./feature-utils\";\n\nexport interface ShellContextProps {\n getDefaultColumnConfig?: DefaultColumnConfiguration;\n getDefaultTableConfig?: DefaultTableConfiguration;\n getLookupValues?: LookupTableProvider;\n handleRpcResponse?: RpcResponseHandler;\n}\n\nconst defaultConfig = {};\n\nexport const ShellContext = createContext<ShellContextProps>(defaultConfig);\n\nexport const useShellContext = () => {\n return useContext(ShellContext);\n};\n","import type {\n DataSource,\n DataSourceConstructorProps,\n ServerAPI,\n TableSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport { createContext } from \"react\";\n\nexport type DataSourceConstructor = {\n new (props: DataSourceConstructorProps): DataSource;\n};\n\nexport interface DataContextProps {\n VuuDataSource: DataSourceConstructor;\n dataSourceExtensions?: unknown;\n isLocalData: boolean;\n getServerAPI: () => Promise<\n Pick<ServerAPI, \"getTableList\" | \"getTableSchema\" | \"rpcCall\">\n >;\n /**\n * A tableSchema would normally be requested via the serverAPI.\n * schemas can be injected, in which case these 'local' schemas\n * will be returned from the getTableSchema API call.\n * The key is formed from concatenation of module and tableName\n * from VuuTable e.g 'SIMUL:instruments'\n */\n tableSchemas?: Record<string, TableSchema>;\n}\n\nconst getServerAPI = () => {\n throw Error(\"no DataProvider has been installed\");\n};\n\nclass NullDataSourceConstructor {\n constructor(_: DataSourceConstructorProps) {\n throw Error(\"no DataeProvider has been installed\");\n }\n}\n\nexport const DataContext = createContext<DataContextProps>({\n isLocalData: false,\n getServerAPI,\n VuuDataSource: NullDataSourceConstructor as DataSourceConstructor,\n});\n","import { ReactNode, useContext } from \"react\";\nimport { DataContext, DataContextProps } from \"./DataContext\";\n\nexport const DataProvider = ({\n children,\n getServerAPI,\n isLocalData = true,\n VuuDataSource,\n}: Omit<DataContextProps, \"isLocalData\"> & {\n children: ReactNode;\n isLocalData?: boolean;\n}) => {\n return (\n <DataContext.Provider value={{ isLocalData, VuuDataSource, getServerAPI }}>\n {children}\n </DataContext.Provider>\n );\n};\n\nexport const useData = () => useContext(DataContext);\nexport const useDataSourceExtensions = () => {\n const { dataSourceExtensions } = useContext(DataContext);\n return dataSourceExtensions;\n};\n","import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { createContext, ReactNode, useContext } from \"react\";\n\nexport interface DataSourceContextProps {\n dataSource?: DataSource;\n}\n\nexport const DataSourceContext = createContext<DataSourceContextProps>({\n dataSource: undefined,\n});\n\nexport const DataSourceProvider = ({\n children,\n dataSource,\n}: {\n children: ReactNode;\n dataSource: DataSource;\n}) => {\n return (\n <DataSourceContext.Provider value={{ dataSource }}>\n {children}\n </DataSourceContext.Provider>\n );\n};\n\nexport function useDataSource(throwIfNoDataSource: true): DataSource;\nexport function useDataSource(\n throwIfNoDataSource: false | undefined,\n): DataSource | undefined;\nexport function useDataSource(throwIfNoDataSource = false) {\n const { dataSource } = useContext(DataSourceContext);\n if (dataSource) {\n return dataSource;\n } else if (throwIfNoDataSource) {\n throw Error(\n `[DataSOurceProvider] useDataSource,no DataSourceProvider has been declared `,\n );\n } else {\n console.warn(\n `[DataSourceProvider] useDataSource: no DataSourceProvider has been declared`,\n );\n }\n}\n","import React, { useContext } from \"react\";\nimport {\n ApplicationSetting,\n ApplicationSettings,\n LayoutJSON\n} from \"../json-types\";\nimport { LayoutMetadata, LayoutMetadataDto } from \"../layout-types\";\n\nexport interface WorkspaceContextProps {\n layoutMetadata: LayoutMetadata[];\n layoutPlaceholderJSON?: LayoutJSON;\n getApplicationSettings: (\n key?: keyof ApplicationSettings\n ) => ApplicationSettings | ApplicationSetting | undefined;\n loadLayoutById: (id: string) => void;\n saveApplicationSettings: (\n settings: ApplicationSettings | ApplicationSetting,\n key?: keyof ApplicationSettings\n ) => void;\n saveLayout: (n: LayoutMetadataDto) => void;\n saveApplicationLayout: (layout: LayoutJSON) => void;\n workspaceJSON?: LayoutJSON | LayoutJSON[];\n}\n\nexport const WorkspaceContext = React.createContext<WorkspaceContextProps>({\n getApplicationSettings: () => undefined,\n layoutMetadata: [],\n saveLayout: () => undefined,\n saveApplicationLayout: () => undefined,\n saveApplicationSettings: () => undefined,\n loadLayoutById: () => undefined\n});\n\nexport const usePlaceholderJSON = () => {\n const { layoutPlaceholderJSON } = useContext(WorkspaceContext);\n return layoutPlaceholderJSON;\n};\n"],"names":["__create","__defProp","__defProps","__getOwnPropDesc","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__knownSymbol","__typeError","__defNormalProp","__spreadValues","__spreadProps","__name","__decoratorStart","__decoratorStrings","__expectFn","__decoratorContext","__decoratorMetadata","__runInitializers","__decorateElement","__privateGet","__privateSet","__privateIn","__privateMethod","__accessCheck","__privateAdd","computedSignal","signal","_current_dec","_init","_a","_b","_c","untracked","batch","untracked2","__objRest","_cleanupFunctions","effect","_init2","_init3","_init4","Draggable","_c2","_init5","Droppable","Point2","CollisionType2","CollisionPriority2","Point3","CollisionType3","CollisionPriority3","canUseDOM","throttle","Scheduler","scheduler3","getDirection","_element","PositionObserver","useLayoutEffect","useEffect","useState","useCallback","useRef","flushSync","useMemo","useInstance","Sortable","KEY","groupColumn","heading","DEPTH","IS_LEAF","__publicField","EMPTY","parseFilter","DateFormatter","CalendarDate","filter","Space","COUNT","addChildValues","SELECTED","Children","isValidElement","isSimpleStateValue","IDX","createContext","useContext","cloneElement","jsx"],"mappings":";;;;;;;;;;AAAA,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,OAAO,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;ACAzyI,IAAIA,UAAQ,GAAG,MAAM,CAAC,MAAM;AAC5B,IAAIC,WAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAIC,YAAU,GAAG,MAAM,CAAC,gBAAgB;AACxC,IAAIC,kBAAgB,GAAG,MAAM,CAAC,wBAAwB;AACtD,IAAIC,mBAAiB,GAAG,MAAM,CAAC,yBAAyB;AACxD,IAAIC,qBAAmB,GAAG,MAAM,CAAC,qBAAqB;AACtD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AAClD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACxD,IAAIC,eAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AACrG,IAAIC,aAAW,GAAG,CAAC,GAAG,KAAK;AAC3B,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC;AACtB,CAAC;AACD,IAAIC,iBAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAGT,WAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAC/J,IAAIU,gBAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAIL,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAMI,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,IAAIL,qBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAIA,qBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAIE,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQG,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,EAAE,OAAO,CAAC;AACV,CAAC;AACD,IAAIE,eAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAKV,YAAU,CAAC,CAAC,EAAEE,mBAAiB,CAAC,CAAC,CAAC,CAAC;AACjE,IAAIS,QAAM,GAAG,CAAC,MAAM,EAAE,KAAK,KAAKZ,WAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACxF,IAAIa,kBAAgB,GAAG,CAAC,IAAI,KAAK;AACjC,EAAE,IAAI,GAAG;AACT,EAAE,OAAO,OAAOd,UAAQ,CAAC,CAAC,GAAG,GAAkB,KAAK,CAAC,CAAkC,KAAK,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAC/G,CAAC;AACD,IAAIe,oBAAkB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC;AAC5G,IAAIC,YAAU,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,IAAI,OAAO,EAAE,KAAK,UAAU,GAAGP,aAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE;AAC1G,IAAIQ,oBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,IAAI,EAAEF,oBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAGN,aAAW,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC,IAAI,CAACO,YAAU,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;AAC1N,IAAIE,qBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAKR,iBAAe,CAAC,MAAM,EAAEF,eAAa,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACzG,IAAIW,mBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK;AACvD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9I,EAAE,OAAO,KAAK;AACd,CAAC;AACD,IAAIC,mBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,KAAK;AAC3E,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AACrF,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAGL,oBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC;AACvF,EAAE,IAAI,YAAY,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAClG,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAIZ,kBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG;AACvI,IAAI,OAAOkB,cAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACpC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AACnB,IAAI,OAAOC,cAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACvC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACb,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAIT,QAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,GAAGA,QAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AACvG,EAAE,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,IAAI,GAAG,GAAGI,oBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;AAC7E,IAAI,IAAI,CAAC,EAAE;AACX,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAKM,aAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE;AAC1H,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAGF,cAAY,GAAGG,iBAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACvI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAKF,cAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACxH;AACA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AAC5I,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,EAAEN,YAAU,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AACxI,SAAS,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAEP,aAAW,CAAC,iBAAiB,CAAC;AAClF,SAASO,YAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAEA,YAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAEA,YAAU,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;AACrJ;AACA,EAAE,OAAO,CAAC,IAAIE,qBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,IAAIjB,WAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM;AAC1H,CAAC;AACD,IAAIwB,eAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAIhB,aAAW,CAAC,SAAS,GAAG,GAAG,CAAC;AACzF,IAAIc,aAAW,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,GAAGd,aAAW,CAAC,4CAA4C,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACpI,IAAIY,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,MAAMI,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,yBAAyB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChJ,IAAIC,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGjB,aAAW,CAAC,mDAAmD,CAAC,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACpM,IAAIa,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,MAAMG,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;AAC3K,IAAID,iBAAe,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,MAAMC,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,uBAAuB,CAAC,EAAE,MAAM,CAAC;AAe5G,SAAS,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE;AACvC,EAAE,IAAI,UAAU,EAAE;AAClB,IAAI,IAAI,aAAa;AACrB,IAAI,OAAOE,CAAc,CAAC,MAAM;AAChC,MAAM,MAAM,KAAK,GAAG,OAAO,EAAE;AAC7B,MAAM,IAAI,KAAK,IAAI,aAAa,IAAI,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AACtE,QAAQ,OAAO,aAAa;AAC5B;AACA,MAAM,aAAa,GAAG,KAAK;AAC3B,MAAM,OAAO,KAAK;AAClB,KAAK,CAAC;AACN;AACA,EAAE,OAAOA,CAAc,CAAC,OAAO,CAAC;AAChC;;AAEA;AACA,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AACzB,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACvB,IAAI,OAAO,IAAI;AACf;AACA,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;AAC5C,EAAE,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;AAC1D,IAAI,OAAO,CAAC,KAAK,CAAC;AAClB;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE;AAC5C,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;AAC3B,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE;AAC3B,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACzB,QAAQ,OAAO,KAAK;AACpB;AACA;AACA,IAAI,OAAO,IAAI;AACf;AACA,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACxB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AACpD,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI;AACrC,MAAM,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,CAAC,kBAAkB;AAC9B;AACA,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACtD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK;AACnD,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD;AACA,EAAE,OAAO,KAAK;AACd;AAIA,SAAS,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE;AAC9B,EAAE,OAAO;AACT,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,OAAOC,CAAM,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,GAAG,GAAG;AACV,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,MAAM,OAAO,OAAO,CAAC,KAAK;AAC1B,KAAK;AACL,IAAI,GAAG,CAAC,QAAQ,EAAE;AAClB,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE;AACvC,QAAQ;AACR;AACA,MAAM,OAAO,CAAC,KAAK,GAAG,QAAQ;AAC9B;AACA,GAAG;AACH;AACA,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;AAC5B,EAAE,MAAM,GAAG,mBAAmB,IAAI,OAAO,EAAE;AAC3C,EAAE,OAAO,WAAW;AACpB,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3B;AACA,IAAI,OAAO,MAAM,CAAC,KAAK;AACvB,GAAG;AACH;AACA,SAAS,UAAU,CAAC,WAAW,GAAG,IAAI,EAAE;AACxC,EAAE,OAAO,SAAS,MAAM,EAAE,OAAO,EAAE;AACnC,IAAI,OAAO,CAAC,cAAc,CAAC,WAAW;AACtC,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC;AACxG,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;AAC5E,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAEhB,eAAa,CAACD,gBAAc,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;AAC7H;AACA,KAAK,CAAC;AACN,GAAG;AACH;AAWA,IAAI,aAAa,EAAE,YAAY,EAAEkB,cAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAEC,OAAK,EAAE,QAAQ,EAAEC,IAAE,EAAE,WAAW,EAAE,WAAW,EAAE,uBAAuB,EAAE,SAAS,EAAEC,IAAE,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAEC,IAAE,EAAE,WAAW,EAAE,WAAW;AACtP,aAAa,GAAG,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,CAAC,QAAQ,CAAC,EAAEJ,cAAY,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,YAAY,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,GAAG,CAAC,UAAU,EAAE,CAAC;AACjL,IAAI,YAAY,GAAG,MAAM;AACzB,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE;AAChD,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY;AACpC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,IAAIV,mBAAiB,CAACW,OAAK,EAAE,CAAC,EAAE,IAAI,CAAC;AACrC,IAAIJ,cAAY,CAAC,IAAI,EAAE,uBAAuB,CAAC;AAC/C;AACA,IAAIA,cAAY,CAAC,IAAI,EAAE,QAAQ,EAAEP,mBAAiB,CAACW,OAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAEX,mBAAiB,CAACW,OAAK,EAAE,EAAE,EAAE,IAAI,CAAC;AACvG;AACA,IAAIJ,cAAY,CAAC,IAAI,EAAE,SAAS,EAAEP,mBAAiB,CAACW,OAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAEX,mBAAiB,CAACW,OAAK,EAAE,EAAE,EAAE,IAAI,CAAC;AACzG;AACA,IAAIJ,cAAY,CAAC,IAAI,EAAE,QAAQ,EAAEP,mBAAiB,CAACW,OAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAEX,mBAAiB,CAACW,OAAK,EAAE,EAAE,EAAE,IAAI,CAAC;AACxG,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAOT,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,WAAW,CAAC;AACnE;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAOA,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,WAAW,CAAC;AACnE;AACA,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAOA,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,YAAY,CAAC;AACpE;AACA;AACA,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE;AACrB,IAAI,MAAM,OAAO,GAAGa,CAAS,CAAC,MAAMb,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAC;AAC7F,IAAI,IAAI,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;AACzD,MAAM;AACN;AACA,IAAIc,CAAK,CAAC,MAAM;AAChB,MAAM,IAAI,CAACd,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE;AACrE,QAAQC,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,CAAC;AACvE;AACA,MAAMA,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,YAAY,CAAC;AACxE,MAAMA,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,CAAC;AACrE,KAAK,CAAC;AACN;AACA;AACA,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,IAAIa,CAAK,CAAC,MAAM;AAChB,MAAMb,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC;AACvE,MAAMA,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,CAAC;AACrE,MAAMA,cAAY,CAAC,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,CAAC;AACrE,KAAK,CAAC;AACN;AACA,CAAC;AACDQ,OAAK,GAAGhB,kBAAgB,CAAK,CAAC;AAC9B,QAAQ,GAAG,IAAI,OAAO,EAAE;AACxB,uBAAuB,GAAG,IAAI,OAAO,EAAE;AACvC,SAAS,GAAG,IAAI,OAAO,EAAE;AACzB,QAAQ,GAAG,IAAI,OAAO,EAAE;AACxBiB,IAAE,GAAGX,mBAAiB,CAACU,OAAK,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAGC,IAAE,CAAC,GAAG,EAAE,WAAW,GAAGA,IAAE,CAAC,GAAG;AAC3IC,IAAE,GAAGZ,mBAAiB,CAACU,OAAK,EAAE,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,uBAAuB,EAAE,SAAS,CAAC,EAAE,YAAY,GAAGE,IAAE,CAAC,GAAG,EAAE,YAAY,GAAGA,IAAE,CAAC,GAAG;AAChJC,IAAE,GAAGb,mBAAiB,CAACU,OAAK,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAGG,IAAE,CAAC,GAAG,EAAE,WAAW,GAAGA,IAAE,CAAC,GAAG;AAC3Ib,mBAAiB,CAACU,OAAK,EAAE,CAAC,EAAE,SAAS,EAAED,cAAY,EAAE,YAAY,CAAC;AAClET,mBAAiB,CAACU,OAAK,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC;AAClEV,mBAAiB,CAACU,OAAK,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC;AACpEZ,qBAAmB,CAACY,OAAK,EAAE,YAAY,CAAC;AAIxC,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAOM,CAAU,CAAC,MAAM;AAC1B,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AAC7B,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;AAC9B;AACA,IAAI,OAAO,MAAM;AACjB,GAAG,CAAC;AACJ;;AAEA;AACA,IAAI,MAAM;AACV,IAAI,SAAS,GAAG,MAAM;AACtB,EAAE,WAAW,GAAG;AAChB,IAAIV,cAAY,CAAC,IAAI,EAAE,MAAM,kBAAkB,IAAI,OAAO,EAAE,CAAC;AAC7D;AACA,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE;AACf,IAAI,IAAI,GAAG;AACX,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,GAAGL,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;AACpG;AACA,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE;AACtB,IAAI,IAAI,GAAG;AACX,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,IAAI,IAAI,CAACA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAEA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,kBAAkB,IAAI,GAAG,EAAE,CAAC;AAC5G,IAAI,OAAO,CAAC,GAAG,GAAGA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;AAC5F;AACA,EAAE,KAAK,CAAC,GAAG,EAAE;AACb,IAAI,IAAI,GAAG;AACX,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,GAAGA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC;AACpG;AACA,CAAC;AACD,MAAM,GAAG,IAAI,OAAO,EAAE;;AC1RtB,IAAIrB,UAAQ,GAAG,MAAM,CAAC,MAAM;AAC5B,IAAIC,WAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAIE,kBAAgB,GAAG,MAAM,CAAC,wBAAwB;AACtD,IAAIE,qBAAmB,GAAG,MAAM,CAAC,qBAAqB;AACtD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AAClD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACxD,IAAIC,eAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AACrG,IAAIC,aAAW,GAAG,CAAC,GAAG,KAAK;AAC3B,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC;AACtB,CAAC;AACD,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG;AACpB,IAAIC,iBAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAGT,WAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAC/J,IAAIU,gBAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAIL,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAMI,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,IAAIL,qBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAIA,qBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAIE,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQG,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,EAAE,OAAO,CAAC;AACV,CAAC;AAED,IAAII,kBAAgB,GAAG,CAAC,IAAI,KAAK;AACjC,EAAE,IAAI,GAAG;AACT,EAAE,OAAO,OAAOd,UAAQ,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAACQ,eAAa,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAC/G,CAAC;AACD,IAAIO,oBAAkB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC;AAC5G,IAAIC,YAAU,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,IAAI,OAAO,EAAE,KAAK,UAAU,GAAGP,aAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE;AAC1G,IAAIQ,oBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,IAAI,EAAEF,oBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAGN,aAAW,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC,IAAI,CAACO,YAAU,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;AAC1N,IAAIE,qBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAKR,iBAAe,CAAC,MAAM,EAAEF,eAAa,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACzG,IAAIW,mBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK;AACvD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAc,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAmC;AAC9I,EAAE,OAAO,KAAK;AACd,CAAC;AACD,IAAIC,mBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,KAAK;AAC3E,EAAK,IAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE;AACpF,EAAE,IAAI,CAAC,GAA0C,CAAC,CAAI,EAAE,GAAG,GAAGL,oBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC;AACvF,EAAK,IAA8C,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AACjG,EAAE,IAAI,IAAI,GAAQ,CAAa,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,EAA4BZ,kBAAgB,CAAS,MAAM,CAIhH,EAAE,IAAI,CAAC,CAAC;AAEb,EAAE,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,IAAI,GAAG,GAAGc,oBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;AAC7E,IAAW;AACX,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,EAAsC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE;AAC1H,MAAiB,MAAM,CAAC,GAAG,GAA8F,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAEvI;AACA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAA0B,IAAI,CAAC,GAAG,CAAC,CAAoD,CAAS,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AAC5I,IAAgCD,YAAU,CAAC,EAAE,CAAC,KAA6D,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAc,CAAC;AAGxI;AACA,EAAE,OAAgD,IAAI,IAAIf,WAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAA6B,MAAM;AAC1H,CAAC;AACD,IAAIwB,eAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAIhB,aAAW,CAAC,SAAS,GAAG,GAAG,CAAC;AAEzF,IAAIY,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,MAAMI,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,yBAAyB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChJ,IAAIC,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGjB,aAAW,CAAC,mDAAmD,CAAC,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACpM,IAAIa,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,MAAMG,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAqC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;;AAG3K;AACA,IAAI,KAAK,GAAG,MAAM,MAAM,CAAC;AACzB;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE;AACpB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;AACd,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;AACrB,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC;AACA,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxB,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B;AACA,CAAC;;AAED;AACA,IAAI,SAAS,GAAG,MAAM,UAAU,CAAC;AACjC,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AACxC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG;AAClB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,CAAC,EAAE,CAAC;AACV,MAAM,CAAC,EAAE;AACT,KAAK;AACL;AACA,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO;AACX,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,KAAK;AACL;AACA,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AAClB,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AACpD,IAAI,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AACrE,IAAI,QAAQ,CAAC,KAAK,GAAGd,gBAAc,CAAC,EAAE,EAAE,KAAK,CAAC;AAC9C,IAAI,OAAO,QAAQ;AACnB;AACA,EAAE,IAAI,iBAAiB,GAAG;AAC1B,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;AAC5D,IAAI,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AACtD;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;AAC7C,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC;AAC5D;AACA,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;AAClC,IAAI,OAAO,KAAK,GAAG,MAAM;AACzB;AACA,EAAE,MAAM,CAAC,KAAK,EAAE;AAChB,IAAI,IAAI,EAAE,KAAK,YAAY,UAAU,CAAC,EAAE;AACxC,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;AAC7C,IAAI,OAAO,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM;AACvG;AACA,EAAE,aAAa,CAAC,KAAK,EAAE;AACvB,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AAC7C,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK;AACrF;AACA,EAAE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,IAAI,IAAI,KAAK,YAAY,UAAU,EAAE;AACrC,MAAM,OAAO,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC;AACxD;AACA,IAAI,OAAO,CAAC;AACZ;AACA,EAAE,iBAAiB,CAAC,KAAK,EAAE;AAC3B,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI;AACzB,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACzD,IAAI,MAAM,iBAAiB,GAAG,gBAAgB,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,gBAAgB,CAAC;AACvF,IAAI,OAAO,iBAAiB;AAC5B;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI;AAChC,IAAI,OAAO,GAAG,GAAG,MAAM;AACvB;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI;AAChC,IAAI,OAAO,IAAI,GAAG,KAAK;AACvB;AACA,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;AAClC,IAAI,OAAO,KAAK,GAAG,MAAM;AACzB;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO;AACX,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;AACnC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;AACpC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE;AACtC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM;AACrC,KAAK;AACL;AACA,EAAE,OAAO,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;AAC5C,IAAI,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;AACnD;AACA,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;AAC/D,IAAI,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK;AAC1C,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AACnC,MAAM,MAAM,KAAK,GAAG,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG;AACvD,MAAM,MAAM,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM;AAC1D,MAAM,IAAI,KAAK,IAAI,OAAO,EAAE,OAAO,KAAK;AACxC,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE,OAAO,KAAK,GAAG,IAAI;AAC7C,MAAM,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,KAAK;AACtB,MAAM,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AAC5D,MAAM,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1D,KAAK;AACL;AACA,EAAE,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;AACjC,IAAI,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE;AACA,CAAC;AACD,SAAS,8BAA8B,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9C,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;AACpC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AACvC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;AAC5D,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7D,EAAE,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI;AAC5B,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,GAAG;AAC7B,EAAE,IAAI,IAAI,GAAG,KAAK,IAAI,GAAG,GAAG,MAAM,EAAE;AACpC,IAAI,MAAM,gBAAgB,GAAG,KAAK,GAAG,MAAM;AAC3C,IAAI,OAAO,gBAAgB;AAC3B;AACA,EAAE,OAAO,CAAC;AACV;AAIA,IAAI,cAAc,EAAE,UAAU,EAAEoB,IAAE,EAAE,UAAU,EAAED,OAAK;AACrD,IAAI,QAAQ,GAAG,eAAeC,IAAE,GAAG,YAAY,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,CAAC,OAAO,CAAC,EAAEA,IAAE,EAAE;AACzG,EAAE,WAAW,CAAC,YAAY,EAAE;AAC5B,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,IAAIZ,mBAAiB,CAACW,OAAK,EAAE,CAAC,EAAE,IAAI,CAAC;AACrC,IAAIJ,cAAY,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAClC;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;AAClD;AACA,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;AACtC,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI;AAC9B,IAAI,MAAM,KAAK,GAAG;AAClB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9B,MAAM,OAAO,IAAI;AACjB;AACA,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC/C,MAAM,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM;AAC3C;AACA,IAAI,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI;AACtC;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,KAAK,CAAC,OAAO;AACxB;AACA,EAAE,IAAI,OAAO,CAAC,WAAW,EAAE;AAC3B,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AAC5B,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,IAAI,MAAM,KAAK,GAAG;AAClB,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAC5B,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC;AAC3B,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;AAChC,IAAI,MAAM,SAAS,GAAG,SAAS,GAAGL,cAAY,CAAC,IAAI,EAAE,UAAU,CAAC;AAChE,IAAI,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC;AACrE,IAAIc,CAAK,CAAC,MAAM;AAChB,MAAMb,cAAY,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC;AAC/C,MAAM,IAAI,CAAC,QAAQ,GAAG;AACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5B,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3B,OAAO;AACP,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK;AAC3B,KAAK,CAAC;AACN;AACA,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;AACzC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAClC;AACA,CAAC;AACDQ,OAAK,GAAGhB,kBAAgB,CAACiB,IAAE,CAAC;AAC5B,UAAU,GAAG,IAAI,OAAO,EAAE;AAC1BX,mBAAiB,CAACU,OAAK,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;AAC1DV,mBAAiB,CAACU,OAAK,EAAE,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,CAAC;AAClEZ,qBAAmB,CAACY,OAAK,EAAE,QAAQ,CAAC;;AAEpC;AACA,SAAS,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC7C,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACpC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ;AAC5D;AACA,EAAE,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,EAAE;AAC1C,IAAI,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC7C;AACA,EAAE,IAAI,GAAG,IAAI,QAAQ,EAAE;AACvB,IAAI,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC1B;AACA,EAAE,IAAI,GAAG,IAAI,QAAQ,EAAE;AACvB,IAAI,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC1B;AACA,EAAE,OAAO,KAAK;AACd;;AAEA;AACA,IAAI,IAAI,mBAAmB,CAAC,CAAC,KAAK,KAAK;AACvC,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,GAAG;AAC3B,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG;AACzB,EAAE,OAAO,KAAK;AACd,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;AACd,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;ACnT9B,IAAI9B,UAAQ,GAAG,MAAM,CAAC,MAAM;AAC5B,IAAIC,WAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAIC,YAAU,GAAG,MAAM,CAAC,gBAAgB;AACxC,IAAIC,kBAAgB,GAAG,MAAM,CAAC,wBAAwB;AACtD,IAAIC,mBAAiB,GAAG,MAAM,CAAC,yBAAyB;AACxD,IAAIC,qBAAmB,GAAG,MAAM,CAAC,qBAAqB;AACtD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AAClD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACxD,IAAIC,eAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AACrG,IAAIC,aAAW,GAAG,CAAC,GAAG,KAAK;AAC3B,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC;AACtB,CAAC;AACD,IAAIC,iBAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAGT,WAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAC/J,IAAIU,gBAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAIL,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAMI,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,IAAIL,qBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAIA,qBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAIE,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQG,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,EAAE,OAAO,CAAC;AACV,CAAC;AACD,IAAIE,eAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAKV,YAAU,CAAC,CAAC,EAAEE,mBAAiB,CAAC,CAAC,CAAC,CAAC;AACjE,IAAIS,QAAM,GAAG,CAAC,MAAM,EAAE,KAAK,KAAKZ,WAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACxF,IAAIoC,WAAS,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK;AACrC,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,KAAK,IAAI,IAAI,IAAI,MAAM;AACzB,IAAI,IAAI/B,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACpE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACjC,EAAE,IAAI,MAAM,IAAI,IAAI,IAAID,qBAAmB;AAC3C,IAAI,KAAK,IAAI,IAAI,IAAIA,qBAAmB,CAAC,MAAM,CAAC,EAAE;AAClD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAIE,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACtE,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACnC;AACA,EAAE,OAAO,MAAM;AACf,CAAC;AACD,IAAIO,kBAAgB,GAAG,CAAC,IAAI,KAAK;AACjC,EAAE,IAAI,EAAE;AACR,EAAE,OAAO,OAAOd,UAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAACQ,eAAa,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAC7G,CAAC;AACD,IAAIO,oBAAkB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC;AAC5G,IAAIC,YAAU,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,IAAI,OAAO,EAAE,KAAK,UAAU,GAAGP,aAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE;AAC1G,IAAIQ,oBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,IAAI,EAAEF,oBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAGN,aAAW,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC,IAAI,CAACO,YAAU,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;AAC1N,IAAIE,qBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAKR,iBAAe,CAAC,MAAM,EAAEF,eAAa,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACzG,IAAIW,mBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK;AACvD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9I,EAAE,OAAO,KAAK;AACd,CAAC;AACD,IAAIC,mBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,KAAK;AAC3E,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AACrF,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAGL,oBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC;AACvF,EAAE,IAAI,YAAY,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAClG,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAIZ,kBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG;AACvI,IAAI,OAAOkB,cAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACpC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AACnB,IAAI,OAAOC,cAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACvC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACb,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAIT,QAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,GAAGA,QAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AACvG,EAAE,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,IAAI,GAAG,GAAGI,oBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;AAC7E,IAAI,IAAI,CAAC,EAAE;AACX,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAKM,aAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE;AAC1H,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAGF,cAAY,GAAGG,iBAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACvI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAKF,cAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACxH;AACA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AAC5I,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,EAAEN,YAAU,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AACxI,SAAS,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAEP,aAAW,CAAC,iBAAiB,CAAC;AAClF,SAASO,YAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAEA,YAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAEA,YAAU,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;AACrJ;AACA,EAAE,OAAO,CAAC,IAAIE,qBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,IAAIjB,WAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM;AAC1H,CAAC;AACD,IAAIwB,eAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAIhB,aAAW,CAAC,SAAS,GAAG,GAAG,CAAC;AACzF,IAAIc,aAAW,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,GAAGd,aAAW,CAAC,4CAA4C,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACpI,IAAIY,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,MAAMI,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,yBAAyB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChJ,IAAIC,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGjB,aAAW,CAAC,mDAAmD,CAAC,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACpM,IAAIa,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,MAAMG,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;AAC3K,IAAID,iBAAe,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,MAAMC,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,uBAAuB,CAAC,EAAE,MAAM,CAAC;;AAE5G;AACA,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE;AACpC,EAAE,OAAO;AACT,IAAI,MAAM;AACV,IAAI;AACJ,GAAG;AACH;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,EAAE,OAAO,CAAC,OAAO,KAAK;AACtB,IAAI,OAAO,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;AACrC,GAAG;AACH;AACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,EAAE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AACpC,IAAI,OAAO;AACX,MAAM,MAAM;AACZ,MAAM,OAAO,EAAE,KAAK;AACpB,KAAK;AACL;AACA,EAAE,OAAO,MAAM;AACf;;AAEA;AACA,IAAI,aAAa,EAAEK,OAAK,EAAE,SAAS,EAAEQ,mBAAiB;AACtD,aAAa,GAAG,CAAC,QAAQ,CAAC;AAC1B,IAAI,MAAM,GAAG,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAChC,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAIZ,cAAY,CAAC,IAAI,EAAE,SAAS,EAAEP,mBAAiB,CAACW,OAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAEX,mBAAiB,CAACW,OAAK,EAAE,EAAE,EAAE,IAAI,CAAC;AAC/G,IAAIJ,cAAY,CAAC,IAAI,EAAEY,mBAAiB,kBAAkB,IAAI,GAAG,EAAE,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,OAAOJ,CAAS,CAAC,MAAM;AAC3B,MAAM,OAAO,IAAI,CAAC,QAAQ;AAC1B,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,OAAO,EAAE;AACrB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,CAAC,QAAQ,EAAE;AAC3B,IAAI,MAAM,OAAO,GAAGK,CAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,IAAIlB,cAAY,CAAC,IAAI,EAAEiB,mBAAiB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,GAAG;AACZ,IAAIjB,cAAY,CAAC,IAAI,EAAEiB,mBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,SAAS,CAAC,OAAO,EAAE;AAC5B,IAAI,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;AACnC;AACA,CAAC;AACDR,OAAK,GAAGhB,kBAAgB,CAAC,IAAI,CAAC;AAC9B,SAAS,GAAG,IAAI,OAAO,EAAE;AACzBwB,mBAAiB,GAAG,IAAI,OAAO,EAAE;AACjClB,mBAAiB,CAACU,OAAK,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC;AACzEZ,qBAAmB,CAACY,OAAK,EAAE,MAAM,CAAC;AAClC,IAAI,UAAU,GAAG,cAAc,MAAM,CAAC;AACtC,CAAC;;AAqXD;AACA,IAAI,iBAAiB,mBAAmB,CAAC,CAAC,kBAAkB,KAAK;AACjE,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AACjE,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AAC3D,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AACjE,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC7D,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;AACnE,EAAE,OAAO,kBAAkB;AAC3B,CAAC,EAAE,iBAAiB,IAAI,EAAE,CAAC;AAC3B,IAAI,aAAa,mBAAmB,CAAC,CAAC,cAAc,KAAK;AACzD,EAAE,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW;AAC/D,EAAE,cAAc,CAAC,cAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAmB;AAC/E,EAAE,cAAc,CAAC,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,qBAAqB;AACnF,EAAE,OAAO,cAAc;AACvB,CAAC,EAAE,aAAa,IAAI,EAAE,CAAC;AACvB,IAAI,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAEU,QAAM,EAAE,MAAM;AACzH,UAAU,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,OAAO,CAAC;AAC1L,IAAI,MAAM,GAAG,MAAM;AACnB,EAAE,WAAW,GAAG;AAChB,IAAIrB,mBAAiB,CAACqB,QAAM,EAAE,CAAC,EAAE,IAAI,CAAC;AACtC,IAAId,cAAY,CAAC,IAAI,EAAE,MAAM,EAAEP,mBAAiB,CAACqB,QAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC,EAAErB,mBAAiB,CAACqB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AAC1H;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,KAAK;AACrB;AACA,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,MAAM;AAChC;AACA,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,cAAc;AACxC;AACA,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AAC1B,IAAI,OAAO,KAAK,KAAK,MAAM,eAAe,KAAK,KAAK,wBAAwB;AAC5E;AACA,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU;AACpC;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,KAAK,EAAE;AACb,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB;AACA,CAAC;AACDA,QAAM,GAAG1B,kBAAgB,CAAC,IAAI,CAAC;AAC/B,MAAM,GAAG,IAAI,OAAO,EAAE;AACtBM,mBAAiB,CAACoB,QAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;AACjEpB,mBAAiB,CAACoB,QAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AAC7DpB,mBAAiB,CAACoB,QAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;AACvDpB,mBAAiB,CAACoB,QAAM,EAAE,CAAC,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,CAAC;AACvEpB,mBAAiB,CAACoB,QAAM,EAAE,CAAC,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,CAAC;AACrEpB,mBAAiB,CAACoB,QAAM,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC;AAC/DpB,mBAAiB,CAACoB,QAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AAC7DtB,qBAAmB,CAACsB,QAAM,EAAE,MAAM,CAAC;AA8NnC,IAAI,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAEC,QAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU;AAC9F,YAAY,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,CAAC,QAAQ,CAAC;AACpG,IAAI,MAAM,GAAG,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAC9B,IAAIf,cAAY,CAAC,IAAI,EAAE,QAAQ,EAAEP,mBAAiB,CAACsB,QAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAEtB,mBAAiB,CAACsB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACzG,IAAIf,cAAY,CAAC,IAAI,EAAE,GAAG,EAAEP,mBAAiB,CAACsB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAEtB,mBAAiB,CAACsB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACrG,IAAIf,cAAY,CAAC,IAAI,EAAE,KAAK,EAAEP,mBAAiB,CAACsB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAEtB,mBAAiB,CAACsB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACvG,IAAIf,cAAY,CAAC,IAAI,EAAE,UAAU,EAAEP,mBAAiB,CAACsB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAEtB,mBAAiB,CAACsB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AAC5G,IAAI,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK;AACzF,IAAI,IAAI,UAAU,GAAG,EAAE;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE;AAChB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,MAAM,IAAI,EAAE;AACZ,MAAM,OAAO;AACb,QAAQ,MAAM;AACd,UAAU,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;AACrD,UAAU,IAAI,GAAG,KAAK,UAAU,EAAE;AAClC,YAAY;AACZ;AACA,UAAU,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtE,UAAU,OAAO,MAAM,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AACrF,SAAS;AACT,QAAQ,GAAG,CAAC,EAAE,GAAG,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG;AACxE,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5C,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,IAAI,IAAI,OAAO,IAAI,QAAQ,EAAE;AAC7B,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,EAAE;AACV,IAAI,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5E;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,IAAI,EAAE;AACV,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AACvE;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,EAAE;AACV,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AACvE;AACA,CAAC;AACDA,QAAM,GAAG3B,kBAAgB,CAAC,IAAI,CAAC;AAC/B,QAAQ,GAAG,IAAI,OAAO,EAAE;AACxB,GAAG,GAAG,IAAI,OAAO,EAAE;AACnB,KAAK,GAAG,IAAI,OAAO,EAAE;AACrB,UAAU,GAAG,IAAI,OAAO,EAAE;AAC1BM,mBAAiB,CAACqB,QAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC;AACvErB,mBAAiB,CAACqB,QAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC;AACxDrB,mBAAiB,CAACqB,QAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC;AAC9DrB,mBAAiB,CAACqB,QAAM,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC;AAC5EvB,qBAAmB,CAACuB,QAAM,EAAE,MAAM,CAAC;AAoFnC,IAAI,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAER,IAAE,EAAES,QAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO;AACvI,IAAIC,WAAS,GAAG,eAAK,UAAUV,IAAE,GAAG,MAAM,EAAE,SAAS,GAAG,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,CAAC,OAAO,CAAC,EAAEA,IAAE,EAAE;AACxN,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE;AAC3B,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,GAAGI,WAAS,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3G,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AACzB,IAAIlB,mBAAiB,CAACuB,QAAM,EAAE,CAAC,EAAE,IAAI,CAAC;AACtC,IAAIhB,cAAY,CAAC,IAAI,EAAE,KAAK,EAAEP,mBAAiB,CAACuB,QAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAEvB,mBAAiB,CAACuB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACtG,IAAIhB,cAAY,CAAC,IAAI,EAAE,UAAU,EAAEP,mBAAiB,CAACuB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAEvB,mBAAiB,CAACuB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AAC5G,IAAIhB,cAAY,CAAC,IAAI,EAAE,OAAO,EAAEP,mBAAiB,CAACuB,QAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC,EAAEvB,mBAAiB,CAACuB,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AAClJ,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AACpC;AACA,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY;AAC1D;AACA,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY;AAC1D;AACA,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE;AACvH;AACA,CAAC;AACDA,QAAM,GAAG5B,kBAAgB,CAACmB,IAAE,CAAC;AAC7B,KAAK,GAAG,IAAI,OAAO,EAAE;AACrB,UAAU,GAAG,IAAI,OAAO,EAAE;AAC1B,OAAO,GAAG,IAAI,OAAO,EAAE;AACvBb,mBAAiB,CAACsB,QAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAEC,WAAS,EAAE,KAAK,CAAC;AACjEvB,mBAAiB,CAACsB,QAAM,EAAE,CAAC,EAAE,WAAW,EAAE,cAAc,EAAEC,WAAS,EAAE,UAAU,CAAC;AAChFvB,mBAAiB,CAACsB,QAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAEC,WAAS,EAAE,OAAO,CAAC;AACvEvB,mBAAiB,CAACsB,QAAM,EAAE,CAAC,EAAE,YAAY,EAAE,eAAe,EAAEC,WAAS,CAAC;AACtEvB,mBAAiB,CAACsB,QAAM,EAAE,CAAC,EAAE,YAAY,EAAE,eAAe,EAAEC,WAAS,CAAC;AACtEvB,mBAAiB,CAACsB,QAAM,EAAE,CAAC,EAAE,cAAc,EAAE,iBAAiB,EAAEC,WAAS,CAAC;AAC1EzB,qBAAmB,CAACwB,QAAM,EAAEC,WAAS,CAAC;AACtC,IAAI,iBAAiB,EAAE,UAAU,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,UAAU,EAAE,WAAW,EAAEC,KAAG,EAAEC,QAAM,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM;AACxL,IAAIC,WAAS,GAAG,eAAK,UAAUF,KAAG,GAAG,MAAM,EAAE,WAAW,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,CAAC,QAAQ,CAAC,EAAE,sBAAsB,GAAG,CAAC,QAAQ,CAAC,EAAE,sBAAsB,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,CAAC,OAAO,CAAC,EAAEA,KAAG,EAAE;AACvO,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE;AAC3B,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,GAAGP,WAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;AACjK,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AACzB,IAAIlB,mBAAiB,CAAC0B,QAAM,EAAE,CAAC,EAAE,IAAI,CAAC;AACtC,IAAInB,cAAY,CAAC,IAAI,EAAE,OAAO,EAAEP,mBAAiB,CAAC0B,QAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE1B,mBAAiB,CAAC0B,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACxG,IAAInB,cAAY,CAAC,IAAI,EAAE,MAAM,EAAEP,mBAAiB,CAAC0B,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE1B,mBAAiB,CAAC0B,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACxG,IAAInB,cAAY,CAAC,IAAI,EAAE,kBAAkB,EAAEP,mBAAiB,CAAC0B,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE1B,mBAAiB,CAAC0B,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACpH,IAAInB,cAAY,CAAC,IAAI,EAAE,kBAAkB,EAAEP,mBAAiB,CAAC0B,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE1B,mBAAiB,CAAC0B,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACpH,IAAInB,cAAY,CAAC,IAAI,EAAE,MAAM,EAAEP,mBAAiB,CAAC0B,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE1B,mBAAiB,CAAC0B,QAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACxG,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,IAAI,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC9C,IAAI,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC9C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,SAAS,EAAE;AACrB,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,OAAO,IAAI;AACjB;AACA,IAAI,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AACtC,MAAM,OAAO,MAAM,CAAC,SAAS,CAAC;AAC9B;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACzB,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,MAAM,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;AAC5C;AACA,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,MAAM;AACpC;AACA,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE;AACvH;AACA,CAAC;AACDA,QAAM,GAAG/B,kBAAgB,CAAC8B,KAAG,CAAC;AAC9B,OAAO,GAAG,IAAI,OAAO,EAAE;AACvB,MAAM,GAAG,IAAI,OAAO,EAAE;AACtB,kBAAkB,GAAG,IAAI,OAAO,EAAE;AAClC,kBAAkB,GAAG,IAAI,OAAO,EAAE;AAClC,MAAM,GAAG,IAAI,OAAO,EAAE;AACtBxB,mBAAiB,CAACyB,QAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAEC,WAAS,EAAE,OAAO,CAAC;AACvE1B,mBAAiB,CAACyB,QAAM,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAEC,WAAS,EAAE,MAAM,CAAC;AACnE1B,mBAAiB,CAACyB,QAAM,EAAE,CAAC,EAAE,mBAAmB,EAAE,sBAAsB,EAAEC,WAAS,EAAE,kBAAkB,CAAC;AACxG1B,mBAAiB,CAACyB,QAAM,EAAE,CAAC,EAAE,mBAAmB,EAAE,sBAAsB,EAAEC,WAAS,EAAE,kBAAkB,CAAC;AACxG1B,mBAAiB,CAACyB,QAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAEC,WAAS,EAAE,MAAM,CAAC;AACpE1B,mBAAiB,CAACyB,QAAM,EAAE,CAAC,EAAE,cAAc,EAAE,iBAAiB,EAAEC,WAAS,CAAC;AAC1E5B,qBAAmB,CAAC2B,QAAM,EAAEC,WAAS,CAAC;;AAEtC;AACA,IAAI,MAAM,GAAG,cAAc,MAAM,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAChC,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B;AACA,CAAC;;AAED;AACA,IAAI,QAAQ,GAAG,cAAc,MAAM,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAChC,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,SAAS,EAAE;AACnB,IAAI,OAAO,SAAS,CAAC,SAAS;AAC9B;AACA,CAAC;AA2ED,IAAI,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU;AACpS,WAAW,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,CAAC,QAAQ,CAAC,EAAE,qBAAqB,GAAG,CAAC,QAAQ,CAAC,EAAE,qBAAqB,GAAG,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,CAAC,OAAO,CAAC;AACzQ,IAAI,aAAa,GAAG,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI3B,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC;AACtC,IAAIO,cAAY,CAAC,IAAI,EAAE,SAAS,CAAC;AACjC,IAAIA,cAAY,CAAC,IAAI,EAAE,eAAe,CAAC;AACvC,IAAIA,cAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,YAAY;AAChD,MAAM,KAAK,CAAC;AACZ,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;AAC7C,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE;AAC9B,IAAIA,cAAY,CAAC,IAAI,EAAE,SAAS,EAAEP,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACjH,IAAIO,cAAY,CAAC,IAAI,EAAE,eAAe,EAAEP,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACvH,IAAIO,cAAY,CAAC,IAAI,EAAE,iBAAiB,EAAEP,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACzH,IAAIO,cAAY,CAAC,IAAI,EAAE,iBAAiB,EAAEP,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACzH,IAAIO,cAAY,CAAC,IAAI,EAAE,WAAW,EAAEP,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACjH;AACA,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,IAAIO,cAAY,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClD,IAAIJ,cAAY,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;AAC1C;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAGD,cAAY,CAAC,IAAI,EAAE,OAAO,CAAC;AACtE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;AAC9B,MAAM,OAAO,IAAI;AACjB;AACA,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACnB,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAMA,cAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE;AACzC,KAAK,MAAM;AACX,MAAMA,cAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,GAAG,KAAK;AACjD;AACA;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB;AAC5C,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,OAAO,IAAI;AACvC,IAAI,MAAM,KAAK,GAAGA,cAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AACnF,IAAI,IAAI,KAAK,EAAE;AACf,MAAMC,cAAY,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC;AAChD;AACA,IAAI,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAGD,cAAY,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;AACjG;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB;AAC5C,IAAI,OAAO,UAAU,IAAI,IAAI,GAAG,CAAC,EAAE,GAAGA,cAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;AACnI;AACA,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;AACxC,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAACT,eAAa,CAACD,gBAAc,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AACpF,QAAQ;AACR,OAAO,CAAC,CAAC;AACT;AACA,IAAIW,cAAY,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC;AAC7C,IAAI,OAAO,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAOY,CAAS,CAAC,OAAO;AAC5B,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,MAAM,cAAc,EAAE,IAAI,CAAC,cAAc;AACzC,MAAM,SAAS,EAAEb,cAAY,CAAC,IAAI,EAAE,UAAU,CAAC;AAC/C,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;AACrD,MAAM,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvC,MAAM,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,MAAM,QAAQ,EAAE,IAAI,CAAC;AACrB,KAAK,CAAC,CAAC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,GAAG;AACV,IAAIc,CAAK,CAAC,MAAM;AAChB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,YAAY;AACxC,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAClC,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAClC,MAAMd,cAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE;AACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACzC,MAAMC,cAAY,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpD,MAAM,IAAI,CAAC,SAAS,GAAG,EAAE;AACzB,KAAK,CAAC;AACN;AACA,CAAC;AACD,MAAM,GAAGR,kBAAgB,CAAC,IAAI,CAAC;AAC/B,SAAS,GAAG,IAAI,OAAO,EAAE;AACzB,eAAe,GAAG,IAAI,OAAO,EAAE;AAC/B,OAAO,GAAG,IAAI,OAAO,EAAE;AACvB,SAAS,GAAG,IAAI,OAAO,EAAE;AACzB,eAAe,GAAG,IAAI,OAAO,EAAE;AAC/B,iBAAiB,GAAG,IAAI,OAAO,EAAE;AACjC,iBAAiB,GAAG,IAAI,OAAO,EAAE;AACjC,WAAW,GAAG,IAAI,OAAO,EAAE;AAC3B,UAAU,GAAG,IAAI,OAAO,EAAE;AAC1BM,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC;AACjEA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC;AACjFA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,CAAC;AACnGA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EAAE,iBAAiB,CAAC;AACzGA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EAAE,iBAAiB,CAAC;AACzGA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC;AACtFA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC;AAClEA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC;AAClEA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC;AACxEF,qBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC;;AC50C1C;AAGA,IAAI,mBAAmB,GAAG,CAAC;AAC3B,EAAE,aAAa;AACf,EAAE;AACF,CAAC,KAAK;AACN,EAAE,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO;AAC3D,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC3B,IAAI,OAAO,IAAI;AACf;AACA,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,SAAS;AAC1B,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,IAAI,OAAO,IAAI;AACf;AACA,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;AACzD,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC;AAC/E,IAAI,OAAO;AACX,MAAM,EAAE;AACR,MAAM,KAAK,EAAE,CAAC,GAAG,QAAQ;AACzB,MAAM,IAAI,EAAE,aAAa,CAAC,mBAAmB;AAC7C,MAAM,QAAQ,EAAE,iBAAiB,CAAC;AAClC,KAAK;AACL;AACA,EAAE,OAAO,IAAI;AACb,CAAC;AAKD,IAAI,iBAAiB,GAAG,CAAC;AACzB,EAAE,aAAa;AACf,EAAE;AACF,CAAC,KAAK;AACN,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa;AACjC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE;AACrE,IAAI,OAAO,IAAI;AACf;AACA,EAAE,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1E,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa;AACtC,IAAI,MAAM,QAAQ,GAAG6B,KAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC9E,IAAI,MAAM,iBAAiB,GAAG,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,gBAAgB,CAAC;AAC/G,IAAI,MAAM,KAAK,GAAG,iBAAiB,GAAG,QAAQ;AAC9C,IAAI,OAAO;AACX,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE;AACtB,MAAM,KAAK;AACX,MAAM,IAAI,EAAEC,aAAc,CAAC,iBAAiB;AAC5C,MAAM,QAAQ,EAAEC,iBAAkB,CAAC;AACnC,KAAK;AACL;AACA,EAAE,OAAO,IAAI;AACb,CAAC;;AAED;AACA,IAAI,yBAAyB,GAAG,CAAC,IAAI,KAAK;AAC1C,EAAE,IAAI,EAAE;AACR,EAAE,OAAO,CAAC,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAChF,CAAC;AAKD,IAAI,cAAc,GAAG,CAAC,KAAK,KAAK;AAChC,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK;AAC5C,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa;AAC3C,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,IAAI,OAAO,IAAI;AACf;AACA,EAAE,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;AAC/F,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI;AACjC,IAAI,SAAS,CAAC,KAAK,CAAC;AACpB,GAAG,CAAC,OAAO,CAAC,MAAM;AAClB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK;AAC5B,MAAM,IAAI,EAAE;AACZ,MAAM,OAAO,GAAG,GAAGC,KAAM,CAAC,QAAQ;AAClC,QAAQA,KAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAQ,CAAC,EAAE,GAAG,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC;AAC3F,OAAO;AACP,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC;AAC5B,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,SAAS,CAAC,EAAE;AACpB,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK;AACpB,IAAI,IAAI,EAAEC,aAAc,CAAC,SAAS;AAClC,IAAI,QAAQ,EAAEC,iBAAkB,CAAC;AACjC,GAAG;AACH,CAAC;;ACvFD,IAAI3C,aAAW,GAAG,CAAC,GAAG,KAAK;AAC3B,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC;AACtB,CAAC;AACD,IAAIgB,eAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAIhB,aAAW,CAAC,SAAS,GAAG,GAAG,CAAC;AACzF,IAAIY,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,MAAMI,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,yBAAyB,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpH,IAAIC,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGjB,aAAW,CAAC,mDAAmD,CAAC,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACpM,IAAIa,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,MAAMG,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;AACxI,IAAID,iBAAe,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,MAAMC,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,uBAAuB,CAAC,EAAE,MAAM,CAAC;;AAE5G;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE;AAClC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK;AAC3B,EAAE,IAAI,MAAM,YAAY,cAAc,EAAE,OAAO,IAAI;AACnD,EAAE,OAAO,cAAc,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU;AAC9E;;AAEA;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC1C,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE;AAC7C,EAAE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,IAAI,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;AACzC,MAAM,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AAC7C,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;AAClC,MAAM,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE;AAC7E,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;AACtD,MAAM,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,QAAQ,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AACzE;AACA;AACA;AACA,EAAE,OAAO,IAAI;AACb;;AAEA;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE;AACvC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE;AACrF,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;AACpD;;AAEA;AACA,IAAI4B,WAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,KAAK,WAAW;;AAE/I;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC3B,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/D,EAAE,OAAO,aAAa,KAAK,iBAAiB;AAC5C,EAAE,aAAa,KAAK,iBAAiB;AACrC;;AAEA;AACA,SAAS,MAAM,CAAC,IAAI,EAAE;AACtB,EAAE,OAAO,UAAU,IAAI,IAAI;AAC3B;;AAEA;AACA,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAChB,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,MAAM;AACjB;AACA,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACxB,IAAI,OAAO,MAAM;AACjB;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACvB,IAAI,OAAO,MAAM;AACjB;AACA,EAAE,IAAI,aAAa,IAAI,MAAM,EAAE;AAC/B,IAAI,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM;AAC1D;AACA,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM;AACnG;;AAEA;AACA,SAAS,UAAU,CAAC,IAAI,EAAE;AAC1B,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC;AACtC,EAAE,OAAO,IAAI,YAAY,QAAQ,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa;AAC/F;;AAEA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,EAAE,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AAC3C,EAAE,OAAO,IAAI,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,cAAc,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7J;;AAEA;AACA,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,EAAE,OAAO,IAAI,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,cAAc,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3J;;AAEA;AACA,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,QAAQ;AACnB;AACA,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACxB,IAAI,OAAO,MAAM,CAAC,QAAQ;AAC1B;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACvB,IAAI,OAAO,QAAQ;AACnB;AACA,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,IAAI,OAAO,MAAM;AACjB;AACA,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AACrD,IAAI,OAAO,MAAM,CAAC,aAAa;AAC/B;AACA,EAAE,OAAO,QAAQ;AACjB;;AAEA;AACA,SAAS,4BAA4B,CAAC,OAAO,EAAE;AAC/C,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC;AAClD,EAAE,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW;AAC3C,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY;AAC7C,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,CAAC;AACV,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,KAAK;AACT,IAAI;AACJ,GAAG;AACH;;AAEA;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC3C,EAAE,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;AAC3D,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACtE,EAAE,OAAO,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;AACrF;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,EAAE,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS;AACtC;;AAEA;AACA,SAAS,2BAA2B,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE;AAChH,EAAE,IAAI,EAAE;AACR,EAAE,IAAI,IAAI,GAAG,kBAAkB;AAC/B,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO;AACnC,EAAE,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,WAAW,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM;AAC5E,EAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,aAAa;AACtC,EAAE,OAAO,QAAQ,IAAI,QAAQ,KAAK,aAAa,CAAC,eAAe,EAAE;AACjE,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;AACtC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,qBAAqB,EAAE;AAC3D,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC;AACzE,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC;AAC3E,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC;AAC5E,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC;AAC1E,MAAM,IAAI,GAAG;AACb,QAAQ,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;AAC7D,QAAQ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,GAAG,WAAW,CAAC;AACrE,QAAQ,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC;AACzE,QAAQ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC;AACjE,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA,QAAQ,MAAM,EAAE;AAChB;AACA,OAAO;AACP,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI;AACzC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG;AAC1C;AACA,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa;AACrC;AACA,EAAE,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU;AAC9C,EAAE,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW;AAChD,EAAE,MAAM,eAAe,GAAG,MAAM,GAAG,cAAc;AACjD,EAAE,MAAM,eAAe,GAAG,MAAM,GAAG,aAAa;AAChD,EAAE,IAAI,GAAG;AACT,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,eAAe,CAAC;AAChD,IAAI,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CAAC;AAChE,IAAI,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAAC;AACnE,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC;AAClD,IAAI,KAAK,EAAE,CAAC;AACZ;AACA,IAAI,MAAM,EAAE;AACZ;AACA,GAAG;AACH,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI;AACrC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG;AACtC,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;AAClB;AACA,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACnB;AACA,EAAE,OAAO,IAAI;AACb;;AAEA;AACA,SAAS,QAAQ,GAAG;AACpB,EAAE,OAAO,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACnE;;AAEA;AACA,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,EAAE,MAAM,QAAQ,GAAG,oDAAoD;AACvE,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/C,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAC/D,EAAE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAC3E,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACzC,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AACvC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;AAClD,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACjC,QAAQ,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;AACzC;AACA,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;AAChD,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5C;AACA;AACA,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,KAAK,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACzH,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC5C,MAAM,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;AACvE;AACA,GAAG,CAAC;AACJ,EAAE,OAAO,aAAa;AACtB;AACA,SAAS,OAAO,CAAC,OAAO,EAAE;AAC1B,EAAE,OAAO,OAAO,IAAI,OAAO;AAC3B;AACA,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,EAAE,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;AACrC;;AAEA;AACA,SAAS,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AAClD,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC;AAClD,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE;AAChC,IAAI,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO;AACvC,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC3D,MAAM,OAAO,mBAAmB,CAAC,eAAe,EAAE;AAClD,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI;AACnB,QAAQ,CAAC,EAAE,CAAC,GAAG;AACf,OAAO,CAAC;AACR;AACA;AACA,EAAE,OAAO,OAAO;AAChB;AACA,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,MAAM,QAAQ;AAClE;;AAEA;AACA,IAAI,eAAe,mBAAmB,IAAI,OAAO,EAAE;;AAEnD;AACA,IAAI,SAAS,GAAG,MAAM;AACtB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,OAAO,mBAAmB,IAAI,GAAG,EAAE;AAC5C,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM;AACvB,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;AACxC,QAAQ,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK;AAC3D,QAAQ,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC3D;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC1B,KAAK;AACL;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;AACtB,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AAC5D,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE;AACxC,MAAM,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU;AACpD,MAAM,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;AACxC,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB;AACA,IAAI,OAAO,SAAS,OAAO,GAAG;AAC9B,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE;AACpE,QAAQ,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC5D;AACA,KAAK;AACL;AACA,CAAC;;AAED;AACA,SAAS,eAAe,CAAC,EAAE,EAAE;AAC7B,EAAE,MAAM,SAAS,GAAG,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW;AACtE,EAAE,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE;AACxD,IAAI,OAAO,SAAS,CAAC,YAAY;AACjC;AACA;;AAEA;AACA,SAAS,gBAAgB,CAAC,EAAE,EAAE;AAC9B,EAAE,MAAM,MAAM,mBAAmB,IAAI,GAAG,EAAE;AAC1C,EAAE,IAAI,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC;AACjC,EAAE,OAAO,KAAK,EAAE;AAChB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AAClC;AACA,EAAE,OAAO,MAAM;AACf;;AAEA;AACA,SAAS,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE;AACrC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC3C,EAAE,OAAO,MAAM,YAAY,CAAC,EAAE,CAAC;AAC/B;;AAEA;AACA,SAASC,UAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;AAC/B,EAAE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE;AACtC,EAAE,IAAI,MAAM;AACZ,EAAE,IAAI,OAAO;AACb,EAAE,OAAO,SAAS,GAAG,IAAI,EAAE;AAC3B,IAAI,MAAM,OAAO,GAAG,IAAI;AACxB,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/B,MAAM,OAAO,GAAG,IAAI,EAAE;AACtB,KAAK,MAAM;AACX,MAAM,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,EAAE;AACxC,MAAM,MAAM,GAAG,OAAO;AACtB,QAAQ,MAAM;AACd,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnC,UAAU,OAAO,GAAG,IAAI,EAAE;AAC1B,SAAS;AACT,QAAQ,KAAK,IAAI,IAAI,EAAE,GAAG,OAAO;AACjC,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;AAC1B,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,KAAK;AAC5B,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;AACzF;;AAEA;AACA,SAAS,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,EAAE,EAAE;AAClF,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,2BAA2B;AACvD,IAAI,OAAO;AACX,IAAI;AACJ,GAAG;AACH,EAAE,OAAO,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC;AAChC;;AAEA;AACA,IAAI,QAAQ,GAAGD,WAAS,GAAG,cAAc,GAAG,MAAM,kBAAkB,CAAC;AACrE,EAAE,OAAO,GAAG;AACZ;AACA,EAAE,SAAS,GAAG;AACd;AACA,EAAE,UAAU,GAAG;AACf;AACA,CAAC;AACD,IAAI,YAAY;AAChB,IAAI,cAAc,GAAG,cAAc,QAAQ,CAAC;AAC5C,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,KAAK,CAAC,CAAC,OAAO,KAAK;AACvB,MAAM,IAAI,CAAChC,cAAY,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE;AAC7C,QAAQC,cAAY,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC;AAC9C,QAAQ;AACR;AACA,MAAM,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;AAC7B,KAAK,CAAC;AACN,IAAII,cAAY,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;AAC3C;AACA,CAAC;AACD,YAAY,GAAG,IAAI,OAAO,EAAE;;AAE5B;AACA,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC;AACtE,IAAI,iBAAiB,GAAG,EAAE;AAC1B,IAAI,QAAQ,EAAE,2BAA2B,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,SAAS,EAAE,cAAc;AACnM,IAAI,gBAAgB,GAAG,MAAM;AAC7B,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG;AAC3C,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,WAAW,EAAE;AACjB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B,IAAIA,cAAY,CAAC,IAAI,EAAE,2BAA2B,CAAC;AACnD,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM;AAC5B,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACpB,MAAMJ,cAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC;AAC7C,MAAM,CAAC,EAAE,GAAGD,cAAY,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE;AACnF,MAAM,CAAC,EAAE,GAAGA,cAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE;AACrF,MAAMA,cAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,UAAU,EAAE;AAC1D,MAAM,CAAC,EAAE,GAAGA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE;AACtE,KAAK;AACL,IAAIK,cAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC;AACtC,IAAIA,cAAY,CAAC,IAAI,EAAE,2BAA2B,CAAC;AACnD,IAAIA,cAAY,CAAC,IAAI,EAAE,eAAe,CAAC;AACvC,IAAIA,cAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC;AACzC,IAAIA,cAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC;AAC3C,IAAIA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9B,IAAIA,cAAY,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC;AAC5C,IAAIA,cAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE4B,UAAQ,CAAC,MAAM;AACxD,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACpB,MAAM,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AAC9B,MAAM,CAAC,EAAE,GAAGjC,cAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE;AACrF,MAAM,IAAIA,cAAY,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAACA,cAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACtG,QAAQ;AACR;AACA,MAAM,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQ;AACvE,MAAM,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM;AACvF,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE;AACxD,MAAM,MAAM,WAAW,GAAG,2BAA2B,CAAC,OAAO,EAAE,UAAU,CAAC;AAC1E,MAAM,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW;AACtD,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACvC,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACzC,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;AACxF,MAAM,IAAI,CAAC,kBAAkB,GAAG,UAAU;AAC1C,MAAMC,cAAY,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,oBAAoB;AACpE,QAAQ,CAAC,OAAO,KAAK;AACrB,UAAU,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO;AACjC,UAAU,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK;AAC5C,UAAU,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,KAAK,CAAC,GAAG,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC,iBAAiB;AACzH,YAAY,gBAAgB;AAC5B,YAAY,2BAA2B,CAAC,OAAO;AAC/C,WAAW;AACX,UAAU,IAAI,iBAAiB,KAAK,CAAC,EAAE;AACvC,YAAYD,cAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3D;AACA,SAAS;AACT,QAAQ;AACR,UAAU,SAAS;AACnB,UAAU,UAAU;AACpB,UAAU;AACV;AACA,OAAO,CAAC;AACR,MAAMA,cAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5D,MAAMG,iBAAe,CAAC,IAAI,EAAE,2BAA2B,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9E,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC7D,IAAIF,cAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC7E,IAAI,IAAI,OAAO,GAAG,IAAI;AACtB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,kBAAkB,KAAK;AAC5C,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,OAAO,GAAG,KAAK;AACvB,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE;AACjC;AACA,MAAM,QAAQ,CAAC,kBAAkB,CAAC;AAClC,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa;AACtC,IAAI,IAAI,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE;AAClD,MAAMA,cAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/D,MAAMD,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,kBAAkB;AACtE,MAAMA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACzD,MAAMA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AAC7D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAACA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACvD;AACA,IAAIC,cAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,oBAAoB;AACpE,MAAM,CAAC,OAAO,KAAK;AACnB,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,QAAQ,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,KAAK;AACrE,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,kBAAkB;AACpD,QAAQ,MAAM,eAAe,GAAGD,cAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC5D,QAAQC,cAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC7C,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AAC/B,QAAQ,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE;AACzC,UAAU,CAAC,EAAE,GAAGD,cAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE;AACzF,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7B,UAAU,CAAC,EAAE,GAAGA,cAAY,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE;AACvF,UAAUC,cAAY,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACrD,UAAU,IAAID,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAEA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AAChG,SAAS,MAAM;AACf,UAAUA,cAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACzD;AACA,QAAQ,IAAI,OAAO,IAAI,CAACA,cAAY,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE;AAC7D,UAAUC,cAAY,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,cAAc,CAACD,cAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACvG,UAAUA,cAAY,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC9D;AACA,OAAO;AACP,MAAM;AACN,QAAQ,SAAS;AACjB,QAAQ;AACR;AACA,KAAK,CAAC;AACN,IAAI,IAAIA,cAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC9D,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC5C;AACA,IAAIA,cAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5D;AACA,CAAC;AACD,QAAQ,GAAG,IAAI,OAAO,EAAE;AACxB,2BAA2B,GAAG,IAAI,OAAO,EAAE;AAC3C,eAAe,GAAG,IAAI,OAAO,EAAE;AAC/B,iBAAiB,GAAG,IAAI,OAAO,EAAE;AACjC,mBAAmB,GAAG,IAAI,OAAO,EAAE;AACnC,MAAM,GAAG,IAAI,OAAO,EAAE;AACtB,aAAa,GAAG,IAAI,OAAO,EAAE;AAC7B,gBAAgB,GAAG,IAAI,OAAO,EAAE;AAChC,2BAA2B,GAAG,IAAI,OAAO,EAAE;AAC3C,SAAS,GAAG,WAAW;AACvB,EAAE,IAAIA,cAAY,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE;AACzC,EAAEG,iBAAe,CAAC,IAAI,EAAE,2BAA2B,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/E,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAEH,cAAY,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;AAC3F,IAAI;AACJ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACxC,EAAEC,cAAY,CAAC,IAAI,EAAE,2BAA2B,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC1E,CAAC;AACD,cAAc,GAAG,WAAW;AAC5B,EAAE,IAAID,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AAClC,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,2BAA2B;AACpE,MAAM,IAAI,CAAC;AACX,KAAK;AACL,IAAIA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACxD,IAAIA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AAC3D,IAAIA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACjE,IAAIA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACnE,IAAIA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACrE,IAAIA,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACvE;AACA,CAAC;;AAED;AACA,IAAI,sBAAsB,mBAAmB,IAAI,OAAO,EAAE;AAC1D,IAAI,eAAe,mBAAmB,IAAI,OAAO,EAAE;AACnD,SAAS,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC3C,EAAE,IAAI,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChD,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,MAAM,QAAQ,GAAG,IAAI,gBAAgB;AACzC,MAAM,KAAK;AACX,MAAM,CAAC,kBAAkB,KAAK;AAC9B,QAAQ,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;AACzD,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,QAAQ,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,kBAAkB,CAAC,CAAC;AAC/E,OAAO;AACP,MAAM,EAAE,WAAW,EAAE,IAAI;AACzB,KAAK;AACL,IAAI,MAAM,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,IAAI,GAAG,EAAE,EAAE;AACtF;AACA,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,EAAE,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AAC3C,EAAE,OAAO,MAAM;AACf,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrC,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;AACrC,MAAM,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1C,MAAM,MAAM,CAAC,UAAU,EAAE;AACzB;AACA,GAAG;AACH;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE;AAC/C,EAAE,MAAM,OAAO,mBAAmB,IAAI,GAAG,EAAE;AAC3C,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC9B,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACpD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB;AACA,EAAE,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;AACpD;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC9C,EAAE,IAAI,EAAE;AACR,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa;AACnC,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjC,IAAI,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE;AAC5C,IAAI,MAAM,UAAU,mBAAmB,IAAI,GAAG,EAAE;AAChD,IAAI,QAAQ,CAAC,gBAAgB;AAC7B,MAAM,QAAQ;AACd,MAAM,CAAC,KAAK,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClE,MAAM;AACN,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,MAAM,EAAE,UAAU,CAAC;AAC3B;AACA,KAAK;AACL,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC7F;AACA,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;AACrF,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,OAAO,MAAM;AAC9C,GAAG;AACH,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzB,EAAE,OAAO,MAAM;AACf,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9B,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;AAC9B,MAAM,UAAU,EAAE;AAClB,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;AACjC;AACA,GAAG;AACH;AACA,IAAI,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa;AAC5D,IAAI,aAAa,GAAG,MAAM;AAC1B,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC1C,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B,IAAIK,cAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC;AACxC,IAAIA,cAAY,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC;AAC7C,IAAIA,cAAY,CAAC,IAAI,EAAE,OAAO,CAAC;AAC/B,IAAIA,cAAY,CAAC,IAAI,EAAE,aAAa,EAAE4B,UAAQ,CAAC,CAAC,KAAK,KAAK;AAC1D,MAAM,IAAIjC,cAAY,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;AAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,MAAM,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;AACrF,QAAQ,KAAK,MAAM,KAAK,IAAIA,cAAY,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACzD,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC5C,YAAY,IAAI,CAAC,QAAQ,CAACA,cAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,kBAAkB,CAAC;AAClF,YAAY;AACZ;AACA;AACA;AACA,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC5C,IAAI,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC;AACvE,IAAI,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,OAAO,EAAEA,cAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AAC9F,IAAIC,cAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;AACvC,IAAIA,cAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1F,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM;AAC5B,MAAM,IAAID,cAAY,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;AAC9C,MAAMC,cAAY,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC;AAC9C,MAAM,qBAAqB,EAAE;AAC7B,MAAM,oBAAoB,EAAE;AAC5B,MAAMD,cAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,UAAU,EAAE;AACvD,KAAK;AACL;AACA,CAAC;AACD,gBAAgB,GAAG,IAAI,OAAO,EAAE;AAChC,cAAc,GAAG,IAAI,OAAO,EAAE;AAC9B,OAAO,GAAG,IAAI,OAAO,EAAE;AACvB,aAAa,GAAG,IAAI,OAAO,EAAE;;AAE7B;AACA,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,EAAE,OAAO,aAAa,IAAI,OAAO,IAAI,aAAa,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU;AACvJ;;AAEA;AACA,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,EAAE,IAAI;AACN,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC;AAC1F,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AACvC,MAAM,OAAO,CAAC,WAAW,EAAE;AAC3B;AACA,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB;AACA;;AAaA;AACA,SAAS,0BAA0B,CAAC,OAAO,EAAE;AAC7C,EAAE,IAAI,CAACgC,WAAS,IAAI,CAAC,OAAO,EAAE;AAC9B,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,OAAO,OAAO,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC,gBAAgB;AAC1D;;AAEA;AACA,SAAS,iBAAiB,CAAC,iBAAiB,EAAE;AAC9C,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,iBAAiB,CAAC;AAC9C,EAAE,MAAM,IAAI,GAAG,0BAA0B,CAAC,iBAAiB,CAAC,GAAG,4BAA4B,CAAC,iBAAiB,CAAC,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;AACxJ,EAAE,MAAM,UAAU,GAAG,0BAA0B,CAAC,iBAAiB,CAAC,GAAG;AACrE,IAAI,MAAM,EAAE,OAAO,CAAC,WAAW;AAC/B,IAAI,KAAK,EAAE,OAAO,CAAC;AACnB,GAAG,GAAG;AACN,IAAI,MAAM,EAAE,iBAAiB,CAAC,YAAY;AAC1C,IAAI,KAAK,EAAE,iBAAiB,CAAC;AAC7B,GAAG;AACH,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,OAAO,EAAE;AACb,MAAM,CAAC,EAAE,iBAAiB,CAAC,UAAU;AACrC,MAAM,CAAC,EAAE,iBAAiB,CAAC;AAC3B,KAAK;AACL,IAAI,GAAG,EAAE;AACT,MAAM,CAAC,EAAE,iBAAiB,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK;AACzD,MAAM,CAAC,EAAE,iBAAiB,CAAC,YAAY,GAAG,UAAU,CAAC;AACrD;AACA,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;AACvC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;AACxC,EAAE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvD,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtD,EAAE,OAAO;AACT,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI;AACJ,GAAG;AACH;;AAEA;AACA,SAAS,SAAS,CAAC,iBAAiB,EAAE,EAAE,EAAE;AAC1C,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,iBAAiB,CAAC;AAC7F,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACnD,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAClD,EAAE,MAAM,MAAM,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrE,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACpD,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACnE,EAAE,OAAO;AACT,IAAI,GAAG;AACP,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,CAAC,EAAE,IAAI,IAAI,KAAK;AACpB,IAAI,CAAC,EAAE,GAAG,IAAI;AACd,GAAG;AACH;;AAEA;AACA,IAAIE,WAAS,GAAG,eAAK,CAAC;AACtB,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,UAAU;AAC/B,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK;AACxB,IAAI,IAAI,CAAC,KAAK,mBAAmB,IAAI,GAAG,EAAE;AAC1C,IAAI,IAAI,CAAC,SAAS,mBAAmB,IAAI,GAAG,EAAE;AAC9C,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM;AACvB,MAAM,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;AACvC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK;AAC1B,MAAM,IAAI,CAAC,KAAK,mBAAmB,IAAI,GAAG,EAAE;AAC5C,MAAM,IAAI,CAAC,SAAS,mBAAmB,IAAI,GAAG,EAAE;AAChD,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAChC,QAAQ,IAAI,EAAE;AACd;AACA,MAAM,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;AACvC,QAAQ,OAAO,EAAE;AACjB;AACA,KAAK;AACL;AACA,EAAE,QAAQ,CAAC,IAAI,EAAE;AACjB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI;AACzB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC;AACA,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChE;AACA,CAAC;AACD,IAAI,SAAS,GAAG,IAAIA,WAAS,CAAC,CAAC,QAAQ,KAAK;AAC5C,EAAE,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE;AACnD,IAAI,qBAAqB,CAAC,QAAQ,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,QAAQ,EAAE;AACd;AACA,CAAC,CAAC;;AAEF;AACA,IAAI,UAAU,GAAG,IAAIA,WAAS,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACtE,IAAI,YAAY,mBAAmB,IAAI,GAAG,EAAE;AAC5C,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;AACjD,SAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE;AACpD,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,aAAa,CAAC,OAAO,CAAC;AAC5C,EAAE,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AACxC,EAAE,IAAI,MAAM,EAAE,OAAO,MAAM;AAC3B,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;AACjC,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;AACnC,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,EAAE,OAAO,MAAM;AACf;AACA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,EAAE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACrD;;AAEA;AACA,SAAS,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AACtE,EAAE,OAAO,aAAa,CAAC,QAAQ,KAAK,OAAO;AAC3C;;AAEA;AACA,SAAS,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;AACjF,EAAE,MAAM,aAAa,GAAG,uBAAuB;AAC/C,EAAE,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC;AAC3D,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;AACvC,IAAI,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC;AACzC,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK;AACxE,GAAG,CAAC;AACJ;;AAEA;AACA,IAAI,cAAc,GAAG;AACrB,EAAE,cAAc,EAAE;AAClB,CAAC;AACD,SAAS,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE;AACnE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO;AAC3C,EAAE,MAAM,aAAa,mBAAmB,IAAI,GAAG,EAAE;AACjD,EAAE,SAAS,uBAAuB,CAAC,IAAI,EAAE;AACzC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,aAAa,CAAC,IAAI,IAAI,KAAK,EAAE;AACtD,MAAM,OAAO,aAAa;AAC1B;AACA,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,OAAO,aAAa;AAC1B;AACA,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACxG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC9C,MAAM,OAAO,aAAa;AAC1B;AACA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAC9B,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AAC9B,QAAQ,OAAO,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC;AAC1D;AACA,MAAM,OAAO,aAAa;AAC1B;AACA,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACjC,MAAM,OAAO,aAAa;AAC1B;AACA,IAAI,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC;AACvD,IAAI,IAAI,cAAc,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE;AAC1F,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B;AACA,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE;AACtC,MAAM,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,aAAa;AACrD,MAAM,IAAI,gBAAgB,EAAE,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC/D,MAAM,OAAO,aAAa;AAC1B;AACA,IAAI,OAAO,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC;AACnD;AACA,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,OAAO,aAAa;AACxB;AACA,EAAE,OAAO,uBAAuB,CAAC,OAAO,CAAC;AACzC;AACA,SAAS,0BAA0B,CAAC,IAAI,EAAE;AAC1C,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,sBAAsB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC9E,EAAE,OAAO,uBAAuB,IAAI,IAAI,GAAG,uBAAuB,GAAG,IAAI;AACzE;;AAEA;AACA,SAAS,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE;AAC/D,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE;AACZ,GAAG;AACH,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,SAAS;AAC3B,EAAE,IAAI,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC;AACjC,EAAE,OAAO,KAAK,EAAE;AAChB,IAAI,IAAI,KAAK,KAAK,QAAQ,EAAE;AAC5B,MAAM,OAAO,SAAS;AACtB;AACA,IAAI,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAC5C,IAAI,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;AAC1D,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI;AACzC,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG;AACxC,IAAI,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM;AAChD,IAAI,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM;AAChD,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AAClC;AACA,EAAE,OAAO,SAAS;AAClB;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,EAAE;AAC9E,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACnD,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACrD,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;AAC9B,IAAI,OAAO;AACX,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW;AACpC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;AAC1B,KAAK;AACL;AACA,EAAE,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC;AACjD,EAAE,OAAO;AACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK;AAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI;AAC/C,GAAG;AACH;;AAEA;AACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,EAAE,IAAI,KAAK,KAAK,MAAM,EAAE;AACxB,IAAI,OAAO,IAAI;AACf;AACA,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5B,IAAI,OAAO,IAAI;AACf;AACA,EAAE,OAAO;AACT,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACtB,GAAG;AACH;;AAEA;AACA,SAAS,cAAc,CAAC,SAAS,EAAE;AACnC,EAAE,IAAI,SAAS,KAAK,MAAM,EAAE;AAC5B,IAAI,OAAO,IAAI;AACf;AACA,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AAC3E,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAC1C,IAAI,OAAO,IAAI;AACf;AACA,EAAE,OAAO;AACT,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AACrC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AACrC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AACpC,GAAG;AACH;;AAEA;AACA,SAAS,cAAc,CAAC,cAAc,EAAE;AACxC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,cAAc;AACxD,EAAE,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC;AACvC,EAAE,MAAM,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC;AACnD,EAAE,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,CAAC;AACtD,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE;AACzD,IAAI,OAAO,IAAI;AACf;AACA,EAAE,MAAM,eAAe,GAAG;AAC1B,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC;AAC3E,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG;AAC1E,GAAG;AACH,EAAE,MAAM,mBAAmB,GAAG;AAC9B,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,eAAe,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,eAAe,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC;AACnF,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,eAAe,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,eAAe,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG;AAClF,GAAG;AACH,EAAE,MAAM,gBAAgB,GAAG;AAC3B,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC;AAC7E,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC;AAC7E,IAAI,MAAM,EAAE,CAAC,EAAE,GAAG,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC;AACvF,IAAI,MAAM,EAAE,CAAC,EAAE,GAAG,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG;AACtF,GAAG;AACH,EAAE,OAAO;AACT,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;AACjD,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;AACjD,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,eAAe,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,eAAe,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC;AACnF,IAAI,MAAM,EAAE,eAAe,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM;AACvD,IAAI,MAAM,EAAE,eAAe,CAAC,CAAC,GAAG,gBAAgB,CAAC;AACjD,GAAG;AACH;AACA,SAAS,oBAAoB,CAAC,SAAS,EAAE;AACzC,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AACzC,IAAI,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7D,IAAI,OAAO;AACX,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;AAC5B,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;AAC5B,MAAM,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAChC,MAAM,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC;AAC/B,KAAK;AACL,GAAG,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAC9C,IAAI,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7D,IAAI,OAAO;AACX,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAC3B,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAC3B,MAAM,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAChC,MAAM,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC;AAC/B,KAAK;AACL;AACA,EAAE,OAAO,IAAI;AACb;;AAEA;AACA,IAAI,eAAe,mBAAmB,CAAC,CAAC,gBAAgB,KAAK;AAC7D,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACzD,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;AAC/D,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS;AAChE,EAAE,OAAO,gBAAgB;AACzB,CAAC,EAAE,eAAe,IAAI,EAAE,CAAC;AACzB,IAAI,gBAAgB,GAAG;AACvB,EAAE,CAAC,EAAE,GAAG;AACR,EAAE,CAAC,EAAE;AACL,CAAC;AACD,IAAI,gBAAgB,GAAG;AACvB,EAAE,CAAC,EAAE,EAAE;AACP,EAAE,CAAC,EAAE;AACL,CAAC;AACD,SAAS,kBAAkB,CAAC,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,mBAAmB,GAAG,gBAAgB,EAAE,SAAS,GAAG,gBAAgB,EAAE;AAC7J,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW;AAC9B,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,iBAAiB,CAAC;AACzF,EAAE,MAAM,cAAc,GAAG,iBAAiB,CAAC,iBAAiB,CAAC;AAC7D,EAAE,MAAM,cAAc,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACnE,EAAE,MAAM,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC;AACxD,EAAE,MAAM,eAAe,GAAG,eAAe,KAAK,IAAI,GAAG,CAAC,eAAe,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,eAAe,CAAC,MAAM,IAAI,CAAC,GAAG,KAAK;AAC5H,EAAE,MAAM,eAAe,GAAG,eAAe,KAAK,IAAI,GAAG,CAAC,eAAe,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,eAAe,CAAC,MAAM,IAAI,CAAC,GAAG,KAAK;AAC5H,EAAE,MAAM,mBAAmB,GAAG,IAAI,SAAS;AAC3C,IAAI,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM;AACtC,IAAI,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;AACjC,GAAG;AACH,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,CAAC,EAAE,CAAC;AACR,GAAG;AACH,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,CAAC,EAAE;AACP,GAAG;AACH,EAAE,MAAM,UAAU,GAAG;AACrB,IAAI,MAAM,EAAE,mBAAmB,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC;AAC9D,IAAI,KAAK,EAAE,mBAAmB,CAAC,KAAK,GAAG,mBAAmB,CAAC;AAC3D,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,eAAe,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,mBAAmB,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,mBAAmB,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,EAAE;AAC/P,IAAI,SAAS,CAAC,CAAC,GAAG,eAAe,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACxD,IAAI,KAAK,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,GAAG;AACrC,MAAM,CAAC,mBAAmB,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC;AACrE,KAAK;AACL,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,eAAe,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,mBAAmB,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,IAAI,mBAAmB,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,EAAE;AAC1Q,IAAI,SAAS,CAAC,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC,iBAAiB,CAAC;AACxD,IAAI,KAAK,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,GAAG;AACrC,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC;AACxE,KAAK;AACL;AACA,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,eAAe,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,IAAI,mBAAmB,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE;AACjQ,IAAI,SAAS,CAAC,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC,iBAAiB,CAAC;AACxD,IAAI,KAAK,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,GAAG;AACrC,MAAM,CAAC,mBAAmB,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC;AACtE,KAAK;AACL,GAAG,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,eAAe,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,mBAAmB,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,mBAAmB,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE;AACtQ,IAAI,SAAS,CAAC,CAAC,GAAG,eAAe,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACxD,IAAI,KAAK,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,GAAG;AACrC,MAAM,CAAC,mBAAmB,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC;AACrE,KAAK;AACL;AACA,EAAE,OAAO;AACT,IAAI,SAAS;AACb,IAAI;AACJ,GAAG;AACH;;AAEA;AACA,SAAS,8BAA8B,CAAC,OAAO,EAAE;AACjD,EAAE,OAAO,wBAAwB,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,sBAAsB,KAAK,UAAU;AACpG;AACA,SAAS,sBAAsB,CAAC,EAAE,EAAE,cAAc,GAAG,KAAK,EAAE;AAC5D,EAAE,IAAI,8BAA8B,CAAC,EAAE,CAAC,EAAE;AAC1C,IAAI,EAAE,CAAC,sBAAsB,CAAC,cAAc,CAAC;AAC7C,IAAI;AACJ;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,OAAO,EAAE,CAAC,cAAc,EAAE;AAC9B;AACA,EAAE,IAAI,MAAM,GAAG,0BAA0B,CAAC,EAAE,CAAC;AAC7C,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI;AACJ;AACA,EAAE,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,QAAQ;AAC9F,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,kBAAkB;AAC3D,GAAG,EAAE,qBAAqB,GAAG,QAAQ;AACrC,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,mBAAmB;AAC5D,GAAG,EAAE,OAAO,GAAG,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,UAAU,GAAG,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,GAAG,oBAAoB,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,QAAQ,GAAG,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,SAAS,GAAG,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,WAAW,GAAG,qBAAqB,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,IAAI,CAAC,UAAU;AAC3a,EAAE,IAAI,CAAC,OAAO,IAAI,UAAU,KAAK,cAAc,EAAE;AACjD,IAAI,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,GAAG,oBAAoB,GAAG,EAAE,CAAC,YAAY,GAAG,CAAC;AAC7H;AACA,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,cAAc,EAAE;AACjD,IAAI,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,qBAAqB,GAAG,EAAE,CAAC,WAAW,GAAG,CAAC;AAC/H;AACA,EAAE,IAAI,CAAC,OAAO,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,KAAK,CAAC,cAAc,EAAE;AAC3E,IAAI,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC;AACnC;AACA;;AAEA;AACA,SAAS,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,eAAe;AAC1E,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,eAAe,CAAC;AAC/E,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACtH,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK;AACrD,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;AACvD,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,GAAG,EAAE,CAAC;AACV,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC;AAChB,IAAI,MAAM,EAAE,CAAC,GAAG,CAAC;AACjB,IAAI,IAAI,EAAE;AACV,GAAG;AACH;;AAEA;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE;AAClE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,eAAe;AAC1E,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,eAAe,CAAC;AAC/E,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACtH,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK;AACrD,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;AACvD,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,GAAG,EAAE,CAAC;AACV,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC;AAChB,IAAI,MAAM,EAAE,CAAC,GAAG,CAAC;AACjB,IAAI,IAAI,EAAE;AACV,GAAG;AACH;;AAEA;AACA,SAAS,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;AAC3D,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ;AACrD;;AAEA;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE;AACvG,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,MAAM,QAAQ,GAAG,gBAAgB;AACrC,MAAM,OAAO;AACb,MAAM,CAAC,SAAS,KAAK,WAAW,IAAI;AACpC,KAAK;AACL,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AACxD,MAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAC1C,QAAQ,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC;AACzD,QAAQ,IAAI,cAAc,EAAE;AAC5B,UAAU,OAAO,cAAc;AAC/B;AACA;AACA;AACA;AACA,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC;AACpD,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,OAAO,cAAc;AAC3B;AACA;AACA,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B;;AAEA;AACA,IAAIC,YAAU,GAAG,IAAID,WAAS,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACrE,IAAI,UAAU,mBAAmB,IAAI,GAAG,EAAE;AAC1C,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9C,SAAS,qBAAqB,CAAC,OAAO,EAAE;AACxC,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa;AACzC,EAAE,IAAI,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AACpD,EAAE,IAAI,kBAAkB,EAAE,OAAO,kBAAkB;AACnD,EAAE,kBAAkB,GAAG,SAAS,CAAC,aAAa,EAAE;AAChD,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAC/C,EAAEC,YAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,MAAM;AACrD,IAAI,CAAC,SAAS,KAAK,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK;AACrF,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC;AAC5C,EAAE,OAAO,kBAAkB;AAC3B;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE;AACjD,EAAE,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK;AAC3E,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,IAAI,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AAC5C,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM;AACzC,MAAM,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;AAC3I,MAAM,IAAI,aAAa,EAAE;AACzB,QAAQ,OAAO,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;AAClE,UAAU,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE;AACrD,YAAY,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI;AAC/C;AACA,SAAS,CAAC;AACV;AACA;AACA,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK;AACxB,IAAI,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS;AAC7C,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,QAAQ;AAClF,IAAI,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,SAAS,KAAK,UAAU,EAAE;AACjE,IAAI,IAAI,OAAO,QAAQ,IAAI,QAAQ,IAAI,OAAO,WAAW,IAAI,QAAQ,IAAI,WAAW,GAAG,QAAQ,EAAE;AACjG,MAAM,SAAS,CAAC,WAAW,GAAG,QAAQ;AACtC,MAAM,OAAO,MAAM;AACnB,QAAQ,SAAS,CAAC,WAAW,GAAG,WAAW;AAC3C,OAAO;AACP;AACA,GAAG,CAAC;AACJ,EAAE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,IAAI,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC;AACjF;AACA;;AAEA;AACA,IAAI,YAAY,GAAG,cAAc,SAAS,CAAC;AAC3C,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;AACrC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM;AACV,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC;AACjD,MAAM,gBAAgB;AACtB,MAAM,qBAAqB,GAAG;AAC9B,KAAK,GAAG,OAAO;AACf,IAAI,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,EAAE;AAC3D,MAAM,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;AACxE,MAAM,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,EAAE,KAAK,MAAM,CAAC,QAAQ,CAAC,OAAO;AAC9F,KAAK,CAAC;AACN,IAAI,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,CAAC;AAC5D,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,iBAAiB;AACxD,IAAI,IAAI,OAAO;AACf,IAAI,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC;AACrD,IAAI,MAAM,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC;AAC1D,IAAI,MAAM,KAAK,GAAG;AAClB,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,eAAe,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,eAAe,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC;AAC1F,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,eAAe,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,eAAe,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG;AACzF,KAAK;AACL,IAAI,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,EAAE,cAAc,CAAC;AAC7E,IAAI,eAAe,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,eAAe,EAAE;AACxD,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,OAAO,GAAG,gBAAgB;AAChC,QAAQ,iBAAiB;AACzB,QAAQ,eAAe;AACvB,QAAQ,cAAc,CAAC;AACvB,OAAO;AACP,MAAM,IAAI,gBAAgB,IAAI,kBAAkB,EAAE;AAClD,QAAQ,GAAG,GAAG,OAAO,CAAC,GAAG;AACzB,QAAQ,IAAI,GAAG,OAAO,CAAC,IAAI;AAC3B,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK;AAC7B,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM;AAC/B;AACA;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,MAAM,KAAK,EAAE,CAAC,EAAE,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK;AACjF,MAAM,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG;AAC9E,KAAK;AACL,IAAI,IAAI,kBAAkB,IAAI,CAAC,gBAAgB,IAAI,OAAO,EAAE;AAC5D,MAAM,MAAM,SAAS,GAAG,cAAc;AACtC,QAAQ,OAAO;AACf,QAAQ,kBAAkB;AAC1B,QAAQ,cAAc,CAAC;AACvB,OAAO;AACP,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG;AACzB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI;AAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK;AAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM;AAC/B,MAAM,KAAK,CAAC,CAAC,GAAG,kBAAkB,CAAC,MAAM;AACzC,MAAM,KAAK,CAAC,CAAC,GAAG,kBAAkB,CAAC,MAAM;AACzC;AACA,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,IAAI,CAAC,gBAAgB,EAAE;AAC7B,QAAQ,IAAI,IAAI,cAAc,CAAC,MAAM;AACrC,QAAQ,KAAK,IAAI,cAAc,CAAC,MAAM;AACtC,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM;AACpC,QAAQ,MAAM,IAAI,cAAc,CAAC,MAAM;AACvC;AACA,MAAM,IAAI,IAAI,cAAc,CAAC,CAAC;AAC9B,MAAM,GAAG,IAAI,cAAc,CAAC,CAAC;AAC7B;AACA,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;AACnC,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAI,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK;AACzC,IAAI,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,MAAM;AAC3C;AACA,CAAC;AACD,SAAS,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE;AACxD,EAAE,IAAI,EAAE;AACR,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE;AAC7C,EAAE,IAAI,kBAAkB,GAAG,IAAI;AAC/B,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,IAAI;AACtC,EAAE,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;AACvC,IAAI,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AAC3C,IAAI,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE;AAC/F,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,QAAQ;AACpD,IAAI,IAAI,SAAS,IAAI,SAAS,IAAI,KAAK,EAAE;AACzC,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAC7C,QAAQ,SAAS,EAAE,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC,SAAS;AACpG,QAAQ,SAAS,EAAE,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC,SAAS;AACpG,QAAQ,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,KAAK,GAAG,cAAc,CAAC;AAC3E,OAAO,CAAC;AACR,MAAM,IAAI,eAAe,EAAE;AAC3B,QAAQ,kBAAkB,GAAG,kBAAkB,GAAG;AAClD,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;AACrD,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;AACrD,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,kBAAkB,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,eAAe,CAAC,CAAC;AACzE,UAAU,MAAM,EAAE,kBAAkB,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM;AACpE,UAAU,MAAM,EAAE,kBAAkB,CAAC,MAAM,GAAG,eAAe,CAAC;AAC9D,SAAS,GAAG,eAAe;AAC3B;AACA;AACA;AACA,EAAE,OAAO,kBAAkB;AAC3B;;AAEA;AACA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,EAAE,OAAO,OAAO,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,aAAa,IAAI,OAAO,CAAC,KAAK,IAAI,gBAAgB,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,UAAU;AAC1Q;;AAEA;AACA,IAAI,MAAM,GAAG,MAAM;AACnB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,OAAO,mBAAmB,IAAI,GAAG,EAAE;AAC5C;AACA,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,EAAE,EAAE;AAC/B,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AAC5B,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AACjC,MAAM;AACN;AACA,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC3D,MAAM,MAAM,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACvC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAC5E;AACA,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW;AAC/B,QAAQ,QAAQ;AAChB,QAAQ,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE;AACvD,OAAO;AACP;AACA;AACA,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,EAAE,EAAE;AAClC,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AAC5B,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AACjC,MAAM;AACN;AACA,IAAI,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAClC,MAAM,MAAM,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AACxC,MAAM,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5C;AACA;AACA,EAAE,KAAK,GAAG;AACV,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AAC5B,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AACjC,MAAM;AACN;AACA,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AAC7C,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;AAC3C;AACA,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;AAC9C,MAAM,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;AACtC;AACA;AACA,CAAC;;AAED;AACA,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK;AAC3B,EAAE,OAAO,MAAM,YAAY,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;AAC/G;;AAEA;AACA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK;AAC1B,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;AACnD,EAAE,OAAO,KAAK,YAAY,aAAa;AACvC;;AAEA;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK;AAC1B,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;AAClD,EAAE,OAAO,KAAK,YAAY,YAAY;AACtC;;AAOA;AACA,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AACtC,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;AAC5B,EAAE,OAAO,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,UAAU,IAAI,iBAAiB,CAAC,MAAM,CAAC;AACnF;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE;AACpC,EAAE,OAAO,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,OAAO;AACvG;;AAEA;AACA,IAAI,GAAG,GAAG,EAAE;AACZ,SAAS,gBAAgB,CAAC,MAAM,EAAE;AAClC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AACtD,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;AAClB,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1B;;ACt0CA,IAAIxD,UAAQ,GAAG,MAAM,CAAC,MAAM;AAC5B,IAAIC,WAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAIC,YAAU,GAAG,MAAM,CAAC,gBAAgB;AACxC,IAAIC,kBAAgB,GAAG,MAAM,CAAC,wBAAwB;AACtD,IAAIC,mBAAiB,GAAG,MAAM,CAAC,yBAAyB;AACxD,IAAIC,qBAAmB,GAAG,MAAM,CAAC,qBAAqB;AACtD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AAClD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACxD,IAAIC,eAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AACrG,IAAIC,aAAW,GAAG,CAAC,GAAG,KAAK;AAC3B,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC;AACtB,CAAC;AACD,IAAIC,iBAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAGT,WAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAC/J,IAAIU,gBAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAIL,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAMI,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,IAAIL,qBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAIA,qBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAIE,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQG,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,EAAE,OAAO,CAAC;AACV,CAAC;AACD,IAAIE,eAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAKV,YAAU,CAAC,CAAC,EAAEE,mBAAiB,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,MAAM,GAAG,CAAC,MAAM,EAAE,KAAK,KAAKH,WAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACxF,IAAIoC,WAAS,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK;AACrC,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,KAAK,IAAI,IAAI,IAAI,MAAM;AACzB,IAAI,IAAI/B,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACpE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACjC,EAAE,IAAI,MAAM,IAAI,IAAI,IAAID,qBAAmB;AAC3C,IAAI,KAAK,IAAI,IAAI,IAAIA,qBAAmB,CAAC,MAAM,CAAC,EAAE;AAClD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAIE,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACtE,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACnC;AACA,EAAE,OAAO,MAAM;AACf,CAAC;AACD,IAAIO,kBAAgB,GAAG,CAAC,IAAI,KAAK;AACjC,EAAE,IAAI,GAAG;AACT,EAAE,OAAO,OAAOd,UAAQ,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAACQ,eAAa,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAC/G,CAAC;AACD,IAAIO,oBAAkB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC;AAC5G,IAAIC,YAAU,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,IAAI,OAAO,EAAE,KAAK,UAAU,GAAGP,aAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE;AAC1G,IAAIQ,oBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,IAAI,EAAEF,oBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAGN,aAAW,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC,IAAI,CAACO,YAAU,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;AAC1N,IAAIE,qBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAKR,iBAAe,CAAC,MAAM,EAAEF,eAAa,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACzG,IAAIW,mBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK;AACvD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9I,EAAE,OAAO,KAAK;AACd,CAAC;AACD,IAAIC,mBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,KAAK;AAC3E,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AACrF,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAGL,oBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC;AACvF,EAAE,IAAI,YAAY,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAClG,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAIZ,kBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG;AACvI,IAAI,OAAOkB,cAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACpC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AACnB,IAAI,OAAOC,cAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACvC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACb,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AACvG,EAAE,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,IAAI,GAAG,GAAGL,oBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;AAC7E,IAAI,IAAI,CAAC,EAAE;AACX,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE;AAC1H,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAGI,cAAY,GAAG,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACvI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAKC,cAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACxH;AACA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AAC5I,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,EAAEN,YAAU,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AACxI,SAAS,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAEP,aAAW,CAAC,iBAAiB,CAAC;AAClF,SAASO,YAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAEA,YAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAEA,YAAU,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;AACrJ;AACA,EAAE,OAAO,CAAC,IAAIE,qBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,IAAIjB,WAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM;AAC1H,CAAC;AACD,IAAIwB,eAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAIhB,aAAW,CAAC,SAAS,GAAG,GAAG,CAAC;AACzF,IAAI,WAAW,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,GAAGA,aAAW,CAAC,4CAA4C,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACpI,IAAIY,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,MAAMI,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,yBAAyB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChJ,IAAIC,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGjB,aAAW,CAAC,mDAAmD,CAAC,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACpM,IAAIa,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,MAAMG,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;AAC3K,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,MAAMA,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,uBAAuB,CAAC,EAAE,MAAM,CAAC;;AA8O5G;AACA,IAAI,WAAW,GAAG,WAAW;AAC7B,IAAI,kBAAkB,GAAG,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC;AACjD,IAAI,UAAU,GAAG,QAAQ;AACzB,IAAI,SAAS,GAAG,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC;AACxC,IAAI,qBAAqB,GAAG,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC;AACvD,IAAI,kBAAkB,GAAG;AACzB,EAAE,SAAS;AACX,EAAE,qBAAqB;AACvB,EAAE,SAAS;AACX,EAAE,cAAc;AAChB,EAAE;AACF,CAAC;AACD,IAAI,cAAc,GAAG,CAAC,sBAAsB,CAAC;AAC7C,IAAI,SAAS,GAAG;AAChB,SAAS,EAAE,SAAS,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE,UAAU,CAAC;AAC1B,cAAc,EAAE,UAAU,CAAC;AAC3B;AACA;AACA,eAAe,EAAE,UAAU,CAAC;AAC5B,mBAAmB,EAAE,UAAU,CAAC;AAChC,gBAAgB,EAAE,UAAU,CAAC;AAC7B,oBAAoB,EAAE,UAAU,CAAC;AACjC,oBAAoB,EAAE,UAAU,CAAC;AACjC;;AAEA,SAAS,EAAE,qBAAqB,CAAC;AACjC;AACA;;AAEA,SAAS,EAAE,qBAAqB,CAAC;AACjC;AACA;;AAEA,GAAG,EAAE,SAAS,CAAC;AACf;AACA;;AAEA,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC;AAC3C,mBAAmB,EAAE,UAAU,CAAC;AAChC;;AAEA,GAAG,EAAE,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;AACtC,eAAe,EAAE,UAAU,CAAC;AAC5B,0BAA0B,EAAE,UAAU,CAAC;AACvC;;AAEA;AACA,YAAY,EAAE,SAAS,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,cAAc,EAAE,SAAS,CAAC;AACrE;AACA;AACA;AACA,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;AAClD,SAAS,iBAAiB,CAAC,MAAM,EAAE,IAAI,GAAG,QAAQ,EAAE;AACpD,EAAE,OAAOS,CAAS,CAAC,MAAM;AACzB,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM;AACvC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;AAC9B,IAAI,MAAM,mBAAmB,GAAG,uBAAuB;AACvD,MAAM,OAAO;AACb,MAAM,OAAO,CAAC,QAAQ,CAAC;AACvB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;AAC7C,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW;AAClC,IAAI,sBAAsB,CAAC,mBAAmB,EAAE,WAAW,EAAE,OAAO,CAAC;AACrE,IAAI,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC;AAC3C,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM;AAC/B,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;AACnC,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,WAAW;AACtB,GAAG,CAAC;AACJ;AACA,SAAS,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE;AACtD,EAAE,MAAM,mBAAmB,mBAAmB,IAAI,GAAG,EAAE;AACvD,EAAE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AACtC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC5B,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC9E,MAAM,MAAM,mBAAmB,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/E,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,CAAC;AAC7D,MAAM,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,mBAAmB,CAAC;AAC7D;AACA;AACA,EAAE,OAAO,mBAAmB;AAC5B;AACA,SAAS,sBAAsB,CAAC,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE;AAC3E,EAAE,KAAK,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,mBAAmB,EAAE;AACtE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC5B,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC/C,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC3G,IAAI,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,mBAAmB,CAAC;AAC1D,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,IAAI,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO;AAC7C,IAAI,SAAS,CAAC,KAAK,GAAG,aAAa;AACnC,IAAI,aAAa,CAAC,eAAe,CAAC,mBAAmB,CAAC;AACtD,IAAI,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC;AACvD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM;AACvB,MAAM,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC;AAC7C,MAAM,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;AAC9B,KAAK,CAAC;AACN;AACA;AACA,SAAS,oBAAoB,CAAC,WAAW,EAAE,IAAI,GAAG,QAAQ,EAAE;AAC5D,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;AAC3C,EAAE,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC;AAC7C,EAAE,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;AACjD,EAAE,WAAW,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC;AACvD;AACA,SAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;AACtC,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE,OAAO,IAAI;AACrC,EAAE,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,eAAe,CAAC,MAAM,CAAC;AAC7D;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK;AAC1B,EAAE,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AACjH,IAAI,qBAAqB,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;AACpD;AACA;AACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,EAAE,OAAO,OAAO,CAAC,OAAO,KAAK,IAAI;AACjC;;AAEA;AACA,IAAI,kBAAkB,mBAAmB,IAAI,GAAG,EAAE;AAClD,IAAI,YAAY,EAAE,EAAE,EAAEJ,OAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,SAAS,EAAE,eAAe;AACtF,IAAI,SAAS,GAAG,MAAM,SAAS,UAAU,EAAE,GAAG,MAAM,EAAE,YAAY,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE;AACrF,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAChC,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3B,IAAIJ,cAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC;AAC3C,IAAIA,cAAY,CAAC,IAAI,EAAE,QAAQ,EAAEP,mBAAiB,CAACW,OAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAEX,mBAAiB,CAACW,OAAK,EAAE,EAAE,EAAE,IAAI,CAAC;AACvG,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,OAAO,EAAE,EAAE;AACjB,MAAM,OAAO,EAAE;AACf,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC;AACpF,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;AAC9E;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE;AACpE,MAAM,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC5C,QAAQ,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3C,QAAQ,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;AAC/C,UAAU,YAAY,CAAC,OAAO,EAAE;AAChC,UAAU,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC;AACxC;AACA;AACA;AACA;AACA,CAAC;AACDA,OAAK,GAAGhB,kBAAgB,CAAC,EAAE,CAAC;AAC5B,QAAQ,GAAG,IAAI,OAAO,EAAE;AACxB,mBAAmB,GAAG,IAAI,OAAO,EAAE;AACnC,SAAS,GAAG,WAAW;AACvB,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG;AACnB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI;AAC1C,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO;AACnC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa;AACpD,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;AACnB,IAAI,KAAK,CAAC,OAAO,GAAG,EAAE;AACtB,IAAI,KAAK,CAAC,OAAO,GAAG,EAAE;AACtB,IAAI;AACJ;AACA,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM;AACtC,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE;AACrF,IAAI;AACJ;AACA,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK;AAC3B,EAAE,MAAM,eAAe,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,GAAG,GAAG,OAAO;AACtE,EAAE,MAAM,cAAc,GAAG,iBAAiB,CAAC,eAAe,CAAC;AAC3D,EAAE,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,CAAC;AAC1D,EAAE,MAAM,UAAU,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;AAC3D,EAAE,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE;AAC1C,IAAI,cAAc,EAAE,UAAU,GAAG,qBAAqB,GAAG,IAAI;AAC7D,IAAI,gBAAgB,EAAE,CAAC;AACvB,GAAG,CAAC;AACJ,EAAE,MAAM,UAAU,GAAG;AACrB,IAAI,CAAC,EAAE,qBAAqB,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;AAC3D,IAAI,CAAC,EAAE,qBAAqB,CAAC,MAAM,GAAG,cAAc,CAAC;AACrD,GAAG;AACH,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK;AAC1C,EAAE,IAAI,UAAU,EAAE;AAClB,IAAI,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC;AAChC,IAAI,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,uBAAuB;AAC7B,EAAE,IAAI,wBAAwB;AAC9B,EAAE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC;AAC5C,EAAE,MAAM;AACR,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,iBAAiB;AACrB,IAAI,eAAe;AACnB,IAAI,kBAAkB;AACtB,IAAI,gBAAgB;AACpB,IAAI,sBAAsB;AAC1B,IAAI,oBAAoB;AACxB,IAAI,qBAAqB;AACzB,IAAI;AACJ,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC;AAChC,EAAE,MAAM,KAAK,GAAG,QAAQ,KAAK,OAAO;AACpC,EAAE,MAAM,UAAU,GAAG,SAAS,KAAK,aAAa;AAChD,EAAE,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,sBAAsB,CAAC,GAAG,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC;AACpK,EAAE,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,qBAAqB,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC;AACjK,EAAE,MAAM,WAAW,GAAG,QAAQ,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG,IAAI;AACzH,EAAE,MAAM,mBAAmB,GAAGoB,CAAS;AACvC,IAAI,MAAM,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc;AAC9D,GAAG;AACH,EAAE,IAAI,SAAS,KAAK,MAAM,EAAE;AAC5B,IAAI,MAAM,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC;AACrD,IAAI,IAAI,eAAe,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC/C,MAAM,OAAO,CAAC,SAAS,GAAG,eAAe;AACzC;AACA;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAChC,IAAI,MAAM,OAAO,GAAGA,CAAS,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC;AACrD,IAAI,OAAO,CAAC,eAAe,GAAG;AAC9B,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,KAAK,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC;AACxG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,KAAK,MAAM,GAAG,cAAc,CAAC,MAAM;AACvG,KAAK;AACL;AACA,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO;AACrC,EAAE,MAAM,WAAW,GAAG,GAAG,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;AACpE,EAAE,MAAM,YAAY,GAAG,IAAI,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;AACtE,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC5B,IAAI,OAAO,CAAC,WAAW,GAAG;AAC1B,MAAM,CAAC,EAAE,YAAY;AACrB,MAAM,CAAC,EAAE;AACT,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE;AAClD,MAAM,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB;AACtD,MAAM,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,eAAe;AAChD,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,KAAK,IAAI,GAAG;AAC7D,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,GAAG;AAC/D;AACA;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAC3B,IAAI,OAAO,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1C;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC/B,IAAI,OAAO,CAAC,cAAc,GAAG,cAAc;AAC3C;AACA,EAAE,MAAM,gBAAgB,GAAG;AAC3B,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,YAAY;AAC3C,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG;AAC/B,GAAG;AACH,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,KAAK,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,GAAG,cAAc,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC;AACzH,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,MAAM,IAAI,eAAe,CAAC;AAC3H,GAAG;AACH,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK;AACnE,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC;AAC9D,GAAG;AACH,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;AACxB,IAAI,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC;AACrB,GAAG;AACH,EAAE,eAAe,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC;AACjD,EAAE,MAAM,SAAS,GAAGA,CAAS,CAAC,MAAM,aAAa,CAAC,SAAS,CAAC;AAC5D,EAAE,MAAM,gBAAgB,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACnF,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;AACrE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;AACrE,EAAE,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC;AAC7C,EAAE,MAAM,gBAAgB,GAAG,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC,sBAAsB,CAAC,GAAG,EAAE;AAClF,EAAE,MAAM,CAAC,GAAG;AACZ,IAAI;AACJ,MAAM,KAAK,EAAE,KAAK,GAAG,WAAW;AAChC,MAAM,MAAM,EAAE,MAAM,GAAG,YAAY;AACnC,MAAM,GAAG,EAAE,SAAS,CAAC,GAAG;AACxB,MAAM,IAAI,EAAE,SAAS,CAAC,IAAI;AAC1B,MAAM,SAAS,EAAE,eAAe;AAChC,MAAM,UAAU,EAAE,gBAAgB;AAClC,MAAM,KAAK,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAChE,MAAM,kBAAkB,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAClF,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,OAAO,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC;AAC1D,IAAI,IAAI,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE;AACxD,MAAM,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW;AAChH,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAC/B;AACA;AACA,EAAE,IAAI,eAAe,CAAC,eAAe,CAAC,EAAE;AACxC,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAClD,MAAM,eAAe,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;AACvD;AACA,IAAI,WAAW,CAAC,eAAe,CAAC;AAChC,IAAI,eAAe,CAAC,gBAAgB,CAAC,cAAc,EAAE,mBAAmB,CAAC;AACzE;AACA,EAAE,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM;AAClD,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,IAAI,MAAM,gBAAgB,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE;AAC3D,MAAM,cAAc;AACpB,MAAM,gBAAgB,EAAE;AACxB,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG,eAAe,IAAI,IAAI,GAAG,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7E,IAAI,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACpE,IAAI,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACtE,IAAI,MAAM,CAAC,GAAG;AACd,MAAM;AACN,QAAQ,KAAK,EAAE,gBAAgB,CAAC,KAAK,GAAG,WAAW;AACnD,QAAQ,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAAG,YAAY;AACtD,QAAQ,GAAG,EAAE,GAAG,GAAG,EAAE;AACrB,QAAQ,IAAI,EAAE,IAAI,GAAG;AACrB,OAAO;AACP,MAAM;AACN,KAAK;AACL,IAAI,uBAAuB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC,WAAW,EAAE;AACpF,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;AACxD,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7C,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5D,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE;AACnD,QAAQ,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC;AACvD,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;AAC7D;AACA;AACA,IAAI,aAAa,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,eAAe,CAAC;AAC3D,GAAG,CAAC;AACJ,EAAE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,eAAe,CAAC;AACxD,EAAEA,CAAS,CAAC,MAAM,aAAa,CAAC,KAAK,GAAG,YAAY,CAAC;AACrD,EAAE,MAAM,cAAc,GAAG,SAAS,CAAC,eAAe,CAAC;AACnD,EAAE,MAAM,kBAAkB,GAAG,CAAC,KAAK,KAAK;AACxC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;AACxC,GAAG;AACH,EAAE,IAAI,mBAAmB,EAAE;AAC3B,IAAI,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AACjE;AACA,EAAE,IAAIA,CAAS,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE;AACjD,IAAI,qBAAqB,CAAC,MAAM,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;AAC3D;AACA,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;AACvC,IAAI,uBAAuB,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,KAAK;AAClE,MAAM,IAAI,oBAAoB,GAAG,KAAK;AACtC,MAAM,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACxC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE;AACzC,UAAU,oBAAoB,GAAG,IAAI;AACrC,UAAU;AACV;AACA,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;AAC5C,UAAU;AACV;AACA,QAAQ,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa;AACpD,QAAQ,IAAI,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC7F,UAAU;AACV;AACA,QAAQ,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC;AAClE,QAAQ,IAAI,aAAa,KAAK,OAAO,EAAE;AACvC,UAAU,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE;AACpE,YAAY,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK;AACzC,YAAY,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AAC7D,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;AACxD,gBAAgB,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;AACrD;AACA;AACA,YAAY,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACnD,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC9E,gBAAgB;AAChB;AACA,cAAc,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACzD,cAAc,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;AACvD;AACA;AACA,SAAS,MAAM,IAAI,cAAc,KAAK,IAAI,EAAE;AAC5C,UAAU,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC;AACjE,SAAS,MAAM;AACf,UAAU,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC;AACpD;AACA;AACA,MAAM,IAAI,oBAAoB,IAAI,KAAK,EAAE;AACzC,QAAQ,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;AACjD;AACA,KAAK,CAAC;AACN,IAAI,uBAAuB,CAAC,OAAO,CAAC,OAAO,EAAE;AAC7C,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,SAAS,EAAE;AACjB,KAAK,CAAC;AACN,IAAI,wBAAwB,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,KAAK;AACjE,MAAM,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACnC,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AACzD,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,kBAAkB,KAAK,WAAW,EAAE;AACpF,YAAY,OAAO,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC;AAClE,YAAY,WAAW,CAAC,eAAe,CAAC;AACxC,YAAY;AACZ;AACA,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,sBAAsB,KAAK,OAAO,EAAE;AAC5F,YAAY,WAAW,CAAC,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC;AACrE,YAAY,WAAW,CAAC,eAAe,CAAC;AACxC,YAAY;AACZ;AACA;AACA;AACA,KAAK,CAAC;AACN,IAAI,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;AACjE,MAAM,SAAS,EAAE,IAAI;AACrB,MAAM,OAAO,EAAE;AACf,KAAK,CAAC;AACN;AACA,EAAE,MAAM,aAAa,GAAGK,CAAM,CAAC,MAAM;AACrC,IAAI,IAAI,GAAG;AACX,IAAI,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa;AACpE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;AACpE,MAAM;AACN;AACA,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxF,MAAM,MAAM,UAAU,GAAG;AACzB,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;AACrE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,iBAAiB,CAAC;AACpE,OAAO;AACP,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS;AACvD,MAAM,MAAM,SAAS,GAAGL,CAAS,CAAC,MAAM,aAAa,CAAC,SAAS,CAAC;AAChE,MAAM,MAAM,YAAY,GAAGA,CAAS,CAAC,MAAM;AAC3C,QAAQ,IAAI,GAAG;AACf,QAAQ,OAAO,CAAC,GAAG,GAAG,aAAa,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO;AACzE,OAAO,CAAC;AACR,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,GAAG,qCAAqC,GAAG,YAAY;AAC5G,MAAM,MAAM,CAAC,GAAG;AAChB,QAAQ;AACR,UAAU,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;AACvE,UAAU,SAAS,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI;AAC3D,SAAS;AACT,QAAQ;AACR,OAAO;AACP,MAAM,uBAAuB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC,WAAW,EAAE;AACtF,MAAM,IAAI,YAAY,IAAI,YAAY,KAAK,YAAY,IAAI,iBAAiB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACnG,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,iBAAiB,CAAC;AACjE,QAAQ,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI;AAC5C,UAAU,YAAY,CAAC;AACvB,SAAS,CAAC,SAAS;AACnB;AACA,UAAU,MAAM,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM;AAC1C,UAAU,MAAM,CAAC,CAAC,GAAG,cAAc,CAAC;AACpC,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,aAAa,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,eAAe,CAAC;AAC/D;AACA,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,UAAU;AAC1C;AACA,GAAG,CAAC;AACJ,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE;AAC3E,EAAE,MAAM,YAAY,GAAG,MAAM;AAC7B,IAAI,IAAI,GAAG;AACX,IAAI,IAAI,CAAC,mBAAmB,IAAI,EAAE,IAAI,IAAI,EAAE;AAC5C,MAAM;AACN;AACA,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACzD,IAAI,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,SAAS,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,KAAK,IAAI,GAAG,GAAG,GAAG,SAAS,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO;AACzI,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;AACjC,MAAM,QAAQ,CAAC,KAAK,EAAE;AACtB;AACA,GAAG;AACH,EAAE,IAAI,iBAAiB;AACvB,EAAE,OAAO,GAAG,MAAM;AAClB,IAAI,uBAAuB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC,UAAU,EAAE;AACnF,IAAI,wBAAwB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,wBAAwB,CAAC,UAAU,EAAE;AACrF,IAAI,cAAc,CAAC,UAAU,EAAE;AAC/B,IAAI,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AACpE,IAAI,IAAI,eAAe,CAAC,eAAe,CAAC,EAAE;AAC1C,MAAM,eAAe,CAAC,mBAAmB;AACzC,QAAQ,cAAc;AACtB,QAAQ;AACR,OAAO;AACP,MAAM,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC;AAChD;AACA,IAAI,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC;AAC9C,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM;AAC1B,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI;AACjD,IAAI,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,CAAC,aAAa,KAAK,eAAe,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC,WAAW,EAAE;AAC9H,MAAM,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC;AAC9C;AACA,IAAI,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE;AACvD,IAAI,aAAa,EAAE;AACnB,IAAI,iBAAiB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,iBAAiB,EAAE;AAC5D,GAAG;AACH,EAAE,iBAAiB,GAAGK,CAAM,CAAC,MAAM;AACnC,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE;AACtC,MAAM,cAAc,CAAC,MAAM,iBAAiB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,iBAAiB,EAAE,CAAC;AACpF,MAAM,MAAM,UAAU,GAAG,OAAO;AAChC,MAAM,OAAO,GAAG,KAAK,CAAC;AACtB,MAAM,MAAM,CAAC,MAAM,GAAG,UAAU;AAChC,MAAM,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS;AAC9C,MAAM,MAAM,KAAK,GAAG,UAAU,IAAI,IAAI;AACtC,MAAM,IAAI,CAAC,UAAU,IAAI,OAAO,KAAK,eAAe,EAAE;AACtD,QAAQ,UAAU,GAAG;AACrB,UAAU,CAAC,EAAE,CAAC;AACd,UAAU,CAAC,EAAE;AACb,SAAS;AACT;AACA,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,EAAE;AAClD,QAAQ;AACR;AACA,MAAM,MAAM,aAAa,GAAG,MAAM;AAClC,QAAQ,IAAI,GAAG,EAAE,GAAG;AACpB,QAAQ;AACR,UAAU,WAAW,CAAC,eAAe,CAAC;AACtC,UAAU,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,gBAAgB;AACvD,YAAY,eAAe;AAC3B,YAAY,CAAC,QAAQ,KAAK,WAAW,IAAI;AACzC,WAAW,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE;AAC/B,UAAU,SAAS,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE;AACxD,UAAU,MAAM,MAAM,GAAG,WAAW,IAAI,IAAI,GAAG,WAAW,GAAG,OAAO;AACpE,UAAU,MAAM,QAAQ,GAAG;AAC3B,YAAY,cAAc,EAAE,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK;AAC/E,WAAW;AACX,UAAU,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC;AACrE,UAAU,MAAM,gBAAgB,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG,GAAG,GAAG,UAAU;AAClI,UAAU,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC1D,UAAU,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;AAC1E,UAAU,MAAM,cAAc,GAAG;AACjC,YAAY,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC5C,YAAY,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC;AAC3C,WAAW;AACX,UAAU,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG;AAC9G,YAAY,SAAS,EAAE;AACvB,cAAc,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;AAC5C,cAAc,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE;AACzC,aAAa;AACb,YAAY,SAAS,EAAE;AACvB,cAAc,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;AAC5C,cAAc,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE;AACzC;AACA,WAAW,GAAG,EAAE;AAChB,UAAU,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG;AAC3G,YAAY,QAAQ,EAAE;AACtB,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;AAC3C,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE;AACxC,aAAa;AACb,YAAY,QAAQ,EAAE;AACtB,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;AAC3C,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE;AACxC;AACA,WAAW,GAAG,EAAE;AAChB,UAAU,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,CAAC;AAChD,UAAU,eAAe,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC;AAC9D,UAAU,uBAAuB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC,WAAW,EAAE;AAC1F,UAAU,gBAAgB,CAAC;AAC3B,YAAY,OAAO,EAAE,eAAe;AACpC,YAAY,SAAS,EAAE3B,eAAa,CAACD,gBAAc,CAACA,gBAAc,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,cAAc,CAAC,EAAE;AAC1G,cAAc,SAAS,EAAE;AACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,gBAAgB,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI;AAC9D;AACA,aAAa,CAAC;AACd,YAAY,OAAO,EAAE;AACrB,cAAc,QAAQ,EAAE,KAAK,IAAI,eAAe,KAAK,OAAO,GAAG,GAAG,GAAG,CAAC;AACtE,cAAc,MAAM,EAAE;AACtB;AACA,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM;AACxB,YAAY,eAAe,CAAC,eAAe,CAAC,kBAAkB,CAAC;AAC/D,YAAY,SAAS,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE;AAC3D,YAAY,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,EAAE;AACtD,YAAY,qBAAqB,CAAC,YAAY,CAAC;AAC/C,WAAW,CAAC;AACZ;AACA,OAAO;AACP,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AACpD;AACA,GAAG,CAAC;AACJ,EAAE,OAAO,MAAM,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,EAAE;AACnD,CAAC;AACD,eAAe,GAAG,WAAW;AAC7B,EAAE,IAAI,GAAG,EAAE,GAAG;AACd,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAC/D,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE;AAC3B,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,GAAG,GAAG,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;AAC7G,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,GAAG,GAAG,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;AAC7G,IAAI,MAAM,SAAS,mBAAmB,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAC/E,IAAI,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACjC,MAAM,IAAI,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;AACpD,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACrD,QAAQ,KAAK,CAAC,WAAW,GAAG,SAAS;AACrC,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,QAAQ,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,KAAK;AACnE,UAAU,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACvC,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;AAC5C,cAAc,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AACjE,cAAc,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3E,gBAAgB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACvC;AACA;AACA;AACA,SAAS,CAAC;AACV,QAAQ,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC/D,QAAQ,YAAY,GAAG;AACvB,UAAU,OAAO,EAAE,MAAM;AACzB,YAAY,gBAAgB,CAAC,UAAU,EAAE;AACzC,YAAY,KAAK,CAAC,MAAM,EAAE;AAC1B,WAAW;AACX,UAAU,SAAS,kBAAkB,IAAI,GAAG;AAC5C,SAAS;AACT,QAAQ,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC;AACjD;AACA,MAAM,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC;AACA;AACA,CAAC;AACDS,mBAAiB,CAACU,OAAK,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC;AACzEZ,qBAAmB,CAACY,OAAK,EAAE,SAAS,CAAC;AACrC,SAAS,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAE7C,IAAI,MAAM,GAAG,IAAI;AACjB,IAAI,QAAQ,GAAG,KAAK;AACpB,IAAI,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG;AAC1C,EAAE,IAAI,KAAK,GAAG,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC;AACtG,IAAI,UAAU,GAAG,MAAM;AACvB,EAAE,WAAW,GAAG;AAChB,IAAIJ,cAAY,CAAC,IAAI,EAAE,GAAG,EAAEP,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AAC5G,IAAIO,cAAY,CAAC,IAAI,EAAE,GAAG,EAAEP,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AAC7G;AACA,EAAE,QAAQ,CAAC,SAAS,EAAE;AACtB,IAAI,IAAI,SAAS,KAAK,eAAe,CAAC,IAAI,EAAE;AAC5C,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;AAC3B,MAAM,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,MAAM;AACjG;AACA,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM;AACrC;AACA,EAAE,MAAM,CAAC,SAAS,EAAE;AACpB,IAAI,IAAI,SAAS,KAAK,eAAe,CAAC,IAAI,EAAE;AAC5C,MAAM;AACN;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,QAAQ;AAC9B;AACA,CAAC;AACD,MAAM,GAAGL,kBAAgB,CAAC,IAAI,CAAC;AAC/B,GAAG,GAAG,IAAI,OAAO,EAAE;AACnB,GAAG,GAAG,IAAI,OAAO,EAAE;AACnBM,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC;AACxDA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC;AACxDF,qBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC;;AAEvC;AACA,IAAI,UAAU,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC;AACnE,IAAI,YAAY,GAAG,MAAM;AACzB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,EAAE;AAC7B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,EAAE;AAC7B;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;AACjD;AACA,CAAC;AACD,IAAI,mBAAmB,GAAG,cAAc,MAAM,CAAC;AAC/C,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB,IAAI,MAAM,YAAY,GAAGU,CAAM,CAAC,IAAI,YAAY,EAAE,CAAC;AACnD,IAAI,IAAI,aAAa,GAAG,IAAI;AAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY;AAC9B,IAAIW,CAAM,CAAC,MAAM;AACjB,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa;AAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC/B,QAAQ,aAAa,GAAG,IAAI;AAC5B,QAAQ,YAAY,CAAC,KAAK,GAAG,IAAI,YAAY,EAAE;AAC/C,QAAQ;AACR;AACA,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ;AACtD,MAAM,IAAI,aAAa,EAAE;AACzB,QAAQ,MAAM,UAAU,GAAG;AAC3B,UAAU,CAAC,EAAEkB,cAAY,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AACnD,UAAU,CAAC,EAAEA,cAAY,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE;AAC1C,QAAQtB,CAAK,CAAC,MAAM;AACpB,UAAU,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACnC,YAAY,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAChD,cAAc,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;AAClD,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9C;AACA;AACA;AACA,UAAU,YAAY,CAAC,KAAK,GAAG,MAAM;AACrC,SAAS,CAAC;AACV;AACA,MAAM,aAAa,GAAG,KAAK;AAC3B,KAAK,CAAC;AACN;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAC7B;AACA,CAAC;AACD,SAASsB,cAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5B,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB;;AAEA;AACA,IAAI,kBAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO;AACnE,IAAI,QAAQ,GAAG,eAAe,GAAG,GAAG,UAAU,EAAE,kBAAkB,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE;AACtF,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB,IAAI/B,cAAY,CAAC,IAAI,EAAE,cAAc,EAAEP,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACtH,IAAIO,cAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7B,IAAIA,cAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM;AACtC,MAAM,IAAI,CAACL,cAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACtC,QAAQ;AACR;AACA,MAAM,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAGA,cAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACvD,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;AACzC,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAC1C,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,KAAK;AAC/B,MAAM,IAAI,GAAG;AACb,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAQ,OAAO,KAAK;AACpB;AACA,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACnD,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAQC,cAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACzC,QAAQ,OAAO,KAAK;AACpB;AACA,MAAM,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AACrD,MAAM,MAAM,eAAe,GAAG,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,OAAO;AAC1E,MAAM,IAAI,eAAe,EAAE;AAC3B,QAAQ,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,EAAE;AACrD,QAAQ,MAAM,MAAM,GAAG,EAAE,GAAG;AAC5B,UAAU,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,UAAU,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;AACjC,SAAS,GAAG,KAAK,CAAC;AAClB,QAAQ,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO;AAC/E,QAAQ,IAAI,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE;AACrE,UAAU,OAAO,KAAK;AACtB;AACA,QAAQ,KAAK,MAAM,iBAAiB,IAAI,QAAQ,EAAE;AAClD,UAAU,MAAM,gBAAgB,GAAG,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;AACnE,UAAU,IAAI,gBAAgB,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE;AACxD,YAAY,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,kBAAkB;AAC3D,cAAc,iBAAiB;AAC/B,cAAc,eAAe;AAC7B,cAAc;AACd,aAAa;AACb,YAAY,IAAI,YAAY,EAAE;AAC9B,cAAc,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvC,gBAAgB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AAClE,kBAAkB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,kBAAkB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC;AACA;AACA;AACA,YAAY,IAAI,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE;AAC5C,cAAc,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,SAAS;AAC1D,cAAc,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAC9C,cAAc,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7C,cAAc,IAAI,YAAY,IAAI,WAAW,EAAE;AAC/C,gBAAgB,MAAM,gBAAgB,GAAG,CAAC,GAAG,GAAGD,cAAY,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE;AACpG,gBAAgB,IAAI,IAAI,CAAC,aAAa,IAAI,gBAAgB,EAAE;AAC5D,kBAAkB,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,CAAC,IAAI,CAAC,WAAW;AACxH,kBAAkB,IAAI,oBAAoB,EAAE;AAC5C;AACA,gBAAgBC,cAAY,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1C,kBAAkB,OAAO,EAAE,iBAAiB;AAC5C,kBAAkB,EAAE,EAAE;AACtB,oBAAoB,CAAC,EAAE,YAAY;AACnC,oBAAoB,CAAC,EAAE;AACvB;AACA,iBAAiB,CAAC;AAClB,gBAAgB,SAAS,CAAC,QAAQ,CAACD,cAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/D,gBAAgB,OAAO,IAAI;AAC3B;AACA;AACA;AACA;AACA;AACA,MAAMC,cAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACvC,MAAM,OAAO,KAAK;AAClB,KAAK;AACL,IAAI,IAAI,wBAAwB,GAAG,IAAI;AACvC,IAAI,IAAI,0BAA0B,GAAG,IAAI;AACzC,IAAI,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM;AAC5C,MAAM,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa;AACxD,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAQ,OAAO,IAAI;AACnB;AACA,MAAM,MAAM,OAAO,GAAG,mBAAmB;AACzC,QAAQ,WAAW,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7D,QAAQ,QAAQ,CAAC;AACjB,OAAO;AACP,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,wBAAwB,GAAG,OAAO;AAC1C;AACA,MAAM,OAAO,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,wBAAwB;AACjE,KAAK,CAAC;AACN,IAAI,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM;AAC9C,MAAM,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK;AAC5C,MAAM,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC;AACtD,MAAM,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,eAAe,EAAE;AACnD,QAAQ,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa;AAChD,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO;AACtE,QAAQ,IAAI,aAAa,EAAE;AAC3B,UAAU,MAAM,QAAQ,GAAG,sBAAsB,CAAC,aAAa,EAAE;AACjE,YAAY,cAAc,EAAE;AAC5B,WAAW,CAAC;AACZ,UAAU,0BAA0B,GAAG,QAAQ;AAC/C,UAAU,OAAO,QAAQ;AACzB;AACA;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE;AACzD,UAAU,cAAc,EAAE;AAC1B,SAAS,CAAC;AACV,QAAQ,IAAI,IAAI,CAAC,aAAa,IAAI,0BAA0B,IAAI,QAAQ,CAAC,IAAI,IAAI,0BAA0B,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,EAAE;AACjK,UAAU,OAAO,0BAA0B;AAC3C;AACA,QAAQ,0BAA0B,GAAG,QAAQ;AAC7C,QAAQ,OAAO,QAAQ;AACvB;AACA,MAAM,0BAA0B,GAAG,IAAI;AACvC,MAAM,OAAO,IAAI;AACjB,KAAK,EAAE,SAAS,CAAC;AACjB,IAAI,IAAI,CAAC,qBAAqB,GAAG,MAAM;AACvC,MAAM,OAAO,kBAAkB,CAAC,KAAK;AACrC,KAAK;AACL,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC;AAC/D,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAK,KAAK;AAC3E,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;AAC1H,QAAQ;AACR;AACA,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE;AACzC,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B;AACA,KAAK,CAAC;AACN;AACA,CAAC;AACD,MAAM,GAAGR,kBAAgB,CAAC,GAAG,CAAC;AAC9B,cAAc,GAAG,IAAI,OAAO,EAAE;AAC9B,KAAK,GAAG,IAAI,OAAO,EAAE;AACrB,OAAO,GAAG,IAAI,OAAO,EAAE;AACvBM,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,CAAC;AAC3FF,qBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC;AACrC,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AACjB,IAAI,OAAO,eAAe,CAAC,OAAO;AAClC;AACA,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AACjB,IAAI,OAAO,eAAe,CAAC,OAAO;AAClC;AACA,EAAE,OAAO,eAAe,CAAC,IAAI;AAC7B;;AAEA;AACA,IAAI,SAAS,GAAG,MAAM;AACtB,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,UAAU;AAC/B,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK;AACxB,IAAI,IAAI,CAAC,KAAK,mBAAmB,IAAI,GAAG,EAAE;AAC1C,IAAI,IAAI,CAAC,SAAS,mBAAmB,IAAI,GAAG,EAAE;AAC9C,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM;AACvB,MAAM,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;AACvC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK;AAC1B,MAAM,IAAI,CAAC,KAAK,mBAAmB,IAAI,GAAG,EAAE;AAC5C,MAAM,IAAI,CAAC,SAAS,mBAAmB,IAAI,GAAG,EAAE;AAChD,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAChC,QAAQ,IAAI,EAAE;AACd;AACA,MAAM,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;AACvC,QAAQ,OAAO,EAAE;AACjB;AACA,KAAK;AACL;AACA,EAAE,QAAQ,CAAC,IAAI,EAAE;AACjB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI;AACzB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC;AACA,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChE;AACA,CAAC;AACD,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC,CAAC,QAAQ,KAAK;AAC7C,EAAE,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE;AACnD,IAAI,qBAAqB,CAAC,QAAQ,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,QAAQ,EAAE;AACd;AACA,CAAC,CAAC;;AAEF;AACA,IAAI,mBAAmB,GAAG,EAAE;AAC5B,IAAI,YAAY,GAAG,cAAc,MAAM,CAAC;AACxC,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE;AACjC,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3D,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;AACvE;AACA,IAAI,IAAI,CAAC,OAAO,GAAGqB,CAAM,CAAC,MAAM;AAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAQ;AACR;AACA,MAAM,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa;AAC3D,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC3B,QAAQ,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE;AAC5C,QAAQ,IAAI,UAAU,EAAE;AACxB,UAAU,QAAQ,CAAC,aAAa,GAAG,IAAI;AACvC,UAAU,MAAM,QAAQ,GAAG,WAAW;AACtC,YAAY,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;AACtD,YAAY;AACZ,WAAW;AACX,UAAU,OAAO,MAAM;AACvB,YAAY,aAAa,CAAC,QAAQ,CAAC;AACnC,WAAW;AACX,SAAS,MAAM;AACf,UAAU,QAAQ,CAAC,aAAa,GAAG,KAAK;AACxC;AACA;AACA,KAAK,CAAC;AACN;AACA,CAAC;AAiED,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,aAAa,EAAE;AACjB,IAAI,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7B,IAAI,MAAM,EAAE,CAAC,QAAQ,CAAC;AACtB,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;AAClC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC;AACnB,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC;AACvB,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC;AACvB,IAAI,KAAK,EAAE,CAAC,YAAY;AACxB,GAAG;AACH,EAAE,cAAc,CAAC,IAAI,EAAE;AACvB,IAAI,IAAI,GAAG;AACX,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;AAClC,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO;AACvE,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,MAAM;AAClC;AACA,CAAC,CAAC;AACF,IAAI,iBAAiB;AACrB,IAAI,eAAe,GAAG,MAAM,eAAe,SAAS,MAAM,CAAC;AAC3D,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAChC,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAIb,cAAY,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,CAAC;AAC7C,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE;AACpC,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,KAAK;AAC3D,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACnD,QAAQ;AACR;AACA,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACpC,QAAQ;AACR;AACA,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC3B,QAAQ;AACR;AACA,MAAM,MAAM;AACZ,QAAQ,aAAa,GAAG,QAAQ,CAAC,aAAa;AAC9C,QAAQ,cAAc,GAAG,QAAQ,CAAC;AAClC,OAAO,GAAG,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,EAAE;AACxC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACrD,QAAQ;AACR;AACA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;AACnD,QAAQ;AACR;AACA,MAAM,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACpE,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AAChD;AACA,KAAK;AACL;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AACvC,IAAI,MAAM,MAAM,GAAGa,CAAM,CAAC,MAAM;AAChC,MAAM,IAAI,GAAG;AACb,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO;AACzE,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;AAClC,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AACpC,UAAU,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AAC1D;AACA,OAAO;AACP,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC;AACpD,QAAQ,OAAO,MAAM;AACrB,UAAU,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC;AACzD,SAAS;AACT;AACA,KAAK,CAAC;AACN,IAAI,OAAO,MAAM;AACjB;AACA,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;AAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;AAC7E;AACA,IAAI,KAAK,CAAC,cAAc,EAAE;AAC1B,IAAI,KAAK,CAAC,wBAAwB,EAAE;AACpC,IAAI,sBAAsB,CAAC,OAAO,CAAC;AACnC,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC;AAChD,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAClD,MAAM,KAAK;AACX,MAAM,WAAW,EAAE;AACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;AAClB,OAAO;AACP,MAAM;AACN,KAAK,CAAC;AACN,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,EAAE;AACxD,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC;AAC/C,IAAI,MAAM,SAAS,GAAG;AACtB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;AAC1C,QAAQ;AACR,UAAU,IAAI,EAAE,SAAS;AACzB,UAAU,QAAQ,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;AAC3E,UAAU,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI;AAClC;AACA,OAAO;AACP,KAAK;AACL,IAAIlB,cAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAC5D;AACA,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AACzC,IAAI,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,EAAE;AACrF,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE;AAC3E,MAAM,KAAK,CAAC,cAAc,EAAE;AAC5B,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;AAC7D,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;AACrC,MAAM;AACN;AACA,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE;AAC5C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;AAClC,KAAK,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE;AACrD,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;AACpC;AACA,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE;AAC9C,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;AACpC,KAAK,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE;AACtD,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;AACrC;AACA;AACA,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,MAAM,KAAK;AACX,MAAM;AACN,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB;AACA,EAAE,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE;AAC/B,IAAI,IAAI,GAAG,EAAE,GAAG;AAChB,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAChD,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC;AACzC,IAAI,IAAI,EAAE,GAAG;AACb,MAAM,CAAC,EAAE,CAAC;AACV,MAAM,CAAC,EAAE;AACT,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM;AAC3G,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE;AACvC;AACA,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM;AACN;AACA,IAAI,QAAQ,SAAS;AACrB,MAAM,KAAK,IAAI;AACf,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE;AAC5C,QAAQ;AACR,MAAM,KAAK,MAAM;AACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE;AAC3C,QAAQ;AACR,MAAM,KAAK,MAAM;AACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5C,QAAQ;AACR,MAAM,KAAK,OAAO;AAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3C,QAAQ;AACR;AACA,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;AACtB,MAAM,KAAK,CAAC,cAAc,EAAE;AAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAChC,QAAQ,KAAK;AACb,QAAQ;AACR,OAAO,CAAC;AACR;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AACxE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,QAAQ,MAAM,KAAK,EAAE;AAC3E,MAAM,YAAY,CAAC,OAAO,EAAE;AAC5B,MAAMA,cAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAAM;AACvD,QAAQ,YAAY,CAAC,MAAM,EAAE;AAC7B,OAAO,CAAC;AACR;AACA;AACA,EAAE,OAAO,GAAG;AACZ,IAAIA,cAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;AACzE,IAAIC,cAAY,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,CAAC;AAC7C;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAC1B;AACA,CAAC;AACD,iBAAiB,GAAG,IAAI,OAAO,EAAE;AACjC,eAAe,CAAC,SAAS,GAAG,YAAY,CAAC,eAAe,CAAC;AACzD,eAAe,CAAC,QAAQ,GAAG,QAAQ;AAChC,IAAC,cAAc,GAAG;AACrB,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE;AACjC,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACnC;AACA,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE;AACvC,IAAI,IAAI,GAAG;AACX,IAAI,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK;AACzC,IAAI,IAAI,WAAW,KAAK,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACvJ,MAAM,OAAO,KAAK,CAAC;AACnB;AACA,IAAI,IAAI,WAAW,KAAK,OAAO,EAAE;AACjC,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACzC,OAAO;AACP;AACA,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AACxD,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACzC,OAAO;AACP;AACA,IAAI,OAAO;AACX,MAAM,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;AAC1C,MAAM,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC;AAC1B,KAAK;AACL;AACA,CAAC,CAAC;AACF,IAAI,QAAQ,EAAE,aAAa;AAC3B,IAAI,cAAc,GAAG,MAAM,cAAc,SAAS,MAAM,CAAC;AACzD,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAChC,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAII,cAAY,CAAC,IAAI,EAAE,QAAQ,kBAAkB,IAAI,GAAG,EAAE,CAAC;AAC3D,IAAIA,cAAY,CAAC,IAAI,EAAE,aAAa,CAAC;AACrC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE;AACpC,IAAI,IAAI,CAAC,MAAM,GAAG;AAClB,MAAM,KAAK,EAAE,KAAK,CAAC;AACnB,MAAM,WAAW,EAAE,KAAK;AACxB,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM;AAC5B,MAAM,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM;AACpD,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,EAAE;AACzB,QAAQ;AACR;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACpD,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1D,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACtD;AACA,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE;AACvC,IAAI,IAAI,GAAG;AACX,IAAI,MAAM,EAAE,qBAAqB,GAAG,SAAS,CAAC,qBAAqB,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE;AAC/G,IAAI,MAAM,WAAW,GAAG,OAAO,qBAAqB,KAAK,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,qBAAqB;AAClI,IAAI,OAAO,WAAW;AACtB;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AACvC,IAAI,MAAM,MAAM,GAAGa,CAAM,CAAC,MAAM;AAChC,MAAM,IAAI,GAAG;AACb,MAAM,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE;AAC9C,MAAM,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU;AAC5C,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;AAClC,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;AACnC,UAAU,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AACxD;AACA,OAAO;AACP,MAAM,IAAI,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1E,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,iBAAiB,EAAE;AAChE,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;AACtD,UAAU,OAAO,GAAG,OAAO,CAAC,iBAAiB;AAC7C,SAAS,MAAM;AACf,UAAU,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACrD;AACA;AACA,MAAM,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,QAAQ,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC;AACrD,QAAQ,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7E;AACA,MAAM,OAAO,MAAM,UAAU,CAAC,KAAK,EAAE;AACrC,KAAK,CAAC;AACN,IAAI,OAAO,MAAM;AACjB;AACA,EAAE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;AACjD,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;AACxL,MAAM;AACN;AACA,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK;AAC5B,IAAI,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,MAAM;AACtH,IAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;AACpD,IAAI,IAAI,CAAC,kBAAkB,GAAG;AAC9B,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACjD,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAChD,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;AACjE,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;AACvB,IAAI,IAAI,EAAE,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE;AACvH,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;AACrC,KAAK,MAAM;AACX,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW;AACnC,MAAM,IAAI,KAAK,EAAE;AACjB,QAAQ,MAAM,OAAO,GAAG,UAAU;AAClC,UAAU,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;AAC/C,UAAU,KAAK,CAAC;AAChB,SAAS;AACT,QAAQjB,cAAY,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM;AAChD,UAAU,YAAY,CAAC,OAAO,CAAC;AAC/B,UAAUA,cAAY,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACnD,SAAS,CAAC;AACV;AACA;AACA,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AACnD,IAAI,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE;AAC/D,MAAM;AACN,QAAQ,IAAI,EAAE,aAAa;AAC3B,QAAQ,QAAQ,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM;AACnE,OAAO;AACP,MAAM;AACN,QAAQ,IAAI,EAAE,WAAW;AACzB,QAAQ,QAAQ,EAAE,IAAI,CAAC,eAAe;AACtC,QAAQ,OAAO,EAAE;AACjB,UAAU,OAAO,EAAE;AACnB;AACA,OAAO;AACP,MAAM;AACN;AACA,QAAQ,IAAI,EAAE,WAAW;AACzB,QAAQ,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC,YAAY,GAAG,cAAc;AACxE,QAAQ,OAAO,EAAE;AACjB,UAAU,OAAO,EAAE;AACnB;AACA;AACA,KAAK,CAAC;AACN,IAAI,MAAM,OAAO,GAAG,MAAM;AAC1B,MAAM,IAAI,GAAG;AACb,MAAM,eAAe,EAAE;AACvB,MAAM,CAAC,GAAG,GAAGD,cAAY,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACjF,MAAM,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACtC,KAAK;AACL,IAAIA,cAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7C;AACA,EAAE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE;AACnC,IAAI,MAAM,WAAW,GAAG;AACxB,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO;AACtB,MAAM,CAAC,EAAE,KAAK,CAAC;AACf,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;AACpD,IAAI,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAC5D,IAAI,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAC5D,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpD,MAAM,KAAK,CAAC,cAAc,EAAE;AAC5B,MAAM,KAAK,CAAC,eAAe,EAAE;AAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK;AAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW;AAC3C,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AACzC,MAAM;AACN;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAClC,MAAM;AACN;AACA,IAAI,MAAM,KAAK,GAAG;AAClB,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAClD,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC;AACjE,IAAI,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,WAAW,IAAI,IAAI,GAAG,WAAW,GAAG,EAAE;AACtE,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACpF,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACvC;AACA,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;AAClD,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;AAC9C;AACA;AACA,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;AACnD,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACvC;AACA;AACA;AACA,EAAE,eAAe,CAAC,KAAK,EAAE;AACzB,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AACjD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACtB,MAAM,KAAK,CAAC,cAAc,EAAE;AAC5B,MAAM,KAAK,CAAC,eAAe,EAAE;AAC7B,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,WAAW;AAC1C,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACpD;AACA,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB;AACA,EAAE,aAAa,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAChC,MAAM,KAAK,CAAC,cAAc,EAAE;AAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC9B;AACA;AACA,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE;AAC7B,IAAI,IAAI,GAAG;AACX,IAAI,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI;AAChD,IAAI,CAAC,GAAG,GAAGA,cAAY,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/E,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;AACnE,MAAM;AACN;AACA,IAAI,IAAI,KAAK,CAAC,gBAAgB,EAAE;AAChC,MAAM;AACN;AACA,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7C,MAAM,WAAW,EAAE,kBAAkB;AACrC,MAAM,KAAK;AACX,MAAM;AACN,KAAK,CAAC;AACN,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,EAAE;AACxD,IAAI,KAAK,CAAC,cAAc,EAAE;AAC1B,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AACnD,IAAI,MAAM,oBAAoB,GAAG,aAAa,CAAC,IAAI;AACnD,IAAI,oBAAoB,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;AAC3D,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE;AACtD,MAAM;AACN;AACA,QAAQ,IAAI,EAAE,WAAW;AACzB,QAAQ,QAAQ,EAAE,cAAc;AAChC,QAAQ,OAAO,EAAE;AACjB,UAAU,OAAO,EAAE;AACnB;AACA,OAAO;AACP,MAAM;AACN;AACA,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,QAAQ,EAAE;AAClB,OAAO;AACP,MAAM;AACN,QAAQ,IAAI,EAAE,aAAa;AAC3B,QAAQ,QAAQ,EAAE;AAClB,OAAO;AACP,MAAM;AACN,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,QAAQ,EAAE,IAAI,CAAC;AACvB,OAAO;AACP,MAAM;AACN,QAAQ,IAAI,EAAE,oBAAoB;AAClC,QAAQ,QAAQ,EAAE,CAAC,MAAM,KAAK;AAC9B,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,oBAAoB,EAAE;AACtD,UAAU,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AACtC;AACA;AACA,KAAK,CAAC;AACN,IAAIA,cAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5C;AACA,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO;AAC1C,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE;AAC1C,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1D;AACA,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,MAAM,GAAG;AAClB,MAAM,KAAK,EAAE,KAAK,CAAC;AACnB,MAAM,WAAW,EAAE,KAAK;AACxB,KAAK;AACL,IAAIA,cAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;AAChE,IAAIA,cAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,EAAE;AACxC;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAC1B;AACA,CAAC;AACD,QAAQ,GAAG,IAAI,OAAO,EAAE;AACxB,aAAa,GAAG,IAAI,OAAO,EAAE;AAC7B,cAAc,CAAC,SAAS,GAAG,YAAY,CAAC,cAAc,CAAC;AACvD,cAAc,CAAC,QAAQ,GAAG,SAAS;AAChC,IAAC,aAAa,GAAG;AACpB,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,EAAE,OAAO,QAAQ,IAAI,KAAK;AAC1B;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,KAAK,CAAC,cAAc,EAAE;AACxB;AACA,SAAS,IAAI,GAAG;AAChB;AACA,IAAI,OAAO,mBAAmB,IAAI,OAAO,EAAE;AAC3C,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACtC,IAAI;AACJ;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE;AAC7C,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,OAAO,EAAE;AACb,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AACrB;AAsBA,IAAI,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAEqC,UAAQ,EAAE,SAAS;AACtF,IAAI,SAAS,GAAG,eAAe,EAAE,GAAG,WAAW,EAAE,WAAW,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE;AACtI,EAAE,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE;AAC5B,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE;AACnB,MAAM,OAAO;AACb,MAAM,OAAO,GAAG,MAAM,EAAE;AACxB,MAAM,MAAM;AACZ,MAAM,QAAQ,GAAG;AACjB,KAAK,GAAG,GAAG,EAAE,KAAK,GAAGrB,WAAS,CAAC,GAAG,EAAE;AACpC,MAAM,SAAS;AACf,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,MAAM;AACN,KAAK,CAAC;AACN,IAAI,KAAK;AACT,MAAM1B,gBAAc,CAAC;AACrB,QAAQ,OAAO,EAAE,MAAM;AACvB,UAAU,GAAG,OAAO,EAAE;AACtB,UAAU,MAAM;AAChB,YAAY,IAAI,GAAG,EAAE,GAAG;AACxB,YAAY,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;AAC9C,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,GAAG,GAAG;AAChH,cAAc,GAAG,QAAQ,CAAC;AAC1B,aAAa;AACb,YAAY,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC3D,cAAc,MAAM,cAAc,GAAG,KAAK,YAAY,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AAC/G,cAAc,MAAM,OAAO,GAAG,KAAK,YAAY,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO;AAC9E,cAAc,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AAC/D,cAAc,OAAO,MAAM;AAC3B,aAAa,CAAC;AACd,YAAY,OAAO,SAAS,OAAO,GAAG;AACtC,cAAc,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;AAC3D,aAAa;AACb;AACA;AACA,OAAO,EAAE,KAAK,CAAC;AACf,MAAM;AACN,KAAK;AACL,IAAIe,cAAY,CAAC,IAAI,EAAE,OAAO,EAAEP,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACxG,IAAIO,cAAY,CAAC,IAAI,EAAEgC,UAAQ,EAAEvC,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AAC1G,IAAIO,cAAY,CAAC,IAAI,EAAE,SAAS,EAAEP,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AAC3G,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B;AACA,CAAC;AACD,MAAM,GAAGL,kBAAgB,CAAC,EAAE,CAAC;AAC7B,OAAO,GAAG,IAAI,OAAO,EAAE;AACvB4C,UAAQ,GAAG,IAAI,OAAO,EAAE;AACxB,SAAS,GAAG,IAAI,OAAO,EAAE;AACzBtC,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;AACvEA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAEsC,UAAQ,CAAC;AAC1EtC,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC;AAC7EF,qBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC;AACtC,IAAI,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM;AACjH,IAAI,SAAS,GAAG,eAAe,GAAG,GAAG,WAAW,EAAE,aAAa,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE;AAC5G,EAAE,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE;AAC5B,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,GAAGmB,WAAS,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACxG,IAAI,MAAM,EAAE,iBAAiB,GAAG,yBAAyB,EAAE,GAAG,KAAK;AACnE,IAAI,MAAM,WAAW,GAAG,CAAC,kBAAkB,KAAK;AAChD,MAAM,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;AAC3D,MAAM,IAAI,CAAC,QAAQ,IAAI,kBAAkB,KAAK,IAAI,EAAE;AACpD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,OAAO,KAAK,CAAC;AACrB;AACA,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,MAAM,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC;AACrD,MAAM,MAAM,KAAK,GAAGH,CAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC;AAC/C,MAAM,IAAI,YAAY,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE;AACjF,QAAQ,OAAO,KAAK;AACpB;AACA,MAAM,IAAI,CAAC,KAAK,GAAG,YAAY;AAC/B,MAAM,OAAO,YAAY;AACzB,KAAK;AACL,IAAI,MAAM,eAAe,GAAGN,CAAM,CAAC,KAAK,CAAC;AACzC,IAAI,KAAK;AACT,MAAMhB,eAAa,CAACD,gBAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE;AAC/C,QAAQ,iBAAiB;AACzB,QAAQ,OAAO,EAAE,MAAM;AACvB,UAAU,GAAG,OAAO,EAAE;AACtB,UAAU,MAAM;AAChB,YAAY,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;AACjE,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ;AAC9C,YAAY,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa;AAC5C,YAAY,eAAe,CAAC,KAAK,GAAG,OAAO;AAC3C,cAAc,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;AAC7G,aAAa;AACb,WAAW;AACX,UAAU,MAAM;AAChB,YAAY,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;AAC9C,YAAY,IAAI,eAAe,CAAC,KAAK,IAAI,QAAQ,EAAE;AACnD,cAAc,MAAM,gBAAgB,GAAG,IAAIgD,aAAgB;AAC3D,gBAAgB,QAAQ;AACxB,gBAAgB;AAChB,eAAe;AACf,cAAc,OAAO,MAAM;AAC3B,gBAAgB,gBAAgB,CAAC,UAAU,EAAE;AAC7C,gBAAgB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnC,eAAe;AACf;AACA,WAAW;AACX,UAAU,MAAM;AAChB,YAAY,IAAI,GAAG;AACnB,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE;AAC9F,cAAc,OAAO,MAAM;AAC3B,gBAAgB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnC,eAAe;AACf;AACA;AACA;AACA,OAAO,CAAC;AACR,MAAM;AACN,KAAK;AACL,IAAIjC,cAAY,CAAC,IAAI,EAAE,oBAAoB,CAAC;AAC5C,IAAIA,cAAY,CAAC,IAAI,EAAE,SAAS,EAAEP,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AAC1G,IAAIO,cAAY,CAAC,IAAI,EAAE,MAAM,EAAEP,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAEA,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AACxG,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,WAAW,EAAE;AAC3C;AACA,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;AACvB,IAAIG,cAAY,CAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,WAAW,CAAC;AAClE;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,IAAI,GAAG;AACX,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,GAAG,GAAG,GAAGD,cAAY,CAAC,IAAI,EAAE,oBAAoB,EAAE,WAAW,CAAC;AACnG;AACA,CAAC;AACD,MAAM,GAAGP,kBAAgB,CAAC,GAAG,CAAC;AAC9B,SAAS,GAAG,IAAI,OAAO,EAAE;AACzB,oBAAoB,GAAG,IAAI,OAAO,EAAE;AACpC,MAAM,GAAG,IAAI,OAAO,EAAE;AACtB,EAAE,GAAGM,mBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,WAAW,GAAG,EAAE,CAAC,GAAG;AAC1IA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC;AACpEF,qBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC;;ACh6DtC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM;AAC5B,IAAIjB,WAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAIC,YAAU,GAAG,MAAM,CAAC,gBAAgB;AACxC,IAAI,gBAAgB,GAAG,MAAM,CAAC,wBAAwB;AACtD,IAAIE,mBAAiB,GAAG,MAAM,CAAC,yBAAyB;AACxD,IAAIC,qBAAmB,GAAG,MAAM,CAAC,qBAAqB;AACtD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AAClD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACxD,IAAI,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AACrG,IAAIE,aAAW,GAAG,CAAC,GAAG,KAAK;AAC3B,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC;AACtB,CAAC;AACD,IAAIC,iBAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAGT,WAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAC/J,IAAIU,gBAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAIL,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAMI,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,IAAIL,qBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAIA,qBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAIE,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQG,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,EAAE,OAAO,CAAC;AACV,CAAC;AACD,IAAIE,eAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAKV,YAAU,CAAC,CAAC,EAAEE,mBAAiB,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK;AACrC,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,KAAK,IAAI,IAAI,IAAI,MAAM;AACzB,IAAI,IAAIE,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACpE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACjC,EAAE,IAAI,MAAM,IAAI,IAAI,IAAID,qBAAmB;AAC3C,IAAI,KAAK,IAAI,IAAI,IAAIA,qBAAmB,CAAC,MAAM,CAAC,EAAE;AAClD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAIE,cAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACtE,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACnC;AACA,EAAE,OAAO,MAAM;AACf,CAAC;AACD,IAAI,gBAAgB,GAAG,CAAC,IAAI,KAAK;AACjC,EAAE,IAAI,EAAE;AACR,EAAE,OAAO,OAAO,QAAQ,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAC7D,CAAC;AACD,IAAI,kBAAkB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC;AAC5G,IAAI,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,IAAI,OAAO,EAAE,KAAK,UAAU,GAAGE,aAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE;AAC1G,IAAI,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAGA,aAAW,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;AAC1N,IAAI,mBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAKC,iBAAe,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACzG,IAAI,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK;AACvD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9I,EAAE,OAAO,KAAK;AACd,CAAC;AACD,IAAI,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,KAAK;AAC3E,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK;AACpE,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5D,EAAE,IAAI,YAAY,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACzF,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG;AAC3E,IAAI,OAAOW,cAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACpC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AACnB,IAAI,OAAOC,cAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACvC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACb,EAAE,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,IAAI,GAAG,GAAG,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;AAC7E,IAAI;AACJ,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE;AACtF,MAAM,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACjC,MAAM,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC;AACA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AAC/E,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE;AAC1D,SAAS,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAEb,aAAW,CAAC,iBAAiB,CAAC;AAClF,SAAS,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;AACrJ;AACA,EAAE,OAAO,IAAI,IAAIR,WAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM;AACtD,CAAC;AACD,IAAIwB,eAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAIhB,aAAW,CAAC,SAAS,GAAG,GAAG,CAAC;AACzF,IAAIY,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,MAAMI,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,yBAAyB,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpH,IAAIC,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGjB,aAAW,CAAC,mDAAmD,CAAC,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACpM,IAAIa,cAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,MAAMG,eAAa,CAAC,GAAG,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;;AAExI;AACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,EAAE,OAAO,OAAO,YAAY,iBAAiB,IAAI,OAAO,YAAY,iBAAiB;AACrF;;AAEA;AACA,IAAI,SAAS,GAAG,EAAE;AAClB,IAAI,sBAAsB,GAAG,cAAc,MAAM,CAAC;AAClD,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB,IAAI,MAAM,aAAa,GAAGc,CAAM,CAAC,MAAM;AACvC,MAAM,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO;AACvC,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE;AAC1D,QAAQ;AACR;AACA,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC7C,QAAQ;AACR;AACA,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE;AAC5C,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/D,QAAQ,IAAI,QAAQ,EAAE;AACtB,UAAU,QAAQ,CAAC,OAAO,EAAE;AAC5B,UAAU,OAAO,MAAM,QAAQ,CAAC,MAAM,EAAE;AACxC;AACA;AACA,KAAK,CAAC;AACN,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB;AACxD,MAAM,UAAU;AAChB,MAAM,CAAC,KAAK,EAAE,QAAQ,KAAK;AAC3B,QAAQ,cAAc,CAAC,MAAM;AAC7B,UAAU,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AAC7E,YAAY;AACZ;AACA,UAAU,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ;AAC5C,UAAU,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AACnD,YAAY;AACZ;AACA,UAAU,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACjD,YAAY;AACZ;AACA,UAAU,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACpC,YAAY;AACZ;AACA,UAAU,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,QAAQ;AACnE,UAAU,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK;AAC9B,UAAU,IAAI,CAAC,EAAE,EAAE;AACnB,YAAY;AACZ;AACA,UAAU,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,CAAC;AAC5C,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa;AAClD,UAAU,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO;AACxD,UAAU,MAAM,gBAAgB,GAAG,EAAE;AACrC,UAAU,MAAM,OAAO,GAAG,EAAE;AAC5B,UAAUJ,CAAK,CAAC,MAAM;AACtB,YAAY,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE;AACzD,cAAc,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS;AAC3C,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC9I,gBAAgB;AAChB;AACA,cAAc,IAAI,aAAa,GAAG,SAAS,CAAC,KAAK;AACjD,cAAc,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE;AAChE,gBAAgB,qBAAqB,EAAE,CAAC,OAAO,KAAK,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG;AACpG,eAAe,CAAC;AAChB,cAAc,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AACjD,cAAc,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;AAC/Q,gBAAgB,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;AAChD,gBAAgB,SAAS,CAAC,KAAK,GAAG,KAAK;AACvC,gBAAgB,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC;AACnE;AACA;AACA,WAAW,CAAC;AACZ,UAAU,KAAK,CAAC,cAAc,EAAE;AAChC,UAAU,iBAAiB,CAAC,OAAO,EAAE;AACrC,UAAU,MAAM,UAAU,GAAG,iBAAiB,CAAC,iBAAiB;AAChE,YAAY,gBAAgB;AAC5B,YAAY;AACZ,WAAW;AACX,UAAUA,CAAK,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;AAC1D,UAAU,MAAM,CAAC,cAAc,CAAC,GAAG,UAAU;AAC7C,UAAU,IAAI,CAAC,cAAc,EAAE;AAC/B,YAAY;AACZ;AACA,UAAU,MAAM,EAAE,EAAE,EAAE,GAAG,cAAc;AACvC,UAAU,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,QAAQ;AAClD,UAAU,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;AAC/C,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,aAAa;AAC7E,YAAY,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;AAC5D,cAAc;AACd;AACA,YAAY,MAAM;AAClB,cAAc,KAAK,EAAE,QAAQ;AAC7B,cAAc,KAAK,EAAE,QAAQ;AAC7B,cAAc,MAAM,EAAE;AACtB,aAAa,GAAG,OAAO,CAAC,QAAQ;AAChC,YAAY,MAAM,OAAO,GAAG,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ;AACpE,YAAY,MAAM,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO;AAChG,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,sBAAsB,CAAC,OAAO,CAAC;AAC3C,YAAY,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC;AAC1D,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,cAAc;AACd;AACA,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK;AACzC,cAAc,YAAY;AAC1B,cAAc,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC7D,cAAc,OAAO,CAAC;AACtB,aAAa;AACb,YAAY,OAAO,CAAC,IAAI,CAAC;AACzB,cAAc,EAAE,EAAE;AAClB,aAAa,CAAC;AACd,YAAY,IAAI,OAAO,EAAE;AACzB,cAAc,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC;AACtF,aAAa,MAAM;AACnB,cAAc,iBAAiB,CAAC,MAAM,EAAE;AACxC;AACA,WAAW,CAAC;AACZ,SAAS,CAAC;AACV;AACA,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,MAAM,WAAW,EAAE;AACnB,MAAM,aAAa,EAAE;AACrB,KAAK;AACL;AACA,CAAC;AACD,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK;AACxB,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AACb,IAAI,OAAO,OAAO;AAClB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACpB,IAAI,OAAO,MAAM;AACjB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACpB,IAAI,OAAO,MAAM;AACjB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACpB,IAAI,OAAO,IAAI;AACf;AACA;;AAEA;AACA,IAAI,UAAU,GAAG,MAAM,CAAC,cAAc;AACtC,IAAI,WAAW,GAAG,MAAM,CAAC,gBAAgB;AACzC,IAAI,kBAAkB,GAAG,MAAM,CAAC,yBAAyB;AACzD,IAAI,oBAAoB,GAAG,MAAM,CAAC,qBAAqB;AACvD,IAAI,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AACnD,IAAI,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACzD,IAAI,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACjK,IAAI,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAChC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACnC,MAAM,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACxC,EAAE,IAAI,oBAAoB;AAC1B,IAAI,KAAK,IAAI,IAAI,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE;AAC9C,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACrC,QAAQ,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,EAAE,OAAO,CAAC;AACV,CAAC;AACD,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACpE,SAAS,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;AACpC,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE;AACnB,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,EAAE,OAAO,QAAQ;AACjB;AACA,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;AACxC,EAAE,IAAI,EAAE,EAAE,EAAE;AACZ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,SAAS;AACtD,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE;AACtC,IAAI,IAAI,gBAAgB,IAAI,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE;AACzD,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,IAAI,KAAK,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;AAC3G,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9E,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9E,IAAI,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;AACpD,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC5E,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,KAAK;AAC/C,MAAM,IAAI,oBAAoB,KAAK,YAAY,EAAE;AACjD,QAAQ,OAAO,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,oBAAoB,CAAC;AAClE;AACA;AACA,IAAI,OAAO,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC;AACtD;AACA,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACvC,EAAE,IAAI,WAAW,GAAG,CAAC,CAAC;AACtB,EAAE,IAAI,YAAY;AAClB,EAAE,IAAI,WAAW,GAAG,CAAC,CAAC;AACtB,EAAE,IAAI,YAAY;AAClB,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,OAAO,EAAE;AACxC,IAAI,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AAC5B,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5E,MAAM,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AAC9B,QAAQ,YAAY,GAAG,EAAE;AACzB;AACA;AACA,IAAI,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AAC5B,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5E,MAAM,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AAC9B,QAAQ,YAAY,GAAG,EAAE;AACzB;AACA;AACA,IAAI,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AAClD,MAAM;AACN;AACA;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,KAAK;AACnC,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,OAAO;AAC1C,EAAE,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO;AACvI,EAAE,IAAI,YAAY,IAAI,IAAI,EAAE;AAC5B,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,KAAK,EAAE;AAC5B,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;AAC7G,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE;AAC9B,MAAM,WAAW,GAAG,cAAc;AAClC;AACA;AACA,EAAE,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,KAAK,YAAY,IAAI,WAAW,KAAK,WAAW,EAAE;AACpH,IAAI,IAAI,gBAAgB,IAAI,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE;AACzD,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,IAAI,YAAY,KAAK,YAAY,EAAE;AACrC,IAAI,OAAO,cAAc,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE;AACtD,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,WAAW;AAC5E,KAAK,CAAC;AACN;AACA,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAClG,EAAE,MAAM,QAAQ,GAAG,aAAa,GAAG,CAAC,GAAG,CAAC;AACxC,EAAE,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC;AACrD,EAAE,OAAO,cAAc,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE;AACpD,IAAI,CAAC,YAAY,GAAG;AACpB,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;AAClD,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC;AAClD,KAAK;AACL,IAAI,CAAC,YAAY,GAAG;AACpB,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;AAC7D,MAAM,UAAU;AAChB,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ;AACzD;AACA,GAAG,CAAC;AACJ;AACA,SAAS,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;AAC5B,EAAE,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;AACxC;AACA,IAAI,YAAY,GAAG,aAAa;AAChC,IAAI,uBAAuB,GAAG,cAAc,MAAM,CAAC;AACnD,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB,IAAI,MAAM,oBAAoB,GAAG,MAAM;AACvC,MAAM,MAAM,iBAAiB,mBAAmB,IAAI,GAAG,EAAE;AACzD,MAAM,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC3D,QAAQ,IAAI,SAAS,YAAY,iBAAiB,EAAE;AACpD,UAAU,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS;AACxC,UAAU,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ;AACpC,UAAU,IAAI,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;AACtD,UAAU,IAAI,CAAC,SAAS,EAAE;AAC1B,YAAY,SAAS,mBAAmB,IAAI,GAAG,EAAE;AACjD,YAAY,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC;AACnD;AACA,UAAU,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjC;AACA;AACA,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,iBAAiB,EAAE;AAC1D,QAAQ,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9D;AACA,MAAM,OAAO,iBAAiB;AAC9B,KAAK;AACL,IAAI,MAAM,WAAW,GAAG;AACxB,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK;AACxE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,UAAU;AACV;AACA,QAAQ,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ;AAC1C,QAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa;AAChD,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACxD,UAAU;AACV;AACA,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;AACjD,UAAU;AACV;AACA,QAAQ,MAAM,SAAS,GAAG,oBAAoB,EAAE;AAChD,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK;AACzE,QAAQ,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpE,QAAQ,MAAM,eAAe,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClG,QAAQ,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,EAAE;AAClD,QAAQ,cAAc,CAAC,MAAM;AAC7B,UAAU,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACtC,UAAU,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;AACjD,YAAY,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1B,YAAY,MAAM,YAAY,GAAG,oBAAoB,EAAE;AACvD,YAAY,KAAK,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;AAC1E,cAAc,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE;AACrE,cAAc,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,OAAO,EAAE;AACvD,gBAAgB,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE;AACnJ,kBAAkB;AAClB;AACA;AACA;AACA,YAAY,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO;AACzD,YAAY,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO;AACzD,YAAY,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE;AAClD,cAAc;AACd;AACA,YAAY,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;AACnE,cAAc;AACd;AACA,YAAY,MAAM,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC;AAChE,YAAY,MAAM,sBAAsB,GAAG,SAAS,GAAG,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC;AACrG,YAAY,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,YAAY;AACxF,YAAY,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,YAAY;AACxF,YAAY,MAAM,KAAK,GAAG;AAC1B,cAAc,CAAC,WAAW,GAAG,sBAAsB;AACnD,cAAc,CAAC,WAAW,GAAG;AAC7B,aAAa;AACb,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AAC/C,YAAY,IAAI,KAAK,KAAK,QAAQ,EAAE;AACpC,YAAY,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9E,YAAY,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9E,YAAY,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE;AAChD,YAAY,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC;AAC3E,YAAYA,CAAK,CAAC,MAAM;AACxB,cAAc,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE;AAC/E,gBAAgB,QAAQ,CAAC,KAAK,GAAG,KAAK;AACtC;AACA,cAAc,IAAI,CAAC,SAAS,EAAE;AAC9B,gBAAgB,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE;AACjF,kBAAkB,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK;AACxD,kBAAkB,QAAQ,CAAC,KAAK,GAAG,KAAK;AACxC;AACA;AACA,aAAa,CAAC;AACd,YAAY,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;AACrG,WAAW,CAAC;AACZ,SAAS,CAAC;AACV,OAAO,CAAC;AACR,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK;AACvE,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC7B,UAAU;AACV;AACA,QAAQ,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ;AAC1C,QAAQ,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa;AACxC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACjC,UAAU;AACV;AACA,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC9H,UAAU;AACV;AACA,QAAQ,cAAc,CAAC,MAAM;AAC7B,UAAU,MAAM,SAAS,GAAG,oBAAoB,EAAE;AAClD,UAAU,MAAM,qBAAqB,GAAG,SAAS,CAAC,GAAG;AACrD,YAAY,MAAM,CAAC,QAAQ,CAAC;AAC5B,WAAW;AACX,UAAU,IAAI,CAAC,qBAAqB,EAAE;AACtC,UAAU,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;AACjD,YAAY,IAAI,EAAE;AAClB,YAAY,KAAK,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;AAC1E,cAAc,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE;AACrE,cAAc,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,OAAO,EAAE;AACvD,gBAAgB,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,EAAE;AAC1E,kBAAkB;AAClB;AACA;AACA;AACA,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC5D,YAAY,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO;AACzD,YAAY,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO;AACjH,YAAY,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE;AAClD,cAAc;AACd;AACA,YAAY,OAAO;AACnB,cAAc,aAAa;AAC3B,cAAc,MAAM,CAAC,QAAQ,CAAC,YAAY;AAC1C,cAAc,aAAa;AAC3B,cAAc,MAAM,CAAC,QAAQ,CAAC;AAC9B,aAAa;AACb,YAAYA,CAAK,CAAC,MAAM;AACxB,cAAc,KAAK,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;AACxE,gBAAgB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE;AACtE,gBAAgB,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE;AAChD,kBAAkB,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,YAAY;AACxD,kBAAkB,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,YAAY;AACxD;AACA;AACA,aAAa,CAAC;AACd,WAAW,CAAC;AACZ,SAAS,CAAC;AACV,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,MAAM,KAAK,MAAM,mBAAmB,IAAI,WAAW,EAAE;AACrD,QAAQ,mBAAmB,EAAE;AAC7B;AACA,KAAK;AACL;AACA,CAAC;AACD,SAAS,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE;AACzE,EAAE,MAAM,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa;AACzE,EAAE,aAAa,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC9D;AACA,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3B,EAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AAC1B;AACA,SAAS,IAAI,CAAC,SAAS,EAAE;AACzB,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAChD;;AAEA;AACA,IAAI,cAAc,GAAG;AACrB,EAAE,sBAAsB;AACxB,EAAE;AACF,CAAC;AACD,IAAI,yBAAyB,GAAG;AAChC,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,MAAM,EAAE,+BAA+B;AACzC,EAAE,IAAI,EAAE;AACR,CAAC;AACD,IAAI,KAAK,GAAG,IAAI,SAAS,EAAE;AAC3B,IAAI,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ;AAC3F,UAAU,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,CAAC,QAAQ,CAAC;AAChD,IAAI,SAAS,GAAG,MAAM;AACtB,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE;AAC3B,IAAIT,cAAY,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC;AACrG,IAAIA,cAAY,CAAC,IAAI,EAAE,cAAc,CAAC;AACtC,IAAIA,cAAY,CAAC,IAAI,EAAE,cAAc,CAAC;AACtC,IAAIA,cAAY,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC;AACtG,IAAIA,cAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;AAChC,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM;AAC1B,MAAMS,CAAK,CAAC,MAAM;AAClB,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AACnF,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AACnF,OAAO,CAAC;AACR,MAAM,OAAO,MAAM,IAAI,CAAC,UAAU,EAAE;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM;AAC5B,MAAMA,CAAK,CAAC,MAAM;AAClB,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AACrF,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AACrF,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,MAAMA,CAAK,CAAC,MAAM;AAClB,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAChC,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE;AACjB,MAAM,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE;AACtC,MAAM,KAAK;AACX,MAAM,KAAK;AACX,MAAM,OAAO;AACb,MAAM,IAAI;AACV,MAAM,UAAU,GAAG,yBAAyB;AAC5C,MAAM,OAAO,GAAG;AAChB,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE;AAClC,MAAM,SAAS;AACf,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,MAAM;AACZ,MAAM,YAAY;AAClB,MAAM;AACN,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;AAChE,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB;AAC1C,MAAMvB,eAAa,CAACD,gBAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE;AAC/C,QAAQ,OAAO,EAAE,MAAM;AACvB,UAAU,MAAM;AAChB,YAAY,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE;AAC5B,YAAY,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM;AAC3F,YAAY,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACnL,cAAc,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC;AACA,YAAY,IAAI,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE;AAC9D,cAAc,KAAK,CAAC,GAAG;AACvB,gBAAgB,IAAI,CAAC,OAAO;AAC5B,gBAAgB,IAAI,CAAC,EAAE;AACvB,gBAAgBuB,CAAS,CAAC,OAAO;AACjC,kBAAkB,YAAY,EAAE,IAAI,CAAC,KAAK;AAC1C,kBAAkB,YAAY,EAAE,IAAI,CAAC;AACrC,iBAAiB,CAAC;AAClB,eAAe;AACf;AACA,WAAW;AACX,UAAU,MAAM;AAChB,YAAY,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI;AACrE,YAAY,MAAM,aAAa,GAAGb,cAAY,CAAC,IAAI,EAAE,cAAc,CAAC;AACpE,YAAY,MAAM,aAAa,GAAGA,cAAY,CAAC,IAAI,EAAE,cAAc,CAAC;AACpE,YAAY,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,aAAa,EAAE;AACtE,cAAcC,cAAY,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC;AACxD,cAAcA,cAAY,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC;AACxD,cAAc,IAAI,CAAC,OAAO,EAAE;AAC5B;AACA,WAAW;AACX,UAAU,MAAM;AAChB,YAAY,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AACnC,YAAY,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS;AAC7D,YAAY,IAAI,QAAQ,IAAI,MAAM,IAAI,YAAY,EAAE;AACpD,cAAc,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,MAAM;AAC/C;AACA,WAAW;AACX,UAAU,MAAM;AAChB,YAAY,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;AAC9C,YAAY,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1C,cAAc,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5E;AACA,WAAW;AACX,UAAU,GAAG,YAAY;AACzB,SAAS;AACT,QAAQ,IAAI;AACZ,QAAQ;AACR,OAAO,CAAC;AACR,MAAM,OAAO;AACb,MAAM;AACN,KAAK;AACL,IAAIA,cAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;AAC/C,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAIA,cAAY,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC;AAC7C,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAIA,cAAY,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU;AAChC;AACA,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK;AACtH;AACA,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK;AACtH;AACA,EAAE,OAAO,GAAG;AACZ,IAAIY,CAAS,CAAC,MAAM;AACpB,MAAM,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;AAC1C,MAAM,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS;AACtC,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM;AACnD,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAC7D,QAAQ;AACR;AACA,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;AAC5C,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AAChC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU;AACV;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AAChD,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,UAAU;AACV;AACA,QAAQ,MAAM,KAAK,GAAG;AACtB,UAAU,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,GAAG,YAAY,CAAC,iBAAiB,CAAC,IAAI;AAC/E,UAAU,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC;AAC1E,SAAS;AACT,QAAQ,MAAM,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC;AACxD,QAAQ,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;AAC5E,QAAQ,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC;AACnE,QAAQ,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;AAChC,UAAU,gBAAgB,CAAC;AAC3B,YAAY,OAAO;AACnB,YAAY,SAAS,EAAE;AACvB,cAAc,SAAS,EAAE;AACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC3G,gBAAgB,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;AAChF;AACA,aAAa;AACb,YAAY,OAAO,EAAE;AACrB,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM;AACxB,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE;AACxD,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3C;AACA,WAAW,CAAC;AACZ;AACA,OAAO,CAAC;AACR,KAAK,CAAC;AACN;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO;AACjC;AACA,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;AACvB,IAAIC,CAAK,CAAC,MAAM;AAChB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO;AACtC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO;AACtC,KAAK,CAAC;AACN;AACA,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;AACvB,IAAIA,CAAK,CAAC,MAAM;AAChB,MAAM,MAAM,eAAe,GAAGd,cAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC1D,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACrD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACrD,MAAM,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,eAAe,EAAE;AACrE,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO;AACxC;AACA,MAAM,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,eAAe,EAAE;AACrE,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO;AACxC;AACA,MAAMC,cAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC3C,KAAK,CAAC;AACN;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,OAAO,GAAGD,cAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;AAChD,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,OAAO,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AAClH;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,MAAM;AACnC;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO;AACjC;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,MAAM;AACnC;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO;AACjC;AACA,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC7D;AACA,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;AACtB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK;AACnC;AACA,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE;AACtB,IAAIc,CAAK,CAAC,MAAM;AAChB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK;AACrC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK;AACrC,KAAK,CAAC;AACN;AACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AACjB,IAAIA,CAAK,CAAC,MAAM;AAChB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI;AAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI;AAChC,KAAK,CAAC;AACN;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM;AAClC;AACA,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;AACb,IAAIA,CAAK,CAAC,MAAM;AAChB,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE;AAC5B,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE;AAC5B,KAAK,CAAC;AACN;AACA,EAAE,IAAI,EAAE,GAAG;AACX,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC5B;AACA,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK;AAClC;AACA,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK;AACpC;AACA,EAAE,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,KAAK;AAC5C;AACA,EAAE,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,yBAAyB;AACxF;AACA,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK;AACpC;AACA,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS;AACnC;AACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AACjB,IAAIA,CAAK,CAAC,MAAM;AAChB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI;AAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI;AAChC,KAAK,CAAC;AACN;AACA,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI;AAC9B;AACA,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;AACpB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK;AACjC;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM;AAChC;AACA,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY;AACtC;AACA;AACA;AACA;AACA,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY;AACtC;AACA;AACA;AACA;AACA,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU;AACpC;AACA;AACA;AACA;AACA,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU;AACpC;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM;AAChC;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AACxC;AACA,EAAE,OAAO,CAAC,SAAS,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;AAC5C;AACA,CAAC;AACD,KAAK,GAAG,gBAAgB,EAAE;AAC1B,MAAM,GAAG,IAAI,OAAO,EAAE;AACtB,cAAc,GAAG,IAAI,OAAO,EAAE;AAC9B,cAAc,GAAG,IAAI,OAAO,EAAE;AAC9B,MAAM,GAAG,IAAI,OAAO,EAAE;AACtB,QAAQ,GAAG,IAAI,OAAO,EAAE;AACxB,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC;AACnE,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC;AACnE,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC;AACrC,IAAI,iBAAiB,GAAG,cAAc,SAAS,CAAC;AAChD,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;AACxC,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AACzB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK;AAC9B;AACA,CAAC;AACD,IAAI,iBAAiB,GAAG,cAAc,SAAS,CAAC;AAChD,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;AACxC,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AACzB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B;AACA,CAAC;;ACtzBD;AACA,SAAS,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK;AACzE;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,EAAE,IAAI,EAAE;AACR,EAAE,IAAI,KAAK,IAAI,IAAI,EAAE;AACrB,IAAI,OAAO,KAAK,CAAC;AACjB;AACA,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AACpB,IAAI,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC;AACrD;AACA,EAAE,OAAO,KAAK;AACd;;ACDA,IAAI,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,KAAK,WAAW;AAC/I,IAAI,yBAAyB,GAAG,SAAS,GAAGyB,qBAAe,GAAGC,eAAS;AACvE,SAAS,cAAc,GAAG;AAC1B,EAAE,MAAM,QAAQ,GAAGC,cAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,OAAOC,iBAAW,CAAC,MAAM;AAC3B,IAAI,QAAQ,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAClC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;AAChB;AAwCA,SAAS,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE;AAC5C,EAAE,MAAM,OAAO,GAAGC,YAAM,iBAAiB,IAAI,GAAG,EAAE,CAAC;AACnD,EAAE,MAAM,WAAW,GAAG,cAAc,EAAE;AACtC,EAAE,yBAAyB,CAAC,MAAM;AAClC,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;AAC7B,MAAM;AACN;AACA,IAAI,OAAOzB,CAAM,CAAC,MAAM;AACxB,MAAM,IAAI,EAAE;AACZ,MAAM,IAAI,KAAK,GAAG,KAAK;AACvB,MAAM,IAAI,IAAI,GAAG,KAAK;AACtB,MAAM,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE;AAC3C,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AAC3B,QAAQ,MAAM,KAAK,GAAGL,CAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AACvC,QAAQ,IAAI,KAAK,KAAK,WAAW,EAAE;AACnC,UAAU,KAAK,GAAG,IAAI;AACtB,UAAU,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC;AAC/C,UAAU,IAAI,GAAG,CAAC,EAAE,GAAG,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK;AAChH;AACA;AACA,MAAM,IAAI,KAAK,EAAE;AACjB,QAAQ,IAAI,GAAG+B,kBAAS,CAAC,WAAW,CAAC,GAAG,WAAW,EAAE;AACrD;AACA,KAAK,CAAC;AACN,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;AACd,EAAE,OAAOC,aAAO;AAChB,IAAI,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;AACrC,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;AACxB,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;AAClC,QAAQ,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACvC,QAAQ,OAAO,KAAK;AACpB;AACA,KAAK,CAAC,GAAG,MAAM;AACf,IAAI,CAAC,MAAM;AACX,GAAG;AACH;;AAEA;AACA,SAAS,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAE;AACzC,EAAE,QAAQ,EAAE;AACZ;AAQA,SAAS,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAGL,eAAS,EAAE,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE;AACrF,EAAE,MAAM,OAAO,GAAGG,YAAM,CAAC,KAAK,CAAC;AAC/B,EAAE,OAAO,CAAC,MAAM;AAChB,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO;AACpC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;AACnC,MAAM,OAAO,CAAC,OAAO,GAAG,KAAK;AAC7B,MAAM,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC/B;AACA,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvB;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7C,EAAE,MAAM,QAAQ,GAAGA,YAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC9C,EAAE,yBAAyB,CAAC,MAAM;AAClC,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC;AACvC,IAAI,IAAI,OAAO,KAAK,QAAQ,CAAC,OAAO,EAAE;AACtC,MAAM,QAAQ,CAAC,OAAO,GAAG,OAAO;AAChC,MAAM,QAAQ,CAAC,OAAO,CAAC;AACvB;AACA,GAAG,CAAC;AACJ;;ACxHA,IAAI/D,WAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAIC,YAAU,GAAG,MAAM,CAAC,gBAAgB;AACxC,IAAIE,mBAAiB,GAAG,MAAM,CAAC,yBAAyB;AACxD,IAAIC,qBAAmB,GAAG,MAAM,CAAC,qBAAqB;AACtD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AAClD,IAAIC,cAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACxD,IAAIG,iBAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAGT,WAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAC/J,IAAIU,gBAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAIL,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAMI,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,IAAIL,qBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAIA,qBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAIE,cAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQG,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,EAAE,OAAO,CAAC;AACV,CAAC;AACD,IAAIE,eAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAKV,YAAU,CAAC,CAAC,EAAEE,mBAAiB,CAAC,CAAC,CAAC,CAAC;AACjE,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,MAAM;AACR,IAAI,MAAM;AACV,IAAI,iBAAiB;AACrB,IAAI,iBAAiB;AACrB,IAAI,EAAE;AACN,IAAI,IAAI;AACR,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI;AACJ,GAAG,GAAG,KAAK;AACX,EAAE,MAAM,UAAU,GAAGO,gBAAc,CAACA,gBAAc,CAAC,EAAE,EAAE,yBAAyB,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;AACpG,EAAE,MAAM,QAAQ,GAAGwD,iBAAW,CAAC,CAAC,OAAO,KAAK;AAC5C,IAAI,OAAO,IAAIC,SAAQ;AACvB,MAAMxD,eAAa,CAACD,gBAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE;AAC/C,QAAQ,UAAU;AAClB,QAAQ,QAAQ,EAAE,KAAK;AACvB,QAAQ,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;AACpC,QAAQ,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;AACtC,QAAQ,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;AACpC,QAAQ;AACR,OAAO,CAAC;AACR,MAAM;AACN,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,EAAE,yBAAyB,CAAC;AAC5E,EAAE,gBAAgB,CAAC,EAAE,EAAE,MAAM,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;AAC9C,EAAE,yBAAyB,CAAC,MAAM;AAClC,IAAIwB,CAAK,CAAC,MAAM;AAChB,MAAM,QAAQ,CAAC,KAAK,GAAG,KAAK;AAC5B,MAAM,QAAQ,CAAC,KAAK,GAAG,KAAK;AAC5B,KAAK,CAAC;AACN,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9B,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACpD,EAAE,gBAAgB;AAClB,IAAI,MAAM;AACV,IAAI,MAAM,QAAQ,CAAC,MAAM,GAAG,MAAM;AAClC,IAAI,KAAK,CAAC;AACV,IAAI;AACJ,GAAG;AACH,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAC9D,EAAE,gBAAgB;AAClB,IAAI,KAAK;AACT,IAAI,MAAM;AACV,MAAM,IAAI,EAAE;AACZ,MAAM,IAAI,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE;AACxI,QAAQ,QAAQ,CAAC,YAAY,EAAE;AAC/B;AACA,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE,kBAAkB,CAAC,MAAM,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC;AACpE,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC;AACxE,EAAE,kBAAkB,CAAC,MAAM,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC;AACpE,EAAE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,QAAQ,CAAC,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;AACzE,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7D,EAAE,gBAAgB;AAClB,IAAI,iBAAiB;AACrB,IAAI,MAAM,QAAQ,CAAC,iBAAiB,GAAG;AACvC,GAAG;AACH,EAAE,gBAAgB;AAClB,IAAI,iBAAiB;AACrB,IAAI,MAAM,QAAQ,CAAC,iBAAiB,GAAG;AACvC,GAAG;AACH,EAAE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,QAAQ,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC/F,EAAE,gBAAgB;AAClB,IAAI,UAAU;AACd,IAAI,MAAM,QAAQ,CAAC,UAAU,GAAG,UAAU;AAC1C,IAAI,KAAK,CAAC;AACV,IAAI;AACJ,GAAG;AACH,EAAE,gBAAgB;AAClB,IAAI,SAAS;AACb,IAAI,MAAM,QAAQ,CAAC,SAAS,GAAG,SAAS;AACxC,IAAI,KAAK,CAAC;AACV,IAAI;AACJ,GAAG;AACH,EAAE,gBAAgB;AAClB,IAAI,KAAK,CAAC,SAAS;AACnB,IAAI,MAAM,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;AACrC,GAAG;AACH,EAAE,OAAO;AACT,IAAI,QAAQ,EAAE,eAAe;AAC7B,IAAI,IAAI,UAAU,GAAG;AACrB,MAAM,OAAO,eAAe,CAAC,UAAU;AACvC,KAAK;AACL,IAAI,IAAI,UAAU,GAAG;AACrB,MAAM,OAAO,eAAe,CAAC,UAAU;AACvC,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,MAAM,OAAO,eAAe,CAAC,YAAY;AACzC,KAAK;AACL,IAAI,IAAI,YAAY,GAAG;AACvB,MAAM,OAAO,eAAe,CAAC,YAAY;AACzC,KAAK;AACL,IAAI,SAAS,EAAE4B,iBAAW;AAC1B,MAAM,CAAC,QAAQ,KAAK;AACpB,QAAQ,QAAQ,CAAC,MAAM,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC9D,OAAO;AACP,MAAM,CAAC,QAAQ;AACf,KAAK;AACL,IAAI,GAAG,EAAEA,iBAAW;AACpB,MAAM,CAAC,QAAQ,KAAK;AACpB,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACpK,UAAU;AACV;AACA,QAAQ,QAAQ,CAAC,OAAO,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC/D,OAAO;AACP,MAAM,CAAC,QAAQ;AACf,KAAK;AACL,IAAI,SAAS,EAAEA,iBAAW;AAC1B,MAAM,CAAC,QAAQ,KAAK;AACpB,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACnK,UAAU;AACV;AACA,QAAQ,QAAQ,CAAC,MAAM,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC9D,OAAO;AACP,MAAM,CAAC,QAAQ;AACf,KAAK;AACL,IAAI,SAAS,EAAEA,iBAAW;AAC1B,MAAM,CAAC,QAAQ,KAAK;AACpB,QAAQ,IAAI,EAAE,EAAE,EAAE;AAClB,QAAQ,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACnK,UAAU;AACV;AACA,QAAQ,QAAQ,CAAC,MAAM,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC9D,OAAO;AACP,MAAM,CAAC,QAAQ;AACf;AACA,GAAG;AACH;AACA,SAAS,yBAAyB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC5D,EAAE,IAAI,GAAG,KAAK,cAAc,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,OAAO,IAAI;AAClE,EAAE,OAAO,KAAK;AACd;;ACxKA,IAAI9D,WAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAI,UAAU,GAAG,MAAM,CAAC,gBAAgB;AACxC,IAAI,iBAAiB,GAAG,MAAM,CAAC,yBAAyB;AACxD,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB;AACtD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AAClD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACxD,IAAIS,iBAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAGT,WAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAC/J,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAMS,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQA,iBAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,EAAE,OAAO,CAAC;AACV,CAAC;AACD,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,aAAa,GAAG,MAAM,aAAa,SAAS,QAAQ,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE;AACvB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,MAAM,OAAO,SAAS;AACtB;AACA,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO;AACxC,IAAI,OAAO,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE;AACxD,MAAM,CAAC,IAAI,GAAG;AACd,KAAK,CAAC;AACN;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC;AACrD,IAAI,YAAY,GAAG,aAAa;AACH,YAAY,CAAC,SAAS,CAAC;AACpD,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,KAAK,EAAE;AACT,CAAC;AACE,IAAC,wBAAwB,GAAG,YAAY,CAAC,SAAS,CAAC;AACtD,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,KAAK,EAAE;AACT,CAAC;AAiBD,IAAI,aAAa,GAAG,MAAM,aAAa,SAAS,QAAQ,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE;AACvB,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;AAC/D,IAAI,MAAM,CAAC,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACtD,IAAI,MAAM,CAAC,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACtD,IAAI,OAAO,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE;AACxD,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACvC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;AACtC,KAAK,CAAC;AACN;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC;;AC5FrC,SAAA,SAAA,CACd,OACA,IACA,EAAA,IAAA,GAAY,EACZ,EAAA,IAAA,GAAY,EACA,EAAA;AACZ,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,GAAA,GAAM,MAAM,MAAQ,EAAA,CAAA,GAAI,KAAK,CAAK,EAAA,EAAA;AAChD,IAAC,CAAA,IAAA,CAAK,KAAM,CAAA,CAAC,CAAG,EAAA,CAAC,CAAI,GAAA,IAAA,GAAO,IAAM,EAAA,IAAA,CAAK,KAAM,CAAA,CAAC,CAAC,CAAA;AAAA;AAEjD,EAAO,OAAA,CAAC,MAAM,IAAI,CAAA;AACpB;AAIgB,SAAA,YAAA,CACd,YACA,EAAA,QAAA,EACA,gBACA,EAAA;AACA,EAAI,IAAA,YAAA,CAAa,MAAW,KAAA,QAAA,CAAS,MAAQ,EAAA;AAC3C,IAAO,OAAA,IAAA;AAAA;AAET,EAAA,IAAI,qBAAqB,KAAW,CAAA,EAAA;AAClC,IAAO,OAAA,CAAC,aAAa,KAAM,CAAA,CAAC,SAAS,QAAS,CAAA,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,GACvD,MAAA;AACL,IAAA,OAAO,YAAa,CAAA,IAAA;AAAA,MAClB,CAAC,gBACC,QAAS,CAAA,SAAA;AAAA,QACP,CAAC,OACE,KAAA,OAAA,CAAuC,gBAAgB,CAAA,KACvD,YAA2C,gBAAgB;AAAA,OAC1D,KAAA,CAAA;AAAA,KACV;AAAA;AAEJ;AAEgB,SAAA,mBAAA,CACd,YACA,EAAA,QAAA,EACA,gBACA,EAAA;AACA,EAAI,IAAA,YAAA,CAAa,MAAW,KAAA,QAAA,CAAS,MAAQ,EAAA;AAC3C,IAAO,OAAA,IAAA;AAAA;AAET,EAAA,IAAI,qBAAqB,KAAW,CAAA,EAAA;AAClC,IAAO,OAAA,YAAA,CAAa,KAAK,CAAC,IAAA,EAAM,UAAU,QAAS,CAAA,KAAK,MAAM,IAAI,CAAA;AAAA,GAC7D,MAAA;AACL,IAAA,OAAO,YAAa,CAAA,IAAA;AAAA,MAClB,CAAC,aAAa,KACX,KAAA,QAAA,CAAS,KAAK,CAAiC,CAAA,gBAAgB,CAC/D,KAAA,WAAA,CAA2C,gBAAgB;AAAA,KAChE;AAAA;AAEJ;AAEO,MAAM,kBAAqB,GAAA,CAChC,KACA,EAAA,IAAA,EACA,MACQ,KAAA;AACR,EAAM,MAAA,SAAA,GAAY,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA;AACpC,EAAA,IAAI,cAAc,MAAQ,EAAA;AACxB,IAAO,OAAA,KAAA;AAAA;AAET,EAAM,MAAA,QAAA,GAAW,MAAM,KAAM,EAAA;AAC7B,EAAA,IAAI,cAAc,CAAI,CAAA,EAAA;AACpB,IAAA,MAAM,MAAM,sCAAsC,CAAA;AAAA;AAEpD,EAAS,QAAA,CAAA,MAAA,CAAO,WAAW,CAAC,CAAA;AAC5B,EAAA,IAAI,WAAW,CAAI,CAAA,EAAA;AACjB,IAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,GACb,MAAA;AACL,IAAM,MAAA,MAAA,GAAS,MAAS,GAAA,SAAA,GAAY,CAAI,GAAA,CAAA;AACxC,IAAA,QAAA,CAAS,MAAO,CAAA,MAAA,GAAS,MAAQ,EAAA,CAAA,EAAG,IAAI,CAAA;AAAA;AAE1C,EAAO,OAAA,QAAA;AACT;AAEO,MAAM,QAAW,GAAA,CACtB,KACA,EAAA,SAAA,EACA,OACQ,KAAA;AACR,EAAA,IAAI,cAAc,OAAS,EAAA;AACzB,IAAO,OAAA,KAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,QAAA,GAAW,MAAM,KAAM,EAAA;AAC7B,IAAA,MAAM,CAAC,IAAI,CAAA,GAAI,QAAS,CAAA,MAAA,CAAO,WAAW,CAAC,CAAA;AAC3C,IAAA,IAAI,YAAY,CAAI,CAAA,EAAA;AAClB,MAAO,OAAA,QAAA,CAAS,OAAO,IAAI,CAAA;AAAA,KACtB,MAAA;AACL,MAAM,MAAA,MAAA,GAAS,OAAU,GAAA,SAAA,GAAY,CAAI,GAAA,CAAA;AACzC,MAAA,QAAA,CAAS,MAAO,CAAA,OAAA,GAAU,MAAQ,EAAA,CAAA,EAAG,IAAI,CAAA;AACzC,MAAO,OAAA,QAAA;AAAA;AACT;AAEJ;AAEa,MAAA,aAAA,GAAgB,CAAI,MAAA,EAAyB,SAAmB,KAAA;AAC3E,EAAA,MAAM,QAAQ,CAAC,CAAA,KAAS,CAAC,MAAA,EAAQ,SAAS,CAAC,CAAA;AAC3C,EAAA,IAAI,WAAW,KAAW,CAAA,EAAA;AACxB,IAAO,OAAA,SAAA;AAAA,GACE,MAAA,IAAA,SAAA,CAAU,IAAK,CAAA,KAAK,CAAG,EAAA;AAChC,IAAO,OAAA,SAAA,CAAU,OAAO,KAAK,CAAA;AAAA,GACxB,MAAA;AACL,IAAA,OAAO,EAAC;AAAA;AAEZ;AAEO,MAAM,kBAAkB,CAC7B,WAAA,EACA,OACA,QAEA,KAAA,KAAA,CAAM,OAAO,CAAC,CAAA,KAAM,WAAY,CAAA,SAAA,CAAU,CAAC,CAAM,KAAA,QAAA,CAAS,CAAC,CAAM,KAAA,CAAC,MAAM,CAAE,CAAA;;AC1G5D,SAAA,gBAAA,CAAiB,IAAY,EAAA,CAAA,EAAW,CAAW,EAAA;AACjE,EAAA,IAAI,IAAM,EAAA;AACR,IAAO,OAAA,CAAA,IAAK,IAAK,CAAA,IAAA,IAAQ,CAAI,GAAA,IAAA,CAAK,SAAS,CAAK,IAAA,IAAA,CAAK,GAAO,IAAA,CAAA,GAAI,IAAK,CAAA,MAAA;AAAA;AAEzE;AASO,SAAS,eACd,EAAE,KAAA,EAAO,MAAM,GAAK,EAAA,MAAA,IACpB,OACA,EAAA;AACA,EAAM,MAAA,SAAA,GAAA,CAAa,IAAI,OAAW,IAAA,CAAA;AAClC,EAAM,MAAA,CAAA,GAAA,CAAK,QAAQ,IAAQ,IAAA,SAAA;AAC3B,EAAM,MAAA,CAAA,GAAA,CAAK,SAAS,GAAO,IAAA,SAAA;AAC3B,EAAA,OAAO,EAAE,IAAA,EAAM,IAAO,GAAA,CAAA,EAAG,GAAK,EAAA,GAAA,GAAM,CAAG,EAAA,KAAA,EAAO,KAAQ,GAAA,CAAA,EAAG,MAAQ,EAAA,MAAA,GAAS,CAAE,EAAA;AAC9E;AAEO,SAAS,uBACd,CAAA,CAAA,EACA,CACA,EAAA,IAAA,EACA,aAAa,EACb,EAAA;AACA,EAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,KAAA,GAAQ,IAAK,CAAA,IAAA;AAChC,EAAM,MAAA,MAAA,GAAS,IAAK,CAAA,MAAA,GAAS,IAAK,CAAA,GAAA;AAClC,EAAM,MAAA,IAAA,GAAO,IAAI,IAAK,CAAA,IAAA;AACtB,EAAM,MAAA,IAAA,GAAO,IAAI,IAAK,CAAA,GAAA;AACtB,EAAA,IAAI,cAAiB,GAAA,CAAA;AAErB,EAAI,IAAA,IAAA,GAAO,YAA8B,cAAA,IAAA,CAAA;AACzC,EAAI,IAAA,IAAA,GAAO,KAAQ,GAAA,UAAA,EAA8B,cAAA,IAAA,CAAA;AACjD,EAAI,IAAA,IAAA,GAAO,YAA8B,cAAA,IAAA,CAAA;AACzC,EAAI,IAAA,IAAA,GAAO,MAAS,GAAA,UAAA,EAA8B,cAAA,IAAA,CAAA;AAElD,EAAA,OAAO,EAAE,IAAM,EAAA,IAAA,GAAO,OAAO,IAAM,EAAA,IAAA,GAAO,QAAQ,cAAe,EAAA;AACnE;AAEO,MAAM,0BAA6B,GAAA,CACxC,QAEA,KAAA,QAAA,KAAa,YAAY,QAAa,KAAA;AAEjC,SAAS,oBACd,CAAA,CAAA,EACA,CACA,EAAA,IAAA,EACA,MACA,IACwB,EAAA;AACxB,EAAM,MAAA,SAAA,GAAY,cAAe,CAAA,IAAA,EAAM,GAAG,CAAA;AAC1C,EAAA,IAAI,gBAAiB,CAAA,SAAA,EAAW,CAAG,EAAA,CAAC,CAAG,EAAA;AACrC,IAAO,OAAA,QAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,QAAA,GAAW,CAAG,EAAA,IAAA,GAAO,GAAM,GAAA,OAAA,GAAU,OAAO,CAChD,EAAA,IAAA,GAAO,GAAM,GAAA,MAAA,GAAS,MACxB,CAAA,CAAA;AAEA,IAAA,QAAQ,QAAU;AAAA,MAChB,KAAK,WAAA;AACH,QAAO,OAAA,IAAA,GAAO,OAAO,OAAU,GAAA,MAAA;AAAA,MACjC,KAAK,WAAA;AACH,QAAO,OAAA,CAAA,GAAI,IAAO,GAAA,IAAA,GAAO,OAAU,GAAA,MAAA;AAAA,MACrC,KAAK,WAAA;AACH,QAAO,OAAA,IAAA,GAAO,OAAO,MAAS,GAAA,OAAA;AAAA,MAChC,KAAK,WAAA;AACH,QAAO,OAAA,CAAA,GAAI,IAAO,GAAA,IAAA,GAAO,MAAS,GAAA,OAAA;AAAA,MACpC;AACE,QAAA,MAAM,MAAM,kDAAkD,CAAA;AAAA;AAClE;AAEJ;;ACrCA,MAAM,QAAW,GAAA,KAAA;AACjB,MAAM,cAA6B,EAAC;AACpC,MAAM,iBAAoB,GAAA,GAAA;AAC1B,MAAM,iBAAoB,GAAA,GAAA;AAC1B,MAAM,iBAAoB,GAAA,EAAA;AAKnB,MAAM,eAAiD,GAAA;AAAA,EAC5D,OAAS,EAAA,CAAA;AAAA,EACT,KAAO,EAAA,CAAA;AAAA,EACP,QAAU,EAAA,CAAA;AAAA,EACV,GAAK,EAAA,CAAA;AAAA,EACL,IAAM,EAAA,CAAA;AAAA,EACN,GAAK,EAAA;AACP;AAEO,SAAS,eACd,CAAA,YAAA,EACA,SACA,EAAA,cAAA,GAAiB,CACE,EAAA;AACnB,EAAO,OAAA,YAAA,CAAa,GAAI,CAAA,CAAC,CAAM,KAAA;AAC7B,IAAI,IAAA,OAAO,MAAM,QAAU,EAAA;AACzB,MAAA,OAAO,CAAC,SAAA,CAAU,CAAC,CAAA,GAAI,gBAAgB,KAAK,CAAA;AAAA,KACnC,MAAA,IAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAG,EAAA;AAC3B,MAAM,MAAA,CAAC,UAAY,EAAA,OAAO,CAAI,GAAA,CAAA;AAC9B,MAAA,OAAO,CAAC,SAAU,CAAA,UAAU,CAAI,GAAA,cAAA,EAAgB,WAAW,QAAQ,CAAA;AAAA,KAC9D,MAAA;AACL,MAAA,MAAM,MAAM,2CAA2C,CAAA;AAAA;AACzD,GACD,CAAA;AACH;AAEA,MAAM,YAAe,GAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,QAAQ,CAAA;AAChC,MAAA,mBAAA,GAAsB,CACjC,cAAA,KAEA,cAAmB,KAAA,KAAA,CAAA,GACf,SACA,YAAa,CAAA,QAAA,CAAS,cAAc,CAAA,GAClC,OACA,GAAA;AAEK,MAAA,qBAAA,GAAwB,CACnC,GAAA,EACA,cACG,KAAA;AACH,EAAM,MAAA,aAAA,GAAgB,eAAe,IAAK,CAAA,CAAC,EAAE,IAAK,EAAA,KAAM,IAAS,KAAA,GAAA,CAAI,IAAI,CAAA;AACzE,EAAA,IAAI,aAAe,EAAA;AACjB,IAAA,OAAO,aAAc,CAAA,KAAA;AAAA,GAChB,MAAA;AACL,IAAO,OAAA,iBAAA;AAAA;AAEX;AAKa,MAAA,gCAAA,GAAmC,CAC9C,WAAA,EACA,OACgB,KAAA;AAChB,EAAO,OAAA;AAAA,IACL,GAAG,WAAA;AAAA,IACH,OAAS,EAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MAAY,MAAA;AAAA,MAChC,GAAG,MAAA;AAAA,MACH,KAAO,EAAA,MAAA,CAAO,KAAS,IAAA,qBAAA,CAAsB,QAAQ,OAAO;AAAA,KAC5D,CAAA,CAAA;AAAA,IACF,YAAc,EAAA;AAAA,GAChB;AACF;AAEO,MAAM,sBAAyB,GAAA,CAAC,CACrC,KAAA,CAAA,KAAM,UAAU,CAAM,KAAA;AAEX,MAAA,kBAAA,GAAqB,CAAC,CACjC,KAAA,sBAAA,CAAuB,CAAC,CAAK,IAAA,CAAA,KAAM,cAAc,CAAM,KAAA;AAQzD,MAAM,qBAAuD,GAAA;AAAA,EAC3D,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,mBAAsB,GAAA,CACjC,KAC+B,KAAA,qBAAA,CAAsB,SAAS,KAAK;AAExD,MAAA,kBAAA,GAAqB,CAChC,cACwB,KAAA;AACxB,EAAA,QAAQ,cAAgB;AAAA,IACtB,KAAK,QAAA;AAAA,IACL,KAAK,KAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAO,OAAA,QAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAO,OAAA,SAAA;AAAA,IACT;AACE,MAAO,OAAA,QAAA;AAAA;AAEb;AAEO,MAAM,eAAkB,GAAA,CAAC,EAAE,cAAA,EAAgB,MAA6B,KAAA;AAC7E,EAAA,IACE,cAAmB,KAAA,KAAA,IACnB,cAAmB,KAAA,MAAA,IACnB,mBAAmB,QACnB,EAAA;AACA,IAAO,OAAA,IAAA;AAAA;AAET,EAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,IAAA,OAAO,IAAS,KAAA,QAAA;AAAA;AAElB,EAAI,IAAA,OAAO,IAAM,EAAA,IAAA,KAAS,QAAU,EAAA;AAClC,IAAA,OAAO,MAAM,IAAS,KAAA,QAAA;AAAA;AAGxB,EAAO,OAAA,KAAA;AACT;AAEa,MAAA,mBAAA,GAAsB,CACjC,MAAA,KAAA,CAEC,gBAAiB,CAAA,MAAA,CAAO,IAAI,CAAA,GAAI,MAAO,CAAA,IAAA,CAAK,IAAO,GAAA,MAAA,CAAO,IAC3D,MAAA;AAEK,MAAM,QAAW,GAAA,CAAC,MACvB,KAAA,OAAO,OAAO,GAAQ,KAAA;AAEX,MAAA,WAAA,GAAc,CAAC,MAAA,KAC1B,KAAM,CAAA,OAAA,CAAQ,OAAO,OAAO,CAAA,IAAK,MAAO,CAAA,OAAA,CAAQ,MAAS,GAAA;AAE9C,MAAA,UAAA,GAAa,CAAC,MAAA,KAAoC,MAAO,CAAA;AAEzD,MAAA,YAAA,GAAe,CAAC,EAAE,cAAe,EAAA,KAC5C,mBAAmB,KACf,CAAA,GAAA,KAAA,GACA,cAAmB,KAAA,MAAA,IAAU,cAAmB,KAAA;AAEzC,MAAA,kBAAA,GAAqB,CAAC,IAAoC,MAAA;AAAA,EACrE;AACF,CAAA;AAKO,MAAM,mBAAmB,CAC9B,IAAA,KAEA,OAAO,IAAS,KAAA,WAAA,IAAe,OAAO,IAAS,KAAA;AAEjD,MAAM,mBAAmB,EAAC;AAEnB,MAAM,oBAAuB,GAAA,CAClC,QAEA,KAAA,OAAQ,UAAkC,IAAS,KAAA;AAExC,MAAA,iBAAA,GAAoB,CAC/B,IAEA,KAAA,gBAAA,CAAiB,IAAI,CAAK,IAAA,oBAAA,CAAqB,KAAK,QAAQ;AAEvD,MAAM,mBAAmB,CAC9B,QAAA,KAEA,OAAQ,QAA6B,EAAA,IAAA,KAAS,eAC9C,QAAa,IAAA;AAEF,MAAA,mBAAA,GAAsB,CACjC,QAAA,KAEA,OAAQ,QAAA,EAAgC,SAAS,WACjD,IAAA,KAAA,CAAM,OAAS,CAAA,QAAA,CAA+B,MAAM;AAE/C,MAAM,kBAAqB,GAAA,CAChC,IAEA,KAAA,gBAAA,CAAiB,IAAI,CAAA,IAAK,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,KAAK,CAAK,IAAA,IAAA,CAAK,MAAM,MAAS,GAAA;AAEtE,MAAM,4BAA4B,CACvC,QAAA,KAEA,aAAa,KACb,CAAA,IAAA,OAAQ,UAAsC,GAAQ,KAAA;AAEjD,SAAS,eACd,OACW,EAAA;AACX,EAAA,MAAM,QAAQ,YAAa,CAAA,KAAA;AAC3B,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,OAAO,OAAQ,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,QAAQ,CAAM,KAAA;AACxC,MAAI,IAAA,OAAO,WAAW,QAAU,EAAA;AAC9B,QAAI,GAAA,CAAA,MAAM,IAAI,KAAQ,GAAA,CAAA;AAAA,OACjB,MAAA;AACL,QAAI,GAAA,CAAA,MAAA,CAAO,IAAI,CAAA,GAAI,KAAQ,GAAA,CAAA;AAAA;AAE7B,MAAO,OAAA,GAAA;AAAA,KACT,EAAG,EAAe,CAAA;AAAA,GACb,MAAA;AACL,IAAO,OAAA,gBAAA;AAAA;AAEX;AAEO,SAAS,eAAe,OAA6B,EAAA;AAC1D,EAAA,MAAM,UAAoB,EAAC;AAC3B,EAAM,MAAA,cAAA,GAAiB,aAAa,KAAQ,GAAA,CAAA;AAC5C,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,OAAQ,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AAC1C,IAAA,OAAA,CAAQ,CAAC,CAAA,GAAI,OAAQ,CAAA,CAAC,CAAI,GAAA,cAAA;AAC1B,IAAA,OAAA,CAAQ,CAAI,GAAA,CAAC,CAAI,GAAA,OAAA,CAAQ,IAAI,CAAC,CAAA;AAC9B,IAAA,OAAA,CAAQ,CAAI,GAAA,CAAC,CAAI,GAAA,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA;AAEhC,EAAO,OAAA,OAAA;AACT;AAEA,MAAM2D,KAAM,GAAA,CAAA;AAEL,MAAM,YAAe,GAAA;AAAA,EAC1B,GAAK,EAAA,CAAA;AAAA,EACL,UAAY,EAAA,CAAA;AAAA,EACZ,OAAS,EAAA,CAAA;AAAA,EACT,WAAa,EAAA,CAAA;AAAA,EACb,KAAO,EAAA,CAAA;AAAA,EACP,KAAO,EAAA,CAAA;AAAA,OACPA,KAAA;AAAA,EACA,QAAU,EAAA,CAAA;AAAA,EACV,KAAO,EAAA,CAAA;AAAA;AAAA,EAEP,UAAY,EAAA,YAAA;AAAA,EACZ,WAAa,EAAA,aAAA;AAAA,EACb,YAAc,EAAA,cAAA;AAAA,EACd,eAAiB,EAAA;AACnB;AAGA,MAAM,YAAA,GAAe,CACnB,OAAA,EACA,MACG,KAAA;AACH,EAAM,MAAA,EAAE,aAAgB,GAAA,MAAA;AACxB,EAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AACnC,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,OAAA,CAAQ,QAAQ,CAAK,EAAA,EAAA;AACvC,MAAA,MAAM,EAAE,WAAa,EAAA,MAAA,GAAS,CAAG,CAAA,EAAA,GAAI,QAAQ,CAAC,CAAA;AAC9C,MAAA,IAAI,SAAS,WAAa,EAAA;AACxB,QAAQ,OAAA,CAAA,MAAA,CAAO,CAAG,EAAA,CAAA,EAAG,MAAM,CAAA;AAC3B,QAAO,OAAA,OAAA;AAAA;AACT;AACF;AAEF,EAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AACnB,EAAO,OAAA,OAAA;AACT,CAAA;AAEa,MAAA,kBAAA,GAAqB,CAChC,OAC8B,KAAA;AAC9B,EAAI,IAAA,OAAA,CAAQ,CAAC,CAAA,EAAG,OAAS,EAAA;AACvB,IAAA,MAAM,CAAC,WAAA,EAAa,GAAG,iBAAiB,CAAI,GAAA,OAAA;AAI5C,IAAY,WAAA,CAAA,OAAA,CAAQ,OAAQ,CAAA,CAACC,YAAgB,KAAA;AAC3C,MAAA,YAAA,CAAa,mBAAmBA,YAAW,CAAA;AAAA,KAC5C,CAAA;AACD,IAAO,OAAA,iBAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,OAAA;AAAA;AAEX;AAEO,SAAS,kBAAmB,CAAA;AAAA,EACjC,cAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAY,GAAA;AACd,CAGE,EAAA;AACA,EAAI,IAAA,OAAA,IAAW,OAAQ,CAAA,MAAA,GAAS,CAAG,EAAA;AACjC,IAAM,MAAA,gBAAA,GAAmB,mBAAmB,OAAO,CAAA;AAEnD,IAAA,MAAM,CAAC,cAAA,EAAgB,IAAI,CAAA,GAAI,gBAAiB,CAAA,MAAA;AAAA,MAG9C,CAAC,MAAQ,EAAA,MAAA,EAAQ,CAAM,KAAA;AACrB,QAAM,MAAA,CAAC,CAAG,EAAA,CAAC,CAAI,GAAA,MAAA;AACf,QAAA,IAAI,OAAQ,CAAA,QAAA,CAAS,MAAO,CAAA,IAAI,CAAG,EAAA;AACjC,UAAA,CAAA,CAAE,IAAK,CAAA;AAAA,YACL,GAAG,MAAA;AAAA,YACH,WAAa,EAAA;AAAA,WACd,CAAA;AAAA,SACI,MAAA;AACL,UAAA,CAAA,CAAE,KAAK,MAAM,CAAA;AAAA;AAGf,QAAO,OAAA,MAAA;AAAA,OACT;AAAA,MACA,CAAC,EAAI,EAAA,EAAE;AAAA,KACT;AACA,IAAI,IAAA,cAAA,CAAe,MAAW,KAAA,OAAA,CAAQ,MAAQ,EAAA;AAC5C,MAAM,MAAA,KAAA;AAAA,QACJ,uEAAuE,IAAK,CAAA,SAAA;AAAA,UAC1E;AAAA,SACD,CAAA,CAAA;AAAA,OACH;AAAA;AAGF,IAAM,MAAA,SAAA,GAAY,KAAK,MAAW,KAAA,CAAA;AAElC,IAAA,MAAM,aAAa,OAAQ,CAAA,MAAA;AAC3B,IAAA,MAAM,SAAuC,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MAAM,GAAQ,KAAA;AAEtE,MAAA,MAAM,SAAS,cAAe,CAAA,IAAA;AAAA,QAC5B,CAAC,GAAQ,KAAA,GAAA,CAAI,IAAS,KAAA;AAAA,OACxB;AACA,MAAO,OAAA;AAAA,QACL,GAAG,MAAA;AAAA,QACH,YAAY,UAAa,GAAA;AAAA,OAC3B;AAAA,KACD,CAAA;AAED,IAAM,MAAA,KAAA,GAAQ,SACV,GAAA,cAAA,GACA,IAAK,CAAA,GAAA;AAAA,MACH,cAAA;AAAA,MACA,SAAU,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,CAAE,CAAA,KAAK,CAAE,CAAA,MAAA,CAAO,CAAC,CAAA,EAAG,CAAM,KAAA,CAAA,GAAI,CAAC,CAAI,GAAA;AAAA,KAC1D;AAEJ,IAAA,MAAM,QAAW,GAAA;AAAA,MACf,YAAc,EAAA,CAAA;AAAA,MACd,OAAS,EAAA,SAAA;AAAA,MACT,OAAA,EAAS,CAAC,WAAW,CAAA;AAAA,MACrB,OAAS,EAAA,IAAA;AAAA,MACT,cAAgB,EAAA,SAAA;AAAA,MAChB,IAAM,EAAA,WAAA;AAAA,MACN;AAAA,KACF;AAEA,IAAA,MAAM,wBAAmD,EAAC;AAC1D,IAAA,IAAI,QAAW,GAAA,CAAA;AACf,IAAA,KAAA,MAAW,UAAU,IAAM,EAAA;AACzB,MAAA,qBAAA,CAAsB,IAAK,CAAA;AAAA,QACzB,GAAG,MAAA;AAAA,QACH,YAAA,EAAc,MAAO,CAAA,MAAA,GAAS,CAAK,CAAA,GAAA;AAAA,OACpC,CAAA;AACD,MAAI,IAAA,CAAC,OAAO,MAAQ,EAAA;AAClB,QAAY,QAAA,IAAA,CAAA;AAAA;AACd;AAGF,IAAO,OAAA,CAAC,UAAU,qBAAqB,CAAA;AAAA;AAEzC,EAAA,OAAO,CAAC,IAAA,EAAM,kBAAmB,CAAA,OAAO,CAAC,CAAA;AAC3C;AAEO,MAAM,aAAgB,GAAA,CAC3B,MACoC,KAAA,MAAA,CAAO,OAAY,KAAA;AAO5C,MAAA,wBAAA,GAA2B,CAAC,cAAgC,KAAA;AACvE,EAAA,IAAI,cAAgB,EAAA;AAClB,IAAM,MAAA,CAAC,MAAM,CAAA,GAAI,cAAe,CAAA,OAAA;AAChC,IAAI,IAAA,aAAA,CAAc,MAAM,CAAG,EAAA;AACzB,MAAA,OAAO,MAAO,CAAA,cAAA;AAAA;AAChB;AAEJ;AAEO,MAAM,eAAkB,GAAA,CAAC,KAC9B,KAAA,OAAO,KAAU,KAAA,QAAA,KAAa,KAAM,CAAA,QAAA,CAAS,GAAG,CAAA,IAAK,KAAM,CAAA,QAAA,CAAS,GAAG,CAAA;AAElE,MAAM,WAAc,GAAA,CACzB,MACA,EAAA,GAAA,EACA,cAEC,MAAO,CAAA,IAAA,EAAkC,IAAS,KAAA,MAAA,IACnD,gBAAgB,GAAI,CAAA,SAAA,CAAU,MAAO,CAAA,IAAI,CAAC,CAAC;AAEtC,MAAM,YAAe,GAAA,CAAC,MAC1B,KAAA,MAAA,CAAO,MAAkC,IAAS,KAAA;AAExC,MAAA,iBAAA,GAAoB,CAC/B,OAC8B,KAAA;AAC9B,EAAA,MAAM,oBAA+C,EAAC;AACtD,EAAA,MAAM,qBAAgD,EAAC;AACvD,EAAA,MAAM,cAAyC,EAAC;AAEhD,EAAA,IAAI,eAAkB,GAAA,CAAA;AACtB,EAAA,KAAA,MAAW,UAAU,OAAS,EAAA;AAE5B,IAAA,QAAO,OAAO,GAAI;AAAA,MAChB,KAAK,MAAA;AAAQ,QAAA;AACX,UAAA,iBAAA,CAAkB,IAAK,CAAA;AAAA,YACrB,GAAG,MAAA;AAAA,YACH,MAAQ,EAAA,KAAA,CAAA;AAAA,YACR,YAAc,EAAA;AAAA,WACf,CAAA;AACD,UAAA,eAAA,IAAmB,MAAO,CAAA,KAAA;AAAA;AAE5B,QAAA;AAAA;AAAA,MAEA,KAAK,OAAA;AAAS,QAAA,kBAAA,CAAmB,QAAQ,MAAM,CAAA;AAAG,QAAA;AAAA,MAClD;AAAS,QAAA,WAAA,CAAY,KAAK,MAAM,CAAA;AAAA;AAClC;AAGF,EAAA,IAAI,kBAAkB,MAAQ,EAAA;AAC5B,IAAA,iBAAA,CAAkB,IAAK,CAAA;AAAA,MACrB,GAAI,kBAAkB,GAAI,EAAA;AAAA,MAC1B,MAAQ,EAAA;AAAA,KACT,CAAA;AAAA;AAGH,EAAA,MAAM,aAAa,iBAAkB,CAAA,MAAA,GACjC,iBAAkB,CAAA,MAAA,CAAO,WAAW,CACpC,GAAA,WAAA;AAEJ,EAAA,IAAI,mBAAmB,MAAQ,EAAA;AAC7B,IAAA,MAAM,6BAAwD,EAAC;AAC/D,IAAA,IAAI,gBAAmB,GAAA,CAAA;AACvB,IAAA,KAAA,MAAW,UAAU,kBAAoB,EAAA;AACvC,MAAA,0BAAA,CAA2B,OAAQ,CAAA;AAAA,QACjC,GAAG,MAAA;AAAA,QACH,YAAc,EAAA;AAAA,OACf,CAAA;AACD,MAAA,gBAAA,IAAoB,MAAO,CAAA,KAAA;AAAA;AAE7B,IAA2B,0BAAA,CAAA,CAAC,EAAE,MAAS,GAAA,IAAA;AACvC,IAAO,OAAA,UAAA,CAAW,OAAO,0BAA0B,CAAA;AAAA,GAC9C,MAAA;AACL,IAAO,OAAA,UAAA;AAAA;AAEX;AAEa,MAAA,oBAAA,GAAuB,CAClC,OAAA,EACA,gBACG,KAAA;AACH,EAAA,IAAI,eAAkB,GAAA,CAAA;AACtB,EAAA,IAAI,gBAAmB,GAAA,CAAA;AACvB,EAAA,IAAI,aAAgB,GAAA,CAAA;AACpB,EAAA,KAAA,MAAW,UAAU,OAAS,EAAA;AAC5B,IAAA,MAAM,EAAE,MAAA,EAAQ,GAAK,EAAA,KAAA,EAAU,GAAA,MAAA;AAC/B,IAAM,MAAA,YAAA,GAAe,SAAS,CAAI,GAAA,KAAA;AAClC,IAAA,IAAI,QAAQ,MAAQ,EAAA;AAClB,MAAmB,eAAA,IAAA,YAAA;AAAA,KACrB,MAAA,IAAW,QAAQ,OAAS,EAAA;AAC1B,MAAoB,gBAAA,IAAA,YAAA;AAAA,KACf,MAAA;AACL,MAAiB,aAAA,IAAA,YAAA;AAAA;AACnB;AAEF,EAAO,OAAA;AAAA,IACL,iBAAiB,eAAkB,GAAA,gBAAA;AAAA,IACnC,kBAAkB,gBAAmB,GAAA,gBAAA;AAAA,IACrC;AAAA,GACF;AACF;AAEa,MAAA,gBAAA,GAAmB,CAC9B,OACkB,KAAA;AAClB,EAAI,IAAA,OAAA,CAAQ,IAAK,CAAA,WAAW,CAAG,EAAA;AAC7B,IAAA,MAAM,kBAAkB,OAAQ,CAAA,MAAA;AAAA,MAC9B,CAAC,GAAK,EAAA,EAAE,OAAAC,EAAAA,QAAAA,EAAc,KAAA,IAAA,CAAK,GAAI,CAAA,GAAA,EAAKA,QAAS,EAAA,MAAA,IAAU,CAAC,CAAA;AAAA,MACxD;AAAA,KACF;AAEA,IAAA,IAAI,OAAoC,GAAA,KAAA,CAAA;AACxC,IAAA,MAAM,gBAA+B,EAAC;AACtC,IAAI,IAAA,gBAAA;AACJ,IAAA,KAAA,IAAS,KAAQ,GAAA,CAAA,EAAG,KAAQ,GAAA,eAAA,EAAiB,KAAS,EAAA,EAAA;AACpD,MAAA,gBAAA,GAAmB,EAAC;AACpB,MAAA,OAAA,CAAQ,QAAQ,CAAC,EAAE,SAAS,aAAgB,GAAA,WAAA,EAAa,OAAY,KAAA;AACnE,QAAM,MAAA,KAAA,GAAQ,aAAc,CAAA,KAAK,CAAK,IAAA,EAAA;AACtC,QAAI,IAAA,OAAA,IAAW,OAAQ,CAAA,KAAA,KAAU,KAAO,EAAA;AACtC,UAAA,OAAA,CAAQ,KAAS,IAAA,KAAA;AAAA,SACZ,MAAA;AACL,UAAU,OAAA,GAAA,EAAE,OAAO,KAAM,EAAA;AACzB,UAAA,gBAAA,CAAiB,KAAK,OAAO,CAAA;AAAA;AAC/B,OACD,CAAA;AACD,MAAA,aAAA,CAAc,KAAK,gBAAgB,CAAA;AAAA;AAGrC,IAAO,OAAA,aAAA;AAAA;AAET,EAAO,OAAA,WAAA;AACT;AAEO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,GAAA;AAAA;AAAA;AAAA,EAGA,YAAA,GAAe,GAAQ,KAAA,MAAA,GAAS,CAAI,GAAA,CAAA;AAAA,EACpC;AACF,CAAA,KACE,QAAQ,MACH,GAAA;AAAA,EACC,IAAM,EAAA,YAAA;AAAA,EACN,KAAA;AAAA,EACA,aAAe,EAAA,CAAA,EAAG,YAAe,GAAA,KAAA,GAAQ,CAAC,CAAA,EAAA;AAC5C,CAAA,GACA,QAAQ,OACL,GAAA;AAAA,EACC,KAAO,EAAA,YAAA;AAAA,EACP,KAAA;AAAA,EACA,aAAA,EAAe,CAAG,EAAA,YAAA,GAAe,KAAK,CAAA,EAAA;AACxC,CAAA,GACA,EAAE,KAAM;AAET,MAAM,eAAkB,GAAA,CAC7B,YACA,EAAA,MAAA,EACA,OACG,KAAA;AACH,EAAA,OAAO,YACJ,CAAA,MAAA,CAAO,CAAC,GAAA,KAAQ,IAAI,MAAW,KAAA,MAAA,CAAO,IAAI,CAAA,CAC1C,OAAO,EAAE,MAAA,EAAQ,MAAO,CAAA,IAAA,EAAM,SAAS,CAAA;AAC5C;AASa,MAAA,qBAAA,GAAwB,CAAC,KAA4B,KAAA;AAChE,EAAI,IAAA,KAAA,CAAM,QAAQ,MAAQ,EAAA;AACxB,IAAA,MAAM,CAAC,WAAA,EAAa,iBAAiB,CAAA,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,IAAI,WAAa,EAAA;AACf,MAAA,OAAO,CAAC,WAAsC,CAAE,CAAA,MAAA,CAAO,iBAAiB,CAAA;AAAA;AAC1E,GACS,MAAA,IAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,GAAG,OAAS,EAAA;AACpC,IAAO,OAAA,kBAAA,CAAmB,MAAM,OAAO,CAAA;AAAA;AAEzC,EAAA,OAAO,KAAM,CAAA,OAAA;AACf;AAEO,MAAM,qBAAqB,CAChC,OAAA,EACA,SAEA,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACtB,EAAM,MAAA,MAAA,GAAS,WAAY,CAAA,MAAA,EAAQ,IAAI,CAAA;AACvC,EAAA,IAAI,WAAW,KAAW,CAAA,EAAA;AACxB,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH;AAAA,KACF;AAAA,GACF,MAAA,IAAW,OAAO,MAAQ,EAAA;AACxB,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH,MAAQ,EAAA,KAAA;AAAA,KACV;AAAA,GACK,MAAA;AACL,IAAO,OAAA,MAAA;AAAA;AAEX,CAAC;AAEI,MAAM,UAAa,GAAA,CAAC,OACzB,KAAA,OAAA,CAAQ,IAAI,CAAC,GAAA,KAAS,GAAI,CAAA,MAAA,GAAS,EAAE,GAAG,GAAA,EAAK,MAAQ,EAAA,KAAA,CAAA,KAAc,GAAI;AAE5D,MAAA,YAAA,GAAe,CAAC,OAC3B,KAAA,OAAA,CAAQ,KAAK,CAAC,GAAA,KAAQ,IAAI,MAAM;AAElC,MAAM,WAAc,GAAA,CAAC,MAA0B,EAAA,EAAE,UAAwB,KAAA;AACvE,EAAM,MAAA,OAAA,GAAU,SAAS,IAAK,CAAA,CAAC,YAAY,OAAQ,CAAA,MAAA,KAAW,OAAO,IAAI,CAAA;AACzE,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,OAAO,QAAS,CAAA,MAAA,GAAS,CACpB,GAAA,CAAA,QAAA,CAAS,OAAQ,CAAA,OAAO,CAAI,GAAA,CAAA,KAAM,OAAQ,CAAA,QAAA,KAAa,GAAM,GAAA,CAAA,GAAI,MAClE,OAAQ,CAAA,QAAA;AAAA;AAEhB,CAAA;AAGa,MAAA,aAAA,GAAgB,CAAC,IAAiB,KAAA;AAC7C,EAAM,MAAA,GAAA,GAAM,IAAK,CAAA,OAAA,CAAQ,GAAG,CAAA;AAC5B,EAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;AACd,IAAO,OAAA,IAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,IAAA,CAAK,KAAM,CAAA,CAAA,EAAG,GAAG,CAAA;AAAA;AAE5B;AAEa,MAAA,cAAA,GAAiB,CAAC,MAA6B,KAAA;AAC1D,EAAA,IAAI,OAAO,KAAO,EAAA;AAChB,IAAA,OAAO,MAAO,CAAA,KAAA;AAAA,GACL,MAAA,IAAA,kBAAA,CAAmB,MAAO,CAAA,IAAI,CAAG,EAAA;AAC1C,IAAA,MAAM,EAAE,IAAA,EAAS,GAAA,0BAAA,CAA2B,MAAM,CAAA;AAElD,IAAA,OAAO,QAAQ,MAAO,CAAA,IAAA;AAAA,GACjB,MAAA;AACL,IAAA,OAAO,MAAO,CAAA,IAAA;AAAA;AAElB;AAEa,MAAA,UAAA,GAAa,CACxB,OAAA,EACA,UACwC,KAAA;AACxC,EAAA,MAAM,SAAS,OAAQ,CAAA,IAAA,CAAK,CAAC,GAAQ,KAAA,GAAA,CAAI,SAAS,UAAU,CAAA;AAC5D,EAAA,IAAI,MAAQ,EAAA;AACV,IAAO,OAAA,MAAA;AAAA,GACF,MAAA;AACL,IAAA,MAAM,cAAc,OAAQ,CAAA,IAAA;AAAA,MAC1B,CAAC,QAAQ,GAAI,CAAA;AAAA,KACf;AACA,IAAA,IAAI,WAAa,EAAA;AACf,MAAO,OAAA,UAAA,CAAW,WAAY,CAAA,OAAA,EAAS,UAAU,CAAA;AAAA;AACnD;AAEJ;AAWgB,SAAA,YAAA,CACd,OACA,EAAA,MAAA,EACA,OACA,EAAA;AACA,EAAM,MAAA,YAAA,GACJ,OAAO,MAAA,KAAW,QACd,GAAA,OAAA,CAAQ,IAAK,CAAA,CAAC,GAAQ,KAAA,GAAA,CAAI,IAAS,KAAA,MAAM,CACzC,GAAA,MAAA;AACN,EAAA,IAAI,YAAc,EAAA;AAChB,IAAA,MAAM,oBAAoB,OACtB,GAAA,EAAE,GAAG,YAAc,EAAA,GAAG,SACtB,GAAA,YAAA;AACJ,IAAA,OAAO,OAAQ,CAAA,GAAA;AAAA,MAAI,CAAC,GAClB,KAAA,GAAA,CAAI,IAAS,KAAA,iBAAA,CAAkB,OAAO,iBAAoB,GAAA;AAAA,KAC5D;AAAA,GACK,MAAA;AACL,IAAA,MAAM,MAAM,6CAA6C,CAAA;AAAA;AAE7D;AAEa,MAAA,mBAAA,GAAsB,CAAC,MAAA,KAA6B,MAAO,CAAA;AAE3D,MAAA,yBAAA,GAA4B,CACvC,GAAA,EACA,SACkB,KAAA;AAClB,EAAO,OAAA,MAAA,CAAO,OAAQ,CAAA,SAAS,CAAE,CAAA,MAAA;AAAA,IAC/B,CAAC,GAAA,EAAK,CAAC,OAAA,EAAS,GAAG,CAAM,KAAA;AACvB,MAAI,GAAA,CAAA,OAAO,CAAI,GAAA,GAAA,CAAI,GAAG,CAAA;AACtB,MAAO,OAAA,GAAA;AAAA,KACT;AAAA,IACA;AAAC,GACH;AACF;AAEa,MAAA,aAAA,GAAgB,CAAC,OAAuC,KAAA;AACnE,EAAO,OAAA,aAAA,CAAc,QAAQ,CAAC,CAAC,KAAK,OAAQ,CAAA,CAAC,EAAE,cAAmB,KAAA,KAAA;AACpE;AAEO,MAAM,oBAAuB,GAAA,CAClC,OACA,EAAA,OAAA,EACA,KACwC,KAAA;AACxC,EAAA,MAAM,iBAA4C,EAAC;AACnD,EAAA,IAAI,OAAU,GAAA,CAAA;AACd,EAAA,IAAI,eAAkB,GAAA,KAAA;AAEtB,EAAA,KAAA,IAAS,eAAe,CAAG,EAAA,CAAA,GAAI,GAAG,CAAI,GAAA,OAAA,CAAQ,QAAQ,CAAK,EAAA,EAAA;AACzD,IAAM,MAAA,MAAA,GAAS,QAAQ,CAAC,CAAA;AAGxB,IAAA,IAAI,OAAO,MAAQ,EAAA;AACjB,MAAA;AAAA,eACS,eAAiB,EAAA;AAC1B,MAAI,IAAA,MAAA,CAAO,QAAQ,OAAS,EAAA;AAC1B,QAAA,cAAA,CAAe,KAAK,MAAM,CAAA;AAAA;AAC5B,KACS,MAAA,IAAA,YAAA,GAAe,MAAO,CAAA,KAAA,GAAQ,OAAS,EAAA;AAChD,MAAI,IAAA,MAAA,CAAO,QAAQ,MAAQ,EAAA;AACzB,QAAA,cAAA,CAAe,KAAK,MAAM,CAAA;AAAA,OAC5B,MAAA,IACE,eAAe,MAAO,CAAA,KAAA,GAAQ,QAAQ,CAAI,GAAA,CAAC,CAAG,EAAA,KAAA,GAC9C,OACA,EAAA;AACA,QAAA,cAAA,CAAe,KAAK,MAAM,CAAA;AAAA,OACrB,MAAA;AACL,QAAA,OAAA,IAAW,MAAO,CAAA,KAAA;AAAA;AACpB,KACF,MAAA,IAAW,eAAe,KAAO,EAAA;AAC/B,MAAkB,eAAA,GAAA,IAAA;AAAA,KACb,MAAA;AACL,MAAA,cAAA,CAAe,KAAK,MAAM,CAAA;AAAA;AAE5B,IAAA,YAAA,IAAgB,MAAO,CAAA,KAAA;AAAA;AAGzB,EAAO,OAAA,CAAC,gBAAgB,OAAO,CAAA;AACjC;AAEO,MAAM,WAAc,GAAA,CAAC,MAC1B,KAAA,MAAA,CAAO,MAAW,KAAA;AAEP,MAAA,oBAAA,GAAuB,CAClC,OAAA,EACA,KACG,KAAA;AACH,EAAI,IAAA,OAAA,CAAQ,KAAM,CAAA,WAAW,CAAG,EAAA;AAC9B,IAAA,OAAO,QAAQ,KAAK,CAAA;AAAA,GACf,MAAA;AACL,IAAA,OAAO,OAAQ,CAAA,MAAA,CAAO,WAAW,CAAA,CAAE,GAAG,KAAK,CAAA;AAAA;AAE/C;AAEA,MAAM,SAAEC,OAAO,WAAAC,SAAA,EAAY,GAAA,YAAA;AAEd,MAAA,YAAA,GAAe,CAC1B,OAAA,EACA,GACuB,KAAA;AACvB,EAAM,MAAA,EAAE,CAACD,OAAK,GAAG,OAAO,CAACC,SAAO,GAAG,MAAA,EAAW,GAAA,GAAA;AAG9C,EAAI,IAAA,MAAA,IAAU,KAAQ,GAAA,OAAA,CAAQ,MAAQ,EAAA;AACpC,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,MAAA,IAAW,UAAU,CAAG,EAAA;AACtB,IAAO,OAAA,KAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,MAAM,EAAE,OAAA,EAAY,GAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA;AACrC,IAAA,OAAO,UAAU,GAAG,CAAA;AAAA;AAExB;AAEO,MAAM,aAAgB,GAAA,CAC3B,OACA,EAAA,GAAA,EACA,SACkB,KAAA;AAClB,EAAM,MAAA,EAAE,CAACD,OAAK,GAAG,OAAO,CAACC,SAAO,GAAG,MAAA,EAAW,GAAA,GAAA;AAG9C,EAAI,IAAA,MAAA,IAAU,KAAQ,GAAA,OAAA,CAAQ,MAAQ,EAAA;AACpC,IAAO,OAAA,IAAA;AAAA,GACT,MAAA,IAAW,UAAU,CAAG,EAAA;AACtB,IAAO,OAAA,OAAA;AAAA,GACF,MAAA;AAEL,IAAA,MAAM,EAAE,IAAM,EAAA,cAAA,EAAmB,GAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAElD,IAAA,MAAM,QAAQ,cAAe,CAAA,GAAA,CAAI,SAAU,CAAA,IAAI,CAAC,CAAC,CAAA;AACjD,IAAO,OAAA,KAAA;AAAA;AAEX;AAEa,MAAA,oBAAA,GAAuB,CAClC,cACwB,KAAA;AACxB,EAAA,QAAQ,cAAgB;AAAA,IACtB,KAAK,KAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAO,OAAA,QAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAO,OAAA,SAAA;AAAA,IACT;AACE,MAAO,OAAA,QAAA;AAAA;AAEb;AAEa,MAAA,sBAAA,GAAyB,CAGpC,MAAA,EACA,UACM,KAAA;AACN,EAAA,MAAM,EAAE,cAAgB,EAAA,IAAA,GAAO,oBAAqB,CAAA,cAAc,GAChE,GAAA,MAAA;AAEF,EAAI,IAAA,gBAAA,CAAiB,IAAI,CAAG,EAAA;AAC1B,IAAO,OAAA,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,EAAE,GAAG,IAAA,EAAM,YAAa,EAAA;AAAA,GAC7C,MAAA;AACL,IAAO,OAAA,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,EAAE,IAAM,EAAA,IAAA,EAAM,YAAa,EAAA;AAAA;AAEzD;AAEgB,SAAA,gBAAA,CACd,QACA,IACG,EAAA;AACH,EAAA,OAAO,iBAAiB,MAAO,CAAA,IAAI,IAC/B,EAAE,GAAG,QAAQ,IAAM,EAAA,EAAE,GAAG,MAAO,CAAA,IAAA,EAAM,MAAM,IAAK,EAAA,KAChD,EAAE,GAAG,QAAQ,IAAK,EAAA;AACxB;AAEa,MAAA,uBAAA,GAA0B,CAGrC,MAAA,EACA,QACM,KAAA;AACN,EAAA,MAAM,EAAE,cAAgB,EAAA,IAAA,GAAO,oBAAqB,CAAA,cAAc,GAChE,GAAA,MAAA;AAEF,EAAI,IAAA,gBAAA,CAAiB,IAAI,CAAG,EAAA;AAC1B,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAM,EAAA;AAAA,QACJ,GAAG,IAAA;AAAA;AAAA,QAEH;AAAA;AACF,KACF;AAAA,GACK,MAAA;AACL,IAAO,OAAA,EAAE,GAAG,MAAQ,EAAA,IAAA,EAAM,EAAE,IAAM,EAAA,IAAA,EAAM,UAAW,EAAA;AAAA;AAEvD;AAEA,MAAM,mBAAmB,EAAC;AACb,MAAA,2BAAA,GAA8B,CACzC,MACyB,KAAA;AACzB,EAAI,IAAA,gBAAA,CAAiB,MAAO,CAAA,IAAI,CAAG,EAAA;AACjC,IAAO,OAAA,MAAA,CAAO,KAAK,UAAc,IAAA,gBAAA;AAAA,GAC5B,MAAA;AACL,IAAO,OAAA,gBAAA;AAAA;AAEX;AAOa,MAAA,cAAA,GACX,CAAC,WAAA,KAA2B,CAAC,MAAA,KAC3B,MAAO,CAAA,MAAA,KAAW,QAAY,IAAA,WAAA,EAAa,QAAS,CAAA,MAAA,CAAO,IAAI;AAE5D,MAAM,4BAA+B,GAAA,CAC1C,iBACA,EAAA,gBAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,YACJ,CAAC,CAAA,GAAI,eACL,CAAC,MAAA,KACC,OAAO,IAAS,KAAA,CAAA;AACpB,EAAA,IAAI,iBAAkB,CAAA,SAAA,CAAU,SAAU,EAAC,MAAM,CAAI,CAAA,EAAA;AACnD,IAAM,MAAA,KAAA;AAAA,MACJ,qDAAqD,UAAU,CAAA,sBAAA;AAAA,KACjE;AAAA;AAEF,EAAA,MAAM,sBAAyB,GAAA,gBAAA,CAAiB,SAAU,CAAA,SAAA,EAAW,CAAA;AACrE,EAAA,IAAI,2BAA2B,CAAI,CAAA,EAAA;AACjC,IAAM,MAAA,KAAA;AAAA,MACJ,qDAAqD,UAAU,CAAA,iBAAA;AAAA,KACjE;AAAA;AAGF,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,GAAG,iBAAiB,sBAAsB;AAAA,GAC5C;AAGA,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAA,KAAA,IAAS,CAAI,GAAA,sBAAA,GAAyB,CAAG,EAAA,CAAA,IAAK,GAAG,CAAK,EAAA,EAAA;AACpD,IAAA,MAAM,EAAE,IAAA,EAAS,GAAA,gBAAA,CAAiB,CAAC,CAAA;AACnC,IAAA,KAAA,GAAQ,iBAAkB,CAAA,SAAA,CAAU,SAAU,CAAA,IAAI,CAAC,CAAA;AACnD,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA;AAAA;AACF;AAGF,EAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,IAAA,OAAO,CAAC,SAAS,CAAE,CAAA,MAAA,CAAO,iBAAiB,CAAA;AAAA,GACtC,MAAA;AACL,IAAA,MAAM,UAA8B,EAAC;AACrC,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,iBAAA,CAAkB,QAAQ,CAAK,EAAA,EAAA;AACjD,MAAQ,OAAA,CAAA,IAAA,CAAK,iBAAkB,CAAA,CAAC,CAAC,CAAA;AACjC,MAAA,IAAI,MAAM,KAAO,EAAA;AACf,QAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AACtB,QAAA,KAAA,GAAQ,MAAO,CAAA,gBAAA;AAAA;AACjB;AAEF,IAAO,OAAA,OAAA;AAAA;AAEX;AAEA,MAAM,uBAA0B,GAAA,UAAA;AAEzB,MAAM,qBAAqB,CAAC,UAAA,KACjC,eAAe,KAAa,CAAA,IAAA,uBAAA,CAAwB,KAAK,UAAU;AAExD,MAAA,0BAAA,GAA6B,CACxC,MAC8B,KAAA;AAC9B,EAAI,IAAA,kBAAA,CAAmB,MAAO,CAAA,IAAI,CAAG,EAAA;AACnC,IAAM,MAAA,CAAC,MAAM,cAAgB,EAAA,UAAU,IAAI,MAAO,CAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAClE,IAAA,IAAI,cAAkB,IAAA,CAAC,mBAAoB,CAAA,cAAc,CAAG,EAAA;AAC1D,MAAM,MAAA,KAAA;AAAA,QACJ,CAA4C,yCAAA,EAAA,cAAc,CAAiC,8BAAA,EAAA,MAAA,CAAO,IAAI,CAAA;AAAA,OACxG;AAAA;AAEF,IAAO,OAAA;AAAA,MACL,MAAM,IAAQ,IAAA,EAAA;AAAA,MACd,YAAY,UAAc,IAAA,EAAA;AAAA,MAC1B,cAAgB,EAAA,mBAAA,CAAoB,cAAc,CAAA,GAC9C,cACA,GAAA,KAAA;AAAA,KACN;AAAA,GACK,MAAA;AACL,IAAA,MAAM,MAAM,CAAwC,sCAAA,CAAA,CAAA;AAAA;AAExD;AAEa,MAAA,uBAAA,GAA0B,CACrC,MAAA,EACA,IACqB,KAAA;AACrB,EAAM,MAAA,GAAG,IAAM,EAAA,UAAU,IAAI,MAAO,CAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAClD,EAAO,OAAA;AAAA,IACL,GAAG,MAAA;AAAA,IACH,MAAM,CAAG,EAAA,IAAI,CAAI,CAAA,EAAA,IAAI,IAAI,UAAU,CAAA;AAAA,GACrC;AACF;AAEa,MAAA,uBAAA,GAA0B,CACrC,MAAA,EACA,IACqB,KAAA;AACrB,EAAM,MAAA,CAAC,QAAQ,UAAU,IAAI,MAAO,CAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAClD,EAAO,OAAA;AAAA,IACL,GAAG,MAAA;AAAA,IACH,MAAM,CAAG,EAAA,IAAI,CAAI,CAAA,EAAA,IAAI,IAAI,UAAU,CAAA;AAAA,GACrC;AACF;AAGa,MAAA,6BAAA,GAAgC,CAC3C,MAAA,EACA,UACqB,KAAA;AACrB,EAAA,MAAM,CAAC,IAAM,EAAA,IAAI,IAAI,MAAO,CAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAC1C,EAAO,OAAA;AAAA,IACL,GAAG,MAAA;AAAA,IACH,MAAM,CAAG,EAAA,IAAI,CAAI,CAAA,EAAA,IAAI,KAAK,UAAU,CAAA;AAAA,GACtC;AACF;AAEO,MAAM,YAAe,GAAA,CAC1B,OACA,EAAA,MAAA,EACA,QACG,KAAA;AACH,EAAM,MAAA,KAAA,GAAQ,QAAQ,SAAU,CAAA,CAAC,QAAQ,GAAI,CAAA,IAAA,KAAS,OAAO,IAAI,CAAA;AACjE,EAAO,OAAA,QAAA,CAAS,OAAS,EAAA,KAAA,EAAO,QAAQ,CAAA;AAC1C;AAEgB,SAAA,aAAA,CAEd,SAAc,MAAW,EAAA;AACzB,EAAO,OAAA,OAAA,CAAQ,IAAI,CAAC,GAAA,KAAS,IAAI,IAAS,KAAA,MAAA,CAAO,IAAO,GAAA,MAAA,GAAS,GAAI,CAAA;AACvE;AAEO,MAAM,2BAA2B,CACtC,EAAE,OAAS,EAAA,KAAA,IACX,sBACG,KAAA;AACH,EAAI,IAAA,OAAO,2BAA2B,UAAY,EAAA;AAChD,IAAO,OAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MAAW,KAAA;AAC7B,MAAA,MAAM,MAAS,GAAA,sBAAA,CAAuB,KAAM,CAAA,KAAA,EAAO,OAAO,IAAI,CAAA;AAC9D,MAAA,IAAI,MAAQ,EAAA;AACV,QAAO,OAAA;AAAA,UACL,GAAG,MAAA;AAAA,UACH,GAAG;AAAA,SACL;AAAA,OACK,MAAA;AACL,QAAO,OAAA,MAAA;AAAA;AACT,KACD,CAAA;AAAA,GACI,MAAA;AACL,IAAO,OAAA,OAAA;AAAA;AAEX;AA+BA,MAAM,cAAiB,GAAA,CACrB,OACA,EAAA,eAAA,EACA,oBAEA,OAAQ,CAAA,MAAA;AAAA,EACN,CAAC,YAAY,MAAW,KAAA;AACtB,IAAI,IAAA,MAAA,CAAO,WAAW,IAAM,EAAA;AAC1B,MAAW,UAAA,CAAA,aAAA,IAAiB,OAAO,QAAY,IAAA,eAAA;AAC/C,MAAW,UAAA,CAAA,aAAA,IAAiB,OAAO,QAAY,IAAA,eAAA;AAC/C,MAAA,UAAA,CAAW,cAAc,MAAO,CAAA,KAAA;AAChC,MAAW,UAAA,CAAA,SAAA,IAAa,OAAO,IAAQ,IAAA,CAAA;AAAA;AAEzC,IAAO,OAAA,UAAA;AAAA,GACT;AAAA,EACA,EAAE,eAAe,CAAG,EAAA,aAAA,EAAe,GAAG,UAAY,EAAA,CAAA,EAAG,WAAW,CAAE;AACpE,CAAA;AAOK,SAAS,oBACd,OACA,EAAA;AAAA,EACE,cAAiB,GAAA,CAAA;AAAA,EACjB,YAAe,GAAA,QAAA;AAAA,EACf,YAAe,GAAA,iBAAA;AAAA,EACf,eAAkB,GAAA,iBAAA;AAAA,EAClB,eAAkB,GAAA;AACpB,CAE2B,EAAA;AAC3B,EAAA,IAAI,iBAAiB,KAAO,EAAA;AAC1B,IAAM,MAAA,EAAE,eAAe,aAAe,EAAA,UAAA,EAAY,WAChD,GAAA,cAAA,CAAe,OAAS,EAAA,eAAA,EAAiB,eAAe,CAAA;AAE1D,IAAA,IAAI,gBAAgB,cAAgB,EAAA;AAClC,MAAO,OAAA,mBAAA,CAAoB,SAAS,eAAe,CAAA;AAAA,KACrD,MAAA,IAAW,gBAAgB,cAAgB,EAAA;AACzC,MAAO,OAAA,OAAA;AAAA,KACT,MAAA,IAAW,aAAa,cAAgB,EAAA;AACtC,MAAO,OAAA,gCAAA;AAAA,QACL,OAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA;AAAA,QACA,eAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA,OACF;AAAA,KACF,MAAA,IAAW,aAAa,cAAgB,EAAA;AACtC,MAAO,OAAA,kCAAA;AAAA,QACL,OAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA,OACF;AAAA;AACF;AAEF,EAAO,OAAA,OAAA;AACT;AAEA,MAAM,mBAAA,GAAsB,CAC1B,OAAA,EACA,eACG,KAAA;AACH,EAAO,OAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MAAW,KAAA;AAC7B,IAAM,MAAA,EAAE,QAAW,GAAA,eAAA,EAAoB,GAAA,MAAA;AACvC,IAAI,IAAA,MAAA,CAAO,UAAU,QAAU,EAAA;AAC7B,MAAO,OAAA,MAAA;AAAA,KACF,MAAA;AACL,MAAO,OAAA;AAAA,QACL,GAAG,MAAA;AAAA,QACH,KAAO,EAAA;AAAA,OACT;AAAA;AACF,GACD,CAAA;AACH,CAAA;AAEA,MAAM,mCAAmC,CACvC,OAAA,EACA,gBACA,UACA,EAAA,eAAA,EACA,cACA,SACG,KAAA;AACH,EAAA,MAAM,cAAc,UAAa,GAAA,cAAA;AACjC,EAAA,MAAM,aAAa,SAAY,GAAA,CAAA;AAC/B,EAAI,IAAA,oBAAA,GAAuB,WAAe,IAAA,SAAA,IAAa,OAAQ,CAAA,MAAA,CAAA;AAC/D,EAAA,IAAI,0BAA0B,OAAQ,CAAA,MAAA;AACtC,EAAA,IAAI,gBAAmB,GAAA,CAAA;AACvB,EAAA,IAAI,UAAa,GAAA,OAAA,CAAQ,GAA6B,CAAA,CAAC,MAAW,KAAA;AAChE,IAAM,MAAA;AAAA,MACJ,QAAW,GAAA,eAAA;AAAA,MACX,KAAQ,GAAA,YAAA;AAAA,MACR,IAAO,GAAA;AAAA,KACL,GAAA,MAAA;AACJ,IAAI,IAAA,UAAA,IAAc,SAAS,CAAG,EAAA;AAC5B,MAAO,OAAA,MAAA;AAAA;AAET,IAAA,MAAM,gBAAgB,KAAQ,GAAA,oBAAA;AAC9B,IAAA,IAAI,gBAAgB,QAAU,EAAA;AAC5B,MAA2B,uBAAA,IAAA,CAAA;AAC3B,MAAA,gBAAA,IAAoB,QAAW,GAAA,aAAA;AAC/B,MAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,KAAA,EAAO,QAAS,EAAA;AAAA,KAC/B,MAAA;AACL,MAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,KAAA,EAAO,aAAc,EAAA;AAAA;AAC3C,GACD,CAAA;AACD,EAAA,IAAI,qBAAqB,CAAG,EAAA;AAC1B,IAAO,OAAA,UAAA;AAAA,GACF,MAAA;AACL,IAAA,oBAAA,GAAuB,gBAAmB,GAAA,uBAAA;AAC1C,IAAa,UAAA,GAAA,UAAA,CAAW,GAAI,CAAA,CAAC,MAAW,KAAA;AACtC,MAAM,MAAA,aAAA,GAAgB,OAAO,KAAQ,GAAA,oBAAA;AACrC,MAAI,IAAA,MAAA,CAAO,KAAU,KAAA,MAAA,CAAO,QAAU,EAAA;AACpC,QAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,KAAA,EAAO,aAAc,EAAA;AAAA,OACpC,MAAA;AACL,QAAO,OAAA,MAAA;AAAA;AACT,KACD,CAAA;AACD,IAAO,OAAA,UAAA;AAAA;AAEX,CAAA;AAEA,MAAM,UAAU,CAAC,EAAE,IAAK,EAAA,KAAwB,OAAO,IAAS,KAAA,QAAA;AAEhE,MAAM,qCAAqC,CACzC,OAAA,EACA,cACA,EAAA,UAAA,EACA,iBACA,YACG,KAAA;AACH,EAAA,IAAI,sBAAsB,cAAiB,GAAA,UAAA;AAC3C,EAAA,IAAI,eAAkB,GAAA,OAAA;AAEtB,EAAA,MAAM,UAAU,CAAC;AAAA,IACf,KAAQ,GAAA,YAAA;AAAA,IACR,QAAW,GAAA;AAAA,QACW,KAAQ,GAAA,QAAA;AAEhC,EAAA,OAAO,sBAAsB,CAAG,EAAA;AAC9B,IAAA,MAAM,WAAW,eAAgB,CAAA,MAAA;AAAA,MAC/B,CAAC,GAAQ,KAAA,OAAA,CAAQ,GAAG,CAAA,IAAK,QAAQ,GAAG;AAAA,KACtC;AACA,IAAA,MAAM,0BACJ,QAAS,CAAA,MAAA,IAAU,eAAgB,CAAA,MAAA,CAAO,OAAO,CAAE,CAAA,MAAA;AAGrD,IAAA,MAAM,2BAA2B,IAAK,CAAA,IAAA;AAAA,MACpC,mBAAsB,GAAA;AAAA,KACxB;AACA,IAAkB,eAAA,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MAAW,KAAA;AACxC,MAAM,MAAA;AAAA,QACJ,QAAW,GAAA,eAAA;AAAA,QACX,KAAQ,GAAA,YAAA;AAAA,QACR,IAAO,GAAA;AAAA,OACL,GAAA,MAAA;AACJ,MAAA,IAAI,QAAS,CAAA,MAAA,GAAS,CAAK,IAAA,IAAA,KAAS,CAAG,EAAA;AACrC,QAAO,OAAA,MAAA;AAAA;AAKT,MAAA,MAAM,mBAAmB,IAAK,CAAA,GAAA;AAAA,QAC5B,wBAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,MAAM,gBAAgB,KAAQ,GAAA,gBAAA;AAC9B,MAAA,IAAI,gBAAgB,QAAU,EAAA;AAC5B,QAAA,mBAAA,IAAuB,aAAgB,GAAA,QAAA;AACvC,QAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,KAAA,EAAO,QAAS,EAAA;AAAA,OAC/B,MAAA;AACL,QAAuB,mBAAA,IAAA,gBAAA;AACvB,QAAA,OAAO,EAAE,GAAG,MAAQ,EAAA,KAAA,EAAO,aAAc,EAAA;AAAA;AAC3C,KACD,CAAA;AAAA;AAEH,EAAO,OAAA,eAAA;AACT,CAAA;AASO,MAAM,sBAAyB,GAAA,CACpC,CACA,EAAA,EAAA,KAEA,EAAE,MAAW,KAAA,EAAA,CAAG,MAChB,IAAA,CAAA,CAAE,MAAO,CAAA,cAAA,CAAe,CAAE,CAAA,GAAA,CAAI,EAAE,SAAU,CAAA,CAAA,CAAE,MAAO,CAAA,IAAI,CAAC,CAAC,CACvD,KAAA,EAAA,CAAG,OAAO,cAAe,CAAA,EAAA,CAAG,GAAI,CAAA,EAAA,CAAG,SAAU,CAAA,EAAA,CAAG,MAAO,CAAA,IAAI,CAAC,CAAC;AAU1D,MAAM,4BAA4B,CACvC,CAAA,EACA,OAEA,CAAE,CAAA,MAAA,KAAW,GAAG,MAChB,IAAA,CAAA,CAAE,GAAI,CAAAJ,KAAG,MAAM,EAAG,CAAA,GAAA,CAAIA,KAAG,CACzB,IAAA,CAAA,CAAE,OAAO,cAAe,CAAA,CAAA,CAAE,GAAI,CAAA,CAAA,CAAE,UAAU,CAAE,CAAA,MAAA,CAAO,IAAI,CAAC,CAAC,MACvD,EAAG,CAAA,MAAA,CAAO,cAAe,CAAA,EAAA,CAAG,IAAI,EAAG,CAAA,SAAA,CAAU,GAAG,MAAO,CAAA,IAAI,CAAC,CAAC;AAEpD,MAAA,YAAA,GAAe,CAAC,MAAA,KAA6B,MAAO,CAAA;AAC1D,MAAM,cAAiB,GAAA,CAAC,MAC7B,KAAA,MAAA,CAAO,cAAmB,KAAA;AAKf,MAAA,kBAAA,GAAqB,CAGhC,WAAA,EACA,YACQ,KAAA;AACR,EAAA,MAAM,UAAe,EAAC;AACtB,EAAA,KAAA,MAAW,QAAQ,YAAc,EAAA;AAC/B,IAAA,MAAM,aAAa,WAAY,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,IAAI,CAAA;AAC1D,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,OAAA,CAAQ,KAAK,UAAU,CAAA;AAAA;AACzB;AAEF,EAAO,OAAA,OAAA;AACT;;AC7yCa,MAAA,cAAA,GAAiB,CAAC,IAA8C,KAAA;AAC3E,EAAI,IAAA,UAAA,CAAW,QAAU,EAAA,MAAA,KAAW,KAAW,CAAA,EAAA;AAC7C,IAAA,OAAO,WAAW,QAAS,CAAA,MAAA,CACxB,MAAM,IAAI,CAAA,CACV,KAAK,CAAC,GAAA,KAAQ,IAAI,UAAW,CAAA,CAAA,EAAG,IAAI,CAAG,CAAA,CAAA,CAAC,GACvC,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA;AAAA;AAEpB;;ACwCA,MAAM,aAAA,uBAAoB,GAAY,EAAA;AACtC,MAAM,QAAA,uBAAe,GAAY,EAAA;AAGjC,MAAM,mBAAA,uBAA0B,GAAqB,EAAA;AACrD,MAAM,gBAAA,uBAAuB,GAAwC,EAAA;AACrE,MAAM,wBAAA,uBAA+B,GAGnC,EAAA;AACF,MAAM,gBAAA,uBAAuB,GAA0C,EAAA;AACvE,MAAM,mBAAA,uBAA0B,GAAmC,EAAA;AACnE,MAAM,qBAAA,uBAA4B,GAA+B,EAAA;AACjE,MAAM,UAAA,uBAAiB,GAAiC,EAAA;AACxD,MAAM,qBAAA,uBAA4B,GAA+B,EAAA;AAyBjE,MAAM,gBAAA,GAAmB,CACvB,YAAA,EAMA,cACG,KAAA;AACH,EAAI,IAAA,YAAA,KAAiB,KAAa,CAAA,IAAA,YAAA,KAAiB,SAAW,EAAA;AAC5D,IAAO,OAAA,IAAA;AAAA,GACE,MAAA,IAAA,KAAA,CAAM,OAAQ,CAAA,YAAY,CAAG,EAAA;AACtC,IAAO,OAAA,YAAA,CAAa,SAAS,cAAc,CAAA;AAAA,GACtC,MAAA;AACL,IAAA,OAAO,YAAiB,KAAA,cAAA;AAAA;AAE5B,CAAA;AAMa,MAAA,WAAA,GAAc,CAAC,aAA0B,KAAA;AACpD,EAAO,OAAA,aAAA,CAAc,IAAI,aAAa,CAAA;AACxC;AAMa,MAAA,MAAA,GAAS,CAAC,aAA0B,KAAA;AAC/C,EAAO,OAAA,QAAA,CAAS,IAAI,aAAa,CAAA;AACnC;AAMO,MAAM,oBAAoB,CAC/B,aAAA,KAEA,YAAY,aAAa,CAAA,IAAK,OAAO,aAAa;AAEpD,MAAM,iBAAiB,CACrB,IAAA,EACA,SAEA,KAAA,SAAA,KAAc,UAAa,IAAS,KAAA,eAAA;AAEtC,MAAM,6BAAgC,GAAA,CACpC,IACA,EAAA,SAAA,KAEA,IAAS,KAAA,gCAAA;AACX,MAAM,2BAA8B,GAAA,CAClC,IACA,EAAA,SAAA,KAEA,IAAS,KAAA,8BAAA;AAEX,MAAM,iBAAoB,GAAA,CACxB,IACA,EAAA,SAAA,KAC0C,IAAS,KAAA,mBAAA;AAErD,MAAM,mBAAsB,GAAA,CAC1B,IACA,EAAA,SAAA,KACmC,IAAS,KAAA,qBAAA;AAE9C,MAAM,mBAAsB,GAAA,CAC1B,IACA,EAAA,SAAA,KACmC,IAAS,KAAA,qBAAA;AA2BvC,SAAS,iBACd,CAAA,aAAA,EAEA,SAEA,EAAA,aAAA,EACA,OACM,EAAA;AACN,EAAA,IACE,aAAkB,KAAA,WAAA,IAClB,aAAkB,KAAA,MAAA,IAClB,kBAAkB,WAClB,EAAA;AACA,IAAoB,mBAAA,CAAA,GAAA,CAAI,eAAe,SAAS,CAAA;AAChD,IAAA,IAAI,kBAAkB,WAAa,EAAA;AACjC,MAAA,aAAA,CAAc,IAAI,aAAa,CAAA;AAAA,KACjC,MAAA,IAAW,kBAAkB,MAAQ,EAAA;AACnC,MAAA,QAAA,CAAS,IAAI,aAAa,CAAA;AAAA;AAC5B,GACS,MAAA,IAAA,cAAA,CAAe,aAAe,EAAA,SAAS,CAAG,EAAA;AACnD,IAAiB,gBAAA,CAAA,GAAA,CAAI,eAAe,SAAS,CAAA;AAAA,GACpC,MAAA,IAAA,6BAAA,CAA8B,aAAwB,CAAG,EAAA;AAClE,IAAyB,wBAAA,CAAA,GAAA,CAAI,eAAe,SAAS,CAAA;AAAA,GAC5C,MAAA,IAAA,2BAAA,CAA4B,aAAwB,CAAG,EAAA;AAChE,IAAyB,wBAAA,CAAA,GAAA,CAAI,eAAe,SAAS,CAAA;AAAA,GAC5C,MAAA,IAAA,iBAAA,CAAkB,aAAwB,CAAG,EAAA;AACtD,IAAoB,mBAAA,CAAA,GAAA,CAAI,eAAe,SAAS,CAAA;AAAA,GACvC,MAAA,IAAA,mBAAA,CAAoB,aAAwB,CAAG,EAAA;AACxD,IAAsB,qBAAA,CAAA,GAAA,CAAI,eAAe,SAAS,CAAA;AAAA,GACzC,MAAA,IAAA,mBAAA,CAAoB,aAAwB,CAAG,EAAA;AACxD,IAAsB,qBAAA,CAAA,GAAA,CAAI,eAAe,SAAS,CAAA;AAAA;AAEpD,EAAA,IAAI,OAAS,EAAA;AACX,IAAW,UAAA,CAAA,GAAA,CAAI,eAAe,OAAO,CAAA;AAAA;AAEzC;AAEa,MAAA,2BAAA,GAA8B,CACzC,aAAA,EACA,mBACG,KAAA;AACH,EAAiB,gBAAA,CAAA,GAAA,CAAI,eAAe,mBAAmB,CAAA;AACzD;AAKa,MAAA,0BAAA,GAA6B,CACxC,cAC6B,KAAA;AAC7B,EAAA,MAAM,aAAgB,GAAA,KAAA,CAAM,IAAK,CAAA,gBAAA,CAAiB,MAAM,CAAA;AACxD,EAAA,MAAM,YAAe,GAAA,aAAA,CAClB,GAA4B,CAAA,CAAC,IAAU,MAAA;AAAA,IACtC,IAAA;AAAA,IACA,GAAI,UAAW,CAAA,GAAA,CAAI,IAAI;AAAA,GACzB,CAAE,EACD,MAAO,CAAA,CAAC,EAAE,aAAc,EAAA,KAAM,kBAAkB,KAAK,CAAA;AACxD,EAAA,IAAI,cAAgB,EAAA;AAClB,IAAA,OAAO,YAAa,CAAA,MAAA;AAAA,MAAO,CAAC,QAAA,KAC1B,gBAAiB,CAAA,QAAA,CAAS,gBAAgB,cAAc;AAAA,KAC1D;AAAA,GACK,MAAA;AACL,IAAO,OAAA,YAAA;AAAA;AAEX;AAEa,MAAA,kBAAA,GAAqB,CAAC,aAA0B,KAAA;AAC3D,EAAM,MAAA,eAAA,GAAkB,mBAAoB,CAAA,GAAA,CAAI,aAAa,CAAA;AAC7D,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAO,OAAA,eAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,KAAA;AAAA,MACJ,oBAAoB,aAAa,CAAA,+BAAA;AAAA,KACnC;AAAA;AAEJ;AAEO,MAAM,sBAAyB,GAAA,CAAC,UACrC,KAAA,UAAA,CAAW,IAAI,UAAU;AAEpB,SAAS,gBAAgB,MAA0B,EAAA;AACxD,EAAA,OAAO,iBAAiB,MAAM,CAAA;AAChC;AACO,SAAS,+BAA+B,MAA0B,EAAA;AACvE,EAAA,IAAI,OAAO,wBAA0B,EAAA;AACnC,IAAO,OAAA,wBAAA,CAAyB,GAAI,CAAA,MAAA,CAAO,wBAAwB,CAAA;AAAA;AAEvE;AACO,SAAS,6BAA6B,MAA0B,EAAA;AACrE,EAAA,IAAI,OAAO,sBAAwB,EAAA;AACjC,IAAO,OAAA,wBAAA,CAAyB,GAAI,CAAA,MAAA,CAAO,sBAAsB,CAAA;AAAA;AAErE;AACO,MAAM,wBAA2B,GAAA,CAAC,WACvC,KAAA,qBAAA,CAAsB,IAAI,WAAW;AAEvB,SAAA,sBAAA,CAAuB,eAAe,EAAI,EAAA;AACxD,EAAO,OAAA,gBAAA,CAAiB,IAAI,YAAY,CAAA;AAC1C;AAEO,SAAS,2BAA2B,IAAc,EAAA;AACvD,EAAO,OAAA,mBAAA,CAAoB,IAAI,IAAI,CAAA;AACrC;AAEO,SAAS,qBAAqB,IAAc,EAAA;AACjD,EAAO,OAAA,qBAAA,CAAsB,IAAI,IAAI,CAAA;AACvC;AAEA,SAAS,iBAAiB,MAA0B,EAAA;AAClD,EAAA,IAAI,OAAO,cAAmB,KAAA,SAAA,IAAa,CAAC,iBAAkB,CAAA,MAAA,CAAO,IAAI,CAAG,EAAA;AAC1E,IAAO,OAAA,gBAAA,CAAiB,IAAI,eAAe,CAAA;AAAA,aAClC,MAAO,CAAA,QAAA,IAAY,CAAC,iBAAkB,CAAA,MAAA,CAAO,IAAI,CAAG,EAAA;AAI7D,IAAO,OAAA,gBAAA,CAAiB,IAAI,YAAY,CAAA;AAAA,GAC1C,MAAA,IACE,iBAAiB,MAAO,CAAA,IAAI,KAC5B,oBAAqB,CAAA,MAAA,CAAO,IAAK,CAAA,QAAQ,CACzC,EAAA;AACA,IAAA,OAAO,gBAAiB,CAAA,GAAA,CAAI,MAAO,CAAA,IAAA,CAAK,UAAU,IAAI,CAAA;AAAA,GACxD,MAAA,IAAW,MAAO,CAAA,cAAA,KAAmB,SAAW,EAAA;AAC9C,IAAO,OAAA,gBAAA,CAAiB,IAAI,eAAe,CAAA;AAAA;AAE/C;;;;;;;;;;;;ACtTA,IAAA,SAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,OAAA;AAqBA,MAAM,mBAAsB,GAAA;AAAA,EAC1B,gBAAkB,EAAA,CAAA;AAAA,EAClB,QAAU,EAAA,CAAA;AACZ,CAAA;AACA,MAAM,UAAA,GAAN,MAAM,UAA2B,CAAA;AAAA,EAU/B,WAEE,CAAA,IAAA,EAEA,EACA,EAAA,YAAA,GAA6B,mBAC7B,EAAA;AAfF,IAAA3C,cAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AACA,IAAoBA,cAAA,CAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA;AACpB,IAAYA,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA,CAAA;AACZ,IAAAA,cAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAGA;AAAA,IAAAgD,eAAA,CAAA,IAAA,EAAO,MAAO,EAAA,CAAA,CAAA;AACd,IAAAA,eAAA,CAAA,IAAA,EAAO,IAAK,EAAA,CAAA,CAAA;AASV,IAAApD,cAAA,CAAA,IAAA,EAAK,SAAY,EAAA,IAAA,CAAA;AACjB,IAAAA,cAAA,CAAA,IAAA,EAAK,OAAU,EAAA,EAAA,CAAA;AACf,IAAK,IAAA,CAAA,gBAAA,GACH,YAAa,CAAA,gBAAA,IAAoB,mBAAoB,CAAA,gBAAA;AACvD,IAAK,IAAA,CAAA,QAAA,GAAW,YAAa,CAAA,QAAA,IAAY,mBAAoB,CAAA,QAAA;AAAA;AAC/D,EAEA,IAAI,kBAAqB,GAAA;AACvB,IAAA,OAAOD,qBAAK,SAAY,CAAA,GAAA,CAAA;AAAA;AAC1B,EAEA,IAAI,iBAAoB,GAAA;AACtB,IAAI,IAAAA,cAAA,CAAA,IAAA,EAAK,aAAY,CAAG,EAAA;AACtB,MAAA,OAAO,IAAK,CAAA,GAAA,CAAIA,cAAK,CAAA,IAAA,EAAA,OAAA,CAAA,EAASA,qBAAK,SAAS,CAAA,CAAA;AAAA,KACvC,MAAA;AACL,MAAA,OAAOA,cAAK,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA;AACd;AACF,EAEA,IAAI,gBAAmB,GAAA;AACrB,IAAA,OAAOA,cAAK,CAAA,IAAA,EAAA,iBAAA,CAAA;AAAA;AACd,EAEA,IAAI,iBAAiB,KAAe,EAAA;AAClC,IAAAC,cAAA,CAAA,IAAA,EAAK,iBAAoB,EAAA,KAAA,CAAA;AACzB,IAAA,IAAA,CAAK,OAAO,IAAK,CAAA,GAAA,CAAI,CAAG,EAAAD,cAAA,CAAA,IAAA,EAAK,aAAY,KAAK,CAAA;AAC9C,IAAI,IAAAA,cAAA,CAAA,IAAA,EAAK,aAAY,CAAG,EAAA;AACtB,MAAK,IAAA,CAAA,EAAA,GAAK,KAAK,GAAI,CAAAA,cAAA,CAAA,IAAA,EAAK,WAAUA,cAAK,CAAA,IAAA,EAAA,iBAAA,CAAA,EAAmBA,qBAAK,SAAS,CAAA,CAAA;AAAA,KACnE,MAAA;AACL,MAAK,IAAA,CAAA,EAAA,GAAKA,cAAK,CAAA,IAAA,EAAA,OAAA,CAAA,GAAUA,cAAK,CAAA,IAAA,EAAA,iBAAA,CAAA;AAAA;AAChC;AACF,EAEA,IAAI,QAAW,GAAA;AACb,IAAA,OAAOA,cAAK,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AACd,EAEA,IAAI,SAAS,KAAe,EAAA;AAC1B,IAAAC,cAAA,CAAA,IAAA,EAAK,SAAY,EAAA,KAAA,CAAA;AACjB,IAAA,IAAI,QAAQ,CAAG,EAAA;AACb,MAAA,IAAA,CAAK,KAAK,IAAK,CAAA,GAAA,CAAID,qBAAK,OAAU,CAAA,GAAAA,cAAA,CAAA,IAAA,EAAK,oBAAmB,KAAK,CAAA;AAAA,KAC1D,MAAA;AACL,MAAK,IAAA,CAAA,EAAA,GAAKA,cAAK,CAAA,IAAA,EAAA,OAAA,CAAA,GAAUA,cAAK,CAAA,IAAA,EAAA,iBAAA,CAAA;AAAA;AAChC;AACF,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,IAAI,UAAU,CAAA,CAAA,EAAGA,cAAK,CAAA,IAAA,EAAA,OAAA,CAAA,GAAUA,qBAAK,SAAW,CAAA,EAAA;AAAA,MACrD,UAAUA,cAAK,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA,MACf,kBAAkBA,cAAK,CAAA,IAAA,EAAA,iBAAA;AAAA,KACxB,CAAA;AAAA;AACH,EAEA,OAAO,KAAiB,EAAA;AACtB,IAAA,OAAO,MAAM,IAAS,KAAAA,cAAA,CAAA,IAAA,EAAK,SAAa,CAAA,IAAA,KAAA,CAAM,OAAOA,cAAK,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA;AAC5D,EAEA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,IAAI,IAAK,CAAA,EAAA;AAAA,MACT,UAAUA,cAAK,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA,MACf,QAAQA,cAAK,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA,MACb,kBAAkBA,cAAK,CAAA,IAAA,EAAA,iBAAA,CAAA;AAAA,MACvB,UAAUA,cAAK,CAAA,IAAA,EAAA,SAAA;AAAA,KACjB;AAAA;AAEJ,CAAA;AAnFE,SAAA,GAAA,IAAA,OAAA,EAAA;AACA,iBAAA,GAAA,IAAA,OAAA,EAAA;AACA,SAAA,GAAA,IAAA,OAAA,EAAA;AACA,OAAA,GAAA,IAAA,OAAA,EAAA;AAJF,IAAM,SAAN,GAAA,UAAA;AAsFa,MAAA,KAAA,GAAQ,CACnB,IACA,EAAA,EAAA,EACA,iBACU,IAAI,SAAA,CAAU,IAAM,EAAA,EAAA,EAAI,YAAY;AAEnC,MAAA,UAAA,GAAa,KAAM,CAAA,CAAA,EAAG,CAAC;AAEpB,SAAA,YAAA,CACd,EAAE,IAAM,EAAA,EAAA,IACR,UAAa,GAAA,CAAA,EACb,aAAwB,GAAA,MAAA,CAAO,gBAClB,EAAA;AACb,EAAI,IAAA,IAAA,KAAS,CAAK,IAAA,EAAA,KAAO,CAAG,EAAA;AAC1B,IAAO,OAAA,EAAE,MAAM,EAAG,EAAA;AAAA,GACpB,MAAA,IAAW,eAAe,CAAG,EAAA;AAC3B,IAAA,IAAI,gBAAgB,IAAM,EAAA;AACxB,MAAA,OAAO,EAAE,IAAA,EAAM,CAAG,EAAA,EAAA,EAAI,CAAE,EAAA;AAAA,KACnB,MAAA;AACL,MAAA,OAAO,EAAE,IAAM,EAAA,EAAA,EAAI,KAAK,GAAI,CAAA,EAAA,EAAI,aAAa,CAAE,EAAA;AAAA;AACjD,GACF,MAAA,IAAW,SAAS,CAAG,EAAA;AACrB,IAAO,OAAA,EAAE,MAAM,EAAI,EAAA,IAAA,CAAK,IAAI,EAAK,GAAA,UAAA,EAAY,aAAa,CAAE,EAAA;AAAA,GACvD,MAAA;AACL,IAAM,MAAA,eAAA,GAAkB,OAAO,UAAa,GAAA,CAAA;AAC5C,IAAM,MAAA,cAAA,GAAiB,aAAiB,IAAA,EAAA,GAAK,UAAc,CAAA,GAAA,CAAA;AAC3D,IAAA,IAAI,mBAAmB,cAAgB,EAAA;AACrC,MAAA,OAAO,EAAE,IAAA,EAAM,CAAG,EAAA,EAAA,EAAI,aAAc,EAAA;AAAA,eAC3B,eAAiB,EAAA;AAC1B,MAAA,OAAO,EAAE,IAAA,EAAM,CAAG,EAAA,EAAA,EAAI,KAAK,UAAW,EAAA;AAAA,eAC7B,cAAgB,EAAA;AACzB,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,IAAA,CAAK,GAAI,CAAA,CAAA,EAAG,OAAO,UAAU,CAAA;AAAA,QACnC,EAAI,EAAA;AAAA,OACN;AAAA,KACK,MAAA;AACL,MAAA,OAAO,EAAE,IAAM,EAAA,IAAA,GAAO,UAAY,EAAA,EAAA,EAAI,KAAK,UAAW,EAAA;AAAA;AACxD;AAEJ;AAEa,MAAA,WAAA,GAAc,CAAC,KAAe,EAAA,EAAE,MAAM,EAAG,EAAA,KACpD,KAAS,IAAA,IAAA,IAAQ,KAAQ,GAAA;AAWd,MAAA,aAAA,GAAgB,CAC3B,EAAE,IAAA,EAAM,OAAO,EAAI,EAAA,GAAA,IACnB,QACa,KAAA;AACb,EAAA,MAAM,EAAE,IAAA,EAAM,KAAO,EAAA,EAAA,EAAI,KAAQ,GAAA,QAAA;AACjC,EAAM,MAAA,SAAA,GAAY,KAAS,IAAA,GAAA,IAAO,GAAO,IAAA,KAAA;AACzC,EAAM,MAAA,mBAAA,GAAsB,KAAQ,GAAA,KAAA,IAAS,GAAM,GAAA,GAAA;AACnD,EAAA,OAAO,SAAa,IAAA,mBAAA,GAChB,QACA,GAAA,GAAA,GAAM,MACJ,EAAE,IAAA,EAAM,GAAK,EAAA,EAAA,EAAI,KACjB,GAAA,EAAE,IAAM,EAAA,KAAA,EAAO,IAAI,KAAM,EAAA;AACjC;AAEO,MAAM,WAAY,CAAA;AAAA,EAIvB,WAAA,CAAY,MAAc,EAAY,EAAA;AAHtC,IAAOqD,eAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AACP,IAAOA,eAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AAGL,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA;AACZ,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA;AAAA;AACZ,EAEO,SAAS,KAAe,EAAA;AAC7B,IAAO,OAAA,WAAA,CAAY,OAAO,IAAI,CAAA;AAAA;AAChC;AAAA,EAGO,OAAA,CAAQ,MAAc,EAA8B,EAAA;AACzD,IAAO,OAAA,IAAA,IAAQ,KAAK,EAAM,IAAA,EAAA,GAAK,KAAK,IAChC,GAAA,CAAC,CAAG,EAAA,CAAC,CACL,GAAA,CAAC,KAAK,GAAI,CAAA,IAAA,EAAM,KAAK,IAAI,CAAA,EAAG,KAAK,GAAI,CAAA,EAAA,EAAI,IAAK,CAAA,EAAE,CAAC,CAAA;AAAA;AACvD,EAEO,IAAoB,GAAA;AACzB,IAAA,OAAO,IAAI,WAAA,CAAY,IAAK,CAAA,IAAA,EAAM,KAAK,EAAE,CAAA;AAAA;AAE7C;;;;;AC/KA,MAAM,OAAEL,OAAQ,GAAA,YAAA;AAIT,MAAM,UAAW,CAAA;AAAA,EAItB,WAAY,CAAA,EAAE,IAAM,EAAA,EAAA,EAAiB,EAAA;AAHrC,IAAQK,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AACR,IAAOA,eAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AACP,IAAAA,eAAA,CAAA,IAAA,EAAO,UAAW,EAAA,CAAA,CAAA;AASlB,IAAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAc,CAAC,QAAqB,KAAA;AAElC,MAAI,IAAA,QAAA,GAAW,IAAK,CAAA,IAAA,CAAK,MAAQ,EAAA;AAC/B,QAAA,IAAA,CAAK,KAAK,MAAS,GAAA,QAAA;AAAA;AAErB,MAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAAA,KAClB,CAAA;AAbE,IAAA,IAAA,CAAK,KAAQ,GAAA,IAAI,WAAY,CAAA,IAAA,EAAM,EAAE,CAAA;AAErC,IAAA,IAAA,CAAK,IAAO,GAAA,IAAI,KAAM,CAAA,EAAA,GAAK,IAAI,CAAA;AAAA;AAGjC;AAAA,EAWA,IAAI,IAAe,EAAA;AACjB,IAAM,MAAA,CAAC,KAAK,CAAI,GAAA,IAAA;AAChB,IAAI,IAAA,IAAA,CAAK,aAAc,CAAA,KAAK,CAAG,EAAA;AAC7B,MAAM,MAAA,aAAA,GAAgB,KAAQ,GAAA,IAAA,CAAK,KAAM,CAAA,IAAA;AACzC,MAAA,MAAM,QAAW,GAAA,IAAA,CAAK,IAAK,CAAA,aAAa,CAAM,KAAA,KAAA,CAAA;AAC9C,MAAK,IAAA,CAAA,IAAA,CAAK,aAAa,CAAI,GAAA,IAAA;AAC3B,MAAO,OAAA,QAAA;AAAA,KACF,MAAA;AACL,MAAO,OAAA,KAAA;AAAA;AACT;AACF,EAEA,WAAW,KAAe,EAAA;AACxB,IAAA,OAAO,KAAK,KAAM,CAAA,QAAA,CAAS,KAAK,CAC9B,IAAA,IAAA,CAAK,KAAK,KAAQ,GAAA,IAAA,CAAK,MAAM,IAAI,CAAA,IAAK,OACpC,IAAK,CAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,KAAA,CAAM,IAAI,CACjC,GAAA,KAAA,CAAA;AAAA;AACN,EAEA,SAAS,GAAa,EAAA;AACpB,IAAO,OAAA,IAAA,CAAK,KAAK,IAAK,CAAA,CAAC,QAAQ,GAAI,CAAAL,KAAG,MAAM,GAAG,CAAA;AAAA;AACjD,EAEA,cAAc,KAAe,EAAA;AAC3B,IAAA,OAAO,KAAK,KAAM,CAAA,QAAA,CAAS,KAAK,CAAA,IAAK,SAAS,IAAK,CAAA,QAAA;AAAA;AACrD,EAEA,QAAA,CAAS,MAAc,EAAY,EAAA;AAEjC,IAAA,IAAI,SAAS,IAAK,CAAA,KAAA,CAAM,QAAQ,EAAO,KAAA,IAAA,CAAK,MAAM,EAAI,EAAA;AACpD,MAAM,MAAA,CAAC,aAAa,SAAS,CAAA,GAAI,KAAK,KAAM,CAAA,OAAA,CAAQ,MAAM,EAAE,CAAA;AAC5D,MAAA,MAAM,OAAU,GAAA,IAAI,KAAM,CAAA,EAAA,GAAK,IAAI,CAAA;AACnC,MAAA,KAAA,IAAS,CAAI,GAAA,WAAA,EAAa,CAAI,GAAA,SAAA,EAAW,CAAK,EAAA,EAAA;AAC5C,QAAM,MAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAW,CAAC,CAAA;AAC9B,QAAA,IAAI,IAAM,EAAA;AACR,UAAA,MAAM,QAAQ,CAAI,GAAA,IAAA;AAClB,UAAA,OAAA,CAAQ,KAAK,CAAI,GAAA,IAAA;AAAA;AACnB;AAEF,MAAA,IAAA,CAAK,IAAO,GAAA,OAAA;AACZ,MAAA,IAAA,CAAK,MAAM,IAAO,GAAA,IAAA;AAClB,MAAA,IAAA,CAAK,MAAM,EAAK,GAAA,EAAA;AAAA;AAClB;AACF,EAEA,OAAA,CAAQ,MAAc,EAAY,EAAA;AAChC,IAAM,MAAA,MAAA,GAAS,KAAK,KAAM,CAAA,IAAA;AAC1B,IAAA,MAAM,QAAQ,IAAO,GAAA,MAAA;AACrB,IAAM,MAAA,GAAA,GAAM,KAAK,GAAI,CAAA,EAAA,GAAK,SAAS,CAAG,EAAA,IAAA,CAAK,WAAW,CAAC,CAAA;AACvD,IAAO,OAAA,IAAA,CAAK,KAAK,KAAK,CAAA,KAAM,UAAa,IAAK,CAAA,IAAA,CAAK,GAAG,CAAM,KAAA,KAAA,CAAA;AAAA;AAC9D,EAEA,OAAA,CAAQ,MAAc,EAAmB,EAAA;AACvC,IAAA,MAAM,EAAE,IAAA,EAAM,UAAW,EAAA,GAAI,IAAK,CAAA,KAAA;AAClC,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,GAAI,CAAA,CAAA,EAAG,OAAO,UAAU,CAAA;AACjD,IAAA,MAAM,YAAY,IAAK,CAAA,GAAA,CAAI,KAAK,UAAY,EAAA,IAAA,CAAK,YAAY,EAAE,CAAA;AAC/D,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,KAAM,CAAA,WAAA,EAAa,SAAS,CAAA;AAAA;AAEjD;;ACvGO,MAAM,QAAyB,GAAA;AAAA,EACpC,UAAY,EAAA;AAAA,IACV,YAAc,EAAA,MAAA;AAAA,IACd,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,QAAU,EAAA;AAAA,IACR,YAAc,EAAA,KAAA;AAAA,IACd,QAAU,EAAA;AAAA;AAEd;;ACfa,MAAA,SAAA,GAAY,OAAO,IAAiB,KAAA;AAC/C,EAAM,MAAA,SAAA,GAAY,IAAI,aAAc,EAAA;AACpC,EAAA,OAAO,MAAM,IAAI,CAAA,CACd,IAAK,CAAA,CAAC,MAAM,CAAE,CAAA,IAAA,EAAM,CAAA,CACpB,KAAK,CAAC,CAAA,KAAM,SAAU,CAAA,OAAA,CAAQ,CAAC,CAAC,CAAA;AACrC;;ACHO,MAAM,GAAM,GAAA;AACZ,MAAM,GAAM,GAAA;AACZ,MAAM,KAAQ,GAAA;AACd,MAAM,KAAQ,GAAA;AAErB,MAAM,cAAiB,GAAA,oBAAA;AAEV,MAAA,gBAAA,GAAmB,CAAC,GAC/B,KAAA,QAAA,CAAS,KAAK,EAAE,CAAA,CAAE,UAAe,KAAA;AAEtB,MAAA,oBAAA,GAAuB,CAAC,GACnC,KAAA,gBAAA,CAAiB,GAAG,CAAK,IAAA,cAAA,CAAe,KAAK,GAAG;AAE3C,MAAM,sBAAsB,CAAC,GAAA,KAClC,iBAAiB,GAAG,CAAA,IAAK,qBAAqB,GAAG;AAEtC,MAAA,wBAAA,GAA2B,CAAC,GAAA,KACvC,gBAAiB,CAAA,GAAG,IAAI,KAAQ,GAAA,oBAAA,CAAqB,GAAG,CAAA,GAAI,QAAW,GAAA;AAElE,MAAM,gBAAgB,CAAC,CAAA,KAC5B,OAAO,CAAM,KAAA,QAAA,IAAY,SAAS,CAAC;AAErC,MAAMM,UAAQ,EAAC;AACR,MAAM,aAAgB,GAAA,CAC3B,EAAiC,GAAAA,OAAA,EACjC,KAAiCA,OAC9B,KAAA;AACH,EAAM,MAAA,MAAA,GAAS,MAAO,CAAA,IAAA,CAAK,EAAE,CAAA;AAC7B,EAAM,MAAA,MAAA,GAAS,MAAO,CAAA,IAAA,CAAK,EAAE,CAAA;AAC7B,EAAA,OACE,MAAO,CAAA,MAAA,KAAW,MAAO,CAAA,MAAA,IACzB,MAAO,CAAA,KAAA,CAAM,CAAC,GAAA,KAAQ,EAAG,CAAA,GAAG,CAAM,KAAA,EAAA,CAAG,GAAG,CAAC,CAAA;AAE7C;AAEO,SAAS,uBACd,CAAA,QAAA,EACA,SACA,EAAA,SAAA,EAEA,aACsB,EAAA;AACtB,EAAA,IAAI,aAAa,KAAW,CAAA,EAAA;AAC1B,IAAO,OAAA,EAAA;AAAA;AAET,EAAA,IACE,CAAC,QAAS,CAAA,QAAQ,KAClB,SAAc,KAAA,KAAA,CAAA,IACd,cAAc,KACd,CAAA,EAAA;AACA,IAAO,OAAA,EAAA;AAAA,GACF,MAAA;AACL,IAAA,IAAI,OAAO,QAAW,GAAA,SAAA;AACtB,IAAA,IAAI,IAAM,EAAA;AAER,MAAI,IAAA,OAAO,kBAAkB,QAAU,EAAA;AACrC,QACE,IAAA,GAAA,CAAC,SAAS,OAAQ,CAAA,aAAa,IAAI,CAAC,SAAA,CAAU,QAAQ,aAAa,CAAA;AAAA;AACvE;AAGF,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,IAAI,cAAc,EAAI,EAAA;AACpB,QAAA,IAAI,OAAO,CAAG,EAAA;AACZ,UAAO,OAAA,KAAA;AAAA,SACF,MAAA;AACL,UAAO,OAAA,GAAA;AAAA;AACT,OACF,MAAA,IAAW,OAAO,CAAG,EAAA;AACnB,QAAA,IAAI,SAAc,KAAA,KAAA,IAAS,SAAc,KAAA,KAAA,IAAS,cAAc,GAAK,EAAA;AACnE,UAAO,OAAA,GAAA;AAAA,SACF,MAAA;AACL,UAAO,OAAA,GAAA;AAAA;AACT,iBAEA,SAAc,KAAA,GAAA,IACd,SAAc,KAAA,GAAA,IACd,cAAc,KACd,EAAA;AACA,QAAO,OAAA,KAAA;AAAA,OACF,MAAA;AACL,QAAO,OAAA,KAAA;AAAA;AACT,KACK,MAAA;AACL,MAAO,OAAA,EAAA;AAAA;AACT;AAEJ;AAEgB,SAAA,SAAA,CACd,OACA,YACA,EAAA;AACA,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,IAAO,OAAA,KAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,MAAA,GAAS,QAAS,CAAA,KAAA,IAAS,EAAE,CAAA;AACnC,IAAI,IAAA,CAAC,KAAM,CAAA,MAAM,CAAG,EAAA;AAClB,MAAO,OAAA,MAAA;AAAA,KACT,MAAA,IAAW,OAAO,YAAA,KAAiB,QAAU,EAAA;AAC3C,MAAO,OAAA,YAAA;AAAA;AAET,IAAM,MAAA,KAAA,CAAM,CAA4B,yBAAA,EAAA,KAAK,CAAE,CAAA,CAAA;AAAA;AAEnD;;;;;;;;AC1GA,IAAA,OAAA;AAGA,SAAS,mBACP,SAC8B,EAAA;AAC9B,EAAO,OAAA,KAAA,CAAM,QAAQ,SAAS,CAAA;AAChC;AAEA,SAAS,eACP,SAC4B,EAAA;AAC5B,EAAO,OAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,SAAS,CAAA;AACjC;AAUO,MAAM,YAEb,CAAA;AAAA,EAFO,WAAA,GAAA;AAGL,IAAAjD,cAAA,CAAA,IAAA,EAAA,OAAA,sBAAwD,GAAI,EAAA,CAAA;AAAA;AAAA,EAE5D,WAAA,CAAoC,OAAU,QAAqB,EAAA;AACjE,IAAA,MAAM,SAAY,GAAAL,cAAA,CAAA,IAAA,EAAK,OAAQ,CAAA,CAAA,GAAA,CAAI,KAAK,CAAA;AAExC,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAKA,cAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,GAAI,CAAA,KAAA,EAAO,QAAQ,CAAA;AAAA,KAClC,MAAA,IAAW,kBAAmB,CAAA,SAAS,CAAG,EAAA;AACxC,MAAA,SAAA,CAAU,KAAK,QAAQ,CAAA;AAAA,KACzB,MAAA,IAAW,cAAe,CAAA,SAAS,CAAG,EAAA;AACpC,MAAAA,cAAA,CAAA,IAAA,EAAK,SAAQ,GAAI,CAAA,KAAA,EAAO,CAAC,SAAA,EAAW,QAAQ,CAAC,CAAA;AAAA;AAC/C;AACF,EAEA,cAAA,CAAuC,OAAU,QAAqB,EAAA;AACpE,IAAA,IAAI,CAACA,cAAA,CAAA,IAAA,EAAK,OAAQ,CAAA,CAAA,GAAA,CAAI,KAAK,CAAG,EAAA;AAC5B,MAAA;AAAA;AAGF,IAAA,MAAM,mBAAsB,GAAAA,cAAA,CAAA,IAAA,EAAK,OAAQ,CAAA,CAAA,GAAA,CAAI,KAAK,CAAA;AAClD,IAAA,IAAI,QAAW,GAAA,CAAA,CAAA;AAEf,IAAA,IAAI,wBAAwB,QAAU,EAAA;AACpC,MAAKA,cAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,KAChB,MAAA,IAAA,KAAA,CAAM,OAAQ,CAAA,mBAAmB,CAAG,EAAA;AAC7C,MAAA,KAAA,IAAS,CAAI,GAAA,mBAAA,CAAoB,MAAQ,EAAA,CAAA,EAAA,GAAM,CAAK,IAAA;AAClD,QAAI,IAAA,mBAAA,CAAoB,CAAC,CAAA,KAAM,QAAU,EAAA;AACvC,UAAW,QAAA,GAAA,CAAA;AACX,UAAA;AAAA;AACF;AAGF,MAAA,IAAI,WAAW,CAAG,EAAA;AAChB,QAAA;AAAA;AAGF,MAAI,IAAA,mBAAA,CAAoB,WAAW,CAAG,EAAA;AACpC,QAAA,mBAAA,CAAoB,MAAS,GAAA,CAAA;AAC7B,QAAKA,cAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,OACpB,MAAA;AACL,QAAoB,mBAAA,CAAA,MAAA,CAAO,UAAU,CAAC,CAAA;AAAA;AACxC;AACF;AACF,EAEA,mBAA2C,KAAW,EAAA;AACpD,IAAA,IAAI,KAAS,IAAAA,cAAA,CAAA,IAAA,EAAK,OAAQ,CAAA,CAAA,GAAA,CAAI,KAAK,CAAG,EAAA;AACpC,MAAKA,cAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,KAC3B,MAAA,IAAW,UAAU,KAAW,CAAA,EAAA;AAC9B,MAAAA,cAAA,CAAA,IAAA,EAAK,SAAQ,KAAM,EAAA;AAAA;AACrB;AACF,EAEA,IAAA,CAA6B,UAAa,IAA6B,EAAA;AACrE,IAAA,IAAIA,qBAAK,OAAS,CAAA,EAAA;AAChB,MAAA,MAAM,OAAU,GAAAA,cAAA,CAAA,IAAA,EAAK,OAAQ,CAAA,CAAA,GAAA,CAAI,KAAK,CAAA;AACtC,MAAA,IAAI,OAAS,EAAA;AACX,QAAK,IAAA,CAAA,aAAA,CAAc,SAAS,IAAI,CAAA;AAAA;AAClC;AACF;AACF,EAEA,IAAA,CAA6B,OAAU,QAAqB,EAAA;AAC1D,IAAM,MAAA,OAAA,GAAW,IAAI,IAAS,KAAA;AAC5B,MAAK,IAAA,CAAA,cAAA,CAAe,OAAO,OAAO,CAAA;AAClC,MAAA,QAAA,CAAS,GAAG,IAAI,CAAA;AAAA,KAClB;AAEA,IAAK,IAAA,CAAA,EAAA,CAAG,OAAO,OAAO,CAAA;AAAA;AACxB,EAEA,EAAA,CAA2B,OAAU,QAAqB,EAAA;AACxD,IAAK,IAAA,CAAA,WAAA,CAAY,OAAO,QAAQ,CAAA;AAAA;AAClC,EAEA,WAAA,CAAoC,OAAU,QAAqB,EAAA;AACjE,IAAA,MAAM,SAAY,GAAAA,cAAA,CAAA,IAAA,EAAK,OAAQ,CAAA,CAAA,GAAA,CAAI,KAAK,CAAA;AACxC,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,SAAS,CAAG,EAAA;AAC5B,MAAO,OAAA,SAAA,CAAU,SAAS,QAAQ,CAAA;AAAA,KAC7B,MAAA;AACL,MAAA,OAAO,SAAc,KAAA,QAAA;AAAA;AACvB;AACF,EAEQ,aAAA,CAAc,SAAqC,IAAiB,EAAA;AAC1E,IAAI,IAAA,kBAAA,CAAmB,OAAO,CAAG,EAAA;AAC/B,MAAQ,OAAA,CAAA,KAAA,GAAQ,OAAQ,CAAA,CAAC,aAAa,IAAK,CAAA,aAAA,CAAc,QAAU,EAAA,IAAI,CAAC,CAAA;AAAA,KACnE,MAAA;AACL,MAAA,QAAQ,KAAK,MAAQ;AAAA,QACnB,KAAK,CAAA;AACH,UAAQ,OAAA,EAAA;AACR,UAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAQ,OAAA,CAAA,IAAA,CAAK,CAAC,CAAC,CAAA;AACf,UAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,OAAA,CAAQ,IAAK,CAAA,CAAC,CAAG,EAAA,IAAA,CAAK,CAAC,CAAC,CAAA;AACxB,UAAA;AAAA;AAAA,QAEF;AACE,UAAQ,OAAA,CAAA,IAAA,CAAK,IAAM,EAAA,GAAG,IAAI,CAAA;AAAA;AAC9B;AACF;AAEJ;AAxGE,OAAA,GAAA,IAAA,OAAA,EAAA;;ACtBW,MAAA,IAAA,GAAO,CAAC,IAAA,GAAO,EAAe,KAAA;AACzC,EAAA,IAAI,EAAK,GAAA,EAAA;AACT,EAAA,MAAM,QAAQ,MAAO,CAAA,eAAA,CAAgB,IAAI,UAAA,CAAW,IAAI,CAAC,CAAA;AAGzD,EAAA,OAAO,IAAQ,EAAA,EAAA;AAMb,IAAM,MAAA,IAAA,GAAO,KAAM,CAAA,IAAI,CAAI,GAAA,EAAA;AAC3B,IAAA,IAAI,OAAO,EAAI,EAAA;AAEb,MAAM,EAAA,IAAA,IAAA,CAAK,SAAS,EAAE,CAAA;AAAA,KACxB,MAAA,IAAW,OAAO,EAAI,EAAA;AAEpB,MAAA,EAAA,IAAA,CAAO,IAAO,GAAA,EAAA,EAAI,QAAS,CAAA,EAAE,EAAE,WAAY,EAAA;AAAA,KAC7C,MAAA,IAAW,OAAO,EAAI,EAAA;AACpB,MAAM,EAAA,IAAA,GAAA;AAAA,KACD,MAAA;AACL,MAAM,EAAA,IAAA,GAAA;AAAA;AACR;AAEF,EAAO,OAAA,EAAA;AACT;;ACAa,MAAA,QAAA,GAAsB,EAAE,MAAA,EAAQ,EAAG;AACzC,MAAM,MAAkB,GAAA,EAAE,QAAU,EAAA,EAAG;AAEvC,MAAM,aAAgC,GAAA;AAAA,EAC3C,cAAc,EAAC;AAAA,EACf,SAAS,EAAC;AAAA,EACV,UAAY,EAAA,QAAA;AAAA,EACZ,SAAS,EAAC;AAAA,EACV,IAAM,EAAA;AACR;AAqBA,MAAM,yBAA8C,CAClD,EAAE,cAAc,IAAK,EAAA,EACrB,EAAE,YAAc,EAAA,IAAA,EAEf,KAAA,IAAA,KAAS,UAAa,IAAM,EAAA,MAAA,KAAW,KACvC,IAAS,KAAA,KAAA,CAAA,IAAa,MAAM,MAAW,KAAA,CAAA;AAE1C,MAAM,oBAAyC,CAC7C,EAAE,SAAS,KAAM,EAAA,EACjB,EAAE,OAAS,EAAA,KAAA,EAEV,KAAA,KAAA,KAAU,UAAa,KAAO,EAAA,MAAA,KAAW,KACzC,KAAU,KAAA,KAAA,CAAA,IAAa,OAAO,MAAW,KAAA,CAAA;AAE5C,MAAM,mBAAwC,CAC5C,EAAE,YAAY,EAAG,EAAA,EACjB,EAAE,UAAY,EAAA,EAAA,EAEb,KAAA,EAAA,KAAO,UAAa,EAAI,EAAA,MAAA,KAAW,MACnC,EAAO,KAAA,KAAA,CAAA,IAAa,IAAI,MAAW,KAAA,EAAA;AAEtC,MAAM,oBAAyC,CAC7C,EAAE,SAAS,IAAK,EAAA,EAChB,EAAE,OAAS,EAAA,IAAA,EAEV,KAAA,IAAA,KAAS,UAAa,IAAM,EAAA,MAAA,KAAW,KACvC,IAAS,KAAA,KAAA,CAAA,IAAa,MAAM,MAAW,KAAA,CAAA;AAE1C,MAAM,cAAA,GAAsC,CAAC,EAAE,IAAA,EAAM,IAAM,EAAA,EAAE,MAAM,EAAG,EAAA,KACnE,OAAO,KAAa,CAAA,IAAA,EAAA,EAAI,SAAS,MAAW,KAAA,CAAA,IAC5C,OAAO,KAAa,CAAA,IAAA,EAAA,EAAI,SAAS,MAAW,KAAA,CAAA;AAE/C,MAAM,cAAA,GAAiB,CAAC,CAAA,EAAY,CAAe,KAAA;AACjD,EAAA,IAAI,MAAM,CAAG,EAAA;AACX,IAAO,OAAA,IAAA;AAAA,GACE,MAAA,IAAA,CAAA,KAAM,KAAa,CAAA,IAAA,CAAA,KAAM,KAAW,CAAA,EAAA;AAC7C,IAAO,OAAA,IAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,KAAA;AAAA;AAEX,CAAA;AAEA,MAAM,qBAAA,GAA6C,CAAC,MAAA,EAAQ,SAAc,KAAA;AACxE,EAAM,MAAA,EAAE,YAAc,EAAA,IAAA,EAAS,GAAA,MAAA;AAC/B,EAAM,MAAA,EAAE,YAAc,EAAA,IAAA,EAAS,GAAA,SAAA;AAC/B,EAAA,IAAI,eAAe,IAAM,EAAA,IAAI,KAAK,sBAAuB,CAAA,MAAA,EAAQ,SAAS,CAAG,EAAA;AAC3E,IAAO,OAAA,KAAA;AAAA,GACE,MAAA,IAAA,IAAA,KAAS,KAAa,CAAA,IAAA,IAAA,KAAS,KAAW,CAAA,EAAA;AACnD,IAAO,OAAA,IAAA;AAAA,GACE,MAAA,IAAA,IAAA,CAAK,MAAW,KAAA,IAAA,CAAK,MAAQ,EAAA;AACtC,IAAO,OAAA,IAAA;AAAA;AAET,EAAA,OAAO,IAAK,CAAA,IAAA;AAAA,IACV,CAAC,EAAE,MAAQ,EAAA,OAAA,IAAW,CACpB,KAAA,MAAA,KAAW,IAAK,CAAA,CAAC,CAAE,CAAA,MAAA,IAAU,OAAY,KAAA,IAAA,CAAK,CAAC,CAAE,CAAA;AAAA,GACrD;AACF,CAAA;AAEA,MAAM,gBAAA,GAAwC,CAAC,MAAA,EAAQ,SAAc,KAAA;AACnE,EAAM,MAAA,EAAE,OAAS,EAAA,KAAA,EAAU,GAAA,MAAA;AAC3B,EAAM,MAAA,EAAE,OAAS,EAAA,KAAA,EAAU,GAAA,SAAA;AAE3B,EAAA,IAAI,eAAe,KAAO,EAAA,KAAK,KAAK,iBAAkB,CAAA,MAAA,EAAQ,SAAS,CAAG,EAAA;AACxE,IAAO,OAAA,KAAA;AAAA,GACE,MAAA,IAAA,KAAA,KAAU,KAAa,CAAA,IAAA,KAAA,KAAU,KAAW,CAAA,EAAA;AACrD,IAAO,OAAA,IAAA;AAAA,GACE,MAAA,IAAA,KAAA,EAAO,MAAW,KAAA,KAAA,EAAO,MAAQ,EAAA;AAC1C,IAAO,OAAA,IAAA;AAAA;AAET,EAAO,OAAA,KAAA,CAAM,KAAK,CAAC,MAAA,EAAQ,MAAM,MAAW,KAAA,KAAA,GAAQ,CAAC,CAAC,CAAA;AACxD,CAAA;AAEa,MAAA,mBAAA,GAA2C,CAAC,EAAA,EAAI,EAAO,KAAA;AAClE,EAAI,IAAA,gBAAA,CAAiB,EAAI,EAAA,EAAE,CAAG,EAAA;AAC5B,IAAO,OAAA,KAAA;AAAA,GACF,MAAA;AACL,IAAA,OAAO,EAAG,CAAA,cAAA,EAAgB,MAAW,KAAA,EAAA,CAAG,cAAgB,EAAA,MAAA;AAAA;AAE5D;AAEa,MAAA,eAAA,GAAuC,CAAC,EAAA,EAAI,EAAO,KAAA;AAC9D,EAAI,IAAA,gBAAA,CAAiB,EAAI,EAAA,EAAE,CAAG,EAAA;AAC5B,IAAO,OAAA,KAAA;AAAA,GACF,MAAA;AACL,IAAA,OAAO,EAAG,CAAA,UAAA,EAAY,MAAW,KAAA,EAAA,CAAG,UAAY,EAAA,MAAA;AAAA;AAEpD;AAEa,MAAA,gBAAA,GAAwC,CAAC,MAAA,EAAQ,SAAc,KAAA;AAC1E,EAAM,MAAA,EAAE,OAAS,EAAA,EAAA,EAAO,GAAA,MAAA;AACxB,EAAM,MAAA,EAAE,OAAS,EAAA,EAAA,EAAO,GAAA,SAAA;AACxB,EAAA,IAAI,eAAe,EAAI,EAAA,EAAE,KAAK,iBAAkB,CAAA,MAAA,EAAQ,SAAS,CAAG,EAAA;AAClE,IAAO,OAAA,KAAA;AAAA,GACE,MAAA,IAAA,EAAA,KAAO,KAAa,CAAA,IAAA,EAAA,KAAO,KAAW,CAAA,EAAA;AAC/C,IAAO,OAAA,IAAA;AAAA,GACE,MAAA,IAAA,EAAA,EAAI,MAAW,KAAA,EAAA,EAAI,MAAQ,EAAA;AACpC,IAAO,OAAA,IAAA;AAAA;AAET,EAAO,OAAA,EAAA,CAAG,KAAK,CAAC,MAAA,EAAQ,MAAM,MAAW,KAAA,EAAA,GAAK,CAAC,CAAC,CAAA;AAClD;AAEA,MAAM,aAAA,GAAqC,CAAC,MAAA,EAAQ,SAAc,KAAA;AAChE,EAAM,MAAA,EAAE,IAAM,EAAA,EAAA,EAAO,GAAA,MAAA;AACrB,EAAM,MAAA,EAAE,IAAM,EAAA,EAAA,EAAO,GAAA,SAAA;AACrB,EAAA,IAAI,eAAe,EAAI,EAAA,EAAE,KAAK,cAAe,CAAA,MAAA,EAAQ,SAAS,CAAG,EAAA;AAC/D,IAAO,OAAA,KAAA;AAAA,GACE,MAAA,IAAA,EAAA,KAAO,KAAa,CAAA,IAAA,EAAA,KAAO,KAAW,CAAA,EAAA;AAC/C,IAAO,OAAA,IAAA;AAAA,aACE,EAAI,EAAA,QAAA,CAAS,MAAW,KAAA,EAAA,EAAI,SAAS,MAAQ,EAAA;AACtD,IAAO,OAAA,IAAA;AAAA;AAET,EAAA,OAAO,GAAG,QAAS,CAAA,IAAA;AAAA,IACjB,CAAC,EAAE,MAAA,EAAQ,QAAS,EAAA,EAAG,MACrB,MAAW,KAAA,EAAA,CAAG,QAAS,CAAA,CAAC,EAAE,MAAU,IAAA,QAAA,KAAa,EAAG,CAAA,QAAA,CAAS,CAAC,CAAE,CAAA;AAAA,GACpE;AACF,CAAA;AAEA,MAAM,mBAAA,GAA2C,CAC/C,EAAE,UAAA,EAAY,IACd,EAAA,EAAE,UAAY,EAAA,EAAA,EACX,KAAA;AACH,EAAI,IAAA,cAAA,CAAe,EAAI,EAAA,EAAE,CAAG,EAAA;AAC1B,IAAO,OAAA,KAAA;AAAA;AAET,EAAI,IAAA,EAAA,KAAO,KAAa,CAAA,IAAA,EAAA,KAAO,KAAW,CAAA,EAAA;AACxC,IAAO,OAAA,IAAA;AAAA;AAET,EAAA,OAAO,GAAG,KAAU,KAAA,EAAA,CAAG,KAAS,IAAA,EAAA,CAAG,eAAe,EAAG,CAAA,UAAA;AACvD,CAAA;AAEO,MAAM,iBAAkD,GAAA;AAAA,EAC7D,mBAAqB,EAAA,KAAA;AAAA,EACrB,iBAAmB,EAAA,KAAA;AAAA,EACnB,cAAgB,EAAA,KAAA;AAAA,EAChB,aAAe,EAAA,KAAA;AAAA,EACf,cAAgB,EAAA,KAAA;AAAA,EAChB,SAAW,EAAA,IAAA;AAAA,EACX,WAAa,EAAA,KAAA;AAAA,EACb,iBAAmB,EAAA;AACrB;AAEa,MAAA,eAAA,GAAkB,CAC7B,MAAA,EACA,SACiC,KAAA;AACjC,EAAI,IAAA,cAAA,CAAe,MAAQ,EAAA,SAAS,CAAG,EAAA;AACrC,IAAO,OAAA,iBAAA;AAAA;AAGT,EAAI,IAAA,MAAA,KAAW,KAAa,CAAA,IAAA,SAAA,IAAa,KAAW,CAAA,EAAA;AAClD,IAAO,OAAA,iBAAA;AAAA,GACT,MAAA,IAAW,WAAW,KAAW,CAAA,EAAA;AAC/B,IAAO,OAAA,eAAA,CAAgB,EAAC,EAAG,SAAS,CAAA;AAAA,GACtC,MAAA,IAAW,cAAc,KAAW,CAAA,EAAA;AAClC,IAAO,OAAA,eAAA,CAAgB,MAAQ,EAAA,EAAE,CAAA;AAAA;AAGnC,EAAM,MAAA,mBAAA,GAAsB,qBAAsB,CAAA,MAAA,EAAQ,SAAS,CAAA;AACnE,EAAM,MAAA,iBAAA,GAAoB,mBAAoB,CAAA,MAAA,EAAQ,SAAS,CAAA;AAC/D,EAAM,MAAA,cAAA,GAAiB,gBAAiB,CAAA,MAAA,EAAQ,SAAS,CAAA;AACzD,EAAM,MAAA,aAAA,GAAgB,eAAgB,CAAA,MAAA,EAAQ,SAAS,CAAA;AACvD,EAAM,MAAA,cAAA,GAAiB,gBAAiB,CAAA,MAAA,EAAQ,SAAS,CAAA;AACzD,EAAM,MAAA,WAAA,GAAc,aAAc,CAAA,MAAA,EAAQ,SAAS,CAAA;AACnD,EAAM,MAAA,iBAAA,GAAoB,mBAAoB,CAAA,MAAA,EAAQ,SAAS,CAAA;AAE/D,EAAA,MAAM,YAAY,EAChB,mBAAA,IACA,qBACA,cACA,IAAA,aAAA,IACA,kBACA,WACA,IAAA,iBAAA,CAAA;AAGF,EAAO,OAAA;AAAA,IACL,mBAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AACF;AAEa,MAAA,UAAA,GAAa,CACxB,MAAA,KAEA,MAAW,KAAA,KAAA,CAAA,IACX,OAAO,OAAY,KAAA,KAAA,CAAA,IACnB,MAAO,CAAA,OAAA,CAAQ,MAAS,GAAA;AAEb,MAAA,aAAA,GAAgB,CAC3B,MAEA,KAAA,MAAA,EAAQ,mBAAmB,KAC3B,CAAA,IAAA,MAAA,CAAO,cAAe,CAAA,MAAA,CAAO,MAAS,GAAA;AAE3B,MAAA,SAAA,GAAY,CAAC,MACxB,KAAA,MAAA,EAAQ,eAAe,KAAa,CAAA,IAAA,MAAA,CAAO,UAAW,CAAA,MAAA,CAAO,MAAS,GAAA;AAEjE,MAAM,OAAU,GAAA,CAAC,MACtB,KAAA,MAAA,EAAQ,SAAS,KACjB,CAAA,IAAA,KAAA,CAAM,OAAQ,CAAA,MAAA,CAAO,MAAM,QAAQ,CAAA,IACnC,MAAO,CAAA,IAAA,CAAK,SAAS,MAAS,GAAA;AAEzB,MAAM,gCAAgC,CAC3C,MAAA,KAEA,OAAQ,MAAA,CAAuC,yBAAyB,CACxE,KAAA;AAEK,MAAM,oBAAuB,GAAA,CAClC,OACuC,KAAA,OAAA,CAAQ,IAAS,KAAA;AAEnD,MAAM,0BAA6B,GAAA,CACxC,GAEC,KAAA,GAAA,CAAiC,IAAS,KAAA;AAEtC,MAAM,gBAAmB,GAAA,CAAC,GAC/B,KAAA,OAAQ,IAA0B,MAAW,KAAA;AAExC,MAAM,eAAkB,GAAA,CAC7B,QAEA,KAAA,QAAA,EAAU,IAAS,KAAA;AAEd,MAAM,sBAAsB,CACjC,GAAA,KAEC,GAA4B,CAAA,IAAA,CAAK,SAAS,cAAc;AAE9C,MAAA,iBAAA,GAAoB,CAC/B,GAAA,KACmC,UAAc,IAAA;AAQtC,MAAA,kBAAA,GAAqB,CAChC,OAEA,KAAA,OAAA,CAAQ,SAAS,iBAAqB,IAAA,KAAA,CAAM,OAAQ,CAAA,OAAA,CAAQ,IAAI;AAErD,MAAA,kBAAA,GAAqB,CAChC,MAGG,KAAA;AACH,EACE,IAAA,MAAA,CAAO,YACP,IAAA,MAAA,CAAO,cACP,IAAA,MAAA,CAAO,OACP,IAAA,MAAA,CAAO,UACP,IAAA,MAAA,CAAO,OACP,IAAA,MAAA,CAAO,IACP,EAAA;AACA,IAAO,OAAA,MAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA;AAAA,MACJ,eAAe,EAAC;AAAA,MAChB,cAAgB,EAAA,UAAA,GAAa,EAAE,MAAA,EAAQ,EAAG,EAAA;AAAA,MAC1C,UAAU,EAAC;AAAA,MACX,UAAY,EAAA,MAAA,GAAS,EAAE,MAAA,EAAQ,EAAG,EAAA;AAAA,MAClC,UAAU,EAAC;AAAA,MACX,IAAO,GAAA,EAAE,QAAU,EAAA,EAAG,EAAA;AAAA,MACtB;AAAA,KACE,GAAA,MAAA;AAEJ,IAAO,OAAA;AAAA,MACL,YAAA;AAAA,MACA,cAAgB,EAAA,UAAA;AAAA,MAChB,OAAA;AAAA,MACA,UAAY,EAAA,MAAA;AAAA,MACZ,OAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACF;AAAA;AAEJ;AAKO,MAAM,wBAAwB,CACnC,GAAA,EACA,cAEA,MAAO,CAAA,OAAA,CAAQ,SAAS,CAAE,CAAA,MAAA;AAAA,EACxB,CAAC,MAAA,EAAQ,CAAC,IAAA,EAAM,KAAK,CAAO,MAAA;AAAA,IAC1B,GAAG,MAAA;AAAA,IACH,CAAC,IAAI,GAAG,GAAA,CAAI,KAAK;AAAA,GACnB,CAAA;AAAA,EACA;AACF;;;;;;;;;;;;ACxWF,IAAA,UAAA;AAgCO,MAAe,uBACZ,YAEV,CAAA;AAAA,EAeE,WAAY,CAAA;AAAA,IACV,YAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GAC4C,EAAA;AAC5C,IAAM,KAAA,EAAA;AAvBR;AAAA,IAAOqD,eAAA,CAAA,IAAA,EAAA,UAAA,CAAA;AAEP,IAAUA,eAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AACV,IAAAA,eAAA,CAAA,IAAA,EAAU,SAAyB,EAAA,aAAA,CAAA;AACnC,IAAUA,eAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AACV,IAAUA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAS,KAAM,CAAA,CAAA,EAAG,CAAC,CAAA,CAAA;AAC7B,IAAAA,eAAA,CAAA,IAAA,EAAU,OAAQ,EAAA,CAAA,CAAA;AAClB,IAAUA,eAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAEV,IAAahD,cAAA,CAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;AAEb,IAAAgD,eAAA,CAAA,IAAA,EAAQ,qCAAsC,EAAA,KAAA,CAAA;AAa5C,IAAA,IAAA,CAAK,OAAU,GAAA;AAAA,MACb,GAAG,IAAK,CAAA,OAAA;AAAA,MACR,YAAA,EAAc,YAAgB,IAAA,IAAA,CAAK,OAAQ,CAAA,YAAA;AAAA,MAC3C,cAAA,EAAgB,cAAkB,IAAA,IAAA,CAAK,OAAQ,CAAA,cAAA;AAAA,MAC/C,OAAA,EAAS,OAAW,IAAA,IAAA,CAAK,OAAQ,CAAA,OAAA;AAAA,MACjC,UAAA,EAAY,UAAc,IAAA,IAAA,CAAK,OAAQ,CAAA,UAAA;AAAA,MACvC,OAAA,EAAS,OAAW,IAAA,IAAA,CAAK,OAAQ,CAAA,OAAA;AAAA,MACjC,IAAA,EAAM,IAAQ,IAAA,IAAA,CAAK,OAAQ,CAAA;AAAA,KAC7B;AAEA,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AACd,IAAA,IAAA,CAAK,WAAW,QAAY,IAAA,EAAA;AAAA;AAC9B,EAEA,SACE,CAAA;AAAA,IACE,cAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAW,GAAA,IAAA,CAAK,QAAa,KAAA,IAAA,CAAK,WAAW,IAAK,EAAA;AAAA,KAEpD,QACA,EAAA;AACA,IAAA,IAAA,CAAK,eAAkB,GAAA,QAAA;AACvB,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAEhB,IAAA,IACE,YACA,IAAA,cAAA,IACA,OACA,IAAA,UAAA,IACA,WACA,IACA,EAAA;AACA,MAAA,IAAA,CAAK,OAAU,GAAA;AAAA,QACb,GAAG,IAAK,CAAA,OAAA;AAAA,QACR,YAAA,EAAc,YAAgB,IAAA,IAAA,CAAK,OAAQ,CAAA,YAAA;AAAA,QAC3C,cAAA,EAAgB,cAAkB,IAAA,IAAA,CAAK,OAAQ,CAAA,cAAA;AAAA,QAC/C,OAAA,EAAS,OAAW,IAAA,IAAA,CAAK,OAAQ,CAAA,OAAA;AAAA,QACjC,UAAA,EAAY,UAAc,IAAA,IAAA,CAAK,OAAQ,CAAA,UAAA;AAAA,QACvC,OAAA,EAAS,OAAW,IAAA,IAAA,CAAK,OAAQ,CAAA,OAAA;AAAA,QACjC,IAAA,EAAM,IAAQ,IAAA,IAAA,CAAK,OAAQ,CAAA;AAAA,OAC7B;AAAA;AAMF,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AAAA;AAChB;AACF,EAEA,IAAI,YAAe,GAAA;AACjB,IAAA,OAAO,KAAK,OAAQ,CAAA,YAAA;AAAA;AACtB,EAEA,IAAI,aAAa,YAAgC,EAAA;AAC/C,IAAA,IAAA,CAAK,MAAS,GAAA;AAAA,MACZ,GAAG,IAAK,CAAA,OAAA;AAAA,MACR;AAAA,KACF;AACA,IAAA,IAAA,CAAK,IAAK,CAAA,QAAA,EAAU,IAAK,CAAA,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA;AAC9C,EAEA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,KAAK,OAAQ,CAAA,cAAA;AAAA;AACtB,EAEA,IAAI,WAAW,UAA0C,EAAA;AACvD,IAAA,IAAA,CAAK,MAAS,GAAA;AAAA,MACZ,GAAG,IAAK,CAAA,OAAA;AAAA,MACR,cAAgB,EAAA;AAAA,KAClB;AAAA;AACF,EAEA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,KAAK,OAAQ,CAAA,OAAA;AAAA;AACtB,EAEA,IAAI,QAAQ,OAAmB,EAAA;AAC7B,IAAA,IAAA,CAAK,MAAS,GAAA;AAAA,MACZ,GAAG,IAAK,CAAA,OAAA;AAAA,MACR;AAAA,KACF;AACA,IAAA,IAAA,CAAK,IAAK,CAAA,QAAA,EAAU,IAAK,CAAA,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA;AAC9C,EAEA,IAAI,MAAS,GAAA;AACX,IAAA,OAAO,KAAK,OAAQ,CAAA,UAAA;AAAA;AACtB,EAEA,IAAI,OAAO,MAA0B,EAAA;AACnC,IAAA,IAAA,CAAK,MAAS,GAAA;AAAA,MACZ,GAAG,IAAK,CAAA,OAAA;AAAA,MACR,UAAY,EAAA;AAAA,KACd;AAAA;AACF,EAEA,IAAI,oCAAuC,GAAA;AACzC,IAAA,OAAO,KAAK,gBAAqB,KAAA,KAAA,CAAA;AAAA;AACnC,EAEU,mBAAsB,GAAA;AAC9B,IAAA,IAAI,KAAK,gBAAkB,EAAA;AACzB,MAAA,IAAA,CAAK,UAAU,IAAK,CAAA,gBAAA;AACpB,MAAQ,OAAA,CAAA,GAAA;AAAA,QACN,iDAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAA,CAAK,gBAAmB,GAAA,KAAA,CAAA;AACxB,MAAA,IAAA,CAAK,KAAK,QAAU,EAAA,IAAA,CAAK,OAAS,EAAA,IAAA,CAAK,OAAO,IAAI,CAAA;AAAA,KAC7C,MAAA;AACL,MAAM,MAAA,KAAA;AAAA,QACJ,CAAA,4EAAA;AAAA,OACF;AAAA;AACF;AACF,EAEA,IAAI,MAAS,GAAA;AACX,IAAO,OAAA,IAAA,CAAK,oBAAoB,IAAK,CAAA,OAAA;AAAA;AACvC,EAEA,IAAI,OAAO,MAAwC,EAAA;AACjD,IAAM,MAAA,SAAA,GAAY,IAAK,CAAA,mCAAA,GACnB,IACA,GAAA,KAAA,CAAA;AAEJ,IAAA,IAAA,CAAK,mCAAsC,GAAA,KAAA;AAC3C,IAAM,MAAA,aAAA,GAAgB,IAAK,CAAA,WAAA,CAAY,MAAM,CAAA;AAC7C,IAAA,IAAI,aAAe,EAAA;AACjB,MAAA,IAAA,CAAK,KAAK,QAAU,EAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,KAAA,EAAO,WAAW,aAAa,CAAA;AAAA;AACvE;AACF,EAEA,IAAI,gBAAgB,MAAwC,EAAA;AAC1D,IAAA,IAAA,CAAK,mCAAsC,GAAA,IAAA;AAC3C,IAAM,MAAA,aAAA,GAAgB,IAAK,CAAA,WAAA,CAAY,MAAM,CAAA;AAC7C,IAAA,IAAI,aAAe,EAAA;AACjB,MAAA,IAAA,CAAK,KAAK,QAAU,EAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,KAAA,EAAO,OAAO,aAAa,CAAA;AAAA;AACnE;AACF,EAEA,IAAI,SAAY,GAAA;AACd,IAAA,OAAOrD,cAAK,CAAA,IAAA,EAAA,UAAA,CAAA;AAAA;AACd,EAEA,IAAI,UAAU,SAAmB,EAAA;AAC/B,IAAI,IAAA,SAAA,KAAcA,qBAAK,UAAY,CAAA,EAAA;AACjC,MAAAC,cAAA,CAAA,IAAA,EAAK,UAAa,EAAA,SAAA,CAAA;AAClB,MAAK,IAAA,CAAA,IAAA,CAAK,cAAc,SAAS,CAAA;AAAA;AACnC;AACF,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AACd,EAEA,IAAI,MAAM,KAAc,EAAA;AACtB,IAAI,IAAA,KAAA,CAAM,SAAS,IAAK,CAAA,MAAA,CAAO,QAAQ,KAAM,CAAA,EAAA,KAAO,IAAK,CAAA,MAAA,CAAO,EAAI,EAAA;AAClE,MAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AACd,MAAK,IAAA,CAAA,SAAA,GAAY,KAAK,IAAK,CAAA,IAAA,CAAK,SAAS,KAAM,CAAA,EAAA,GAAK,MAAM,IAAK,CAAA,CAAA;AAC/D,MAAA,IAAA,CAAK,aAAa,KAAK,CAAA;AACvB,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAK,IAAA,CAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA,OACzB,CAAA;AAAA;AACH;AACF,EAEA,IAAI,IAAO,GAAA;AACT,IAAA,OAAO,IAAK,CAAA,KAAA;AAAA;AACd,EAEA,IAAI,KAAK,IAAc,EAAA;AACrB,IAAA,IAAA,CAAK,KAAQ,GAAA,IAAA;AACb,IAAI,IAAA,IAAA,CAAK,KAAM,CAAA,EAAA,KAAO,CAAG,EAAA;AACvB,MAAM,MAAA,SAAA,GAAY,KAAK,IAAK,CAAA,IAAA,IAAQ,KAAK,KAAM,CAAA,EAAA,GAAK,IAAK,CAAA,KAAA,CAAM,IAAK,CAAA,CAAA;AACpE,MAAA,IAAA,CAAK,SAAY,GAAA,SAAA;AAAA;AACnB;AACF,EAEA,IAAI,IAAO,GAAA;AACT,IAAA,OAAO,KAAK,OAAQ,CAAA,IAAA;AAAA;AACtB,EAEA,IAAI,KAAK,IAAe,EAAA;AACtB,IAAA,IAAA,CAAK,MAAS,GAAA;AAAA,MACZ,GAAG,IAAK,CAAA,OAAA;AAAA,MACR;AAAA,KACF;AACA,IAAA,IAAA,CAAK,IAAK,CAAA,QAAA,EAAU,IAAK,CAAA,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA;AAC9C,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,KAAK,MAAU,IAAA,EAAA;AAAA;AACxB,EAEA,IAAI,MAAM,KAAe,EAAA;AACvB,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA;AACd,IAAA,IAAA,CAAK,IAAK,CAAA,eAAA,EAAiB,IAAK,CAAA,QAAA,IAAY,IAAI,KAAK,CAAA;AAAA;AACvD;AAAA,EAGO,WAAA,CACL,MACA,EAAA,gCAAA,GAAmC,KACE,EAAA;AACrC,IAAA,MAAM,EAAE,SAAA,EAAW,GAAG,YAAA,EAAiB,GAAA,eAAA;AAAA,MACrC,IAAK,CAAA,OAAA;AAAA,MACL;AAAA,KACF;AACA,IAAA,IAAI,cAAc,IAAM,EAAA;AACtB,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,MAAM,YACJ,MAAQ,EAAA,UAAA,EAAY,UACpB,MAAQ,EAAA,UAAA,CAAW,iBAAiB,KAChC,CAAA,GAAA;AAAA,UACE,GAAG,MAAA;AAAA,UACH,UAAY,EAAA;AAAA,YACV,MAAA,EAAQ,OAAO,UAAW,CAAA,MAAA;AAAA,YAC1B,YAAc,EAAAsD,2BAAA,CAAY,MAAO,CAAA,UAAA,CAAW,MAAM;AAAA;AACpD,SAEF,GAAA,MAAA;AACN,QAAA,IAAI,gCAAkC,EAAA;AACpC,UAAA,IAAI,KAAK,mCAAqC,EAAA;AAC5C,YAAA,IAAA,CAAK,gBAAmB,GAAA;AAAA,cACtB,GAAG,IAAK,CAAA,OAAA;AAAA,cACR,GAAG;AAAA,aACL;AAAA,WACK,MAAA;AACL,YAAA,IAAA,CAAK,gBAAmB,GAAA,KAAA,CAAA;AACxB,YAAA,IAAA,CAAK,OAAU,GAAA;AAAA,cACb,GAAG,IAAK,CAAA,OAAA;AAAA,cACR,GAAG;AAAA,aACL;AAAA;AACF,SACK,MAAA;AACL,UAAA,IAAI,KAAK,mCAAqC,EAAA;AAC5C,YAAK,IAAA,CAAA,gBAAA,GAAmB,mBAAmB,SAAS,CAAA;AAAA,WAC/C,MAAA;AACL,YAAA,IAAA,CAAK,gBAAmB,GAAA,KAAA,CAAA;AACxB,YAAK,IAAA,CAAA,OAAA,GAAU,mBAAmB,SAAS,CAAA;AAAA;AAC7C;AAEF,QAAO,OAAA,YAAA;AAAA;AACT;AACF;AAIJ;AA9QE,UAAA,GAAA,IAAA,OAAA,EAAA;;ACrCK,MAAM,mBAAsB,GAAA,CACjC,MAC2C,KAAA,MAAA,CAAO,IAAS,KAAA;AAEtD,MAAM,yBAA4B,GAAA,CACvC,MAEA,KAAA,MAAA,CAAO,IAAS,KAAA;AAEX,MAAM,yBAA4B,GAAA,CACvC,MAEA,KAAA,MAAA,CAAO,IAAS,KAAA;AAEX,MAAM,qBAAwB,GAAA,CACnC,MACqC,KAAA,MAAA,CAAO,IAAS,KAAA;AAEhD,MAAM,qBAAqB,CAChC,MAAA,KAEA,sBAAsB,MAAM,CAAA,IAAK,oBAAoB,MAAM;;AC3BtD,MAAM,iBAAiB,CAAC;AAAA,EAC7B,cAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAG;AACL,CAAsC,KAAA;AACpC,EAAM,MAAA,eAAA,GAAkB,gBAAgB,MAAU,IAAA,EAAA;AAClD,EAAA,MAAM,cACJ,GAAA,UAAA,CAAW,MAAO,CAAA,MAAA,GAAS,KAAK,eAAgB,CAAA,MAAA,GAAS,CACrD,GAAA,CAAA,EAAG,WAAW,MAAM,CAAA,KAAA,EAAQ,eAAe,CAAA,CAAA,GAC3C,WAAW,MAAU,IAAA,eAAA;AAE3B,EAAA,MAAM,SAA4B,GAAA;AAAA,IAChC,GAAG,MAAA;AAAA,IACH,UAAY,EAAA;AAAA,MACV,MAAQ,EAAA,cAAA;AAAA,MACR,cACE,cAAe,CAAA,MAAA,GAAS,CAAI,GAAAA,2BAAA,CAAY,cAAc,CAAI,GAAA,KAAA;AAAA;AAC9D,GACF;AAEA,EAAO,OAAA,SAAA;AACT;;ACrBO,SAAS,qBACd,KACyB,EAAA;AACzB,EAAO,OAAA,KAAA,KAAU,UAAa,KAAU,KAAA,IAAA;AAC1C;AAEO,MAAM,WAAW,CAAC,CAAA,KACvB,OAAO,CAAA,KAAM,YAAY,CAAM,KAAA;AAwB1B,MAAM,qCAAqC,CAChD,OAAA,KAEA,OAAQ,OAAA,CAAQ,KAAmD,MACnE,KAAA;;AC5BF,MAAM,qBAAoD,GAAA;AAAA,EACxD,IAAM,EAAA,SAAA;AAAA,EACN,MAAQ,EAAA,SAAA;AAAA,EACR,MAAQ,EAAA;AACV,CAAA;AACA,MAAM,0BAAwE,GAAA;AAAA,EAC5E,UAAY,EAAA;AAAA,IACV,MAAQ,EAAA,OAAA;AAAA,IACR,OAAS,EAAA,EAAE,GAAG,qBAAA,EAAuB,QAAQ,KAAM;AAAA,GACrD;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,MAAQ,EAAA,OAAA;AAAA,IACR,OAAS,EAAA,EAAE,GAAG,qBAAA,EAAuB,QAAQ,IAAK;AAAA;AAEtD,CAAA;AAGA,MAAM,qBAAoD,GAAA;AAAA,EACxD,GAAK,EAAA,SAAA;AAAA,EACL,KAAO,EAAA,SAAA;AAAA,EACP,IAAM,EAAA;AACR,CAAA;AACA,MAAM,0BAAwE,GAAA;AAAA,EAC5E,YAAc,EAAA;AAAA,IACZ,MAAQ,EAAA,OAAA;AAAA,IACR,OAAA,EAAS,EAAE,GAAG,qBAAsB;AAAA,GACtC;AAAA,EACA,YAAA,EAAc,EAAE,MAAQ,EAAA,OAAA,EAAS,SAAS,EAAE,GAAG,uBAAwB,EAAA;AAAA,EACvE,aAAe,EAAA;AAAA,IACb,MAAQ,EAAA,OAAA;AAAA,IACR,OAAS,EAAA,EAAE,GAAG,qBAAA,EAAuB,OAAO,OAAQ;AAAA,GACtD;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,MAAQ,EAAA,OAAA;AAAA,IACR,OAAS,EAAA,EAAE,GAAG,qBAAA,EAAuB,OAAO,MAAO;AAAA,GACrD;AAAA,EACA,YAAA,EAAc,EAAE,MAAQ,EAAA,OAAA,EAAS,SAAS,EAAE,GAAG,uBAAwB,EAAA;AAAA,EACvE,cAAgB,EAAA;AAAA,IACd,MAAQ,EAAA,OAAA;AAAA,IACR,OAAS,EAAA,EAAE,GAAG,qBAAA,EAAuB,OAAO,OAAQ;AAAA,GACtD;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,MAAQ,EAAA,OAAA;AAAA,IACR,OAAS,EAAA,EAAE,GAAG,qBAAA,EAAuB,OAAO,MAAO;AAAA;AAEvD,CAAA;AAEA,SAAS,iBAAiB,OAA0B,EAAA;AAClD,EAAO,OAAA;AAAA,IACL,OAAQ,CAAA,IAAA,GAAO,0BAA2B,CAAA,OAAA,CAAQ,IAAI,CAAI,GAAA,IAAA;AAAA,IAC1D,OAAQ,CAAA,IAAA,GAAO,0BAA2B,CAAA,OAAA,CAAQ,IAAI,CAAI,GAAA;AAAA,GAC5D;AACF;AAEO,SAAS,WAAW,OAA+C,EAAA;AACxE,EAAA,MAAM,UAAa,GAAA,gBAAA,CAAiB,OAAO,CAAA,CACxC,OAAO,oBAAoB,CAAA,CAC3B,GAAI,CAAA,CAAC,MAAM,gBAAiB,CAAA,CAAA,CAAE,MAAQ,EAAA,CAAA,CAAE,OAAO,CAAC,CAAA;AAEnD,EAAA,OAAO,CAAC,CAAA,KAAM,UAAW,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,CAAE,CAAA,MAAA,CAAO,CAAC,CAAC,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA;AAC3D;AAEgB,SAAA,gBAAA,CACd,QACA,OACA,EAAA;AACA,EAAO,OAAA,IAAIC,kBAAc,CAAA,MAAA,EAAQ,OAAO,CAAA;AAC1C;;AC3EA,MAAM,qBAAwB,GAAA;AAAA,EAC5B,YAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA;AAEA,MAAM,qBAAA,GAAwB,CAAC,UAAA,EAAY,YAAY,CAAA;AAEhD,MAAM,yBAA4B,GAAA;AAAA,EACvC,IAAM,EAAA,qBAAA;AAAA,EACN,IAAM,EAAA;AACR;AACO,MAAM,mBAAsB,GAAA,EAAE,IAAM,EAAA,MAAA,EAAQ,MAAM,MAAO;AASzD,MAAM,aAAgB,GAAA,CAAC,OAC5B,KAAA,qBAAA,CAAsB,SAAS,OAAsB;AAEhD,MAAM,aAAgB,GAAA,CAAC,OAC5B,KAAA,qBAAA,CAAsB,SAAS,OAAsB;AAE1C,MAAA,iBAAA,GAAoB,CAC/B,OAEA,KAAA,aAAA,CAAc,SAAS,IAAI,CAAA,IAAK,aAAc,CAAA,OAAA,EAAS,IAAI;;AClCtD,SAAS,eAAe,CAAS,EAAA;AACtC,EAAO,OAAA,IAAIC,iBAAa,CAAA,CAAA,CAAE,WAAY,EAAA,EAAG,CAAE,CAAA,QAAA,EAAa,GAAA,CAAA,EAAG,CAAE,CAAA,OAAA,EAAS,CAAA;AACxE;;ACAO,MAAM,qBAAwB,GAAA;AAAA,EACnC,IAAM,EAAA,UAAA;AAAA,EACN,IAAM,EAAA;AACR;AAEO,MAAM,uBAA2C,GAAA;AAAA,EACtD,IAAA,EAAM,sBAAsB,MAAM;AACpC;AAEO,SAAS,gBACd,IACiB,EAAA;AACjB,EAAI,IAAA,gBAAA,CAAiB,IAAI,CAAG,EAAA;AAC1B,IAAA,IAAI,KAAK,UAAc,IAAA,iBAAA,CAAkB,IAAK,CAAA,UAAA,CAAW,OAAO,CAAG,EAAA;AACjE,MAAA,OAAO,KAAK,UAAW,CAAA,OAAA;AAAA;AACzB;AAGF,EAAO,OAAA,uBAAA;AACT;;ACOA,MAAM,SAAY,GAAA,CAAC,OAAS,EAAA,MAAA,EAAQ,QAAQ,OAAO,CAAA;AACnD,MAAM,eAAA,GAAkB,CAAC,KACvB,KAAA,OAAO,UAAU,QAAY,IAAA,SAAA,CAAU,SAAS,KAAK,CAAA;AAEvD,MAAM,iBAA8B,GAAA,OAAA;AAIpC,MAAM,QAAQ,MAAM,KAAA,CAAA;AAEpB,MAAM,mBACJ,GAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,eAAe,OAAU,GAAA,MAAA;AAEpD,MAAM,EAAE,YAAA,GAAe,mBAAoB,EAAA,GAAI,kBAAmB,EAAA;AAKrD,MAAA,MAAA,GAAS,CAAC,QAAqB,KAAA;AAC1C,EAAA,MAAM,eAAe,YAAiB,KAAA,OAAA;AACtC,EAAM,MAAA,WAAA,GAAc,gBAAgB,YAAiB,KAAA,MAAA;AACrD,EAAM,MAAA,WAAA,GAAc,eAAe,YAAiB,KAAA,MAAA;AACpD,EAAM,MAAA,YAAA,GAAe,eAAe,YAAiB,KAAA,OAAA;AAErD,EAAM,MAAA,IAAA,GAAO,WACT,GAAA,CAAC,OAAoB,KAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAC5D,GAAA,KAAA;AACJ,EAAM,MAAA,IAAA,GAAO,WACT,GAAA,CAAC,OAAoB,KAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAC5D,GAAA,KAAA;AACJ,EAAM,MAAA,KAAA,GAAQ,YACV,GAAA,CAAC,OAAoB,KAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAC7D,GAAA,KAAA;AACJ,EAAM,MAAA,KAAA,GAAQ,YACV,GAAA,CAAC,OAAoB,KAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAC7D,GAAA,KAAA;AAEJ,EAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,IAAO,OAAA;AAAA,MACL,YAAA;AAAA,MACA;AAAA,KACF;AAAA,GACK,MAAA;AACL,IAAO,OAAA;AAAA,MACL,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF;AAAA;AAEJ;AAEA,SAAS,kBAAqB,GAAA;AAC5B,EAAI,IAAA,OAAO,oBAAoB,WAAa,EAAA;AAC1C,IAAO,OAAA,eAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA;AAAA,MACL,cAAc,yBAA0B;AAAA,KAC1C;AAAA;AAEJ;AAEA,SAAS,yBAAsC,GAAA;AAC7C,EAAM,MAAA,KAAA,GAAQ,eAAe,mBAAmB,CAAA;AAChD,EAAI,IAAA,eAAA,CAAgB,KAAK,CAAG,EAAA;AAC1B,IAAO,OAAA,KAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,iBAAA;AAAA;AAEX;AAEO,MAAM,4BAA4B,MAAM;AAC7C,EAAO,OAAA,CAAA,yCAAA,EAA4C,2BAA2B,CAAA,GAAA,CAAA;AAChF;AAEO,MAAM,mBAAsB,GAAA,CACjC,OACA,EAAA,OAAA,GAAU,sBACP,KAAA;AACH,EAAQ,OAAA,CAAA,GAAA,CAAI,GAAG,OAAO,CAAA,EAAA,EAAK,KAAK,SAAU,CAAA,OAAO,CAAC,CAAE,CAAA,CAAA;AACtD;;;;;AC/GA,MAAM,EAAE,KAAA,EAAO,YAAa,EAAA,GAAI,OAAO,eAAe,CAAA;AAE/C,MAAM,YAAa,CAAA;AAAA,EAIxB,YAAoB,MAAgB,EAAA;AAAhB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAHpB,IAAAJ,eAAA,CAAA,IAAA,EAAO,OAAkB,EAAA,EAAE,IAAM,EAAA,CAAA,EAAG,IAAI,CAAE,EAAA,CAAA;AAC1C,IAAAA,eAAA,CAAA,IAAA,EAAO,WAAY,EAAA,CAAA,CAAA;AAAA;AAEkB,EAErC,KAAQ,GAAA;AACN,IAAA,OAAO,KAAK,SAAc,KAAA,CAAA;AAAA;AAC5B,EACA,GAAI,CAAA,EAAE,IAAM,EAAA,EAAA,EAAgB,EAAA;AAC1B,IAAM,MAAA,EAAE,WAAc,GAAA,IAAA;AACtB,IAAA,IAAA,CAAK,MAAM,IAAO,GAAA,IAAA;AAClB,IAAA,IAAA,CAAK,MAAM,EAAK,GAAA,EAAA;AAChB,IAAK,IAAA,CAAA,SAAA,GAAY,YAAY,GAAI,EAAA;AACjC,IAAA,IAAI,SAAW,EAAA;AACb,MACE,YAAA,IAAA,KAAA;AAAA,QACE,CAAI,CAAA,EAAA,IAAA,CAAK,MAAM,CAAA,GAAA,EAAM,IAAI,CAAA,CAAA,EAAI,EAAE,CAAA,GAAA,EAAA,CAC7B,IAAK,CAAA,SAAA,GAAY,SACjB,EAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,WAAA;AAAA,OACd;AAAA,KACG,MAAA;AACL,MAAO,OAAA,CAAA;AAAA;AACT;AAEJ;;AC9BO,MAAM,QAAW,GAAA,CACtB,WACA,EAAA,SAAA,EACA,WACgB,KAAA;AAChB,EAAM,MAAA,EAAA,GAAK,QAAS,CAAA,aAAA,CAAc,WAAW,CAAA;AAC7C,EAAA,IAAI,SAAW,EAAA;AACb,IAAA,EAAA,CAAG,SAAY,GAAA,SAAA;AAAA;AAEjB,EAAA,IAAI,WAAa,EAAA;AACf,IAAA,EAAA,CAAG,WAAc,GAAA,WAAA;AAAA;AAEnB,EAAO,OAAA,EAAA;AACT;AAEa,MAAA,mBAAA,GAAsB,CACjC,EAAA,EACA,QACG,KAAA;AACH,EAAA,IAAI,EAAI,EAAA;AACN,IAAI,IAAA,EAAA,CAAG,YAAa,CAAA,UAAU,CAAG,EAAA;AAC/B,MAAA,MAAM,YAAe,GAAA,QAAA,CAAS,EAAG,CAAA,YAAA,CAAa,UAAU,CAAW,CAAA;AACnE,MAAA,IACE,CAAC,KAAM,CAAA,YAAY,MAClB,QAAa,KAAA,KAAA,CAAA,IAAa,iBAAiB,QAC5C,CAAA,EAAA;AACA,QAAO,OAAA,EAAA;AAAA;AACT;AAEF,IAAA,MAAM,WACJ,GAAA,OAAO,QAAa,KAAA,QAAA,GACf,EAAG,CAAA,aAAA,CAAc,CAAc,WAAA,EAAA,QAAQ,CAAI,EAAA,CAAA,CAAA,GAC3C,EAAG,CAAA,aAAA,CAAc,YAAY,CAAA;AACpC,IAAA,IAAI,WAAa,EAAA;AACf,MAAO,OAAA,WAAA;AAAA;AACT;AAEJ;AAEa,MAAA,mBAAA,GAAsB,CAAC,EAA2B,KAAA;AAC7D,EAAA,IAAI,EAAI,EAAA;AACN,IAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,EAAG,CAAA,OAAA,CAAQ,SAAS,EAAE,CAAA;AAC7C,IAAI,IAAA,CAAC,KAAM,CAAA,KAAK,CAAG,EAAA;AACjB,MAAO,OAAA,KAAA;AAAA;AACT;AAEF,EAAO,OAAA,CAAA,CAAA;AACT;AAYgB,SAAA,YAAA,CACd,EACA,EAAA,cAAA,EACA,eACA,EAAA;AACA,EAAA,IAAI,EAAI,EAAA;AACN,IAAM,MAAA,MAAA,GAAU,EAAmB,CAAA,OAAA,CAAQ,cAAc,CAAA;AACzD,IAAA,IAAI,MAAQ,EAAA;AACV,MAAO,OAAA,MAAA;AAAA;AACT;AAEF,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAM,MAAA,KAAA,CAAM,CAA8B,2BAAA,EAAA,cAAc,CAAG,CAAA,CAAA,CAAA;AAAA,GACtD,MAAA;AACL,IAAO,OAAA,IAAA;AAAA;AAEX;AAEa,MAAA,UAAA,GAAa,CAAC,EAAiB,EAAA,YAAA,KAC1C,aAAa,EAAI,EAAA,CAAA,MAAA,EAAS,YAAY,CAAG,CAAA,CAAA;AAEpC,MAAM,mBAAsB,GAAA,CAAC,EAAoB,KAAA,UAAA,CAAW,IAAI,OAAO;AAYvE,SAAS,qBACd,CAAA,SAAA,EACA,KACA,EAAA,eAAA,GAAkB,KAClB,EAAA;AACA,EAAI,IAAA,SAAA,IAAa,QAAQ,eAAiB,EAAA;AACxC,IAAA,MAAM,MAAM,qDAAqD,CAAA;AAAA;AAEnE,EAAA,MAAM,UAAU,SAAW,EAAA,aAAA;AAAA,IACzB,gBAAgB,KAAK,CAAA,EAAA;AAAA,GACvB;AACA,EAAA,IAAI,OAAS,EAAA;AACX,IAAO,OAAA,OAAA;AAAA,aACE,eAAiB,EAAA;AAC1B,IAAM,MAAA,KAAA;AAAA,MACJ;AAAA,KACF;AAAA,GACK,MAAA;AACL,IAAO,OAAA,KAAA,CAAA;AAAA;AAEX;AAEa,MAAA,0BAAA,GAA6B,CACxC,EAAA,EACA,QACG,KAAA;AAEH,EAAA,qBAAA,CAAsB,MAAM;AAC1B,IAAM,MAAA,gBAAA,GAAmB,mBAAoB,CAAA,EAAA,EAAI,QAAQ,CAAA;AACzD,IAAA,IAAI,gBAAkB,EAAA;AACpB,MAAA,gBAAA,CAAiB,KAAM,EAAA;AAAA;AACzB,GACD,CAAA;AACH;AAEa,MAAA,mBAAA,GAAsB,CAAC,EAA4B,KAAA;AAC9D,EAAM,MAAA,IAAA,GAAO,EAAI,EAAA,OAAA,CAAQ,cAAc,CAAA;AACvC,EACE,IAAA,CAAC,IACD,IAAA,IAAA,CAAK,YACL,IAAA,IAAA,CAAK,OAAQ,CAAA,UAAA,KAAe,OAC5B,IAAA,IAAA,CAAK,aAAc,CAAA,kDAAkD,CACrE,EAAA;AACA,IAAO,OAAA,KAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,IAAA;AAAA;AAEX;AAEa,MAAA,cAAA,GAAiB,CAC5B,EAC2B,KAAA;AAC3B,EAAA,IAAI,OAAO,IAAM,EAAA;AACf,IAAO,OAAA,KAAA;AAAA,GACF,MAAA;AACL,IAAA,OAAQ,GAAmB,OAAY,KAAA,OAAA;AAAA;AAE3C;AAEa,MAAA,WAAA,GAAc,CACzB,EAEA,KAAA,cAAA,CAAe,EAAE,CAAK,IAAA,EAAA,CAAG,SAAU,CAAA,QAAA,CAAS,qBAAqB;AAEtD,MAAA,iBAAA,GAAoB,CAAC,EAAyC,KAAA;AACzE,EAAA,IAAI,OAAO,IAAM,EAAA;AACf,IAAA,OAAQ,GAAmB,YAAiB,KAAA,MAAA;AAAA;AAEhD;AAEA,IAAI,IAAA;AAEG,SAAS,gBAAmB,GAAA;AACjC,EAAA,IAAI,SAAS,KAAW,CAAA,EAAA;AACtB,IAAI,IAAA,KAAA,GAA4B,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AAC5D,IAAA,KAAA,CAAM,SAAY,GAAA,oBAAA;AAClB,IAAA,KAAA,CAAM,MAAM,KAAQ,GAAA,MAAA;AACpB,IAAA,KAAA,CAAM,MAAM,MAAS,GAAA,MAAA;AACrB,IAAA,KAAA,CAAM,MAAM,SAAY,GAAA,QAAA;AACxB,IAAA,KAAA,CAAM,MAAM,QAAW,GAAA,UAAA;AACvB,IAAA,KAAA,CAAM,MAAM,GAAM,GAAA,QAAA;AAClB,IAAA,KAAA,CAAM,MAAM,IAAO,GAAA,QAAA;AACnB,IAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AAC1C,IAAA,KAAA,CAAM,MAAM,MAAS,GAAA,OAAA;AACrB,IAAA,KAAA,CAAM,MAAM,KAAQ,GAAA,MAAA;AACpB,IAAA,KAAA,CAAM,YAAY,KAAK,CAAA;AACvB,IAAS,QAAA,CAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAC/B,IAAA,MAAM,aAAa,KAAM,CAAA,WAAA;AACzB,IAAA,MAAM,aAAa,KAAM,CAAA,WAAA;AACzB,IAAS,QAAA,CAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAC/B,IAAA,IAAA,GAAO,UAAa,GAAA,UAAA;AACpB,IAAQ,KAAA,GAAA,IAAA;AAAA;AAGV,EAAO,OAAA,IAAA;AACT;AAKa,MAAA,kBAAA,GAAqB,CAAC,EAAA,EAAiB,IAA0B,KAAA;AAC5E,EAAM,MAAA,GAAA,GAAM,IAAI,UAAA,CAAW,IAAM,EAAA;AAAA,IAC/B,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,IACT,UAAY,EAAA;AAAA,GACb,CAAA;AACD,EAAA,EAAA,CAAG,cAAc,GAAG,CAAA;AACtB;AACO,MAAM,qBAAwB,GAAA,CACnC,EACA,EAAA,IAAA,EACA,GACG,KAAA;AACH,EAAM,MAAA,GAAA,GAAM,IAAI,aAAA,CAAc,IAAM,EAAA;AAAA,IAClC,GAAA;AAAA,IACA,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,IACT,UAAY,EAAA;AAAA,GACb,CAAA;AACD,EAAA,EAAA,CAAG,cAAc,GAAG,CAAA;AACtB;AAIa,MAAA,mBAAA,GAAsB,CAAC,EAAA,EAAiB,IAA0B,KAAA;AAC7E,EAAM,MAAA,GAAA,GAAM,IAAI,KAAA,CAAM,IAAM,EAAA;AAAA,IAC1B,OAAS,EAAA,IAAA;AAAA,IACT,UAAY,EAAA;AAAA,GACb,CAAA;AACD,EAAA,EAAA,CAAG,cAAc,GAAG,CAAA;AACtB;;ACjNa,MAAA,YAAA,GAAe,CAAC,MAA8C,KAAA;AACzE,EAAM,MAAA,aAAA,GAAgB,YAAa,CAAA,MAAA,EAAQ,cAAc,CAAA;AACzD,EAAM,MAAA,SAAA,GAAY,eAAe,OAAQ,CAAA,KAAA;AACzC,EAAA,IAAI,SAAW,EAAA;AACb,IAAO,OAAA,SAAA;AAAA,GACF,MAAA;AACL,IAAA,MAAM,MAAM,4BAA4B,CAAA;AAAA;AAE5C;AAIO,MAAM,QAAW,GAAA,CACtB,IACA,EAAA,KAAA,KACoB,IAAS,KAAA;AA8BxB,SAAS,aACd,CAAA,KAAA,EACA,IACA,EAAA,cAAA,GAAiB,KACe,EAAA;AAChC,EAAA,QAAQ,IAAM;AAAA,IACZ,KAAK,KAAA;AAAA,IACL,KAAK,MAAQ,EAAA;AACX,MAAI,IAAA,gBAAA,CAAiB,KAAK,CAAG,EAAA;AAC3B,QAAO,OAAA,QAAA,CAAS,OAAO,EAAE,CAAA;AAAA,iBAChB,cAAgB,EAAA;AACzB,QAAA,MAAM,KAAM,CAAA,CAAA,MAAA,EAAS,KAAK,CAAA,gBAAA,EAAmB,IAAI,CAAE,CAAA,CAAA;AAAA,OAC9C,MAAA;AACL,QAAO,OAAA,KAAA,CAAA;AAAA;AACT;AACF,IAEA,KAAK,QAAA;AAAA,IACL,KAAK,QAAU,EAAA;AACb,MAAI,IAAA,oBAAA,CAAqB,KAAK,CAAG,EAAA;AAC/B,QAAA,OAAO,WAAW,KAAK,CAAA;AAAA,iBACd,cAAgB,EAAA;AACzB,QAAA,MAAM,KAAM,CAAA,CAAA,MAAA,EAAS,KAAK,CAAA,gBAAA,EAAmB,IAAI,CAAE,CAAA,CAAA;AAAA,OAC9C,MAAA;AACL,QAAO,OAAA,KAAA,CAAA;AAAA;AACT;AACF,IAEA,KAAK,SAAA;AACH,MAAO,OAAA,KAAA,KAAU,SAAS,IAAO,GAAA,KAAA;AAAA,IACnC;AACE,MAAO,OAAA,KAAA;AAAA;AAEb;;;;;;;;AC3FA,IAAA,QAAA,EAAA,QAAA;AAoBA,MAAM,oBAAA,uBAA2B,GAA+B,CAAA;AAAA,EAC9D,GAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAC,CAAA;AAEM,MAAM,wBAAwB,CAAC,EAAA,KACpC,OAAO,IAAQ,IAAA,oBAAA,CAAqB,IAAI,EAA+B;AAElE,MAAM,gBAAgB,CAAC,CAAA,KAC5B,CAAM,KAAA,KAAA,CAAA,IAAa,EAAE,IAAS,KAAA,KAAA;AAGnB,MAAA,mBAAA,GAAsB,CACjC,CAEA,KAAA,CAAA,KAAM,UACN,oBAAqB,CAAA,GAAA,CAAI,EAAE,EAA+B;AAE/C,MAAA,cAAA,GAAiB,CAC5B,CAEA,KAAA,CAAA,KAAM,WAAc,mBAAoB,CAAA,CAAC,CAAK,IAAA,kBAAA,CAAmB,CAAC,CAAA;AAE7D,MAAM,qBAAqB,CAChC,CAAA,KACgC,CAAM,KAAA,KAAA,CAAA,IAAa,EAAE,EAAO,KAAA;AAEvD,MAAM,UAAa,GAAA,CAAC,CACzB,KAAA,CAAA,CAAE,EAAO,KAAA;AACJ,MAAM,WAAc,GAAA,CAAC,CAC1B,KAAA,CAAA,CAAE,EAAO,KAAA;AACJ,MAAM,UAAa,GAAA,CAAC,CAAsC,KAAA,CAAA,CAAE,EAAO,KAAA;AAEnE,MAAM,gBAAmB,GAAA,CAAC,MAC/B,KAAA,mBAAA,CAAoB,MAAM,CAAA,IAC1B,MAAO,CAAA,MAAA,KAAW,KAClB,CAAA,IAAA,MAAA,CAAO,EAAO,KAAA,KAAA,CAAA,IACd,OAAO,KAAU,KAAA,KAAA;AAEZ,SAAS,oBACd,CACwB,EAAA;AACxB,EAAA,OAAO,MAAM,KAAc,CAAA,KAAA,CAAA,CAAE,EAAO,KAAA,KAAA,IAAS,EAAE,EAAO,KAAA,IAAA,CAAA;AACxD;AAEa,MAAA,oBAAA,GAAuB,CAClC,OACA,EAAA,EAAE,cAEF,KAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MAAW,KAAA;AAEtB,EAAA,MAAM,MAAS,GAAA,sBAAA,CAAuB,YAAc,EAAA,MAAA,CAAO,IAAI,CAAA;AAC/D,EAAA,IAAI,WAAW,KAAW,CAAA,EAAA;AACxB,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH;AAAA,KACF;AAAA,GACF,MAAA,IAAW,OAAO,MAAQ,EAAA;AACxB,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH,MAAQ,EAAA,KAAA;AAAA,KACV;AAAA,GACK,MAAA;AACL,IAAO,OAAA,MAAA;AAAA;AAEX,CAAC;AAEI,MAAM,gBAAmB,GAAA,CAAC,MAC/B,KAAA,MAAA,CAAO,MAAW,KAAA,KAAA;AAEb,MAAM,yBAAyB,CAAC,OAAA,KACrC,OAAQ,CAAA,GAAA,CAAI,CAAC,GAAQ,KAAA;AACnB,EAAA,MAAM,EAAE,MAAA,EAAQ,GAAG,IAAA,EAAS,GAAA,GAAA;AAC5B,EAAA,OAAO,SAAS,IAAO,GAAA,GAAA;AACzB,CAAC;AAEU,MAAA,sBAAA,GAAyB,CACpC,MAAA,EACA,UACG,KAAA;AACH,EAAI,IAAA,mBAAA,CAAoB,MAAM,CAAG,EAAA;AAC/B,IAAO,OAAA,uBAAA,CAAwB,QAAQ,UAAU,CAAA;AAAA;AAEnD,EAAI,IAAA,cAAA,CAAe,MAAM,CAAG,EAAA;AAC1B,IAAO,OAAA,MAAA,CAAO,MAAW,KAAA,UAAA,GAAa,MAAS,GAAA,KAAA,CAAA;AAAA;AAEjD,EAAO,OAAA,KAAA,CAAA;AACT;AAEA,MAAM,uBAAA,GAA0B,CAC9B,MAAA,EACA,UACG,KAAA;AACH,EAAM,MAAA,EAAE,OAAS,EAAA,EAAA,EAAO,GAAA,MAAA;AACxB,EAAA,MAAM,UAAoB,EAAC;AAC3B,EAAQ,OAAA,CAAA,OAAA,CAAQ,CAACK,OAAW,KAAA;AAC1B,IAAM,MAAA,GAAA,GAAM,sBAAuBA,CAAAA,OAAAA,EAAQ,UAAU,CAAA;AACrD,IAAA,IAAI,GAAK,EAAA;AACP,MAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA;AAClB,GACD,CAAA;AACD,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,MAAA,IAAW,OAAQ,CAAA,MAAA,KAAW,CAAG,EAAA;AAC/B,IAAA,OAAO,QAAQ,CAAC,CAAA;AAAA;AAElB,EAAO,OAAA;AAAA,IACL,EAAA;AAAA,IACA,OAAS,EAAA;AAAA,GACX;AACF,CAAA;AAMA,MAAM,kBAAqB,GAAA,CAAC,MAAgB,EAAA,KAAA,KAC1C,OAAO,KAAU,KAAA,QAAA,GACb,CAAG,EAAA,MAAM,cAAc,KAAK,CAAA,CAAA,CAAA,GAC5B,CAAG,EAAA,MAAM,MAAM,KAAK,CAAA,CAAA;AAEnB,MAAM,yBAAyB,YAA2B,CAAA;AAAA,EAA1D,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AACL,IAAArD,cAAA,CAAA,IAAA,EAAA,QAAA,sBAAe,GAA8B,EAAA,CAAA;AAC7C,IAAAA,cAAA,CAAA,IAAA,EAAA,QAAA,sBAAe,GAAgC,EAAA,CAAA;AAAA;AAAA,EAE/C,SAAA,CAAU,QAA0B,KAAwB,EAAA;AAC1D,IAAAL,cAAA,CAAA,IAAA,EAAK,QAAS,CAAA,CAAA,GAAA,CAAI,MAAO,CAAA,IAAA,EAAM,MAAM,CAAA;AACrC,IAAM,MAAA,EAAE,cAAiB,GAAA,QAAA,EAAa,GAAA,MAAA;AACtC,IAAA,MAAM,aAAa,aAAc,CAAA,KAAA,CAAM,QAAS,EAAA,EAAG,gBAAgB,IAAI,CAAA;AAEvE,IAAAA,cAAA,CAAA,IAAA,EAAK,QAAS,CAAA,CAAA,GAAA,CAAI,MAAO,CAAA,IAAA,EAAM,UAAU,CAAA;AAAA;AAE3C,EAEA,aAAa,MAA0B,EAAA;AACrC,IAAA,IAAIA,cAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,GAAI,CAAA,MAAA,CAAO,IAAI,CAAG,EAAA;AAClC,MAAKA,cAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA;AAChC,MAAKA,cAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA;AAChC,MAAO,OAAA,IAAA;AAAA,KACF,MAAA;AACL,MAAO,OAAA,KAAA;AAAA;AACT;AACF,EAEA,IAAI,MAAoB,GAAA;AACtB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAIA,cAAK,CAAA,IAAA,EAAA,QAAA,CAAA;AACtB,IAAA,IAAI,SAAS,CAAG,EAAA;AACd,MAAO,OAAA,EAAE,QAAQ,EAAG,EAAA;AAAA,KACf,MAAA;AACL,MAAO,OAAA;AAAA,QACL,QAAQ,KAAM,CAAA,IAAA,CAAKA,cAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,SAAS,CAAA,CACvC,GAAI,CAAA,CAAC,SAAS,kBAAmB,CAAA,GAAG,IAAI,CAAC,CAAA,CACzC,KAAK,OAAO;AAAA,OACjB;AAAA;AACF;AAEJ;AAlCE,QAAA,GAAA,IAAA,OAAA,EAAA;AACA,QAAA,GAAA,IAAA,OAAA,EAAA;;AC7IF,MAAM,WAAA,GAAc,CAAC,KACnB,KAAA,OAAO,UAAU,QAAW,GAAA,CAAA,CAAA,EAAI,KAAK,CAAM,CAAA,CAAA,GAAA,KAAA;AAE7C,MAAM,aAAA,GAAgB,CAAC,KACrB,KAAA,OAAO,UAAU,QAAW,GAAA,CAAA,CAAA,EAAI,KAAK,CAAM,CAAA,CAAA,GAAA,KAAA;AAE7C,MAAM,6BAA6B,CAAC,CAAA,KAAc,CAAE,CAAA,OAAA,CAAQ,cAAc,IAAI,CAAA;AAEjE,MAAA,aAAA,GAAgB,CAC3B,CAAA,EACA,IACW,KAAA;AACX,EAAA,OAAO,0BAA2B,CAAA,iBAAA,CAAkB,CAAG,EAAA,IAAI,CAAC,CAAA;AAC9D;AAEA,MAAM,iBAAA,GAAoB,CACxB,CAAA,EACA,IACW,KAAA;AACX,EAAI,IAAA,mBAAA,CAAoB,CAAC,CAAG,EAAA;AAC1B,IAAA,MAAM,iBAAoB,GAAA,CAAA,CAAE,OACzB,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA,iBAAA,CAAkB,MAAQ,EAAA,IAAI,CAAC,CAC/C,CAAA,IAAA,CAAK,CAAI,CAAA,EAAA,CAAA,CAAE,EAAE,CAAG,CAAA,CAAA,CAAA;AACnB,IAAA,OAAO,IAAI,iBAAiB,CAAA,CAAA,CAAA;AAAA,GAC9B,MAAA,IAAW,kBAAmB,CAAA,CAAC,CAAG,EAAA;AAChC,IAAA,OAAO,CAAG,EAAA,CAAA,CAAE,MAAM,CAAA,CAAA,EAAI,EAAE,EAAE,CAAA,EAAA,EAAK,CAAE,CAAA,MAAA,CAAO,GAAI,CAAA,aAAa,CAAE,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,GAC/D,MAAA;AACL,IAAO,OAAA,wBAAA,CAAyB,GAAG,IAAI,CAAA;AAAA;AAE3C,CAAA;AAEA,SAAS,wBAAA,CACP,GACA,IACQ,EAAA;AACR,EAAA,MAAM,MAAS,GAAA,IAAA,EAAM,aAAgB,GAAA,CAAA,CAAE,MAAM,CAAA;AAC7C,EAAI,IAAA,MAAA,IAAU,mBAAoB,CAAA,MAAM,CAAG,EAAA;AACzC,IAAA,OAAO,kBAAkB,CAAoC,CAAA;AAAA,GACxD,MAAA;AACL,IAAA,OAAO,gCAAgC,CAAC,CAAA;AAAA;AAE5C;AAEA,MAAM,gBAAA,GAAmB,GAAO,GAAA,EAAA,GAAK,EAAK,GAAA,EAAA;AACnC,SAAS,kBAAkB,CAA4C,EAAA;AAC5E,EAAA,QAAQ,EAAE,EAAI;AAAA,IACZ,KAAK,GAAK,EAAA;AACR,MAAA,MAAM,OAAyB,GAAA;AAAA,QAC7B,EAAE,IAAI,IAAM,EAAA,MAAA,EAAQ,EAAE,MAAQ,EAAA,KAAA,EAAO,EAAE,KAAM,EAAA;AAAA,QAC7C;AAAA,UACE,EAAI,EAAA,GAAA;AAAA,UACJ,QAAQ,CAAE,CAAA,MAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAQ,GAAA;AAAA;AACnB,OACF;AACA,MAAA,OAAO,iBAAkB,CAAA,EAAE,EAAI,EAAA,KAAA,EAAO,SAAS,CAAA;AAAA;AACjD,IACA,KAAK,IAAM,EAAA;AACT,MAAA,MAAM,OAAyB,GAAA;AAAA,QAC7B,EAAE,IAAI,GAAK,EAAA,MAAA,EAAQ,EAAE,MAAQ,EAAA,KAAA,EAAO,EAAE,KAAM,EAAA;AAAA,QAC5C;AAAA,UACE,EAAI,EAAA,IAAA;AAAA,UACJ,QAAQ,CAAE,CAAA,MAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAQ,GAAA;AAAA;AACnB,OACF;AACA,MAAA,OAAO,iBAAkB,CAAA,EAAE,EAAI,EAAA,IAAA,EAAM,SAAS,CAAA;AAAA;AAChD,IACA;AACE,MAAA,OAAO,gCAAgC,CAAC,CAAA;AAAA;AAE9C;AAEA,MAAM,+BAAkC,GAAA,CAAC,CACvC,KAAA,CAAA,EAAG,CAAE,CAAA,MAAM,CAAI,CAAA,EAAA,CAAA,CAAE,EAAE,CAAA,CAAA,EAAI,WAAY,CAAA,CAAA,CAAE,KAAK,CAAC,CAAA,CAAA;AAEhC,MAAA,sBAAA,GAAyB,CACpC,MAAA,EACA,MACiC,KAAA;AACjC,EAAI,IAAA,mBAAA,CAAoB,MAAM,CAAG,EAAA;AAC/B,IAAA,MAAM,CAAC,OAAA,EAAS,OAAO,CAAA,GAAI,MAAO,CAAA,OAAA;AAClC,IAAI,IAAA,OAAA,CAAQ,MAAW,KAAA,MAAA,CAAO,IAAM,EAAA;AAClC,MAAA,OAAO,CAAC,OAAA,EAAS,aAAc,CAAA,OAAO,CAAC,CAAA;AAAA;AAEzC,IAAI,IAAA,OAAA,CAAQ,MAAW,KAAA,MAAA,CAAO,IAAM,EAAA;AAClC,MAAA,OAAO,CAAC,OAAA,EAAS,aAAc,CAAA,OAAO,CAAC,CAAA;AAAA;AACzC;AAEF,EAAO,OAAA,CAAC,QAAW,EAAE,CAAA;AACvB;;ACnGa,MAAA,QAAA,GAAW,CAAC,IAAyB,KAAA;AAChD,EAAM,MAAA,WAAA,GAAc,KAAK,IAAK,EAAA;AAC9B,EAAM,MAAA,GAAA,GAAM,WAAY,CAAA,WAAA,CAAY,GAAG,CAAA;AACvC,EAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;AACd,IAAO,OAAA,WAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,WAAA,CAAY,KAAM,CAAA,GAAA,GAAM,CAAC,CAAA;AAAA;AAEpC;AAEA,MAAM,UAAa,GAAA,CAAC,IAClB,KAAA,IAAA,CAAK,WAAW,CAAI,GAAA,EAAA,GAAK,IAAK,CAAA,CAAC,CAAE,CAAA,WAAA,EAAgB,GAAA,IAAA,CAAK,MAAM,CAAC,CAAA;AAE/D,MAAM,cAAiB,GAAA,8CAAA;AACV,MAAA,OAAA,GAAU,CAAC,IAAiB,KAAA;AACvC,EAAA,MAAM,CAAC,SAAW,EAAA,GAAG,IAAI,CAAI,GAAA,IAAA,CAAK,MAAM,cAAc,CAAA;AACtD,EAAO,OAAA,CAAA,EAAG,WAAW,SAAS,CAAC,IAAI,IAAK,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AACnD;;ACLa,MAAA,GAAA,GAAM,QAAQ,GAAI,CAAA;AAiD/B,MAAM,eAAA,GAAkB,CACtB,OAEA,KAAA,OAAA,KAAY,QAAQ,OAAO,OAAA,KAAY,YAAY,MAAU,IAAA,OAAA;AAElD,MAAA,gBAAA,GAAmB,CAC9B,QAEA,KAAA,KAAA,CAAM,QAAQ,QAAQ,CAAA,IAAK,QAAS,CAAA,KAAA,CAAM,eAAe;AAU3C,SAAA,eAAA,CAAgB,EAAE,IAAA,EAAwC,EAAA;AACxE,EAAA,MAAM,gBAAgB,IAAK,CAAA,KAAA,CAAM,QAAQ,CAAI,GAAA,IAAA,GAAO,mBAAmB,IAAI,CAAA;AAC3E,EAAA,IAAI,kBAAkB,KAAW,CAAA,EAAA;AAC/B,IAAM,MAAA,KAAA;AAAA,MACJ,0EAA0E,IAAI,CAAA;AAAA,KAChF;AAAA;AAEF,EAAO,OAAA,KAAA,CAAM,cAAc,aAAa,CAAA;AAC1C;AAcO,MAAM,eAAkB,GAAA,CAAC,OAC9B,KAAA,OAAA,CAAQ,eAAoB,KAAA;AAEjB,MAAA,gBAAA,GAAmB,CAC9B,SAAA,KACqB,SAAc,KAAA;AAC9B,MAAM,WAAc,GAAA,CACzB,SAC4B,KAAA,KAAA,CAAM,QAAQ,SAAS;AAOxC,MAAA,0BAAA,GAA6B,CACxC,KAAA,KAEA,OAAO,KAAA,CAAM,cAAmB,KAAA,QAAA,IAChC,KAAM,CAAA,cAAA,KAAmB,IACzB,IAAA,aAAA,IAAiB,KAAM,CAAA;AAEZ,MAAA,WAAA,GAAc,CAAC,EAAA,EAAc,EAAiB,KAAA;AACzD,EAAA,EAAA,CAAG,MAAW,KAAA,EAAA,CAAG,MAAU,IAAA,EAAA,CAAG,SAAS,EAAG,CAAA,KAAA;AAC5C;AAGa,MAAA,QAAA,GAAW,CAAC,OAAA,EAAsB,OAAyB,KAAA;AACtE,EAAA,MAAM,EAAK,GAAA,OAAA,CAAQ,KAAM,CAAA,MAAA,CAAO,WAAY,EAAA;AAC5C,EAAA,MAAM,EAAK,GAAA,OAAA,CAAQ,KAAM,CAAA,MAAA,CAAO,WAAY,EAAA;AAC5C,EAAA,IAAI,KAAK,EAAI,EAAA;AACX,IAAO,OAAA,CAAA,CAAA;AAAA,GACT,MAAA,IAAW,KAAK,EAAI,EAAA;AAClB,IAAO,OAAA,CAAA;AAAA,aACE,OAAQ,CAAA,KAAA,CAAM,KAAQ,GAAA,OAAA,CAAQ,MAAM,KAAO,EAAA;AACpD,IAAO,OAAA,CAAA,CAAA;AAAA,aACE,OAAQ,CAAA,KAAA,CAAM,KAAQ,GAAA,OAAA,CAAQ,MAAM,KAAO,EAAA;AACpD,IAAO,OAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,CAAA;AAAA;AAEX;AAQa,MAAA,sBAAA,GAAyB,CACpC,OAAA,EACA,cAEA,KAAA,OAAA,CACG,KAAK,QAAQ,CAAA,CACb,GAAkD,CAAA,CAAC,MAAY,MAAA;AAAA,EAC9D,GAAG,cAAe,CAAA,EAAE,GAAK,EAAA,QAAA,EAAU,eAAe,CAAA;AAAA,EAClD,cAAgB,EAAA;AAAA,IACd,WAAa,EAAA;AAAA,GACf;AAAA,EACA,SAAW,EAAA;AAAA,IACT,WAAa,EAAA;AAAA,GACf;AAAA,EACA,KAAA,EAAO,GAAG,MAAO,CAAA,KAAA,CAAM,MAAM,CAAI,CAAA,EAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AACrD,CAAE,CAAA;AAOO,MAAA,yBAAA,GAA4B,CACvC,aAAA,EACA,SACG,KAAA;AACH,EAAI,IAAA,OAAO,cAAc,UAAY,EAAA;AACnC,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN,GAAG,aAAa,CAAA,mEAAA;AAAA,KAClB;AAAA;AAEJ;AAEa,MAAA,0BAAA,GAA6B,CAAC,aAA+B,KAAA;AACxE,EAAA,KAAA,MAAW,EAAE,aAAA,EAAe,SAAU,EAAA,IAAK,aAAe,EAAA;AACxD,IAAA,yBAAA,CAA0B,eAAe,SAAS,CAAA;AAAA;AAEtD;AASa,MAAA,yBAAA,GAA4B,CACvC,eAAA,EACA,YAIG,KAAA;AAEH,EAAM,MAAA,CAAC,mBAAqB,EAAA,mBAAmB,CAAI,GAAA,SAAA;AAAA,IACjD,eAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,iBAAwC,EAAC;AAC/C,EAAA,MAAM,gBAAgE,EAAC;AAEvE,EAAW,KAAA,MAAA;AAAA,IACT,eAAe,EAAC;AAAA,IAChB,SAAA;AAAA,IACA,GAAG;AAAA,OACA,mBAAqB,EAAA;AACxB,IAAM,MAAA,EAAE,WAAc,GAAA,YAAA;AAEtB,IAAI,IAAA,gBAAA,CAAiB,SAAS,CAAG,EAAA;AAC/B,MAAA,IAAI,YAAc,EAAA;AAChB,QAAA,KAAA,MAAW,eAAe,YAAc,EAAA;AACtC,UAAA,aAAA,CAAc,IAAK,CAAA;AAAA,YACjB,GAAG,OAAA;AAAA,YACH,cAAgB,EAAA;AAAA,cACd;AAAA,aACF;AAAA,YACA,KAAO,EAAA,CAAA,EAAG,WAAY,CAAA,KAAA,CAAM,MAAM,CAAI,CAAA,EAAA,OAAA;AAAA,cACpC,YAAY,KAAM,CAAA;AAAA,aACnB,CAAA,CAAA;AAAA,YACD,SAAW,EAAA;AAAA,cACT,GAAG,SAAA;AAAA,cACH,WAAa,EAAA;AAAA;AACf,WACD,CAAA;AAAA;AACH;AACF;AACF;AAgBF,EAAW,KAAA,MAAA;AAAA,IACT,eAAe,EAAC;AAAA,IAChB,SAAA;AAAA,IACA,GAAG;AAAA,OACA,mBAAqB,EAAA;AACxB,IAAM,MAAA,EAAE,WAAc,GAAA,YAAA;AACtB,IAAI,IAAA,WAAA,CAAY,SAAS,CAAG,EAAA;AAC1B,MAAA,IAAI,YAAc,EAAA;AAChB,QAAA,cAAA,CAAe,IAAK,CAAA;AAAA,UAClB,GAAG,OAAA;AAAA,UACH,gBAAgB,SAAU,CAAA,MAAA;AAAA,YACxB,CAAC,KAAK,QAAa,KAAA;AACjB,cAAA,GAAA,CAAI,CAAG,EAAA,QAAA,CAAS,KAAK,CAAA,MAAA,CAAQ,IAAI,YAAa,CAAA,IAAA;AAAA,gBAC5C,CAAC,WAAA,KAAgB,WAAY,CAAA,QAAA,EAAU,YAAY,KAAK;AAAA,eAC1D;AACA,cAAO,OAAA,GAAA;AAAA,aACT;AAAA,YACA;AAAC,WACH;AAAA,UACA,SAAW,EAAA;AAAA,SACZ,CAAA;AAAA;AACH,KACK,MAAA;AACL,MAAA,cAAA,CAAe,KAAK,OAAO,CAAA;AAAA;AAC7B;AAEF,EAAO,OAAA,EAAE,eAAiB,EAAA,cAAA,EAAgB,aAA6B,EAAA;AACzE;;ACxRA,MAAM,eAAA,GAAkB,MAAO,CAAA,YAAA,CAAa,IAAI,CAAA;AAChD,MAAM,SAAA,GAAY,MAAO,CAAA,YAAA,CAAa,IAAI,CAAA;AAC1C,MAAM,aAAgB,GAAA,CAAA,CAAA;AAStB,MAAM2D,OAAgB,GAAA;AAAA,EACpB,KAAO,EAAA,SAAA;AAAA,EACP,YAAY,SAAY,GAAA,SAAA;AAAA,EACxB,YAAA,EAAc,YAAY,SAAY,GAAA,SAAA;AAAA,EACtC,YAAc,EAAA;AAAA,IACZ,IAAA;AAAA,IACA,eAAkB,GAAA,SAAA;AAAA,IAClB,kBAAkB,SAAY,GAAA,SAAA;AAAA,IAC9B,eAAA,GAAkB,YAAY,SAAY,GAAA,SAAA;AAAA,IAC1C,eAAA,GAAkB,SAAY,GAAA,SAAA,GAAY,SAAY,GAAA;AAAA;AAE1D,CAAA;AAEA,MAAM,IAAe,GAAA;AAAA,EACnB,KAAO,EAAA,GAAA;AAAA,EACP,UAAY,EAAA,IAAA;AAAA,EACZ,YAAc,EAAA,KAAA;AAAA,EACd,cAAc,CAAC,IAAA,EAAM,GAAK,EAAA,IAAA,EAAM,OAAO,MAAM;AAC/C,CAAA;AAEA,SAAS,OAAA,CAAQ,KAAe,EAAA,SAAA,GAAY,CAAG,EAAA;AAC7C,EAAA,OAAA,CAAQ,YAAe,GAAA,KAAA,EAAO,KAAM,CAAA,CAAC,SAAS,CAAA;AAChD;AAEA,MAAM,YAAA,GACJ,YACA,SACA,GAAA,SAAA,GACA,YACA,SACA,GAAA,SAAA,GACA,YACA,SACA,GAAA,SAAA;AAEF,MAAM,KAAQ,GAAA;AAAA,EACZ,KAAO,EAAA,OAAA;AAAA,EACP,MAAQ,EAAA,QAAA;AAAA,EACR,IAAM,EAAA;AACR,CAAA;AAEA,SAAS,GAAA,CAAI,CAAW,EAAA,EAAA,EAAY,GAAqB,EAAA;AACvD,EAAA,IAAI,MAAM,CAAE,CAAA,MAAA;AACZ,EAAA,MAAM,OAAO,EAAK,GAAA,GAAA;AAElB,EAAA,IAAI,OAAO,CAAG,EAAA;AACZ,IAAA,IAAI,SAAS,CAAG,EAAA;AACd,MAAA,CAAA,GAAI,IAAI,GAAI,CAAA,KAAA;AAAA,KACd,MAAA,IAAW,SAAS,CAAG,EAAA;AACrB,MAAA,CAAA,GAAI,IAAI,GAAI,CAAA,UAAA;AAAA,KACd,MAAA,IAAW,SAAS,CAAG,EAAA;AACrB,MAAA,CAAA,GAAI,IAAI,GAAI,CAAA,YAAA;AAAA;AACd,GACK,MAAA;AACL,IAAA,IAAI,OAAO,CAAG,EAAA;AACZ,MAAI,CAAA,GAAA,CAAA,CAAE,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA;AACjB,MAAM,GAAA,GAAA,EAAA;AAAA;AAGR,IAAA,IAAI,QAAQA,OAAS,IAAA,CAAA,CAAE,OAAO,GAAM,GAAA,CAAC,MAAM,GAAK,EAAA;AAC9C,MAAI,CAAA,GAAA,CAAA,CAAE,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA;AACvB,MAAO,OAAA,GAAA,CAAI,CAAG,EAAA,EAAA,EAAI,GAAG,CAAA;AAAA;AACvB;AAEF,EAAO,OAAA,CAAA;AACT;AAEgB,SAAA,YAAA,CACd,OACA,KAAQ,GAAA,KAAA,CAAM,OACd,QAAW,GAAA,CAAA,EACX,SACA,eACA,EAAA;AACA,EAAA,IAAI,UAAU,KAAa,CAAA,IAAA,OAAO,UAAU,QAAY,IAAA,KAAA,CAAM,KAAK,CAAG,EAAA;AACpE,IAAO,OAAA,EAAA;AAAA;AAET,EAAA,IAAI,UAAU,QAAU,EAAA,GAAA;AAExB,EAAM,MAAA,CAAC,OAAO,KAAQ,GAAA,EAAE,IAAI,KAAM,CAAA,QAAA,EAAW,CAAA,KAAA,CAAM,GAAG,CAAA;AACtD,EAAA,MAAM,iBAAiB,KAAM,CAAA,MAAA;AAE7B,EAAW,QAAA,GAAA,UAAA,CAAW,KAAK,CAAA,CAAE,cAAe,EAAA;AAE5C,EAAI,IAAA,KAAA,KAAU,KAAM,CAAA,IAAA,IAAQ,eAAiB,EAAA;AAC3C,IAAA,QAAA,GAAW,QAAQ,QAAQ,CAAA;AAAA;AAG7B,EAAI,IAAA,QAAA,KAAa,aAAiB,IAAA,cAAA,KAAmB,QAAU,EAAA;AAC7D,IAAW,QAAA,GAAA,KAAA;AAAA,GACb,MAAA,IAAW,iBAAiB,QAAU,EAAA;AACpC,IAAW,QAAA,GAAA,UAAA,CAAW,OAAO,KAAK,CAAA,CAC/B,QAAQ,QAAQ,CAAA,CAChB,MAAM,CAAC,CAAA;AAAA,GACL,MAAA;AAEL,IACG,IAAA,GAAA,GAAM,UACH,IACA,GAAA,eAAA,IAAmB,UAAU,KAAM,CAAA,IAAA,GACnCA,UACA,IACJ,EAAA;AACA,MAAA,IAAI,mBAAmB,CAAG,EAAA;AACxB,QAAW,QAAA,GAAA,GAAA,CAAI,aAAa,QAAQ,CAAA;AAAA,OAC/B,MAAA;AACL,QAAW,QAAA,GAAA,GAAA,CAAI,KAAO,EAAA,QAAA,EAAU,GAAG,CAAA;AAAA;AACrC,KACK,MAAA;AACL,MAAW,QAAA,GAAA,KAAA;AAAA;AACb;AAGF,EAAO,OAAA,QAAA,IAAY,QAAW,GAAA,GAAA,GAAM,QAAW,GAAA,EAAA,CAAA;AACjD;;AC1GA,MAAM,yBAA+C,EAAC;AAEzC,MAAA,qBAAA,GAAwB,CAAC,KAAA,KACpC,KAAS,IAAA,IAAA,GAAO,EAAK,GAAA,OAAO,KAAU,KAAA,QAAA,GAAW,KAAQ,GAAA,KAAA,CAAM,QAAS;AAE1E,MAAM,aAAA,GAAgB,CAAC,MAAwC,KAAA;AAC7D,EAAM,MAAA,OAAA,GAAU,eAAgB,CAAA,MAAA,CAAO,IAAI,CAAA;AAC3C,EAAM,MAAA,SAAA,GAAY,WAAW,OAAO,CAAA;AAEpC,EAAA,OAAO,CAAC,KAAmB,KAAA;AACzB,IAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,KAAA,KAAU,CAAG,EAAA;AAC5C,MAAA,OAAO,SAAU,CAAA,IAAI,IAAK,CAAA,KAAK,CAAC,CAAA;AAAA,KAC3B,MAAA;AACL,MAAO,OAAA,EAAA;AAAA;AACT,GACF;AACF,CAAA;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,KAAQ,GAAA,OAAA;AAAA,EACR;AACF,CAAiC,KAAA;AAC/B,EAAA,IAAI,IAAS,KAAA,KAAA,CAAA,IAAa,OAAO,IAAA,KAAS,QAAU,EAAA;AAClD,IAAO,OAAA,qBAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA;AAAA,MACJ,eAAkB,GAAA,KAAA;AAAA,MAClB,QAAA;AAAA,MACA,OAAU,GAAA;AAAA,KACZ,GAAI,KAAK,UAAc,IAAA,sBAAA;AACvB,IAAA,OAAO,CAAC,KAAmB,KAAA;AACzB,MACE,IAAA,OAAO,KAAU,KAAA,QAAA,KAChB,KAAM,CAAA,UAAA,CAAW,QAAG,CAAK,IAAA,KAAA,CAAM,UAAW,CAAA,GAAG,CAC9C,CAAA,EAAA;AACA,QAAO,OAAA,KAAA;AAAA;AAET,MAAM,MAAA,MAAA,GACJ,OAAO,KAAA,KAAU,QACb,GAAA,KAAA,GACA,OAAO,KAAU,KAAA,QAAA,GACf,UAAW,CAAA,KAAK,CAChB,GAAA,KAAA,CAAA;AACR,MAAA,OAAO,YAAa,CAAA,MAAA,EAAQ,KAAO,EAAA,QAAA,EAAU,SAAS,eAAe,CAAA;AAAA,KACvE;AAAA;AAEJ;AAEA,MAAM,YAAA,GAAe,CAAC,GAA4B,KAAA;AAChD,EAAA,OAAO,CAAC,KAAmB,KAAA;AACzB,IAAO,OAAA,GAAA,CAAI,KAAe,CAAK,IAAA,EAAA;AAAA,GACjC;AACF,CAAA;AAEO,MAAM,iBAAoB,GAAA,CAC/B,MACA,EAAA,cAAA,GAAiB,OAAO,cACL,KAAA;AACnB,EAAI,IAAA,mBAAA,CAAoB,MAAM,CAAG,EAAA;AAC/B,IAAA,OAAO,cAAc,MAAM,CAAA;AAAA;AAG7B,EAAM,MAAA,EAAE,MAAS,GAAA,MAAA;AACjB,EAAA,IAAI,iBAAiB,IAAI,CAAA,IAAK,yBAA0B,CAAA,IAAA,EAAM,QAAQ,CAAG,EAAA;AACvE,IAAO,OAAA,YAAA,CAAa,IAAK,CAAA,QAAA,CAAS,GAAG,CAAA;AAAA,GAC5B,MAAA,IAAA,cAAA,KAAmB,QAAY,IAAA,cAAA,KAAmB,MAAQ,EAAA;AACnE,IAAA,OAAO,CAAC,KAAmB,KAAA,KAAA;AAAA,GAC7B,MAAA,IAAW,mBAAmB,QAAU,EAAA;AACtC,IAAA,OAAO,iBAAiB,MAAM,CAAA;AAAA;AAEhC,EAAO,OAAA,qBAAA;AACT;AAQO,MAAM,SAAY,GAAA,CAAC,GACxB,KAAA,GAAA,CAAI,WAAY;;ACnGL,MAAA,WAAA,GAAc,MAAM,CAAM,GAAA,EAAA,IAAA,CAAK,MAAM,IAAK,CAAA,MAAA,EAAW,GAAA,GAAG,CAAC,CAAA;;ACGtD,SAAA,cAAA,CAAe,SAAqB,MAA0B,EAAA;AAC5E,EAAI,IAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACtB,IAAO,OAAA,OAAA,CAAQ,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA;AAAA,GAC5B,MAAA;AACL,IAAO,OAAA,CAAC,OAAO,IAAI,CAAA;AAAA;AAEvB;AAEa,MAAA,iBAAA,GAAoB,CAC/B,OAAA,EACA,MACG,KAAA,OAAA,CAAQ,OAAO,CAAC,OAAA,KAAY,OAAY,KAAA,MAAA,CAAO,IAAI;AAa3C,MAAA,cAAA,GAAiB,CAC5B,UAAA,EACA,OACsB,KAAA;AACtB,EAAA,IAAI,OAAY,KAAA,KAAA,CAAA,IAAa,OAAQ,CAAA,MAAA,KAAW,CAAG,EAAA;AACjD,IAAO,OAAA,YAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,QAAA,GAAW,OAAQ,CAAA,OAAA,CAAQ,UAAU,CAAA;AAC3C,IAAA,IAAI,aAAa,CAAI,CAAA,EAAA;AACnB,MAAO,OAAA,OAAA,CAAQ,MAAW,KAAA,CAAA,GACtB,6BACA,GAAA,6BAAA;AAAA,KACC,MAAA;AACL,MAAO,OAAA,OAAA,CAAQ,MAAW,KAAA,CAAA,GACtB,gBACA,GAAA,6BAAA;AAAA;AACN;AAEJ;;AC7CO,MAAM,cAAiB,GAAA,CAAC,GAAgB,KAAA,GAAA,CAAI,MAAW,KAAA;AAEjD,MAAA,UAAA,GAAa,CAAC,GAAuB,KAAA;AAChD,EAAA,OAAO,GAAI,CAAA,GAAA,KAAQ,GAAO,IAAA,GAAA,CAAI,GAAQ,KAAA,GAAA;AACxC;;ACJgB,SAAA,SAAA,CAAU,WAAoB,OAAiB,EAAA;AAC7D,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAM,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA;AAC/B,IAAA,KAAA,CAAM,IAAO,GAAA,qBAAA;AAIb,IAAA,KAAA,CAAM,WAAc,GAAA,CAAA;AACpB,IAAM,MAAA,KAAA;AAAA;AAEV;;ACPA,MAAM,aAAA,GAAgB,CAAC,GACrB,KAAA,MAAA,CAAO,UAAU,QAAS,CAAA,IAAA,CAAK,GAAG,CAAM,KAAA,iBAAA;AAEnC,SAAS,aAAa,IAAuB,EAAA;AAClD,EAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,IAAO,OAAA,IAAA;AAAA,GACE,MAAA,IAAA,CAAC,aAAc,CAAA,IAAI,CAAG,EAAA;AAC/B,IAAA,OAAO,OAAO,IAAI,CAAA;AAAA;AAGpB,EAAA,IAAI,OAAO,SAAU,CAAA,cAAA,CAAe,IAAK,CAAA,IAAA,EAAM,OAAO,CAAG,EAAA;AACvD,IAAO,OAAA,MAAA,CAAQ,KAA4B,KAAK,CAAA;AAAA;AAGlD,EAAQ,OAAA,CAAA,IAAA;AAAA,IACN;AAAA,MACE,iFAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAEA,EAAO,OAAA,EAAA;AACT;;ACjBA,MAAM,SAAEC,SAAU,GAAA,YAAA;AAgBlB,MAAM,aAAa,CAAC,KAAA,KAClB,OAAO,KAAA,KAAU,YAAY,KAAU,KAAA,IAAA;AAEzC,MAAM,mBAAsB,GAAA,CAAC,SAAW,EAAA,QAAA,EAAU,QAAQ,CAAA;AAC1D,MAAM,mBAAmB,CAAC,KAAA,KACxB,mBAAoB,CAAA,QAAA,CAAS,OAAO,KAAK,CAAA;AAE3C,MAAM,YAAA,GAAe,CACnB,SAAA,EACA,cACc,KAAA;AACd,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,cAAc,CAAG,EAAA;AACjC,IAAO,OAAA;AAAA,MACL,SAAA,EAAW,GAAG,SAAS,CAAA,CAAA,CAAA;AAAA,MACvB,cAAgB,EAAA,EAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACV;AAAA,GACF,MAAA,IAAW,UAAW,CAAA,cAAc,CAAG,EAAA;AACrC,IAAO,OAAA;AAAA,MACL,SAAA,EAAW,GAAG,SAAS,CAAA,CAAA,CAAA;AAAA,MACvB,cAAgB,EAAA,EAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACV;AAAA,GACF,MAAA,IAAW,mBAAmB,KAAW,CAAA,EAAA;AACvC,IAAO,OAAA;AAAA,MACL,SAAA;AAAA,MACA,cAAgB,EAAA,WAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,KACV;AAAA,GACF,MAAA,IAAW,gBAAiB,CAAA,cAAc,CAAG,EAAA;AAC3C,IAAO,OAAA;AAAA,MACL,SAAA;AAAA,MACA,cAAA;AAAA,MACA,MAAQ,EAAA;AAAA,KACV;AAAA,GACK,MAAA;AACL,IAAA,MAAM,KAAM,CAAA,CAAA,iBAAA,EAAoB,OAAO,cAAc,CAAU,QAAA,CAAA,CAAA;AAAA;AAEnE,CAAA;AAEA,MAAM,cAA0C,GAAA;AAAA,EAC9C,IAAM,EAAA,MAAA;AAAA,EACN,QAAU,EAAA;AAAA,IACR,IAAM,EAAA;AAAA;AAEV,CAAA;AAEa,MAAA,oBAAA,GAAuB,CAClC,IAC0C,KAAA;AAC1C,EAAA,MAAM,OAA2B,EAAC;AAElC,EAAK,IAAA,CAAA,IAAA;AAAA,IACH;AAAA,MACE,SAAW,EAAA,aAAA;AAAA,MACX,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA;AAAA,KACR;AAAA,IACA;AAAA,MACE,SAAW,EAAA,aAAA;AAAA,MACX,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA;AAAA;AACR,GACF;AAEA,EAAA,MAAM,OAAwB,EAAC;AAE/B,EAAeC,gBAAA,CAAA,IAAA,EAAM,MAAM,IAAI,CAAA;AAC/B,EAAO,OAAA,CAAC,MAAM,IAAI,CAAA;AACpB;AAEA,MAAMA,gBAAiB,GAAA,CACrB,IACA,EAAA,IAAA,EACA,IACA,EAAA,KAAA,GAAe,EAAE,KAAA,EAAO,CAAE,EAAA,EAC1B,OAAU,GAAA,OAAA,EACV,QAAQ,CACa,KAAA;AACrB,EAAA,IAAI,SAAY,GAAA,CAAA;AAChB,EAAA,IAAI,QAAW,GAAA,CAAA;AACf,EAAI,IAAA,KAAA,KAAU,IAAK,CAAA,MAAA,GAAS,CAAG,EAAA;AAC7B,IAAA,IAAA,CAAK,IAAK,CAAA;AAAA,MACR,SAAW,EAAA,aAAA;AAAA,MACX,IAAM,EAAA,CAAA,MAAA,EAAS,IAAK,CAAA,MAAA,GAAS,CAAC,CAAA,CAAA;AAAA,MAC9B,MAAQ,EAAA,IAAA;AAAA,MACR,IAAM,EAAA;AAAA,KACP,CAAA;AAAA;AAEH,EAAM,MAAA,aAAA,GAAgB,MAAO,CAAA,OAAA,CAAQ,IAAI,CAAA;AACzC,EAAS,KAAA,IAAA,CAAA,GAAI,GAAG,CAAI,GAAA,aAAA,CAAc,QAAQ,CAAK,EAAA,EAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AAC/D,IAAA,MAAM,CAAC,GAAA,EAAK,KAAK,CAAA,GAAI,cAAc,CAAC,CAAA;AACpC,IAAA,MAAM,EAAE,SAAW,EAAA,cAAA,EAAgB,QAAW,GAAA,YAAA,CAAa,KAAK,KAAK,CAAA;AACrE,IAAA,MAAM,MAAS,GAAA,KAAA,CAAM,KAAK,CAAA,CAAE,KAAK,EAAE,CAAA;AACnC,IAAA,MAAM,OAAU,GAAA,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAEjC,IAAA,MAAM,GAAM,GAAA,CAAC,KAAM,CAAA,KAAA,EAAO,MAAM,KAAO,EAAA,MAAA,EAAO,KAAM,EAAA,KAAA,EAAM,GAAE,OAAQ,EAAA,CAAA,EAAG,GAAG,MAAA,EAAQ,WAAW,cAAe,CAAA;AAC5G,IAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACb,IAAY,QAAA,IAAA,CAAA;AAEZ,IAAI,IAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACrB,MAAM,MAAA,CAAC,eAAiB,EAAA,cAAc,CAAI,GAAAA,gBAAA;AAAA,QACxC,IAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,EAAE,KAAA,EAAO,KAAM,CAAA,KAAA,GAAQ,CAAE,EAAA;AAAA,QACzB,OAAA;AAAA,QACA,KAAQ,GAAA;AAAA,OACV;AACA,MAAA,GAAA,CAAID,OAAK,CAAI,GAAA,eAAA;AACb,MAAa,SAAA,IAAA,eAAA;AACb,MAAY,QAAA,IAAA,cAAA;AACZ,MAAA,KAAA,CAAM,KAAS,IAAA,cAAA;AAAA,KACV,MAAA;AACL,MAAa,SAAA,IAAA,CAAA;AAAA;AACf;AAGF,EAAO,OAAA,CAAC,WAAW,QAAQ,CAAA;AAC7B,CAAA;;AC/IO,MAAM,OAAU,GAAA;AAChB,MAAM,SAAY,GAAA;AAClB,MAAM,SAAY,GAAA;AAClB,MAAM,UAAa,GAAA;AACnB,MAAM,KAAQ,GAAA;AACd,MAAM,MAAS,GAAA;AACf,MAAM,IAAO,GAAA;AACb,MAAM,GAAM,GAAA;AACZ,MAAM,MAAS,GAAA;AACf,MAAM,QAAW,GAAA;AACjB,MAAM,KAAQ,GAAA;AACd,MAAM,GAAM,GAAA;AAKN,MAAA,UAAA,GAAa,CAAC,GACzB,KAAA,GAAA,KAAQ,aACR,GAAQ,KAAA,WAAA,IACR,GAAQ,KAAA,WAAA,IACR,GAAQ,KAAA;;;;;AClBV,MAAM,QAAkB,EAAC;AAClB,MAAM,MAAO,CAAA;AAAA,EAKlB,YAAY,KAAiB,EAAA;AAJ7B,IAAQP,eAAA,CAAA,IAAA,EAAA,MAAA,sBAAW,GAAoB,EAAA,CAAA;AACvC,IAAAA,eAAA,CAAA,IAAA,EAAQ,cAAe,EAAA,CAAA,CAAA;AACvB,IAAQA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAGN,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AACb,IAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA;AACjB,EAEO,IAAA,CAAK,OAAiB,KAAe,EAAA;AAC1C,IAAI,IAAA,IAAA,CAAK,SAAS,CAAG,EAAA;AACnB,MAAA,OAAO,KAAK,KAAM,EAAA;AAAA,KACb,MAAA;AACL,MAAA,OAAO,IAAK,CAAA,YAAA,EAAA;AAAA;AACd;AACF,EAEQ,IAAK,CAAA,EAAE,IAAM,EAAA,EAAA,EAAgB,EAAA;AACnC,IAAA,IAAA,CAAK,KAAK,KAAM,EAAA;AAChB,IAAA,IAAA,CAAK,YAAe,GAAA,CAAA;AAEpB,IAAA,KAAA,IAAS,QAAW,GAAA,IAAA,EAAM,QAAW,GAAA,EAAA,EAAI,QAAY,EAAA,EAAA;AACnD,MAAM,MAAA,YAAA,GAAe,KAAK,IAAK,EAAA;AAC/B,MAAK,IAAA,CAAA,IAAA,CAAK,GAAI,CAAA,QAAA,EAAU,YAAY,CAAA;AAAA;AAGtC,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,MAAM,KAAiB,EAAA;AAC5B,IAAM,MAAA,EAAE,IAAM,EAAA,EAAA,EAAO,GAAA,KAAA;AAErB,IAAA,MAAM,UAAU,EAAK,GAAA,IAAA;AACrB,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,KAAM,CAAA,EAAA,GAAK,KAAK,KAAM,CAAA,IAAA;AAC/C,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAEb,IAAA,IAAI,cAAc,OAAS,EAAA;AAGzB,MAAO,OAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA;AAGxB,IAAA,MAAM,WAAqB,EAAC;AAE5B,IAAA,IAAA,CAAK,IAAK,CAAA,OAAA,CAAQ,CAAC,QAAA,EAAU,QAAa,KAAA;AACxC,MAAI,IAAA,QAAA,GAAW,IAAQ,IAAA,QAAA,IAAY,EAAI,EAAA;AACrC,QAAA,QAAA,CAAS,KAAK,QAAQ,CAAA;AACtB,QAAK,IAAA,CAAA,IAAA,CAAK,OAAO,QAAQ,CAAA;AAAA;AAC3B,KACD,CAAA;AAED,IAAA,KAAA,IAAS,QAAW,GAAA,IAAA,EAAM,QAAW,GAAA,EAAA,EAAI,QAAY,EAAA,EAAA;AACnD,MAAA,IAAI,CAAC,IAAA,CAAK,IAAK,CAAA,GAAA,CAAI,QAAQ,CAAG,EAAA;AAC5B,QAAM,MAAA,YAAA,GAAe,IAAK,CAAA,IAAA,CAAK,QAAQ,CAAA;AACvC,QAAK,IAAA,CAAA,IAAA,CAAK,GAAI,CAAA,QAAA,EAAU,YAAY,CAAA;AAAA;AACtC;AAGF,IAAO,OAAA,KAAA;AAAA;AACT,EAEO,OAAO,QAA0B,EAAA;AACtC,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,IAAK,CAAA,GAAA,CAAI,QAAQ,CAAA;AAClC,IAAA,IAAI,QAAQ,KAAW,CAAA,EAAA;AACrB,MAAA,OAAA,CAAQ,GAAI,CAAA,CAAA;AAAA,cACF,EAAA,IAAA,CAAK,eAAe;AAAA,MAC7B,CAAA,CAAA;AACD,MAAM,MAAA,KAAA,CAAM,CAAqC,kCAAA,EAAA,QAAQ,CAAE,CAAA,CAAA;AAAA;AAE7D,IAAO,OAAA,GAAA;AAAA;AACT,EAEO,aAAgB,GAAA;AACrB,IAAO,OAAA,CAAA,EAAG,IAAK,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA,EAC1B,KAAM,CAAA,IAAA,CAAK,IAAK,CAAA,IAAA,CAAK,SAAS,CAAA,CAC7B,IAAK,CAAA,CAAC,CAAC,IAAI,CAAG,EAAA,CAAC,IAAI,CAAM,KAAA,IAAA,GAAO,IAAI,CAAA,CACpC,GAAY,CAAA,CAAC,CAAC,CAAA,EAAG,CAAC,CAAM,KAAA,CAAA,EAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAE,CACpC,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,CAAA;AAAA;AAEZ;;ACjFa,MAAA,iBAAA,GAAoB,CAC/B,MAAA,EACA,aACG,KAAA;AACH,EAAA,IAAI,kBAAkB,KAAW,CAAA,EAAA;AAC/B,IAAO,OAAA,KAAA,CAAA;AAAA;AAET,EAAA,OAAO,OAAO,IAAK,CAAA,CAAC,MAAW,KAAA,MAAA,CAAO,UAAU,aAAa,CAAA;AAC/D;;ACVa,MAAA,cAAA,GAAiB,CAAI,GAA+B,KAAA;AAC/D,EAAM,MAAA,IAAA,GAAO,YAAa,CAAA,OAAA,CAAQ,GAAG,CAAA;AACrC,EAAA,OAAO,IAAO,GAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAI,GAAA,KAAA,CAAA;AACnC;AAEa,MAAA,iBAAA,GAAoB,CAAI,GAAA,KACnC,MAAO,CAAA,OAAA,CAAQ,YAAY,CAAA,CACxB,MAAO,CAAA,CAAC,CAAC,GAAG,CAAM,KAAA,GAAA,CAAI,SAAS,GAAG,CAAC,CACnC,CAAA,GAAA,CAAI,CAAC,GAAG,KAAK,CAAM,KAAA,IAAA,CAAK,KAAM,CAAA,KAAK,CAAM;AAEjC,MAAA,eAAA,GAAkB,CAAI,GAAA,EAAa,IAA2B,KAAA;AACzE,EAAI,IAAA;AACF,IAAA,YAAA,CAAa,OAAQ,CAAA,GAAA,EAAK,IAAK,CAAA,SAAA,CAAU,IAAI,CAAC,CAAA;AAC9C,IAAO,OAAA,IAAA;AAAA,GACD,CAAA,MAAA;AACN,IAAO,OAAA,KAAA,CAAA;AAAA;AAEX;;ACJO,MAAM,yBAA4B,GAAA,CACvC,QAEA,KAAA,QAAA,KAAa,UAAa,UAAc,IAAA;AAEnC,MAAM,sBAAyB,GAAA,CACpC,WAEC,KAAA,WAAA,CAAgC,OAAY,KAAA;AAExC,MAAM,yBAA4B,GAAA,CACvC,GAEC,KAAA,GAAA,CAAwB,QAAQ,IAAS,KAAA;;ACnBrC,MAAM,WAAW,CAAC,MAAA,KACvB,MAAW,KAAA,KAAA,CAAA,IAAa,OAAO,MAAW,KAAA;;ACC5C,MAAM,eAAyB,EAAC;AAEhC,MAAM,YAAES,YAAa,GAAA,YAAA;AAEd,MAAM,WAAc,GAAA;AAAA,EACzB,KAAO,EAAA,CAAA;AAAA,EACP,IAAM,EAAA,CAAA;AAAA,EACN,KAAO,EAAA,CAAA;AAAA,EACP,IAAM,EAAA;AACR;AAEa,MAAA,aAAA,GAAgB,CAAC,GAC3B,KAAA,CAAA,GAAA,CAAIA,UAAQ,CAAI,GAAA,WAAA,CAAY,UAAU,WAAY,CAAA;AAExC,MAAA,iBAAA,GAAoB,CAAC,GAAA,KAChC,GAAQ,KAAA,KAAA,CAAA,IAAA,CAAc,IAAIA,UAAQ,CAAA,GAAI,WAAY,CAAA,IAAA,MAAU,WAAY,CAAA;AAE1E,MAAM,gBAAA,GAAmB,CAAC,KAAA,EAAsB,KAAyB,KAAA;AACvE,EAAA,MAAM,KAAa,OAAO,KAAA,KAAU,QAAW,GAAA,KAAA,GAAQ,MAAM,CAAC,CAAA;AAC9D,EAAA,MAAM,KAAa,OAAO,KAAA,KAAU,QAAW,GAAA,KAAA,GAAQ,MAAM,CAAC,CAAA;AAC9D,EAAA,OAAO,EAAK,GAAA,EAAA;AACd,CAAA;AAEO,MAAM,eAAe,CAC1B,cAAA,EACA,UACA,SACA,EAAA,WAAA,EACA,wBAAwB,KACV,KAAA;AACd,EAAA,MAAM,eAAe,cAAmB,KAAA,QAAA;AACxC,EAAM,MAAA,WAAA,GACJ,cAAmB,KAAA,UAAA,IAAc,cAAmB,KAAA,UAAA;AACtD,EAAA,MAAM,oBACJ,GAAA,YAAA,IAAiB,WAAe,IAAA,CAAC,yBAAyB,CAAC,WAAA;AAE7D,EAAA,IAAI,oBAAyB,IAAA,CAAC,WAAe,IAAA,CAAC,qBAAwB,EAAA;AACpE,IAAO,OAAA,YAAA;AAAA,GACT,MAAA,IAAW,CAAC,WAAA,IAAe,qBAAuB,EAAA;AAChD,IAAO,OAAA,kBAAA,CAAmB,UAAU,SAAS,CAAA;AAAA;AAE/C,EAAO,OAAA,YAAA;AACT;AAEA,MAAM,4BAAA,GAA+B,CACnC,SAAA,EACA,SACY,KAAA;AACZ,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,SAAA,CAAU,QAAQ,CAAK,EAAA,EAAA;AACzC,IAAM,MAAA,IAAA,GAAO,UAAU,CAAC,CAAA;AACxB,IAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,MAAI,IAAA,IAAA,KAAS,YAAY,CAAG,EAAA;AAC1B,QAAO,OAAA,IAAA;AAAA,OACT,MAAA,IAAW,OAAO,SAAW,EAAA;AAC3B,QAAO,OAAA,KAAA;AAAA;AACT,KACF,MAAA,IAAW,IAAK,CAAA,CAAC,CAAM,KAAA,SAAA,GAAY,KAAK,IAAK,CAAA,CAAC,CAAM,KAAA,SAAA,GAAY,CAAG,EAAA;AACjE,MAAO,OAAA,IAAA;AAAA,KACE,MAAA,IAAA,IAAA,CAAK,CAAC,CAAA,GAAI,SAAW,EAAA;AAC9B,MAAO,OAAA,KAAA;AAAA;AACT;AAEF,EAAO,OAAA,KAAA;AACT,CAAA;AAEA,MAAM,wBAAA,GAA2B,CAC/B,SAAA,EACA,SACc,KAAA;AACd,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,SAAA,CAAU,QAAQ,CAAK,EAAA,EAAA;AACzC,IAAM,MAAA,IAAA,GAAO,UAAU,CAAC,CAAA;AACxB,IAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,MAAI,IAAA,IAAA,KAAS,YAAY,CAAG,EAAA;AAC1B,QAAM,MAAA,iBAAA,GAAoB,SAAU,CAAA,CAAA,GAAI,CAAC,CAAA;AACzC,QAAI,IAAA,iBAAA,KAAsB,YAAY,CAAG,EAAA;AACvC,UAAM,MAAA,QAAA,GAA0B,CAAC,IAAA,EAAM,iBAAiB,CAAA;AACxD,UAAA,OAAO,SACJ,CAAA,KAAA,CAAM,CAAG,EAAA,CAAC,EACV,MAAO,CAAA,CAAC,QAAQ,CAAC,EACjB,MAAO,CAAA,SAAA,CAAU,KAAM,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,SAC3B,MAAA;AACL,UAAM,MAAA,QAAA,GAA0B,CAAC,IAAA,EAAM,SAAS,CAAA;AAChD,UAAA,OAAO,SACJ,CAAA,KAAA,CAAM,CAAG,EAAA,CAAC,EACV,MAAO,CAAA,CAAC,QAAQ,CAAC,EACjB,MAAO,CAAA,SAAA,CAAU,KAAM,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA;AAClC,OACF,MAAA,IAAW,OAAO,SAAW,EAAA;AAC3B,QAAA;AAAA;AACF,KACS,MAAA,IAAA,IAAA,CAAK,CAAC,CAAA,KAAM,YAAY,CAAG,EAAA;AACpC,MAAA,MAAM,QAA0B,GAAA,CAAC,SAAW,EAAA,IAAA,CAAK,CAAC,CAAC,CAAA;AACnD,MAAA,OAAO,SACJ,CAAA,KAAA,CAAM,CAAG,EAAA,CAAC,EACV,MAAO,CAAA,CAAC,QAAQ,CAAC,EACjB,MAAO,CAAA,SAAA,CAAU,KAAM,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,KACvB,MAAA,IAAA,IAAA,CAAK,CAAC,CAAA,KAAM,YAAY,CAAG,EAAA;AAEpC,MAAM,MAAA,QAAA,GAAW,SAAU,CAAA,CAAA,GAAI,CAAC,CAAA;AAChC,MAAI,IAAA,KAAA,CAAM,QAAQ,QAAQ,CAAA,IAAK,SAAS,CAAC,CAAA,KAAM,YAAY,CAAG,EAAA;AAC5D,QAAA,MAAM,WAA0B,CAAC,IAAA,CAAK,CAAC,CAAG,EAAA,QAAA,CAAS,CAAC,CAAC,CAAA;AACrD,QAAA,OAAO,SACJ,CAAA,KAAA,CAAM,CAAG,EAAA,CAAC,EACV,MAAO,CAAA,CAAC,QAAQ,CAAC,EACjB,MAAO,CAAA,SAAA,CAAU,KAAM,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACvB,OAAO,QAAA,KAAa,QAAY,IAAA,QAAA,KAAa,YAAY,CAAG,EAAA;AACrE,QAAA,MAAM,QAA0B,GAAA,CAAC,IAAK,CAAA,CAAC,GAAG,QAAQ,CAAA;AAClD,QAAA,OAAO,SACJ,CAAA,KAAA,CAAM,CAAG,EAAA,CAAC,EACV,MAAO,CAAA,CAAC,QAAQ,CAAC,EACjB,MAAO,CAAA,SAAA,CAAU,KAAM,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,OAC3B,MAAA;AACL,QAAA,MAAM,QAA0B,GAAA,CAAC,IAAK,CAAA,CAAC,GAAG,SAAS,CAAA;AACnD,QAAA,OAAO,SACJ,CAAA,KAAA,CAAM,CAAG,EAAA,CAAC,EACV,MAAO,CAAA,CAAC,QAAQ,CAAC,EACjB,MAAO,CAAA,SAAA,CAAU,KAAM,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA;AAClC;AACF;AAGF,EAAO,OAAA,SAAA;AACT,CAAA;AAEa,MAAA,UAAA,GAAa,CACxB,cACA,EAAA,QAAA,EACA,WACA,WACA,EAAA,qBAAA,GAAwB,KACxB,EAAA,eAAA,GAAkB,CACJ,CAAA,KAAA;AACd,EAAA,MAAM,eAAe,cAAmB,KAAA,QAAA;AACxC,EAAM,MAAA,WAAA,GACJ,cAAmB,KAAA,UAAA,IAAc,cAAmB,KAAA,UAAA;AACtD,EAAM,MAAA,oBAAA,GACJ,gBACC,WAAe,IAAA,CAAC,yBAAyB,CAAC,WAAA,IAC1C,eAAe,eAAoB,KAAA,CAAA,CAAA;AAEtC,EAAA,IAAI,mBAAmB,MAAQ,EAAA;AAC7B,IAAO,OAAA,YAAA;AAAA,aACE,oBAAsB,EAAA;AAC/B,IAAA,OAAO,CAAC,SAAS,CAAA;AAAA,aACR,WAAa,EAAA;AACtB,IAAI,IAAA,QAAA,CAAS,WAAW,CAAG,EAAA;AACzB,MAAA,OAAO,CAAC,SAAS,CAAA;AAAA,KACZ,MAAA;AACL,MAAM,MAAA,KAAA,GACJ,YAAY,eACR,GAAA,CAAC,iBAAiB,SAAS,CAAA,GAC3B,CAAC,SAAA,EAAW,eAAe,CAAA;AACjC,MAAO,OAAA,WAAA,CAAY,UAAU,KAAK,CAAA;AAAA;AACpC,GACF,MAAA,IAAW,CAAC,WAAa,EAAA;AAEvB,IAAI,IAAA,4BAAA,CAA6B,QAAU,EAAA,SAAS,CAAG,EAAA;AACrD,MAAO,OAAA,wBAAA,CAAyB,UAAU,SAAS,CAAA;AAAA,KAC9C,MAAA;AACL,MAAA,OAAO,QAAU,EAAA,MAAA,CAAO,SAAS,CAAA,CAAE,KAAK,gBAAgB,CAAA;AAAA;AAC1D;AAUF,EAAO,OAAA,YAAA;AACT;AAEA,SAAS,kBAAA,CAAmB,UAAqB,SAAmB,EAAA;AAClE,EAAI,IAAA,QAAA,CAAS,QAAS,CAAA,SAAS,CAAG,EAAA;AAChC,IAAA,OAAO,QAAS,CAAA,MAAA,CAAO,CAAC,YAAA,KAAiB,iBAAiB,SAAS,CAAA;AAAA,GAC9D,MAAA;AACL,IAAA,MAAM,cAAyB,EAAC;AAChC,IAAA,KAAA,MAAW,gBAAgB,QAAU,EAAA;AACnC,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,YAAY,CAAG,EAAA;AAC/B,QAAI,IAAA,aAAA,CAAc,YAAc,EAAA,SAAS,CAAG,EAAA;AAC1C,UAAA,WAAA,CAAY,IAAK,CAAA,GAAG,UAAW,CAAA,YAAA,EAAc,SAAS,CAAC,CAAA;AAAA,SAClD,MAAA;AACL,UAAA,WAAA,CAAY,KAAK,YAAY,CAAA;AAAA;AAC/B,OACK,MAAA;AACL,QAAA,WAAA,CAAY,KAAK,YAAY,CAAA;AAAA;AAC/B;AAEF,IAAO,OAAA,WAAA;AAAA;AAEX;AAEA,SAAS,WAAA,CAAY,UAAqB,KAA8B,EAAA;AACtE,EAAM,MAAA,CAAC,IAAM,EAAA,EAAE,CAAI,GAAA,KAAA;AACnB,EAAA,OAAO,QAAS,CAAA,MAAA,CAAkB,CAAC,WAAA,EAAa,YAAiB,KAAA;AAC/D,IAAI,IAAA,OAAO,iBAAiB,QAAU,EAAA;AACpC,MAAI,IAAA,YAAA,GAAe,IAAQ,IAAA,YAAA,GAAe,EAAI,EAAA;AAC5C,QAAA,WAAA,CAAY,KAAK,YAAY,CAAA;AAAA,OAC/B,MAAA,IAAW,CAAC,eAAgB,CAAA,WAAA,CAAY,GAAG,CAAE,CAAA,CAAA,EAAG,YAAY,CAAG,EAAA;AAC7D,QAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AAAA;AACxB,KACS,MAAA,IAAA,gBAAA,CAAiB,YAAc,EAAA,KAAK,CAAG,EAAA;AAChD,MAAA,WAAA,CAAY,IAAK,CAAA,WAAA,CAAY,YAAc,EAAA,KAAK,CAAC,CAAA;AAAA,KAC5C,MAAA;AACL,MAAA,IAAI,KAAM,CAAA,CAAC,CAAI,GAAA,YAAA,CAAa,CAAC,CAAG,EAAA;AAC9B,QAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AAAA;AAExB,MAAA,WAAA,CAAY,KAAK,YAAY,CAAA;AAAA;AAG/B,IAAO,OAAA,WAAA;AAAA,GACT,EAAG,EAAE,CAAA;AACP;AAEA,MAAM,gBAAA,GAAmB,CAAC,EAAA,EAAgB,EACvC,KAAA,EAAA,CAAG,CAAC,CAAA,IAAK,EAAG,CAAA,CAAC,CAAK,IAAA,EAAA,CAAG,CAAC,CAAA,IAAK,GAAG,CAAC,CAAA,IAAO,EAAG,CAAA,CAAC,CAAK,IAAA,EAAA,CAAG,CAAC,CAAA,IAAK,EAAG,CAAA,CAAC,CAAK,IAAA,EAAA,CAAG,CAAC,CAAA;AACxE,MAAM,WAAA,GAAc,CAAC,EAAA,EAAgB,EAA+B,KAAA;AAAA,EAClE,KAAK,GAAI,CAAA,EAAA,CAAG,CAAC,CAAG,EAAA,EAAA,CAAG,CAAC,CAAC,CAAA;AAAA,EACrB,KAAK,GAAI,CAAA,EAAA,CAAG,CAAC,CAAG,EAAA,EAAA,CAAG,CAAC,CAAC;AACvB,CAAA;AAEA,MAAM,eAAA,GAAkB,CACtB,YAAA,EACA,KACG,KAAA;AACH,EAAA,IAAI,OAAO,YAAA,KAAiB,WAAe,IAAA,OAAO,iBAAiB,QAAU,EAAA;AAC3E,IAAO,OAAA,KAAA;AAAA,GACF,MAAA,OAAO,aAAc,CAAA,YAAA,EAAc,KAAK,CAAA;AACjD,CAAA;AAEA,MAAM,aAAA,GAAgB,CAAC,KAAA,EAAmB,KACxC,KAAA,KAAA,IAAS,MAAM,CAAC,CAAA,IAAK,KAAS,IAAA,KAAA,CAAM,CAAC,CAAA;AAEvC,MAAM,mBACJ,GAAA,WAAA,CAAY,IAAO,GAAA,WAAA,CAAY,QAAQ,WAAY,CAAA,IAAA;AACrD,MAAM,2BAAA,GAA8B,WAAY,CAAA,IAAA,GAAO,WAAY,CAAA,KAAA;AACnE,MAAM,0BAAA,GAA6B,WAAY,CAAA,IAAA,GAAO,WAAY,CAAA,IAAA;AAOrD,MAAA,kBAAA,GAAqB,CAChC,QAAA,EACA,SACW,KAAA;AACX,EAAA,KAAA,MAAW,QAAQ,QAAU,EAAA;AAC3B,IAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,MAAA,IAAI,SAAS,SAAW,EAAA;AACtB,QAAO,OAAA,mBAAA;AAAA;AACT,KACS,MAAA,IAAA,aAAA,CAAc,IAAM,EAAA,SAAS,CAAG,EAAA;AACzC,MAAI,IAAA,SAAA,KAAc,IAAK,CAAA,CAAC,CAAG,EAAA;AACzB,QAAO,OAAA,2BAAA;AAAA,OACE,MAAA,IAAA,SAAA,KAAc,IAAK,CAAA,CAAC,CAAG,EAAA;AAChC,QAAO,OAAA,0BAAA;AAAA,OACF,MAAA;AACL,QAAA,OAAO,WAAY,CAAA,IAAA;AAAA;AACrB;AACF;AAEF,EAAA,OAAO,WAAY,CAAA,KAAA;AACrB;AAEa,MAAA,UAAA,GAAa,CAAC,QAAA,EAAqB,SAAsB,KAAA;AACpE,EAAA,KAAA,MAAW,QAAQ,QAAU,EAAA;AAC3B,IAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,MAAA,IAAI,SAAS,SAAW,EAAA;AACtB,QAAO,OAAA,IAAA;AAAA,OACT,MAAA,IAAW,OAAO,SAAW,EAAA;AAC3B,QAAO,OAAA,KAAA;AAAA;AACT,KACS,MAAA,IAAA,aAAA,CAAc,IAAM,EAAA,SAAS,CAAG,EAAA;AACzC,MAAO,OAAA,IAAA;AAAA,KACE,MAAA,IAAA,IAAA,CAAK,CAAC,CAAA,GAAI,SAAW,EAAA;AAC9B,MAAO,OAAA,KAAA;AAAA;AACT;AAGF,EAAO,OAAA,KAAA;AACT;AAKa,MAAA,eAAA,GAAkB,CAAC,QAAkC,KAAA;AAChE,EAAA,IAAI,SAAS,KAAM,CAAA,CAAC,iBAAiB,OAAO,YAAA,KAAiB,QAAQ,CAAG,EAAA;AACtE,IAAO,OAAA,QAAA;AAAA;AAET,EAAA,MAAM,mBAAmB,EAAC;AAC1B,EAAA,KAAA,MAAW,gBAAgB,QAAU,EAAA;AACnC,IAAI,IAAA,OAAO,iBAAiB,QAAU,EAAA;AACpC,MAAA,gBAAA,CAAiB,KAAK,YAAY,CAAA;AAAA,KAC7B,MAAA;AACL,MAAS,KAAA,IAAA,CAAA,GAAI,aAAa,CAAC,CAAA,EAAG,KAAK,YAAa,CAAA,CAAC,GAAG,CAAK,EAAA,EAAA;AACvD,QAAA,gBAAA,CAAiB,KAAK,CAAC,CAAA;AAAA;AACzB;AACF;AAEF,EAAO,OAAA,gBAAA;AACT;AAEA,SAAS,UAAW,CAAA,CAAC,IAAM,EAAA,EAAE,GAAe,SAA8B,EAAA;AACxE,EAAA,IAAI,cAAc,IAAM,EAAA;AACtB,IAAA,OAAO,CAAC,CAAC,IAAO,GAAA,CAAA,EAAG,EAAE,CAAC,CAAA;AAAA,GACxB,MAAA,IAAW,cAAc,EAAI,EAAA;AAC3B,IAAA,OAAO,CAAC,CAAC,IAAM,EAAA,EAAA,GAAK,CAAC,CAAC,CAAA;AAAA,GACxB,MAAA,IAAW,EAAK,GAAA,IAAA,KAAS,CAAG,EAAA;AAC1B,IAAO,OAAA,CAAC,MAAM,EAAE,CAAA;AAAA,GAClB,MAAA,IAAW,SAAc,KAAA,EAAA,GAAK,CAAG,EAAA;AAC/B,IAAA,OAAO,CAAC,CAAC,IAAA,EAAM,EAAK,GAAA,CAAC,GAAG,EAAE,CAAA;AAAA,GACrB,MAAA;AACL,IAAO,OAAA;AAAA,MACL,CAAC,IAAM,EAAA,SAAA,GAAY,CAAC,CAAA;AAAA,MACpB,CAAC,SAAY,GAAA,CAAA,EAAG,EAAE;AAAA,KACpB;AAAA;AAEJ;AAOa,MAAA,cAAA,GAAiB,CAAC,QAAA,GAAsB,YAAiB,KAAA;AACpE,EAAA,IAAI,QAAQ,QAAS,CAAA,MAAA;AACrB,EAAA,KAAA,MAAW,iBAAiB,QAAU,EAAA;AACpC,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,aAAa,CAAG,EAAA;AAChC,MAAM,MAAA,CAAC,IAAM,EAAA,EAAE,CAAI,GAAA,aAAA;AACnB,MAAA,KAAA,IAAS,MAAM,IAAO,GAAA,CAAA,CAAA;AAAA;AACxB;AAEF,EAAO,OAAA,KAAA;AACT;;;;;;;;;;;;ACxVA,IAAA,MAAA;AAMA,MAAM,EAAE,UAAa,GAAA,YAAA;AAEd,MAAM,YAAa,CAAA;AAAA,EAKxB,WAAY,CAAA,EAAE,IAAM,EAAA,EAAA,EAAgB,EAAA;AAJpC,IAAO,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AACP,IAAA,aAAA,CAAA,IAAA,EAAO,UAAW,EAAA,CAAA,CAAA;AAClB,IAAAzD,cAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AASA,IAAA,aAAA,CAAA,IAAA,EAAA,aAAA,EAAc,CAAC,QAAqB,KAAA;AAClC,MAAI,IAAA,QAAA,GAAW,IAAK,CAAA,IAAA,CAAK,MAAQ,EAAA;AAC/B,QAAA,IAAA,CAAK,KAAK,MAAS,GAAA,QAAA;AAAA;AAGrB,MAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAAA,KAClB,CAAA;AAZE,IAAAJ,cAAA,CAAA,IAAA,EAAK,MAAS,EAAA,IAAI,WAAY,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AAEtC,IAAK,IAAA,CAAA,IAAA,GAAO,IAAI,KAAM,CAAA,IAAA,CAAK,IAAI,CAAG,EAAA,EAAA,GAAK,IAAI,CAAC,CAAA;AAC5C,IAAA,IAAA,CAAK,QAAW,GAAA,CAAA;AAAA;AAClB,EAUA,IAAI,IAAqB,EAAA;AACvB,IAAM,MAAA,CAAC,KAAK,CAAI,GAAA,IAAA;AAChB,IAAI,IAAA,IAAA,CAAK,aAAc,CAAA,KAAK,CAAG,EAAA;AAC7B,MAAM,MAAA,aAAA,GAAgB,KAAQ,GAAAD,cAAA,CAAA,IAAA,EAAK,MAAO,CAAA,CAAA,IAAA;AAC1C,MAAK,IAAA,CAAA,IAAA,CAAK,aAAa,CAAI,GAAA,IAAA;AAS3B,MAAI,IAAA,IAAA,CAAK,QAAQ,CAAG,EAAA;AAClB,QAAA,MAAM,WAAc,GAAA,IAAA,CAAK,IAAK,CAAA,aAAA,GAAgB,CAAC,CAAA;AAC/C,QAAI,IAAA,iBAAA,CAAkB,WAAW,CAAG,EAAA;AAClC,UAAA,IAAA,CAAK,IAAK,CAAA,aAAA,GAAgB,CAAC,CAAA,GAAI,YAAY,KAAM,EAAA;AACjD,UAAA,IAAA,CAAK,IAAK,CAAA,aAAA,GAAgB,CAAC,CAAA,CAAE,QAAQ,CAAK,IAAA,CAAA;AAAA;AAC5C;AACF;AACF;AACF,EAEA,WAAW,KAAe,EAAA;AACxB,IAAA,OAAOA,qBAAK,MAAO,CAAA,CAAA,QAAA,CAAS,KAAK,CAC/B,IAAA,IAAA,CAAK,KAAK,KAAQ,GAAAA,cAAA,CAAA,IAAA,EAAK,QAAO,IAAI,CAAA,IAAK,OACrC,IAAK,CAAA,IAAA,CAAK,QAAQA,cAAK,CAAA,IAAA,EAAA,MAAA,CAAA,CAAO,IAAI,CAClC,GAAA,KAAA,CAAA;AAAA;AACN,EAEA,cAAc,KAAe,EAAA;AAC3B,IAAO,OAAAA,cAAA,CAAA,IAAA,EAAK,MAAO,CAAA,CAAA,QAAA,CAAS,KAAK,CAAA;AAAA;AACnC,EAEA,QAAS,CAAA,EAAE,IAAM,EAAA,EAAA,EAAgB,EAAA;AAC/B,IAAA,IAAI,SAASA,cAAK,CAAA,IAAA,EAAA,MAAA,CAAA,CAAO,QAAQ,EAAO,KAAAA,cAAA,CAAA,IAAA,EAAK,QAAO,EAAI,EAAA;AACtD,MAAM,MAAA,CAAC,aAAa,SAAS,CAAA,GAAIA,qBAAK,MAAO,CAAA,CAAA,OAAA,CAAQ,MAAM,EAAE,CAAA;AAC7D,MAAM,MAAA,OAAA,GAAU,IAAI,KAAM,CAAA,IAAA,CAAK,IAAI,CAAG,EAAA,EAAA,GAAK,IAAI,CAAC,CAAA;AAChD,MAAA,KAAA,IAAS,CAAI,GAAA,WAAA,EAAa,CAAI,GAAA,SAAA,EAAW,CAAK,EAAA,EAAA;AAC5C,QAAM,MAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAW,CAAC,CAAA;AAC9B,QAAA,IAAI,IAAM,EAAA;AACR,UAAA,MAAM,QAAQ,CAAI,GAAA,IAAA;AAClB,UAAA,OAAA,CAAQ,KAAK,CAAI,GAAA,IAAA;AAAA;AACnB;AAEF,MAAA,IAAA,CAAK,IAAO,GAAA,OAAA;AACZ,MAAAA,cAAA,CAAA,IAAA,EAAK,QAAO,IAAO,GAAA,IAAA;AACnB,MAAAA,cAAA,CAAA,IAAA,EAAK,QAAO,EAAK,GAAA,EAAA;AAAA;AACnB;AACF,EAEA,eAAkB,GAAA;AAChB,IAAO,OAAA,IAAA,CAAK,KAAK,MAAO,CAAA,CAAC,QAAQ,GAAI,CAAA,QAAQ,MAAM,CAAC,CAAA;AAAA;AACtD,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAOA,cAAK,CAAA,IAAA,EAAA,MAAA,CAAA;AAAA;AACd,EAEA,KAAyB,GAAA;AACvB,IAAA,MAAM,OAAwB,EAAC;AAC/B,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,KAAA;AACtB,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,IAAK,CAAA,IAAA,CAAK,QAAQ,CAAK,EAAA,EAAA;AACzC,MAAI,IAAA,IAAA,CAAK,IAAK,CAAA,CAAC,CAAG,EAAA;AAChB,QAAA,IAAA,CAAK,IAAK,CAAA,IAAA,CAAK,IAAK,CAAA,CAAC,CAAC,CAAA;AAAA,OACjB,MAAA;AACL,QAAA,IAAA,CAAK,IAAK,CAAA,CAAC,IAAO,GAAA,CAAA,EAAG,IAAO,GAAA,CAAA,EAAG,IAAM,EAAA,KAAA,EAAO,CAAG,EAAA,CAAA,EAAG,EAAI,EAAA,CAAC,CAAC,CAAA;AAAA;AAC1D;AAEF,IAAO,OAAA,IAAA;AAAA;AACT;AAAA;AAAA,EAIA,IAAI,qBAAiC,GAAA;AACnC,IAAA,MAAM,EAAE,IAAA,EAAM,EAAG,EAAA,GAAIA,cAAK,CAAA,IAAA,EAAA,MAAA,CAAA;AAE1B,IAAA,KAAA,IAAS,CAAI,GAAA,IAAA,EAAM,CAAI,GAAA,EAAA,EAAI,CAAK,EAAA,EAAA;AAC9B,MAAA,IAAI,IAAK,CAAA,UAAA,CAAW,CAAC,CAAA,KAAM,KAAW,CAAA,EAAA;AACpC,QAAO,OAAA,KAAA;AAAA;AACT;AAEF,IAAO,OAAA,IAAA;AAAA;AAEX;AArGE,MAAA,GAAA,IAAA,OAAA,EAAA;;ACDF,MAAM,cAA8B,EAAC;AAExB,MAAA,eAAA,GAAkB,CAAC,QAAwC,KAAA;AACtE,EAAM,MAAA,OAAA,GAAU,KAAM,CAAA,OAAA,CAAQ,QAAQ,CAAA;AACtC,EAAA,MAAM,QAAQ,OAAU,GAAA,QAAA,CAAS,MAAS,GAAA+D,cAAA,CAAS,MAAM,QAAQ,CAAA;AACjE,EAAA,IAAI,OAAW,IAAA,QAAA,CAAS,KAAM,CAAAC,oBAAc,CAAG,EAAA;AAC7C,IAAO,OAAA,QAAA;AAAA,aACE,KAAU,KAAA,CAAA,IAAK,CAAC,OAAW,IAAAA,oBAAA,CAAe,QAAQ,CAAG,EAAA;AAC9D,IAAA,OAAO,CAAC,QAAQ,CAAA;AAAA,GAClB,MAAA,IAAW,QAAQ,CAAG,EAAA;AACpB,IAAO,OAAA,QAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,WAAA;AAAA;AAEX;AAEa,MAAA,YAAA,GAAe,CAAC,EAAA,GAAK,EAAO,KAAA;AACvC,EAAM,MAAA,YAAA,GAAerB,aAAO,KAAK,CAAA;AACjC,EAAAH,eAAA,CAAU,MAAM;AACd,IAAQ,OAAA,CAAA,GAAA,CAAI,CAAc,WAAA,EAAA,EAAE,CAAE,CAAA,CAAA;AAC9B,IAAA,YAAA,CAAa,OAAU,GAAA,IAAA;AACvB,IAAA,OAAO,MAAM;AACX,MAAQ,OAAA,CAAA,GAAA,CAAI,CAAgB,aAAA,EAAA,EAAE,CAAE,CAAA,CAAA;AAChC,MAAA,YAAA,CAAa,OAAU,GAAA,KAAA;AAAA,KACzB;AAAA,GACF,EAAG,CAAC,EAAE,CAAC,CAAA;AAEP,EAAO,OAAA,YAAA;AACT;AAEO,MAAMyB,oBAAqB,GAAA,CAAI,GACpC,KAAA,OAAO,GAAQ,KAAA;;ACpCD,SAAA,QAAA,CACd,UACA,YACiB,EAAA;AACjB,EAAI,IAAA,OAAA;AACJ,EAAA,OAAO,IAAI,IAAoB,KAAA;AAC7B,IAAA,YAAA,CAAa,OAAO,CAAA;AACpB,IAAA,OAAA,GAAU,OAAO,UAAW,CAAA,MAAM,SAAS,GAAG,IAAI,GAAG,YAAY,CAAA;AAAA,GACnE;AACF;AAEgB,SAAA,QAAA,CACd,UACA,KACiB,EAAA;AACjB,EAAA,IAAI,IAAO,GAAA,KAAA;AACX,EAAA,IAAI,QAAkC,GAAA,KAAA,CAAA;AAEtC,EAAA,SAAS,aAAgB,GAAA;AACvB,IAAA,IAAI,YAAY,KAAW,CAAA,EAAA;AACzB,MAAO,IAAA,GAAA,KAAA;AAAA,KACF,MAAA;AACL,MAAA,QAAA,CAAS,GAAG,QAAQ,CAAA;AACpB,MAAW,QAAA,GAAA,KAAA,CAAA;AACX,MAAA,UAAA,CAAW,eAAe,KAAK,CAAA;AAAA;AACjC;AAGF,EAAA,OAAO,IAAI,IAAoB,KAAA;AAC7B,IAAA,IAAI,IAAM,EAAA;AACR,MAAW,QAAA,GAAA,IAAA;AAAA,KACN,MAAA;AACL,MAAA,QAAA,CAAS,GAAG,IAAI,CAAA;AAChB,MAAO,IAAA,GAAA,IAAA;AACP,MAAA,UAAA,CAAW,eAAe,KAAK,CAAA;AAAA;AACjC,GACF;AACF;;;;;;;;;AC1CA,IAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA;AAAO,MAAM,eAA6B,CAAA;AAAA,EAMxC,WAAc,GAAA;AALd,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AACA,IAA+B,YAAA,CAAA,IAAA,EAAA,QAAA,EAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,qBAAqB,CAAA,CAAA;AACtE,IAAkC,YAAA,CAAA,IAAA,EAAA,OAAA,EAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,oBAAoB,CAAA,CAAA;AACxE,IAAY,YAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA;AAGV,IAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,IAAI,OAAW,CAAA,CAAC,SAAS,MAAW,KAAA;AAClD,MAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,OAAA,CAAA;AAChB,MAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,MAAA,CAAA;AAAA,KAChB,CAAA,CAAA;AAAA;AACH,EAEA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA;AAAA;AACd,EAEA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AACd,EAEA,QAAQ,KAAU,EAAA;AAChB,IAAA,YAAA,CAAA,IAAA,EAAK,SAAY,EAAA,IAAA,CAAA;AACjB,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,UAAL,IAAc,CAAA,IAAA,EAAA,KAAA,CAAA;AAAA;AACvB,EAEA,IAAI,MAAS,GAAA;AACX,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA;AAEhB;AA5BE,QAAA,GAAA,IAAA,OAAA,EAAA;AACA,QAAA,GAAA,IAAA,OAAA,EAAA;AACA,OAAA,GAAA,IAAA,OAAA,EAAA;AACA,SAAA,GAAA,IAAA,OAAA,EAAA;;ACoBF,MAAM,cAAiB,GAAA;AAAA,EACrB,4BAAA;AAAA,EACA,0BAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,sBAAsB,CACjC,OAAA,KACiC,eAAe,QAAS,CAAA,OAAA,CAAQ,MAAM,CAAC;AAE7D,MAAA,iBAAA,GAAoB,CAC/B,OAAA,KAC6C,WAAe,IAAA;AAEjD,MAAA,+BAAA,GAAkC,CAC7C,WAAA,KAEA,WAAY,CAAA,IAAA,KAAS,qBACrB,IAAA,kBAAA,CAAmB,WAAY,CAAA,MAAM,CACrC,IAAA,aAAA,IAAiB,WAAY,CAAA;AAExB,MAAM,qBAAqB,CAChC,MAAA,KAEA,MAAW,KAAA,KAAA,CAAA,IAAa,OAAO,IAAS,KAAA;AAQnC,SAAS,qBACd,OACwE,EAAA;AACxE,EAAA,OAAO,QAAQ,IAAS,KAAA,oBAAA;AAC1B;AAQO,SAAS,kBACd,OACwE,EAAA;AACxE,EAAA,OAAO,QAAQ,IAAS,KAAA,kBAAA;AAC1B;AAaO,SAAS,kBACd,CAAA,MAAA,EACA,KACA,EAAA,KAAA,EACA,IAC6D,EAAA;AAC7D,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAM,EAAA,kBAAA;AAAA,IACN;AAAA,GACF;AACF;AASgB,SAAA,kBAAA,CACd,SACA,IAC6D,EAAA;AAC7D,EAAO,OAAA;AAAA,IACL,aAAa,EAAC;AAAA,IACd,QAAQ,EAAC;AAAA,IACT,OAAA;AAAA,IACA,IAAM,EAAA,oBAAA;AAAA,IACN;AAAA,GACF;AACF;AAWgB,SAAA,gBAAA,CACd,MACA,EAAA,IAAA,EACA,IACiE,EAAA;AACjE,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAM,EAAA,qBAAA;AAAA,IACN;AAAA,GACF;AACF;AASgB,SAAA,mBAAA,CACd,QACA,IACuE,EAAA;AACvE,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAM,EAAA,wBAAA;AAAA,IACN;AAAA,GACF;AACF;AAUa,MAAA,cAAA,GAAiB,CAAC,KAAoB,KAAA;AACjD,EACE,IAAA,KAAA,KAAU,QACV,OAAO,KAAA,KAAU,YACjB,OAAW,IAAA,KAAA,IACX,YAAY,KACZ,EAAA;AACA,IAAQ,OAAA,KAAA,CAAmB,KAAM,CAAA,UAAA,CAAW,SAAS,CAAA;AAAA;AAEvD,EAAO,OAAA,KAAA;AACT;AAUO,SAAS,gBACd,WACA,EAAA;AACA,EAAA,OACE,WAAY,CAAA,IAAA,KAAS,qBACrB,IAAA,WAAA,CAAY,IAAS,KAAA,uBAAA;AAEzB;AAmBO,SAAS,4BACd,WAKA,EAAA;AACA,EAAA,OACE,eAAgB,CAAA,WAAW,CAC3B,IAAA,kBAAA,CAAmB,YAAY,MAAM,CAAA,IACrC,cAAe,CAAA,WAAA,CAAY,MAAO,CAAA,KAAK,CACvC,IAAA,WAAA,CAAY,QAAQ,eAAoB,KAAA,aAAA;AAE5C;AAEa,MAAA,YAAA,GAAe,CAC1B,QAEA,KAAA,eAAA,CAAgB,QAAQ,CAAK,IAAA,QAAA,CAAS,OAAO,IAAS,KAAA;;ACtOxD,MAAM,EAAE,OAAA,OAASjB,KAAK,OAAAkB,KAAA,EAAQ,GAAA,YAAA;AAajB,MAAA,oBAAA,GAAuB,CAAC,SAAsC,KAAA;AAAA,EACzE,CAAC,GAAA,KAAQ,GAAI,CAAAA,KAAG,CAAI,GAAA,SAAA;AAAA,EACpB,CAAC,QAAA,KAAa,IAAK,CAAA,KAAA,CAAM,WAAW,SAAS,CAAA;AAAA,EAC7C;AACF;AAaO,MAAM,qBAAwB,GAAA,CACnC,SACA,EAAA,iBAAA,EACA,YACmB,KAAA;AAAA,EACnB,CAAC,GAAK,EAAA,MAAA,GAAS,CAAM,KAAA;AACnB,IAAM,MAAA,SAAA,GAAY,aAAa,OAAU,GAAA,iBAAA;AACzC,IAAA,OAAA,CAAQ,GAAI,CAAAA,KAAG,CAAI,GAAA,MAAA,IAAU,SAAY,GAAA,SAAA;AAAA,GAC3C;AAAA;AAAA;AAAA;AAAA,EAIA,CAAC,QAAa,KAAA;AACZ,IAAM,MAAA,SAAA,GAAY,aAAa,OAAU,GAAA,iBAAA;AACzC,IAAA,OAAO,IAAK,CAAA,KAAA,CAAA,CAAO,QAAW,GAAA,SAAA,IAAa,SAAS,CAAA;AAAA,GACtD;AAAA,EACA;AACF;AAOa,MAAA,qBAAA,GAA2C,CACtD,GAAA,EACA,SACwB,KAAA;AACxB,EAAA,MAAM,EAAE,CAAC,OAAO,GAAG,MAAQ,EAAA,CAAClB,KAAG,GAAG,GAAK,EAAA,CAACkB,KAAG,GAAG,OAAU,GAAA,GAAA;AAExD,EAAA,MAAM,SAAiC,GAAA;AAAA,IACrC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAY,CAAC,MAAA;AAAA,IACb,UAAA,EAAY,cAAc,GAAG,CAAA;AAAA,IAC7B,MAAM;AAAC,GACT;AAEA,EAAA,KAAA,MAAW,CAAC,OAAS,EAAA,MAAM,KAAK,MAAO,CAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACzD,IAAA,SAAA,CAAU,IAAK,CAAA,OAAO,CAAI,GAAA,GAAA,CAAI,MAAM,CAAA;AAAA;AAGtC,EAAO,OAAA,SAAA;AACT;;AC7EO,MAAM,gBAAmB,GAAA;AAAA,EAC9B,YAAc,EAAA,eAAA;AAAA,EACd,uBAAyB,EAAA,+BAAA;AAAA,EACzB,SAAW,EAAA,gBAAA;AAAA,EACX,WAAa,EAAA,kBAAA;AAAA,EACb,SAAW,EAAA,eAAA;AAAA,EACX,kBAAoB,EAAA;AACtB;;ACTA,MAAM,aAAA,GAAgB,CAAC,QACrB,KAAA,QAAA,KAAa,MAAM,GAAM,GAAA,QAAA,KAAa,MAAM,KAAY,CAAA,GAAA,GAAA;AAE1D,MAAM,OAAmB,GAAA,EAAE,QAAU,EAAA,EAAG,EAAA;AAI3B,MAAA,iBAAA,GAAoB,CAC/B,EAAE,QAAS,EAAA,EACX,EAAE,IAAA,EAAM,MAAO,EAAA,EACf,UAAa,GAAA,KAAA,EACb,QACY,KAAA;AACZ,EAAA,IAAI,UAAY,EAAA;AACd,IAAA,MAAM,cAAc,QAAS,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA,OAAA,CAAQ,WAAW,MAAM,CAAA;AACxE,IAAA,IAAI,WAAa,EAAA;AACf,MAAO,OAAA;AAAA,QACL,UAAU,QAAS,CAAA,GAAA;AAAA,UAAI,CAAC,OAAA,KACtB,OAAQ,CAAA,MAAA,KAAW,MACf,GAAA;AAAA,YACE,MAAA;AAAA,YACA,QAAU,EAAA,OAAA,CAAQ,QAAa,KAAA,GAAA,GAAM,GAAM,GAAA;AAAA,WAE7C,GAAA;AAAA;AACN,OACF;AAAA,KACK,MAAA;AACL,MAAO,OAAA;AAAA,QACL,QAAA,EAAU,SAAS,MAAO,CAAA;AAAA,UACxB,MAAA;AAAA,UACA,UAAU,QAAY,IAAA;AAAA,SACvB;AAAA,OACH;AAAA;AACF;AAGF,EAAA,MAAM,cACJ,OAAO,QAAA,KAAa,WAChB,QACA,GAAA,QAAA,CAAS,WAAW,CAAK,IAAA,QAAA,CAAS,CAAC,CAAA,CAAE,WAAW,MAC9C,GAAA,aAAA,CAAc,SAAS,CAAC,CAAA,CAAE,QAAQ,CAClC,GAAA,GAAA;AAER,EAAA,OAAO,WACH,GAAA;AAAA,IACE,UAAU,CAAC,EAAE,MAAQ,EAAA,QAAA,EAAU,aAAa;AAAA,GAE9C,GAAA,OAAA;AACN;AAEO,MAAM,gBAAgB,CAC3B,EAAE,QAAS,EAAA,EACX,QACA,QACY,KAAA;AACZ,EAAA,IAAI,aAAa,KAAW,CAAA,EAAA;AAC1B,IAAM,MAAA,UAAA,GAAa,SAAS,IAAK,CAAA,CAAC,SAAS,IAAK,CAAA,MAAA,KAAW,OAAO,IAAI,CAAA;AACtE,IAAA,IAAI,UAAY,EAAA;AACd,MAAO,OAAA;AAAA,QACL,QAAU,EAAA;AAAA,UACR;AAAA,YACE,QAAQ,MAAO,CAAA,IAAA;AAAA,YACf,QAAU,EAAA,UAAA,CAAW,QAAa,KAAA,GAAA,GAAM,GAAM,GAAA;AAAA;AAChD;AACF,OACF;AAAA;AACF;AAEF,EAAO,OAAA,EAAE,QAAU,EAAA,CAAC,EAAE,MAAA,EAAQ,MAAO,CAAA,IAAA,EAAM,QAAU,EAAA,QAAA,IAAY,GAAI,EAAC,CAAE,EAAA;AAC1E;AAEO,MAAM,gBAAgB,CAC3B,EAAE,UACF,EAAA,MAAA,EACA,WAAsB,GACV,KAAA;AACZ,EAAA,MAAM,SAAwB,GAAA,EAAE,MAAQ,EAAA,MAAA,CAAO,MAAM,QAAS,EAAA;AAC9D,EAAI,IAAA,QAAA,CAAS,SAAS,CAAG,EAAA;AACvB,IAAO,OAAA;AAAA,MACL,QAAA,EAAU,QAAS,CAAA,MAAA,CAAO,SAAS;AAAA,KACrC;AAAA,GACK,MAAA;AACL,IAAA,OAAO,EAAE,QAAA,EAAU,CAAC,SAAS,CAAE,EAAA;AAAA;AAEnC;AAca,MAAA,aAAA,GAAgB,CAC3B,UAAA,EACA,OACqB,KAAA;AACrB,EAAA,IAAI,OAAY,KAAA,KAAA,CAAA,IAAa,OAAQ,CAAA,QAAA,CAAS,WAAW,CAAG,EAAA;AAC1D,IAAO,OAAA,SAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,OAAA,GAAU,QAAQ,QAAS,CAAA,IAAA,CAAK,CAAC,EAAO,KAAA,EAAA,CAAG,WAAW,UAAU,CAAA;AACtE,IAAA,IAAI,OAAS,EAAA;AACX,MAAI,IAAA,OAAA,CAAQ,QAAS,CAAA,MAAA,KAAW,CAAG,EAAA;AACjC,QAAO,OAAA,OAAA,CAAQ,QAAa,KAAA,GAAA,GACxB,iBACA,GAAA,kBAAA;AAAA,OACC,MAAA;AACL,QAAO,OAAA,OAAA,CAAQ,QAAa,KAAA,GAAA,GACxB,gCACA,GAAA,iCAAA;AAAA;AACN,KACK,MAAA;AACL,MAAO,OAAA,mBAAA;AAAA;AACT;AAEJ;;ACxHa,MAAA,WAAA,GAAc,CAAC,WAA4C,KAAA;AACtE,EAAA,IAAI,YAAY,OAAS,EAAA;AACvB,IAAM,MAAA,EAAE,MAAQ,EAAA,OAAA,EAAY,GAAA,WAAA;AAC5B,IAAO,OAAA,EAAE,MAAQ,EAAA,KAAA,EAAO,OAAQ,EAAA;AAAA,GAC3B,MAAA;AACL,IAAO,OAAA,WAAA;AAAA;AAEX;;ACVa,MAAA,aAAA,GAAgB,CAAC,kBAAkB;;ACMhD,MAAM,EAAE,KAAA,EAAO,KAAO,EAAA,GAAA,EAAK,KAAQ,GAAA,YAAA;AAItB,MAAA,oBAAA,GAAuB,CAClC,eAAA,EACA,YAC0C,KAAA;AAC1C,EAAA,MAAM,UAA8B,EAAC;AAErC,EAAQ,OAAA,CAAA,IAAA;AAAA,IACN;AAAA,MACE,MAAQ,EAAA,IAAA;AAAA,MACR,IAAM,EAAA,UAAA;AAAA,MACN,IAAM,EAAA;AAAA,KACR;AAAA,IACA;AAAA,MACE,SAAS,YAAc,EAAA,OAAA;AAAA,MACvB,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA;AAAA,KACR;AAAA,IACA;AAAA,MACE,SAAS,YAAc,EAAA,OAAA;AAAA,MACvB,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA;AAAA;AACR,GACF;AAEA,EAAA,MAAM,OAAwB,EAAC;AAE/B,EAAe,cAAA,CAAA,IAAA,EAAM,eAAiB,EAAA,OAAA,EAAS,YAAY,CAAA;AAC3D,EAAO,OAAA,CAAC,SAAS,IAAI,CAAA;AACvB;AAEA,MAAM,cAAiB,GAAA,CACrB,IACA,EAAA,eAAA,EACA,MACA,YACA,EAAA,KAAA,GAAe,EAAE,KAAA,EAAO,CAAE,EAAA,EAC1B,OAAU,GAAA,OAAA,EACV,QAAQ,CACa,KAAA;AACrB,EAAA,IAAI,SAAY,GAAA,CAAA;AAChB,EAAA,IAAI,QAAW,GAAA,CAAA;AACf,EAAI,IAAA,KAAA,KAAU,IAAK,CAAA,MAAA,GAAS,CAAG,EAAA;AAC7B,IAAA,IAAA,CAAK,IAAK,CAAA;AAAA,MACR,SAAS,YAAc,EAAA,OAAA;AAAA,MACvB,IAAA,EAAM,CAAS,MAAA,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,MAC1B,IAAM,EAAA;AAAA,KACP,CAAA;AAAA;AAEH,EAAS,KAAA,IAAA,CAAA,GAAI,GAAG,CAAI,GAAA,eAAA,CAAgB,QAAQ,CAAK,EAAA,EAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACjE,IAAA,MAAM,EAAE,UAAY,EAAA,IAAA,EAAM,OAAO,QAAS,EAAA,GAAI,gBAAgB,CAAC,CAAA;AAC/D,IAAA,MAAM,SAAS,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA;AACvC,IAAA,MAAM,OAAU,GAAA,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAEnC,IAAA,MAAM,GAAM,GAAA,CAAC,KAAM,CAAA,KAAA,EAAO,MAAM,KAAO,EAAA,KAAA,EAAM,KAAM,EAAA,KAAA,EAAM,GAAE,OAAQ,EAAA,CAAA,EAAG,QAAU,EAAA,GAAG,QAAQ,KAAM,CAAA;AACjG,IAAA,IAAI,IAAM,EAAA;AACR,MAAc,YAAA,EAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AAAA;AAErC,IAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACb,IAAY,QAAA,IAAA,CAAA;AAEZ,IAAI,IAAA,UAAA,IAAc,UAAW,CAAA,MAAA,GAAS,CAAG,EAAA;AACvC,MAAM,MAAA,CAAC,eAAiB,EAAA,cAAc,CAAI,GAAA,cAAA;AAAA,QACxC,IAAA;AAAA,QACA,UAAA;AAAA,QACA,IAAA;AAAA,QACA,YAAA;AAAA,QACA,EAAE,KAAA,EAAO,KAAM,CAAA,KAAA,GAAQ,CAAE,EAAA;AAAA,QACzB,OAAA;AAAA,QACA,KAAQ,GAAA;AAAA,OACV;AACA,MAAA,GAAA,CAAI,KAAK,CAAI,GAAA,eAAA;AACb,MAAa,SAAA,IAAA,eAAA;AACb,MAAY,QAAA,IAAA,cAAA;AACZ,MAAA,KAAA,CAAM,KAAS,IAAA,cAAA;AAAA,KACV,MAAA;AACL,MAAa,SAAA,IAAA,CAAA;AAAA;AACf;AAGF,EAAO,OAAA,CAAC,WAAW,QAAQ,CAAA;AAC7B,CAAA;AAEO,MAAM,eAAkB,GAAA,CAAC,IAAc,EAAA,SAAA,GAAY,GAAQ,KAAA;AAChE,EAAM,MAAA,IAAA,GAAO,KAAK,QAAS,CAAA,SAAS,IAAI,IAAK,CAAA,KAAA,CAAM,CAAG,EAAA,CAAA,CAAE,CAAI,GAAA,IAAA;AAC5D,EAAA,OAAO,KAAK,KAAM,CAAA,IAAA,CAAK,WAAY,CAAA,SAAS,IAAI,CAAC,CAAA;AACnD;AAEO,MAAM,mBAAsB,GAAA,CAAC,IAAc,EAAA,SAAA,GAAY,GAAQ,KAAA;AACpE,EAAA,OAAO,KAAK,KAAM,CAAA,CAAA,EAAG,IAAK,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA;AAClD;AAEa,MAAA,YAAA,GAAe,CAAC,IAAA,EAAuB,GAAuB,KAAA;AACzE,EAAM,MAAA,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,KAAA,EAAU,GAAA,GAAA;AACvC,EAAA,KAAA,IAAS,CAAI,GAAA,GAAA,GAAM,CAAG,EAAA,CAAA,IAAK,GAAG,CAAK,EAAA,EAAA;AACjC,IAAM,MAAA,OAAA,GAAU,KAAK,CAAC,CAAA;AACtB,IAAA,IAAI,OAAQ,CAAA,KAAK,CAAM,KAAA,KAAA,GAAQ,CAAG,EAAA;AAChC,MAAO,OAAA,OAAA;AAAA;AACT;AAEJ;AAEA,MAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,IACrC,KAAA,mBAAA,CAAoB,MAAM,GAAG,CAAA,KAAM,mBAAoB,CAAA,IAAA,EAAM,GAAG,CAAA;AAErD,MAAA,eAAA,GAAkB,CAC7B,GAAA,EACA,WACG,KAAA;AACH,EAAA,IAAI,WAAa,EAAA;AACf,IAAM,MAAA,OAAA,GAAU,YAAY,GAAG,CAAA;AAC/B,IAAM,MAAA,GAAA,GAAM,IAAI,GAAG,CAAA;AAEnB,IAAI,IAAA,GAAA,CAAI,UAAW,CAAA,OAAO,CAAG,EAAA;AAC3B,MAAO,OAAA,KAAA;AAAA,KACE,MAAA,IAAA,CAAC,eAAgB,CAAA,OAAA,EAAS,GAAG,CAAG,EAAA;AACzC,MAAO,OAAA,IAAA;AAAA;AACT,GACS,MAAA,IAAA,GAAA,CAAI,KAAK,CAAA,GAAI,CAAG,EAAA;AACzB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAO,OAAA,KAAA;AACT;;AC1HO,MAAM,eAA2B,GAAA;AACjC,MAAM,aAAgB,GAAA;AACtB,MAAM,kBAAgC,GAAA;AAYtC,MAAM,eAAeC,mBAAiC,CAAA;AAAA,EAC3D,OAAS,EAAA,MAAA;AAAA,EACT,KAAO,EAAA,KAAA;AAAA,EACP,SAAW,EAAA;AACb,CAAC;AAID,MAAM,wBAAyC,GAAA;AAAA,EAC7C,KAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAA;AAQa,MAAA,kBAAA,GAAqB,CAChC,eACgC,KAAA;AAChC,EAAM,MAAA,OAAA,GAAUC,iBAAW,YAAY,CAAA;AACvC,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAO,OAAA;AAAA,MACL,eAAgB,CAAA,UAAA;AAAA,MAChB,eAAgB,CAAA,YAAA;AAAA,MAChB,eAAgB,CAAA;AAAA,KAClB;AAAA,aACS,OAAS,EAAA;AAClB,IAAO,OAAA;AAAA,MACL,CAAA,EAAG,QAAQ,KAAK,CAAA,MAAA,CAAA;AAAA,MAChB,CAAA,aAAA,EAAgB,QAAQ,OAAO,CAAA,CAAA;AAAA,MAC/B,OAAQ,CAAA;AAAA,KACV;AAAA;AAEF,EAAO,OAAA,wBAAA;AACT;AAEA,MAAM,oBAAuB,GAAA,CAC3B,QACA,EAAA,KAAA,EACA,WACA,OACG,KAAA;AACH,EAAI,IAAAJ,oBAAA,CAA4C,QAAQ,CAAG,EAAA;AACzD,IAAA,OAAOK,mBAAa,QAAU,EAAA;AAAA,MAC5B,SAAW,EAAA,EAAA;AAAA;AAAA,QAET,SAAS,KAAO,EAAA,SAAA;AAAA,QAChB,GAAG,KAAK,CAAA,MAAA,CAAA;AAAA,QACR,gBAAgB,OAAO,CAAA;AAAA,OACzB;AAAA;AAAA;AAAA,MAGA,WAAa,EAAA;AAAA,KACd,CAAA;AAAA,GACI,MAAA;AACL,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN;AAAA;AAAA,iDAAA;AAAA,KAEF;AACA,IAAO,OAAA,QAAA;AAAA;AAEX,CAAA;AAUO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,iBAAoB,GAAA,KAAA;AAAA,EACpB,QAAA;AAAA,EACA,KAAO,EAAA,SAAA;AAAA,EACP,SAAW,EAAA,aAAA;AAAA,EACX,OAAS,EAAA;AACX,CAA0B,KAAA;AACxB,EAAM,MAAA;AAAA,IACJ,OAAS,EAAA,gBAAA;AAAA,IACT,SAAW,EAAA,kBAAA;AAAA,IACX,KAAO,EAAA;AAAA,GACT,GAAID,iBAAW,YAAY,CAAA;AAC3B,EAAM,MAAA,OAAA,GAAU,eAAe,gBAAoB,IAAA,eAAA;AACnD,EAAM,MAAA,SAAA,GAAY,iBAAiB,kBAAsB,IAAA,kBAAA;AACzD,EAAM,MAAA,KAAA,GAAQ,aAAa,cAAkB,IAAA,aAAA;AAC7C,EAAA,MAAM,iBAAiB,iBACnB,GAAA,oBAAA,CAAqB,UAAU,KAAO,EAAA,SAAA,EAAW,OAAO,CACxD,GAAA,QAAA;AAEJ,EACE,uBAAAE,cAAA,CAAC,YAAa,CAAA,QAAA,EAAb,EAAsB,KAAA,EAAO,EAAE,SAAW,EAAA,OAAA,EAAS,KAAM,EAAA,EACvD,QACH,EAAA,cAAA,EAAA,CAAA;AAEJ;AAEA,aAAA,CAAc,WAAc,GAAA,eAAA;;AC7Hf,MAAA,eAAA,GAAkB,CAAC,SAAA,EAAmB,YAA0B,KAAA;AAC3E,EAAA,MAAM,GAAM,GAAA,IAAI,GAAI,CAAA,QAAA,CAAS,SAAS,IAAI,CAAA;AAC1C,EAAA,MAAM,SAAY,GAAA,GAAA,CAAI,YAAa,CAAA,GAAA,CAAI,SAAS,CAAA;AAChD,EAAA,IAAI,SAAW,EAAA;AACb,IAAO,OAAA,SAAA;AAAA;AAET,EAAA,MAAM,aAAa,GAAI,CAAA,IAAA;AACvB,EAAA,MAAM,KAAQ,GAAA,IAAI,MAAO,CAAA,CAAA,EAAG,SAAS,CAAc,YAAA,CAAA,CAAA;AACnD,EAAM,MAAA,MAAA,GAAS,KAAM,CAAA,IAAA,CAAK,UAAU,CAAA;AACpC,EAAA,IAAI,MAAQ,EAAA;AACV,IAAA,OAAO,OAAO,CAAC,CAAA;AAAA;AAEjB,EAAO,OAAA,YAAA;AACT;AAEa,MAAA,eAAA,GAAkB,CAAC,SAAA,KAC9B,IAAI,GAAA,CAAI,QAAS,CAAA,QAAA,CAAS,IAAI,CAAA,CAAE,YAAa,CAAA,GAAA,CAAI,SAAS;;ACd5D,IAAI,mBAAsB,GAAA,CAAA;AAEnB,MAAM,KAAQ,GAAA,CAAC,EACpB,KAAAzB,aAAA,CAAQ,MAAM,EAAA,IAAM,CAAO,IAAA,EAAA,EAAE,mBAAmB,CAAA,CAAA,EAAI,CAAC,EAAE,CAAC;;ACa1D,MAAM,kBAAqB,GAAA,CAAI,GAC7B,KAAA,OAAO,GAAQ,KAAA,UAAA;AAGJ,MAAA,WAAA,GAAc,CACzB,YACuD,KAAA;AACvD,EAAA,MAAM,CAAC,KAAA,EAAO,SAAS,CAAA,GAAIJ,eAAY,YAAY,CAAA;AACnD,EAAM,MAAA,GAAA,GAAME,aAAU,KAAK,CAAA;AAE3B,EAAM,MAAA,QAAA,GAAWD,iBAAyC,CAAA,CAAC,GAAQ,KAAA;AACjE,IAAI,IAAA,kBAAA,CAAmB,GAAG,CAAG,EAAA;AAC3B,MAAA,GAAA,CAAI,OAAU,GAAA,GAAA;AACd,MAAA,SAAA,CAAU,GAAG,CAAA;AAAA,KACR,MAAA;AACL,MAAM,MAAA,EAAE,OAAS,EAAA,IAAA,EAAS,GAAA,GAAA;AAC1B,MAAI,GAAA,CAAA,OAAA,GAAU,IAAI,IAAI,CAAA;AACtB,MAAA,SAAA,CAAU,IAAI,OAAO,CAAA;AAAA;AACvB,GACF,EAAG,EAAE,CAAA;AACL,EAAO,OAAA,CAAC,KAAK,QAAQ,CAAA;AACvB;;ACrCa,MAAA,wBAAA,GAA2B,CACtC,IAAA,EACA,IACG,KAAA;AACH,EAAM,MAAA,QAAA,GAAWC,aAAO,KAAK,CAAA;AAC7B,EAAAJ,qBAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,SAAS,OAAS,EAAA;AACpB,MAAK,IAAA,EAAA;AAAA,KACA,MAAA;AACL,MAAA,QAAA,CAAS,OAAU,GAAA,IAAA;AAAA;AACrB,KAEC,IAAI,CAAA;AACT;;ACAA,MAAM,gBAAgB,EAAC;AAEV,MAAA,YAAA,GAAe4B,oBAAiC,aAAa;AAEnE,MAAM,kBAAkB,MAAM;AACnC,EAAA,OAAOC,iBAAW,YAAY,CAAA;AAChC;;ACQA,MAAM,eAAe,MAAM;AACzB,EAAA,MAAM,MAAM,oCAAoC,CAAA;AAClD,CAAA;AAEA,MAAM,yBAA0B,CAAA;AAAA,EAC9B,YAAY,CAA+B,EAAA;AACzC,IAAA,MAAM,MAAM,qCAAqC,CAAA;AAAA;AAErD;AAEO,MAAM,cAAcD,mBAAgC,CAAA;AAAA,EACzD,WAAa,EAAA,KAAA;AAAA,EACb,YAAA;AAAA,EACA,aAAe,EAAA;AACjB,CAAC;;ACxCM,MAAM,eAAe,CAAC;AAAA,EAC3B,QAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAc,GAAA,IAAA;AAAA,EACd;AACF,CAGM,KAAA;AACJ,EACE,uBAAAG,cAAA,CAAC,WAAY,CAAA,QAAA,EAAZ,EAAqB,KAAA,EAAO,EAAE,WAAa,EAAA,aAAA,EAAe,YAAa,EAAA,EACrE,QACH,EAAA,CAAA;AAEJ;AAEa,MAAA,OAAA,GAAU,MAAMF,gBAAA,CAAW,WAAW;AAC5C,MAAM,0BAA0B,MAAM;AAC3C,EAAA,MAAM,EAAE,oBAAA,EAAyB,GAAAA,gBAAA,CAAW,WAAW,CAAA;AACvD,EAAO,OAAA,oBAAA;AACT;;AChBO,MAAM,oBAAoBD,mBAAsC,CAAA;AAAA,EACrE,UAAY,EAAA,KAAA;AACd,CAAC,CAAA;AAEM,MAAM,qBAAqB,CAAC;AAAA,EACjC,QAAA;AAAA,EACA;AACF,CAGM,KAAA;AACJ,EACE,uBAAAG,cAAA,CAAC,kBAAkB,QAAlB,EAAA,EAA2B,OAAO,EAAE,UAAA,IAClC,QACH,EAAA,CAAA;AAEJ;AAMgB,SAAA,aAAA,CAAc,sBAAsB,KAAO,EAAA;AACzD,EAAA,MAAM,EAAE,UAAA,EAAe,GAAAF,gBAAA,CAAW,iBAAiB,CAAA;AACnD,EAAA,IAAI,UAAY,EAAA;AACd,IAAO,OAAA,UAAA;AAAA,aACE,mBAAqB,EAAA;AAC9B,IAAM,MAAA,KAAA;AAAA,MACJ,CAAA,2EAAA;AAAA,KACF;AAAA,GACK,MAAA;AACL,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN,CAAA,2EAAA;AAAA,KACF;AAAA;AAEJ;;AClBa,MAAA,gBAAA,GAAmB,MAAM,aAAqC,CAAA;AAAA,EACzE,wBAAwB,MAAM,KAAA,CAAA;AAAA,EAC9B,gBAAgB,EAAC;AAAA,EACjB,YAAY,MAAM,KAAA,CAAA;AAAA,EAClB,uBAAuB,MAAM,KAAA,CAAA;AAAA,EAC7B,yBAAyB,MAAM,KAAA,CAAA;AAAA,EAC/B,gBAAgB,MAAM,KAAA;AACxB,CAAC;AAEM,MAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM,EAAE,qBAAA,EAA0B,GAAAA,gBAAA,CAAW,gBAAgB,CAAA;AAC7D,EAAO,OAAA,qBAAA;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}
|