@rt-tools/ui-kit-v2 0.19.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +18 -0
  2. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  3. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +129 -18
  4. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
  5. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +2 -2
  6. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -1
  7. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +14 -8
  8. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -1
  9. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +4 -3
  10. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +4 -3
  12. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
  13. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +9 -4
  14. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  15. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +15 -9
  16. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  17. package/package.json +1 -1
  18. package/rt-tools-ui-kit-v2-0.20.0.tgz +0 -0
  19. package/src/lib/components/dynamic-selector/CONTEXT.md +24 -3
  20. package/src/lib/components/dynamic-selector/dynamic-input/rt-dynamic-input.component.scss +4 -5
  21. package/src/lib/components/dynamic-selector/list/rt-dynamic-selector-list.component.scss +50 -6
  22. package/src/lib/components/dynamic-selector/popup/rt-dynamic-selector-popup-options.scss +108 -0
  23. package/src/lib/components/dynamic-selector/popup/rt-dynamic-selector-popup.component.scss +28 -23
  24. package/src/lib/components/dynamic-selector/rt-dynamic-selector.component.scss +4 -5
  25. package/src/lib/components/empty-state/CONTEXT.md +3 -1
  26. package/src/lib/components/empty-state/rt-empty-state.component.scss +9 -5
  27. package/src/lib/components/input/rt-input.component.scss +17 -0
  28. package/src/lib/components/input-number/rt-input-number.component.scss +15 -0
  29. package/src/lib/components/thread-list/CONTEXT.md +3 -1
  30. package/src/rich-editor/lib/components/ai-chat/CONTEXT.md +2 -0
  31. package/types/rt-tools-ui-kit-v2-core.d.ts +69 -4
  32. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +45 -3
  33. package/types/rt-tools-ui-kit-v2-icon.d.ts +3 -1
  34. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +4 -2
  35. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +13 -8
  36. package/rt-tools-ui-kit-v2-0.19.1.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"rt-tools-ui-kit-v2-core.mjs","sources":["../../../projects/ui-kit-v2/src/lib/config/rt-kit-config.providers.ts","../../../projects/ui-kit-v2/src/lib/i18n/rt-kit-labels.en.ts","../../../projects/ui-kit-v2/src/lib/i18n/rt-kit-labels.providers.ts","../../../projects/ui-kit-v2/src/lib/i18n/rt-kit-label.pipe.ts","../../../projects/ui-kit-v2/src/lib/platform/breakpoints.service.ts","../../../projects/ui-kit-v2/src/lib/platform/message-bus.ts","../../../projects/ui-kit-v2/src/lib/platform/notification-bus.service.ts","../../../projects/ui-kit-v2/src/lib/platform/rt-theme-scope.directive.ts","../../../projects/ui-kit-v2/src/lib/platform/storage-keys.enum.ts","../../../projects/ui-kit-v2/src/lib/platform/theme.service.ts","../../../projects/ui-kit-v2/src/lib/pipes/rt-day-stamp.pipe.ts","../../../projects/ui-kit-v2/src/lib/scroll/infinite-scroll.directive.ts","../../../projects/ui-kit-v2/src/lib/tokens/rt-design-tokens.ts","../../../projects/ui-kit-v2/src/lib/util/file-name-from-url.ts","../../../projects/ui-kit-v2/src/lib/util/format-file-size.ts","../../../projects/ui-kit-v2/src/lib/util/markdown.model.ts","../../../projects/ui-kit-v2/src/lib/util/markdown-inline.ts","../../../projects/ui-kit-v2/src/lib/util/markdown-parse.ts","../../../projects/ui-kit-v2/src/lib/util/quill-delta.helper.ts","../../../projects/ui-kit-v2/src/lib/util/quill-delta.model.ts","../../../projects/ui-kit-v2/src/lib/util/search-debounce.ts","../../../projects/ui-kit-v2/src/lib/util/material-preset.ts","../../../projects/ui-kit-v2/src/lib/components/data-table/rt-data-table.model.ts","../../../projects/ui-kit-v2/src/lib/components/radius/rt-radius.model.ts","../../../projects/ui-kit-v2/src/lib/components/icon/rt-icon-names.ts","../../../projects/ui-kit-v2/src/lib/core.ts","../../../projects/ui-kit-v2/src/lib/rt-tools-ui-kit-v2-core.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';\n\nimport { IRtKitConfig } from './rt-kit-config.model';\n\n/**\n * Настройки кита, которые приложение дало на старте.\n *\n * Токен объявлен **значением**, а не сигналом, и этим отличается от подписей и\n * от темы: настройки — снимок старта. Их читают один раз, когда узел создан, и\n * поздняя подмена на уже нарисованное не действует. Тому, что меняется на живой\n * странице, место во входе узла или в службе темы.\n *\n * Умолчание — пустой объект: кит без единой настройки рисует то же, что рисовал\n * до их появления.\n */\nexport const RT_KIT_CONFIG: InjectionToken<IRtKitConfig.Config> = new InjectionToken<IRtKitConfig.Config>('RT_KIT_CONFIG', {\n providedIn: 'root',\n factory: (): IRtKitConfig.Config => ({}),\n});\n\n/**\n * Разрешение умолчания — одно место на весь кит, а не повтор в каждом узле.\n *\n * Порядок от частного к общему: вход на месте вызова, умолчание узла, общее\n * умолчание, умолчание кита. Первый найденный ответ выигрывает, поиск на нём\n * останавливается. Вход на месте сюда не приходит вовсе — он перебивает всё\n * тем, что значение отсюда становится лишь тем, **с чего вход стартует**.\n *\n * Зовётся в поле класса: там есть контекст внедрения.\n *\n * ```typescript\n * readonly #size: IButton.Size = rtKitDefault('button', (it: IRtKitConfig.Button): IButton.Size | undefined => it.size, 'md');\n * public readonly size: InputSignal<IButton.Size> = input<IButton.Size>(this.#size);\n * ```\n *\n * @param node Имя узла — ключ раздела умолчаний по узлам.\n * @param pick Что взять из умолчаний этого узла.\n * @param fallback Умолчание кита: то, что рисуется, когда не сказано ничего.\n * @param pickCommon Что взять из общих умолчаний, если поле живёт и там. Поля,\n * стоящего на обоих уровнях, сегодня нет ни одного — ступень объявлена под\n * поле, которое назовёт владелец, и до тех пор не зовётся.\n */\nexport function rtKitDefault<NODE extends keyof IRtKitConfig.Components, VALUE>(\n node: NODE,\n pick: (settings: NonNullable<IRtKitConfig.Components[NODE]>) => VALUE | undefined,\n fallback: VALUE,\n pickCommon?: (settings: IRtKitConfig.Global) => VALUE | undefined\n): VALUE {\n const config: IRtKitConfig.Config = inject(RT_KIT_CONFIG);\n const nodeSettings: IRtKitConfig.Components[NODE] | undefined = config.components?.[node];\n const fromNode: VALUE | undefined = nodeSettings === undefined ? undefined : pick(nodeSettings);\n\n if (fromNode !== undefined) {\n return fromNode;\n }\n\n const global: IRtKitConfig.Global | undefined = config.global;\n const fromCommon: VALUE | undefined = pickCommon === undefined || global === undefined ? undefined : pickCommon(global);\n\n return fromCommon ?? fallback;\n}\n\n/**\n * Отдаёт киту настройки приложения.\n *\n * Раздача необязательна: без неё работают умолчания кита. Частично заданный\n * объект не обнуляет остальное — неназванное поле проваливается на уровень\n * выше.\n *\n * ```typescript\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideRtKit({\n * global: { theme: 'auto' },\n * components: { button: { size: 'lg' }, aside: { closeOnEscape: false } },\n * }),\n * ],\n * };\n * ```\n *\n * @param config Настройки целиком. Всё в них необязательно.\n */\nexport function provideRtKit(config: IRtKitConfig.Config): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: RT_KIT_CONFIG, useValue: config }]);\n}\n","/**\n * Английские подписи кита — умолчание, а не локализация.\n *\n * Кит рисует часть текста сам: кнопки диалогов, тексты ошибок поля, расшифровки\n * иконок для скринридера. Своего языка у него нет и быть не может — его знает\n * приложение и отдаёт функцией-переводчиком (`provideRtKitLabels`). Этот набор\n * стоит под ней умолчанием, чтобы кит без единой настройки не рисовал пустоты:\n * среди ключей много `aria`-подписей, и пустая там означает кнопку без имени\n * для скринридера.\n *\n * Набор задаёт и **перечень ключей**: `TRtKitLabelKey` выводится отсюда, поэтому\n * опечатка в ключе не доживает до рантайма.\n *\n * Места вида `{{name}}` заполняются параметрами — их принимает `rtKitLabel()`.\n */\n/** Число дней во множественном числе: в английском формы «few» и «many» совпадают с «other». */\nconst COUNT_DAYS: string = '{{count}} days';\n\n// eslint-disable-next-line @typescript-eslint/typedef -- аннотация стёрла бы литеральный тип, на котором стоит TRtKitLabelKey\nexport const RT_KIT_LABELS_EN = {\n aiBackToChat: 'Back to conversation',\n aiClose: 'Close assistant',\n aiCopyReference: 'Copy reference',\n aiDeleteThread: 'Delete conversation',\n aiDisclaimer: 'AI can make mistakes. Check important information.',\n aiDislike: 'Bad answer',\n aiEmptyText: 'Ask a question or pick a suggestion.',\n aiEmptyTitle: 'How can I help?',\n aiExitFullScreen: 'Exit full screen',\n aiFullScreen: 'Full screen',\n aiHideSteps: 'Hide steps',\n aiLike: 'Good answer',\n aiNewThread: 'New conversation',\n aiNoThreads: 'No conversations yet',\n aiReference: 'Reference',\n aiRetry: 'Ask again',\n aiSearchThreads: 'Search conversations',\n aiShowSteps: 'Show steps',\n aiThreads: 'Conversations',\n aiTitle: 'Assistant',\n aiYou: 'You',\n asideCopyErrorInfo: 'Copy error info',\n asideRequestError: 'Request Error',\n bottomSheetClose: 'Close',\n chatAttachAria: 'Attach a file',\n chatAttachTooltip: 'Attach a file',\n chatAttachmentFallback: 'Attachment',\n chatCollapse: 'Collapse chat',\n chatComposerAria: 'Message input',\n chatComposerHint: 'Enter to send, Shift + Enter for a new line',\n chatDeleteAria: 'Delete message',\n chatDeleteTooltip: 'Delete',\n chatDropOverlay: 'Drop the files to attach them to your message',\n chatEmptyHint: 'Chat is not available yet.',\n chatEmptyThread: 'No messages yet.',\n chatExpand: 'Expand chat to full screen',\n chatMessageDeleted: 'Message deleted',\n chatPlaceholder: 'Type a message',\n chatRefreshAria: 'Refresh messages',\n chatRefreshTooltip: 'Refresh messages',\n chatRetryAria: 'Send again',\n chatRetryTooltip: 'Retry',\n chatSendAria: 'Send message',\n chatSendLabel: 'Send',\n chatStatusFailed: 'Not sent',\n chatStatusRead: 'Read',\n chatStatusSending: 'Sending',\n chatStatusSent: 'Delivered',\n chatStopAria: 'Stop the answer',\n chatStopLabel: 'Stop',\n chatTitle: 'Chat',\n counterDecrease: 'Decrease',\n counterIncrease: 'Increase',\n dataListClearFilters: 'Clear filters',\n dataListHorizontalScrollbar: 'Horizontal scrollbar shown',\n dataListPlaceholder: 'No Data Found',\n dataListRefresh: 'Refresh',\n dataListSearchPlaceholder: 'Search...',\n dataListSelectAll: 'Select all',\n dataListSelected: 'Selected: {{count}}',\n dataListSettingsHint: 'Change columns visibility and order, show(hide) scrollbar',\n dataListSettingsTitle: 'Edit table configuration',\n dataListTableConfig: 'Table configuration',\n dataListVerticalScrollbar: 'Vertical scrollbar shown',\n dynamicInputPlaceholder: 'Type and press Enter',\n dynamicSelectorAdd: 'Add',\n dynamicSelectorApply: 'Apply',\n dynamicSelectorClear: 'Clear list',\n dynamicSelectorDrag: 'Hold to drag',\n dynamicSelectorEdit: 'Edit',\n dynamicSelectorMulti: 'Multi selection',\n dynamicSelectorMultiHint: 'Hold Ctrl or Cmd to tick several rows',\n dynamicSelectorNoResults: 'No results',\n dynamicSelectorNothingToChoose: 'There are no available items to choose',\n dynamicSelectorRemove: 'Remove the item',\n dynamicSelectorReset: 'Reset to initial list',\n dynamicSelectorSearch: 'Search...',\n dataTableActions: 'Actions',\n dataTableCopied: 'Copied!',\n dataTableCopy: 'Copy',\n dataTableFilterClear: 'Clear filter',\n dataTableFilterOperatorContains: 'Contains',\n dataTableFilterOperatorEquals: 'Equal',\n dataTableFilterOperatorGreaterThan: 'More than',\n dataTableFilterOperatorLessThan: 'Less than',\n dataTableFilterOperatorNotEquals: 'Not equal',\n dataTableFilterSelectPlaceholder: 'Choose filter',\n dataTableFilterValuePlaceholder: 'Type in filter value',\n dataTableSelectPage: 'Select the rows of this page',\n dataTableSelectRow: 'Select row',\n fieldErrorEmail: 'Invalid email',\n fieldErrorMax: 'Value is too large',\n fieldErrorMaxLength: 'Value is too long',\n fieldErrorMin: 'Value is too small',\n fieldErrorMinLength: 'Value is too short',\n fieldErrorPattern: 'Invalid format',\n fieldErrorRequired: 'Required field',\n photoViewerClose: 'Close viewer',\n photoViewerNext: 'Next photo',\n photoViewerPrev: 'Previous photo',\n sideMenuBack: 'Main menu',\n sideMenuFavoriteAdd: 'Add to favourites',\n sideMenuFavoriteDrag: 'Hold button to drag',\n sideMenuFavoriteRemove: 'Remove from favourites',\n sideMenuFavorites: 'Favourites',\n sideMenuFavoritesCollapse: 'Collapse favourites',\n sideMenuFavoritesExpand: 'Expand favourites',\n sideMenuNothingFound: 'Nothing found',\n sideMenuPin: 'Pin submenu',\n sideMenuResize: 'Resize submenu',\n sideMenuSearch: 'Search',\n sideMenuUnpin: 'Unpin submenu',\n themeToggleLabel: 'Switch theme',\n uiActions: 'Actions',\n uiApply: 'Apply',\n uiAuditEmptyHint: 'Deal events will appear here — stage changes and other actions.',\n uiBack: 'Back',\n uiBackToList: 'Back to list',\n uiBaseline: 'was {{value}}',\n uiCancel: 'Cancel',\n uiChangeAgent: 'Change agent',\n uiChooseFile: 'Choose file',\n uiChooseMonth: 'Choose month and year',\n uiClear: 'Clear',\n uiClearFilters: 'Clear filters',\n uiClose: 'Close',\n uiCollapse: 'Collapse',\n uiColumnLocked: 'Column is pinned',\n uiColumnSettings: 'Column settings',\n uiColumnSettingsTitle: 'Configure columns',\n uiCommentOptional: 'Comment (optional)',\n uiConfirm: 'Confirm',\n uiConfirmAction: 'Confirm action',\n uiContinue: 'Continue',\n uiCopied: 'Copied',\n uiCopy: 'Copy',\n uiCurrentStage: 'Current stage',\n uiDate: 'Date',\n uiDaysFew: COUNT_DAYS,\n uiDaysMany: COUNT_DAYS,\n uiDaysOne: '{{count}} day',\n uiDaysOther: COUNT_DAYS,\n uiDetails: 'Details',\n uiDiscardChanges: 'Discard Changes',\n uiDone: 'Done',\n uiDownload: 'Download',\n uiDownloadFile: 'Download: {{name}}',\n uiDragColumn: 'Drag column',\n uiExpand: 'Expand',\n uiFileDropOverlay: 'Drop the files to attach them',\n uiFilterChoose: 'Choose',\n uiFilterContains: 'Contains',\n uiFilterEndsWith: 'Ends with',\n uiFilterEquals: 'Equals',\n uiFilterGreaterThan: 'Greater than',\n uiFilterLessThan: 'Less than',\n uiFilterNotEquals: 'Does not equal',\n uiFilterStartsWith: 'Starts with',\n uiFilterValue: 'Filter value',\n uiFilters: 'Filters',\n uiForward: 'Forward',\n uiHide: 'Hide',\n uiHideColumn: 'Hide column',\n uiHidePassword: 'Hide password',\n uiHint: 'Hint',\n uiHistory: 'History',\n uiHours: 'Hours',\n uiImageCropperFrame: 'Crop frame',\n uiImageCropperHandleE: 'Right edge of the crop frame',\n uiImageCropperHandleN: 'Top edge of the crop frame',\n uiImageCropperHandleNe: 'Top right corner of the crop frame',\n uiImageCropperHandleNw: 'Top left corner of the crop frame',\n uiImageCropperHandleS: 'Bottom edge of the crop frame',\n uiImageCropperHandleSe: 'Bottom right corner of the crop frame',\n uiImageCropperHandleSw: 'Bottom left corner of the crop frame',\n uiImageCropperHandleW: 'Left edge of the crop frame',\n uiImageCropperPlaceholder: 'Choose an image to crop',\n uiImageCropperRefusal: 'The image could not be read',\n uiImageUploadApply: 'Apply',\n uiImageUploadCancel: 'Cancel',\n uiImageUploadChange: 'Click to change the image',\n uiImageUploadChoose: 'Choose file',\n uiImageUploadDrop: 'Drag and drop an image here or',\n uiImageUploadImage: 'Current image',\n uiInviteUser: 'Invite user',\n uiItemsPerPage: 'Items per page',\n uiLast30Days: 'Last 30 days',\n uiLast7Days: 'Last 7 days',\n uiLastMonth: 'Last month',\n uiLiveOnSite: 'On the site now',\n uiLoadMore: 'Load more',\n uiMainNav: 'Main navigation',\n uiMinutes: 'Minutes',\n uiMore: 'More',\n uiMoreActions: 'More actions',\n uiMoveStage: 'Move',\n uiMoveStageAria: 'Move stage',\n uiNavMenu: 'Navigation menu',\n uiNavUnread: 'Unread',\n uiNextMonth: 'Next month',\n uiNextPage: 'Next page',\n uiNextYear: 'Next year',\n uiNightGridAria: 'Occupancy grid',\n uiNoData: 'No data yet',\n uiNoOptions: 'No options',\n uiNoRows: 'No data',\n uiNothingFound: 'Nothing found',\n uiNotifications: 'Notifications',\n uiNow: 'Now',\n uiOpenCalendar: 'Open the calendar',\n uiPageOf: 'Page {{page}} of {{last}}',\n uiPagination: 'Pagination',\n uiPerPage: 'Items per page:',\n uiPeriod: 'Period',\n uiPickAgent: 'Select an agent',\n uiPickAnotherAgent: 'Select a different agent',\n uiPickEndDate: 'Pick the end date',\n uiPickStartDate: 'Pick the start date',\n uiPickTransition: 'Select a transition',\n uiPrevMonth: 'Previous month',\n uiPrevPage: 'Previous page',\n uiPrevYear: 'Previous year',\n uiProfile: 'Profile',\n uiQuickRanges: 'Quick ranges',\n uiRangeEmpty: '0 of 0',\n uiRangeOf: '{{from}}–{{to}} of {{total}}',\n uiRemove: 'Delete',\n uiRename: 'Rename',\n uiReplace: 'Replace',\n uiReplaceAgentTitle: 'Replace agent',\n uiReset: 'Reset',\n uiResetDefaults: 'Reset to defaults',\n uiResizeDetails: 'Resize details pane',\n uiResizeList: 'Resize list pane',\n uiRefresh: 'Refresh',\n uiRevert: 'Revert',\n uiSave: 'Save',\n uiSaveNewAgent: 'Save the new agent',\n uiScrollDown: 'Scroll down',\n uiSearch: 'Search',\n uiSectionInProgress: '{{label}} — section under development',\n uiSelectAll: 'Select all',\n uiSelectValues: 'Select values',\n uiSelectedCount: 'Selected: {{count}}',\n uiSelectedOf: 'Selected: {{count}} of {{total}}',\n uiShapeDay: 'dd',\n uiShapeHour: 'hh',\n uiShapeMinute: 'mm',\n uiShapeMonth: 'mm',\n uiShapeYear: 'yyyy',\n uiShow: 'Show',\n uiShowColumn: 'Show column',\n uiShowDetails: 'Show details',\n uiShowPassword: 'Show password',\n uiStageNoteHint: 'Internal note — the client will not see it.',\n uiStageTransition: 'Stage transition',\n uiSubscribeNotifications: 'Subscribe to notifications',\n uiTabInvalid: 'This tab contains errors',\n uiTargetStage: 'Target stage',\n uiTargetStageRequired: 'Select a target stage.',\n uiThisMonth: 'This month',\n uiThreadListEmptyHint: 'New threads will appear here.',\n uiTime: 'Time',\n uiToList: 'To list',\n uiToday: 'Today',\n uiUnsavedDiscard: 'Close without saving',\n uiUnsavedMessage: 'The panel has edits that have not been saved yet. Choose what to do with them.',\n uiUnsavedSave: 'Save and close',\n uiUnsavedStay: 'Stay',\n uiUnsavedTitle: 'Unsaved changes',\n uiWelcomeAria: 'Welcome message for a new user',\n uiYearOverYear: 'YoY',\n uiYesterday: 'Yesterday',\n} as const;\n","import { computed, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider, Signal, signal } from '@angular/core';\n\nimport { RT_KIT_LABELS_EN } from './rt-kit-labels.en';\nimport { TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator } from './rt-kit-labels.model';\n\n/** Места вида `{{name}}` — их заполняет `interpolate`. */\nconst PLACEHOLDER: RegExp = /\\{\\{\\s*(\\w+)\\s*\\}\\}/g;\n\n/**\n * Подставляет параметры в подпись.\n *\n * Нужна английскому умолчанию: приложение свои подстановки делает само —\n * функция-переводчик обязана вернуть готовую строку. Место, для которого\n * параметра не дали, остаётся как есть: пустота на его месте прочиталась бы как\n * законченная фраза, а `{{name}}` виден и чинится.\n */\nfunction interpolate(text: string, params: TRtKitLabelParams | undefined): string {\n if (params === undefined) {\n return text;\n }\n\n return text.replace(PLACEHOLDER, (match: string, name: string): string => (Object.hasOwn(params, name) ? String(params[name]) : match));\n}\n\n/** Английское умолчание: кит без единой настройки рисует текст, а не пустоты. */\nconst defaultTranslator: TRtKitTranslator = (key: TRtKitLabelKey, params?: TRtKitLabelParams): string =>\n interpolate(RT_KIT_LABELS_EN[key], params);\n\n/**\n * Функция, которой кит получает подписи. Её отдаёт приложение —\n * `provideRtKitLabels()`.\n *\n * Токен объявлен **сигналом**, а не просто функцией: приложение, меняющее язык\n * на ходу, кладёт в него новую функцию, и всё, что от неё считано,\n * пересчитывается само.\n */\nexport const RT_KIT_TRANSLATOR: InjectionToken<Signal<TRtKitTranslator>> = new InjectionToken<Signal<TRtKitTranslator>>(\n 'RT_KIT_TRANSLATOR',\n {\n providedIn: 'root',\n factory: (): Signal<TRtKitTranslator> => signal<TRtKitTranslator>(defaultTranslator).asReadonly(),\n }\n);\n\n/**\n * Активная локаль. Ею кит форматирует даты — больше ни для чего она ему не\n * нужна.\n *\n * Данные локали для `DatePipe` регистрирует приложение: без них пайп падает\n * `Missing locale data`, и кит за это не отвечает.\n */\nexport const RT_KIT_LOCALE: InjectionToken<Signal<string>> = new InjectionToken<Signal<string>>('RT_KIT_LOCALE', {\n providedIn: 'root',\n factory: (): Signal<string> => signal<string>('en').asReadonly(),\n});\n\n/**\n * Все подписи кита разом, ключ → готовая строка.\n *\n * Этим пользуются компоненты: `t().uiClose` вместо ключа по одному. Карта\n * строится один раз на приложение (`providedIn: 'root'`) и пересчитывается,\n * только когда приложение сменило функцию-переводчик.\n *\n * Подпись, которой переводчик не дал (вернул пустое или упал), берётся\n * английской: пустая `aria`-подпись означает кнопку без имени для скринридера.\n */\nexport const RT_KIT_LABELS: InjectionToken<Signal<TRtKitLabelMap>> = new InjectionToken<Signal<TRtKitLabelMap>>('RT_KIT_LABELS', {\n providedIn: 'root',\n factory: (): Signal<TRtKitLabelMap> => {\n const translator: Signal<TRtKitTranslator> = inject(RT_KIT_TRANSLATOR);\n\n return computed((): TRtKitLabelMap => {\n const translate: TRtKitTranslator = translator();\n const map: Record<string, string> = {};\n for (const key of Object.keys(RT_KIT_LABELS_EN)) {\n map[key] = translate(key as TRtKitLabelKey) || RT_KIT_LABELS_EN[key as TRtKitLabelKey];\n }\n\n return map as TRtKitLabelMap;\n });\n },\n});\n\n/**\n * Одна подпись, а не вся карта.\n *\n * Карте не годятся две вещи: подпись с подстановками (параметры приходят из\n * состояния компонента) и подпись, ключ которой выбирается на ходу — кнопка\n * «свернуть ↔ развернуть», текст ошибки поля по сработавшему валидатору. Обе\n * берутся отсюда. Зовётся в поле класса, в инъекционном контексте.\n *\n * ```typescript\n * readonly #range: Signal<string> = rtKitLabel('uiRangeOf', this.#rangeParams);\n * readonly #expand: Signal<string> = rtKitLabel(computed(() => (this.expanded() ? 'chatCollapse' : 'chatExpand')));\n * ```\n *\n * @param key Ключ подписи — значением или сигналом, если он меняется. Пустой\n * ключ даёт пустую строку: у поля без сработавшего валидатора подписи нет, и\n * умолчание тут показало бы ошибку там, где её не случилось.\n * @param params Подстановки — значением или сигналом, если они меняются.\n */\nexport function rtKitLabel(\n key: TRtKitLabelKey | '' | Signal<TRtKitLabelKey | ''>,\n params?: TRtKitLabelParams | Signal<TRtKitLabelParams>\n): Signal<string> {\n const translator: Signal<TRtKitTranslator> = inject(RT_KIT_TRANSLATOR);\n\n return computed((): string => {\n const resolvedKey: TRtKitLabelKey | '' = typeof key === 'function' ? key() : key;\n if (resolvedKey === '') {\n return '';\n }\n const resolved: TRtKitLabelParams | undefined = typeof params === 'function' ? params() : params;\n\n return translator()(resolvedKey, resolved) || defaultTranslator(resolvedKey, resolved);\n });\n}\n\n/**\n * Отдаёт киту подписи приложения.\n *\n * Без него кит работает на английском умолчании — оно вшито и покрывает все\n * ключи, поэтому пустой кнопки на экране не бывает никогда.\n *\n * ```typescript\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideRtKitLabels({\n * translator: computed(() => (key, params) => transloco.translate(`rtKit.${key}`, params)),\n * locale: toSignal(transloco.langChanges$, { initialValue: transloco.getActiveLang() }),\n * }),\n * ],\n * };\n * ```\n *\n * Способ доставки — дело приложения: Transloco, `$localize`, собственный\n * словарь. Кит знает только ключи и то, что на них отвечают строкой.\n *\n * @param source Функция-переводчик и активная локаль. Локаль необязательна —\n * без неё кит форматирует даты по-английски.\n */\nexport function provideRtKitLabels(source: {\n readonly translator: Signal<TRtKitTranslator>;\n readonly locale?: Signal<string>;\n}): EnvironmentProviders {\n const providers: Provider[] = [{ provide: RT_KIT_TRANSLATOR, useValue: source.translator }];\n if (source.locale !== undefined) {\n providers.push({ provide: RT_KIT_LOCALE, useValue: source.locale });\n }\n\n return makeEnvironmentProviders(providers);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { TRtKitLabelKey, TRtKitLabelParams, TRtKitTranslator } from './rt-kit-labels.model';\n\n/**\n * Подпись кита по ключу — для значений, приходящих из контекста шаблона.\n *\n * Шаблон не зовёт методов: имя раздела приходит элементом цикла, и посчитать подпись заранее\n * нечем. Пайп чистый, поэтому функция-переводчик передаётся ему вторым доводом — сменившись,\n * она пересчитывает подпись сама.\n */\n@Pipe({\n name: 'rtKitLabel',\n pure: true,\n})\nexport class RtKitLabelPipe implements PipeTransform {\n public transform(key: TRtKitLabelKey, translator: TRtKitTranslator, params?: TRtKitLabelParams): string {\n return translator(key, params);\n }\n}\n","import { BreakpointObserver, BreakpointState, Breakpoints } from '@angular/cdk/layout';\nimport { Injectable, Signal, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { Observable, map } from 'rxjs';\n\n/** Порог узкого вьюпорта — тот же, что у `$breakpoint-lg` в стилях кита. */\nconst NARROW_VIEWPORT_QUERY: string = '(max-width: 1080px)';\n\n/**\n * Обёртка над CDK `BreakpointObserver` — публикует reactive signals для\n * mobile/tablet/desktop матчей. `toSignal()` обёртывает CDK Observable в Signal\n * с `initialValue` для CSR-safe рендера.\n */\n@Injectable({ providedIn: 'root' })\nexport class BreakpointsService {\n readonly #observer: BreakpointObserver = inject(BreakpointObserver);\n\n public readonly mobile: Signal<boolean> = toSignal(this.#match([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]), {\n initialValue: false,\n });\n\n public readonly tablet: Signal<boolean> = toSignal(this.#match([Breakpoints.TabletPortrait, Breakpoints.TabletLandscape]), {\n initialValue: false,\n });\n\n public readonly desktop: Signal<boolean> = toSignal(this.#match([Breakpoints.WebPortrait, Breakpoints.WebLandscape]), {\n initialValue: true,\n });\n\n /**\n * Узкий вьюпорт (≤1080px, планшет + мобила) — единый порог для компонентов,\n * которые на узком экране подменяют развёрнутый контрол на компактный\n * (напр. `rt-filter-control`: сегменты → `rt-select`). Совпадает с\n * брейкпоинтом 1080px из SCSS-конвенции кита. `initialValue: false` — на\n * SSR/CSR до первого matchMedia рендерим desktop-вариант.\n */\n public readonly narrow: Signal<boolean> = toSignal(this.#match([NARROW_VIEWPORT_QUERY]), {\n initialValue: false,\n });\n\n #match(queries: string[]): Observable<boolean> {\n return this.#observer.observe(queries).pipe(map((state: BreakpointState): boolean => state.matches));\n }\n}\n","import { Observable, Subject, filter } from 'rxjs';\n\n/**\n * Базовое событие шины: дискриминируется строковым `type`. Конкретные шины\n * сужают `T` до своего union'а типов событий, а полезную нагрузку добавляют\n * наследники интерфейса.\n */\nexport interface IMessageBusEvent<T = string> {\n readonly type: T;\n}\n\n/**\n * Лёгкая типизированная pub/sub-шина поверх RxJS `Subject`. Не зависит от\n * Angular DI и UI: эмиттер (например, стор) и потребитель (например, layout-\n * контейнер) развязаны — отправитель не знает, кто и как отрисует событие.\n *\n * - `emit` — опубликовать событие;\n * - `onEmit` — поток всех событий;\n * - `ofType` — поток событий конкретного типа (для точечной подписки).\n */\nexport class MessageBus<E extends IMessageBusEvent> {\n readonly #eventSource: Subject<E> = new Subject<E>();\n\n public emit(event: E): void {\n this.#eventSource.next(event);\n }\n\n public onEmit(): Observable<E> {\n return this.#eventSource.asObservable();\n }\n\n public ofType<T extends E['type']>(type: T): Observable<Extract<E, { type: T }>> {\n return this.#eventSource.asObservable().pipe(filter((event: E): event is Extract<E, { type: T }> => event.type === type));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { MessageBus } from './message-bus';\nimport { INotification } from './notification.model';\n\n/**\n * Шина уведомлений приложения. Эмиттеры (сторы) публикуют сюда событие с\n * готовым текстом и severity и больше ничего не знают об отрисовке. Подписчик\n * (`rt-toaster`) слушает `onEmit()` и показывает toast'ы.\n *\n * Convenience-методы `success/info/warning/error` собирают событие: первым\n * аргументом — текст для пользователя, вторым (необязательно) — доменный\n * action-тип для точечной фильтрации через `ofType`. Если тип не передан,\n * подставляется значение severity.\n */\n@Injectable({ providedIn: 'root' })\nexport class NotificationBus {\n readonly #bus: MessageBus<INotification.Event> = new MessageBus<INotification.Event>();\n\n public emit(event: INotification.Event): void {\n this.#bus.emit(event);\n }\n\n public onEmit(): Observable<INotification.Event> {\n return this.#bus.onEmit();\n }\n\n public ofType(type: string): Observable<INotification.Event> {\n return this.#bus.ofType(type);\n }\n\n public success(message: string, type: string = 'success', options: INotification.Options = {}): void {\n this.emit({ type, payload: { message, severity: 'success', ...options } });\n }\n\n public info(message: string, type: string = 'info', options: INotification.Options = {}): void {\n this.emit({ type, payload: { message, severity: 'info', ...options } });\n }\n\n public warning(message: string, type: string = 'warning', options: INotification.Options = {}): void {\n this.emit({ type, payload: { message, severity: 'warning', ...options } });\n }\n\n public error(message: string, type: string = 'danger', options: INotification.Options = {}): void {\n this.emit({ type, payload: { message, severity: 'danger', ...options } });\n }\n}\n","import { Directive, InputSignal, input } from '@angular/core';\n\nimport { ITheme } from './theme.model';\n\n/**\n * Местный кусок темы: узел рисует своё поддерево в своей теме, а страница\n * вокруг остаётся как была.\n *\n * Работает в обе стороны — тёмная карточка внутри светлой страницы и светлая\n * внутри тёмной, — и переключает весь набор свойств, а не часть: фон, текст,\n * рамки, тени. Ближний признак выигрывает у дальнего, повторённый внутри\n * такого же ничего не меняет, а снятый возвращает поддерево к теме страницы.\n *\n * Выбора человека и хранилища не трогает вовсе: это слово разметки об одном\n * месте, а не переключение темы.\n *\n * ```html\n * <section [rtTheme]=\"'dark'\">…</section>\n * ```\n *\n * Пустое значение темой не считается и признака не ставит.\n */\n@Directive({\n selector: '[rtTheme]',\n host: {\n '[attr.data-theme]': 'rtTheme() || null',\n },\n})\nexport class RtThemeScopeDirective {\n public readonly rtTheme: InputSignal<ITheme.Mode | ''> = input<ITheme.Mode | ''>('');\n}\n","/**\n * Ключи браузерного хранилища, которые кит занимает под себя. Единый реестр\n * вместо констант, разбросанных по компонентам: так видно весь занятый\n * неймспейс и не возникает двух ключей на одно и то же. Значения читает и пишет\n * только `StorageService` из `@rt-tools/core`.\n *\n * Неймспейс `rt.` отделяет их от ключей приложения-потребителя.\n */\nexport enum ERtStorageKeys {\n /** Выбранная тема оформления: переживает перезагрузку и смену пользователя */\n Theme = 'rt.theme',\n\n /** Префикс, а не полный ключ: итоговый вид — `rt.table.columns.<tableId>`. */\n TableColumnsPrefix = 'rt.table.columns.',\n\n /** Настройки боковых меню: один объект, в нём каждое меню под своим номером. */\n SideMenu = 'rt.side-menu',\n}\n","import { DOCUMENT } from '@angular/common';\nimport { computed, DestroyRef, effect, Injectable, Injector, Signal, WritableSignal, inject, signal } from '@angular/core';\n\nimport { PlatformService, StorageService, WINDOW } from '@rt-tools/core';\n\nimport { IRtKitConfig } from '../config/rt-kit-config.model';\nimport { RT_KIT_CONFIG } from '../config/rt-kit-config.providers';\nimport { ERtStorageKeys } from './storage-keys.enum';\nimport { ITheme } from './theme.model';\n\nconst DEFAULT_CHOICE: ITheme.Choice = 'light';\n\n/** Запрос, которым браузер отвечает о предпочтении тёмного вида. */\nconst DARK_QUERY: string = '(prefers-color-scheme: dark)';\n\n/**\n * Глобальный сервис темы. Применяет `data-theme` к `<html>` через DOM-эффект,\n * персистит выбор под единственным device-level ключом. Тема не привязана к\n * пользователю: на одном устройстве последняя выставленная тема переживает\n * вход, выход и перезагрузку.\n *\n * Хранится **выбор**, а не вид, в который он разрешился: «за машиной»,\n * записанное тёмным видом, перестало бы идти за машиной с первой же\n * перезагрузки, и на экране ничто бы об этом не сказало.\n */\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n readonly #storage: StorageService = inject(StorageService);\n readonly #document: Document = inject(DOCUMENT);\n readonly #platform: PlatformService = inject(PlatformService);\n /**\n * Окно берётся не полем, а в `#watchMachine`, под проверкой среды: фабрика `WINDOW` бросает\n * там, где у документа нет окна, — служба корневая, и упав при создании, она роняла бы\n * серверную прорисовку каждой страницы с компонентом кита.\n */\n readonly #injector: Injector = inject(Injector);\n readonly #config: IRtKitConfig.Config = inject(RT_KIT_CONFIG);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n\n readonly #choice: WritableSignal<ITheme.Choice> = signal<ITheme.Choice>(this.#readOrDefault());\n\n /** Что ответила машина про тёмный вид. Меняется на живой странице — потому сигнал. */\n readonly #machinePrefersDark: WritableSignal<boolean> = signal<boolean>(false);\n\n /** Что выбрано: два вида и «за машиной». Хранится именно это. */\n public readonly choice: Signal<ITheme.Choice> = this.#choice.asReadonly();\n\n /** Вид, в котором страница нарисована. «За машиной» разрешается здесь. */\n public readonly current: Signal<ITheme.Mode> = computed((): ITheme.Mode => {\n const choice: ITheme.Choice = this.#choice();\n\n if (choice !== 'auto') {\n return choice;\n }\n\n return this.#machinePrefersDark() ? 'dark' : 'light';\n });\n\n public readonly isDark: Signal<boolean> = computed((): boolean => this.current() === 'dark');\n\n constructor() {\n this.#watchMachine();\n\n effect((): void => {\n const mode: ITheme.Mode = this.current();\n const choice: ITheme.Choice = this.#choice();\n // Prerender/SSR-окружение не даёт documentElement.dataset — тему\n // применяем только в браузере, серверный HTML остаётся в light.\n if (!this.#platform.isPlatformBrowser) {\n return;\n }\n this.#document.documentElement.dataset['theme'] = mode;\n this.#storage.setItem(ERtStorageKeys.Theme, choice);\n });\n }\n\n /**\n * Переключает светлое и тёмное.\n *\n * Из «за машиной» уходит в противоположность тому, что сейчас на экране:\n * человек жмёт переключатель, глядя на нарисованное, и ждёт обратного ему.\n */\n public toggle(): void {\n this.#choice.set(this.current() === 'light' ? 'dark' : 'light');\n }\n\n public setTheme(theme: ITheme.Choice): void {\n this.#choice.set(theme);\n }\n\n /**\n * Подписка на ответ браузера о тёмном виде — одна, на весь век службы.\n *\n * Без неё «за машиной» превратилось бы в четвёртый способ записать вид той\n * минуты, когда страницу открыли: настройка машины меняется на живой\n * странице, и выбор обязан идти за ней без перезагрузки.\n */\n #watchMachine(): void {\n if (!this.#platform.isPlatformBrowser || !this.#document.defaultView) {\n return;\n }\n\n const view: Window & typeof globalThis = this.#injector.get(WINDOW) as Window & typeof globalThis;\n\n /*\n * Спросить машину умеет не всякое окно, назвавшееся браузерным: среда тестов потребителя\n * даёт именно такое. Служба корневая — упав здесь, она роняет каждый тест, поднявший хоть\n * один компонент кита, и чинить это потребителю нечем. Проверка среды тут не поможет: она\n * отвечает про место прорисовки, а вопрос — про умение самого окна.\n */\n if (typeof view.matchMedia !== 'function') {\n return;\n }\n\n const query: MediaQueryList = view.matchMedia(DARK_QUERY);\n this.#machinePrefersDark.set(query.matches);\n\n const listener: (event: MediaQueryListEvent) => void = (event: MediaQueryListEvent): void => {\n this.#machinePrefersDark.set(event.matches);\n };\n\n query.addEventListener('change', listener);\n this.#destroyRef.onDestroy((): void => query.removeEventListener('change', listener));\n }\n\n /**\n * Что выбрано на старте: сохранённое, а если его нет или оно киту незнакомо —\n * общее умолчание настроек, за ним умолчание кита.\n *\n * Слово, оставленное прошлым выпуском кита или рукой в консоли, выбором не\n * считается: отвечают настройки.\n */\n #readOrDefault(): ITheme.Choice {\n const fallback: ITheme.Choice = this.#config.global?.theme ?? DEFAULT_CHOICE;\n const stored: string | null = this.#storage.getItem<string>(ERtStorageKeys.Theme) ?? null;\n\n return stored === 'light' || stored === 'dark' || stored === 'auto' ? stored : fallback;\n }\n}\n","import { formatDate } from '@angular/common';\nimport { inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Штамп последнего взаимодействия для превью списков чатов: событие за сегодня\n * показывается временем («14:05»), за вчера и ранее — датой («18.07.2026»), чтобы\n * старые чаты не выглядели сегодняшними (G121).\n */\n@Pipe({ name: 'rtDayStamp' })\nexport class RtDayStampPipe implements PipeTransform {\n readonly #locale: string = inject(LOCALE_ID);\n\n public transform(value: Date | string | null): string {\n if (value == null || value === '') {\n return '—';\n }\n const date: Date = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(date.getTime())) {\n return '—';\n }\n const now: Date = new Date();\n const isToday: boolean =\n date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate();\n return formatDate(date, isToday ? 'HH:mm' : 'dd.MM.yyyy', this.#locale);\n }\n}\n","import {\n booleanAttribute,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnDestroy,\n output,\n OutputEmitterRef,\n} from '@angular/core';\n\nimport { WINDOW } from '@rt-tools/core';\n\n/**\n * Триггер бесконечной прокрутки. Вешается на элемент-«маяк» в конце списка;\n * когда маяк приближается к области видимости — эмитит `(loadMore)`, чтобы\n * потребитель догрузил следующую страницу и ДОБАВИЛ её к уже показанным\n * сущностям (а не перезаписал).\n *\n * Использует `IntersectionObserver`, поэтому не зависит от того, какой предок\n * владеет вертикальным скроллом: контент скроллится в `.rt-container__content`\n * shell'а, а не в самом feature-компоненте, и браузер сам клипует маяк\n * скроллящими предками при расчёте пересечения.\n *\n * `rootMargin` расширяет нижнюю кромку корня, чтобы триггерить догрузку\n * ЗАРАНЕЕ (по умолчанию за половину вьюпорта до низа) — страница успевает\n * подгрузиться прежде, чем пользователь упрётся в конец списка. Пока идёт\n * запрос или страниц больше нет, потребитель ставит `[disabled]=\"true\"` —\n * наблюдение приостанавливается.\n */\n@Directive({\n selector: '[rtInfiniteScroll]',\n})\nexport class RtInfiniteScrollDirective implements OnDestroy {\n readonly #host: ElementRef<HTMLElement> = inject(ElementRef);\n // Конструкторы вроде IntersectionObserver объявлены на globalThis, а не на\n // интерфейсе Window — токен отдаёт тот же объект, тип лишь уточняется.\n readonly #window: Window & typeof globalThis = inject(WINDOW) as Window & typeof globalThis;\n\n #observer: IntersectionObserver | null = null;\n\n /** Пауза наблюдения: `true`, пока идёт догрузка или страниц больше нет. */\n public readonly disabled: InputSignalWithTransform<boolean, boolean | string> = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n /**\n * Запас корня снизу — за сколько до низа триггерить догрузку. CSS-формат\n * `rootMargin` (px или %). Default `50%` — половина вьюпорта заранее.\n */\n public readonly rootMargin: InputSignal<string> = input<string>('50%');\n\n public readonly loadMore: OutputEmitterRef<void> = output<void>();\n\n constructor() {\n effect((): void => {\n // Читаем оба сигнала, чтобы effect пересоздавал наблюдатель при их\n // смене. После завершения догрузки (disabled false-edge) нужен\n // свежий observe: IntersectionObserver не шлёт повторный колбэк,\n // если пересечение с прошлого раза не менялось.\n const disabled: boolean = this.disabled();\n const rootMargin: string = this.rootMargin();\n this.#disconnect();\n if (!disabled) {\n this.#observe(rootMargin);\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.#disconnect();\n }\n\n #observe(rootMargin: string): void {\n const view: Window & typeof globalThis = this.#window;\n if (typeof view.IntersectionObserver === 'undefined') {\n return;\n }\n this.#observer = new view.IntersectionObserver(\n (entries: IntersectionObserverEntry[]): void => {\n const reached: boolean = entries.some((entry: IntersectionObserverEntry): boolean => entry.isIntersecting);\n if (reached) {\n this.loadMore.emit();\n }\n },\n { root: null, threshold: 0, rootMargin }\n );\n this.#observer.observe(this.#host.nativeElement);\n }\n\n #disconnect(): void {\n this.#observer?.disconnect();\n this.#observer = null;\n }\n}\n","/* Built by the generator `tools/build-tokens-v2.mjs` from `tokens.source.mjs` — edited there, not here. */\n\n/** The name of a styling property the kit declares itself. */\nexport type TRtDesignTokenName =\n | '--rt-amber-400'\n | '--rt-border-width-medium'\n | '--rt-border-width-thick'\n | '--rt-border-width-thin'\n | '--rt-bp-lg'\n | '--rt-bp-md'\n | '--rt-bp-sm'\n | '--rt-bp-xl'\n | '--rt-brand-100'\n | '--rt-brand-200'\n | '--rt-brand-300'\n | '--rt-brand-400'\n | '--rt-brand-50'\n | '--rt-brand-500'\n | '--rt-brand-600'\n | '--rt-brand-700'\n | '--rt-brand-800'\n | '--rt-brand-900'\n | '--rt-brand-950'\n | '--rt-btn-tint-active'\n | '--rt-btn-tint-hover'\n | '--rt-charcoal-700'\n | '--rt-charcoal-800'\n | '--rt-charcoal-900'\n | '--rt-charcoal-950'\n | '--rt-charcoal-border'\n | '--rt-charcoal-border-strong'\n | '--rt-chat-bubble-date'\n | '--rt-chat-bubble-in-author'\n | '--rt-chat-bubble-in-bg'\n | '--rt-chat-bubble-own-author'\n | '--rt-chat-bubble-own-bg'\n | '--rt-chat-status-read'\n | '--rt-color-action-danger'\n | '--rt-color-action-danger-active'\n | '--rt-color-action-danger-hover'\n | '--rt-color-action-danger-on-surface'\n | '--rt-color-action-disabled'\n | '--rt-color-action-info'\n | '--rt-color-action-info-active'\n | '--rt-color-action-info-hover'\n | '--rt-color-action-info-on-surface'\n | '--rt-color-action-on-danger'\n | '--rt-color-action-on-disabled'\n | '--rt-color-action-on-info'\n | '--rt-color-action-on-primary'\n | '--rt-color-action-on-secondary'\n | '--rt-color-action-on-success'\n | '--rt-color-action-on-warning'\n | '--rt-color-action-primary'\n | '--rt-color-action-primary-active'\n | '--rt-color-action-primary-hover'\n | '--rt-color-action-primary-on-surface'\n | '--rt-color-action-primary-soft'\n | '--rt-color-action-primary-subtle'\n | '--rt-color-action-secondary'\n | '--rt-color-action-secondary-active'\n | '--rt-color-action-secondary-hover'\n | '--rt-color-action-secondary-on-surface'\n | '--rt-color-action-success'\n | '--rt-color-action-success-active'\n | '--rt-color-action-success-hover'\n | '--rt-color-action-success-on-surface'\n | '--rt-color-action-warning'\n | '--rt-color-action-warning-active'\n | '--rt-color-action-warning-hover'\n | '--rt-color-action-warning-on-surface'\n | '--rt-color-bg-hover'\n | '--rt-color-bg-inverse'\n | '--rt-color-bg-nav'\n | '--rt-color-bg-overlay'\n | '--rt-color-bg-page'\n | '--rt-color-bg-page-auth'\n | '--rt-color-bg-subtle'\n | '--rt-color-bg-surface'\n | '--rt-color-bg-surface-auth-card'\n | '--rt-color-bg-surface-subtle'\n | '--rt-color-bg-surface-subtle-2'\n | '--rt-color-border-default'\n | '--rt-color-border-focus'\n | '--rt-color-border-strong'\n | '--rt-color-border-subtle'\n | '--rt-color-field-fill-underline'\n | '--rt-color-skeleton-base'\n | '--rt-color-skeleton-wave'\n | '--rt-color-state-danger'\n | '--rt-color-state-danger-bg'\n | '--rt-color-state-error-text'\n | '--rt-color-state-info'\n | '--rt-color-state-info-bg'\n | '--rt-color-state-success'\n | '--rt-color-state-success-bg'\n | '--rt-color-state-success-text'\n | '--rt-color-state-warning'\n | '--rt-color-state-warning-bg'\n | '--rt-color-state-warning-text'\n | '--rt-color-stepper-current'\n | '--rt-color-stepper-current-subtle'\n | '--rt-color-stepper-progress'\n | '--rt-color-stepper-track'\n | '--rt-color-table-head-bg'\n | '--rt-color-text-disabled'\n | '--rt-color-text-inverse'\n | '--rt-color-text-link'\n | '--rt-color-text-link-hover'\n | '--rt-color-text-muted'\n | '--rt-color-text-primary'\n | '--rt-control-height-2xl'\n | '--rt-control-height-lg'\n | '--rt-control-height-md'\n | '--rt-control-height-sm'\n | '--rt-control-height-xl'\n | '--rt-control-max-width'\n | '--rt-control-panel-max-height'\n | '--rt-control-textarea-min-height-lg'\n | '--rt-control-textarea-min-height-md'\n | '--rt-control-textarea-min-height-sm'\n | '--rt-counter-gap'\n | '--rt-counter-row-color-border'\n | '--rt-counter-row-gap'\n | '--rt-counter-row-hint-color'\n | '--rt-counter-row-hint-font-size'\n | '--rt-counter-row-label-color'\n | '--rt-counter-row-label-font-size'\n | '--rt-counter-row-padding-y'\n | '--rt-counter-value-color'\n | '--rt-counter-value-font-size'\n | '--rt-counter-value-min-width'\n | '--rt-danger-50'\n | '--rt-danger-500'\n | '--rt-danger-600'\n | '--rt-danger-700'\n | '--rt-duration-base'\n | '--rt-duration-fast'\n | '--rt-duration-slow'\n | '--rt-duration-slower'\n | '--rt-field-error-color'\n | '--rt-field-error-font-size'\n | '--rt-field-gap'\n | '--rt-field-hint-color'\n | '--rt-field-hint-font-size'\n | '--rt-field-label-color'\n | '--rt-field-label-font-size'\n | '--rt-field-label-font-weight'\n | '--rt-field-label-help-gap'\n | '--rt-field-required-color'\n | '--rt-field-value-color'\n | '--rt-field-value-empty-color'\n | '--rt-field-value-font-size'\n | '--rt-focus-ring-color'\n | '--rt-focus-ring-color-danger'\n | '--rt-focus-ring-offset'\n | '--rt-focus-ring-width'\n | '--rt-font-family-mono'\n | '--rt-font-family-sans'\n | '--rt-font-weight-bold'\n | '--rt-font-weight-medium'\n | '--rt-font-weight-regular'\n | '--rt-font-weight-semibold'\n | '--rt-gray-350'\n | '--rt-icon-button-color-bg-hover'\n | '--rt-icon-button-disabled-color'\n | '--rt-icon-button-disabled-fill'\n | '--rt-icon-button-disabled-opacity'\n | '--rt-info-50'\n | '--rt-info-500'\n | '--rt-info-600'\n | '--rt-info-700'\n | '--rt-input-border-width'\n | '--rt-input-color-bg'\n | '--rt-input-color-bg-disabled'\n | '--rt-input-color-bg-hover'\n | '--rt-input-color-border'\n | '--rt-input-color-border-error'\n | '--rt-input-color-border-focus'\n | '--rt-input-color-text'\n | '--rt-input-color-text-placeholder'\n | '--rt-input-disabled-opacity'\n | '--rt-input-focus-outline-offset'\n | '--rt-input-focus-shadow'\n | '--rt-input-focus-shadow-error'\n | '--rt-input-font-size'\n | '--rt-input-gap'\n | '--rt-input-height'\n | '--rt-input-height-lg'\n | '--rt-input-height-md'\n | '--rt-input-height-sm'\n | '--rt-input-icon-color'\n | '--rt-input-icon-size'\n | '--rt-input-line-height'\n | '--rt-input-max-width'\n | '--rt-input-padding-x'\n | '--rt-input-padding-y'\n | '--rt-input-panel-max-height'\n | '--rt-input-radius'\n | '--rt-input-transition'\n | '--rt-leading-none'\n | '--rt-leading-normal'\n | '--rt-leading-relaxed'\n | '--rt-leading-snug'\n | '--rt-leading-tight'\n | '--rt-letter-spacing-wide'\n | '--rt-list-action-color'\n | '--rt-list-action-color-bg-hover'\n | '--rt-list-action-color-hover'\n | '--rt-list-action-divider-height'\n | '--rt-list-action-gap'\n | '--rt-list-action-icon-size'\n | '--rt-list-action-radius'\n | '--rt-list-action-shadow'\n | '--rt-list-action-shadow-hover'\n | '--rt-list-content-padding-bottom'\n | '--rt-list-copy-button-bg'\n | '--rt-list-copy-button-bg-hover'\n | '--rt-list-copy-button-color'\n | '--rt-list-copy-button-radius'\n | '--rt-list-copy-button-size'\n | '--rt-list-empty-icon-size'\n | '--rt-list-empty-icon-wrap-bg'\n | '--rt-list-empty-icon-wrap-size'\n | '--rt-list-empty-title-size'\n | '--rt-list-empty-title-weight'\n | '--rt-list-filter-line-height'\n | '--rt-list-placeholder-grow'\n | '--rt-list-placeholder-min-height'\n | '--rt-list-search-color-bg'\n | '--rt-list-search-color-border'\n | '--rt-list-search-color-placeholder'\n | '--rt-list-search-font-size'\n | '--rt-list-search-gap'\n | '--rt-list-search-height'\n | '--rt-list-search-icon-color'\n | '--rt-list-search-icon-size'\n | '--rt-list-search-padding-x'\n | '--rt-list-search-radius'\n | '--rt-list-search-width'\n | '--rt-list-selector-label-color'\n | '--rt-list-settings-icon-color'\n | '--rt-list-settings-item-bg'\n | '--rt-list-settings-item-radius'\n | '--rt-list-table-button-radius'\n | '--rt-list-table-button-size'\n | '--rt-list-table-head-divider-color'\n | '--rt-list-table-icon-color'\n | '--rt-list-table-icon-size'\n | '--rt-list-toolbar-gap'\n | '--rt-list-toolbar-padding-bottom'\n | '--rt-list-toolbar-padding-top'\n | '--rt-mat-blue-100'\n | '--rt-mat-blue-20'\n | '--rt-mat-blue-40'\n | '--rt-mat-blue-60'\n | '--rt-mat-blue-80'\n | '--rt-mat-blue-active'\n | '--rt-mat-blue-hover'\n | '--rt-mat-dark-10'\n | '--rt-mat-dark-20'\n | '--rt-mat-dark-30'\n | '--rt-mat-dark-40'\n | '--rt-mat-green-10'\n | '--rt-mat-green-100'\n | '--rt-mat-green-120'\n | '--rt-mat-green-20'\n | '--rt-mat-green-40'\n | '--rt-mat-green-60'\n | '--rt-mat-green-80'\n | '--rt-mat-green-active'\n | '--rt-mat-green-hover'\n | '--rt-mat-menu-min-width'\n | '--rt-mat-menu-sm-icon-size'\n | '--rt-mat-menu-sm-item-height'\n | '--rt-mat-navy-100'\n | '--rt-mat-neutral-0'\n | '--rt-mat-neutral-10'\n | '--rt-mat-neutral-100'\n | '--rt-mat-neutral-15'\n | '--rt-mat-neutral-20'\n | '--rt-mat-neutral-25'\n | '--rt-mat-neutral-30'\n | '--rt-mat-neutral-35'\n | '--rt-mat-neutral-40'\n | '--rt-mat-neutral-5'\n | '--rt-mat-neutral-60'\n | '--rt-mat-neutral-80'\n | '--rt-mat-neutral-active'\n | '--rt-mat-neutral-hover'\n | '--rt-mat-orange-10'\n | '--rt-mat-orange-100'\n | '--rt-mat-orange-20'\n | '--rt-mat-orange-40'\n | '--rt-mat-orange-5'\n | '--rt-mat-orange-60'\n | '--rt-mat-orange-70'\n | '--rt-mat-orange-80'\n | '--rt-mat-orange-active'\n | '--rt-mat-orange-hover'\n | '--rt-mat-overlay-black-32'\n | '--rt-mat-overlay-black-4'\n | '--rt-mat-overlay-blue-24'\n | '--rt-mat-overlay-blue-8'\n | '--rt-mat-radius-4'\n | '--rt-mat-radius-5'\n | '--rt-mat-red-10'\n | '--rt-mat-red-100'\n | '--rt-mat-red-20'\n | '--rt-mat-red-40'\n | '--rt-mat-red-60'\n | '--rt-mat-red-80'\n | '--rt-mat-red-active'\n | '--rt-mat-red-hover'\n | '--rt-mat-shadow-fab'\n | '--rt-mat-shadow-fab-hover'\n | '--rt-mat-shadow-level-2'\n | '--rt-nav-caret-size'\n | '--rt-nav-color-disabled'\n | '--rt-nav-color-focus'\n | '--rt-nav-header-color-bg'\n | '--rt-nav-header-padding'\n | '--rt-nav-item-color'\n | '--rt-nav-item-color-bg'\n | '--rt-nav-item-color-bg-active'\n | '--rt-nav-item-color-border'\n | '--rt-nav-item-color-caret'\n | '--rt-nav-item-color-hover'\n | '--rt-nav-item-color-pressed'\n | '--rt-nav-item-content-gap'\n | '--rt-nav-item-font-size'\n | '--rt-nav-item-font-weight'\n | '--rt-nav-item-gap'\n | '--rt-nav-item-height'\n | '--rt-nav-item-line-height'\n | '--rt-nav-item-padding'\n | '--rt-nav-marker-color'\n | '--rt-nav-marker-size'\n | '--rt-nav-panel-color-bg'\n | '--rt-nav-panel-color-border'\n | '--rt-nav-panel-column-gap'\n | '--rt-nav-panel-column-width'\n | '--rt-nav-panel-columns'\n | '--rt-nav-panel-group-color'\n | '--rt-nav-panel-group-content-gap'\n | '--rt-nav-panel-group-font-size'\n | '--rt-nav-panel-group-font-weight'\n | '--rt-nav-panel-group-gap'\n | '--rt-nav-panel-item-color'\n | '--rt-nav-panel-item-color-active'\n | '--rt-nav-panel-item-color-bg-active'\n | '--rt-nav-panel-item-color-bg-hover'\n | '--rt-nav-panel-item-content-gap'\n | '--rt-nav-panel-item-font-size'\n | '--rt-nav-panel-item-font-weight'\n | '--rt-nav-panel-item-gap'\n | '--rt-nav-panel-item-height'\n | '--rt-nav-panel-item-padding'\n | '--rt-nav-panel-padding'\n | '--rt-nav-panel-padding-y'\n | '--rt-nav-panel-shadow'\n | '--rt-navy-600'\n | '--rt-navy-900'\n | '--rt-neutral-0'\n | '--rt-neutral-100'\n | '--rt-neutral-200'\n | '--rt-neutral-300'\n | '--rt-neutral-400'\n | '--rt-neutral-50'\n | '--rt-neutral-500'\n | '--rt-neutral-600'\n | '--rt-neutral-700'\n | '--rt-neutral-800'\n | '--rt-neutral-900'\n | '--rt-neutral-950'\n | '--rt-opacity-disabled'\n | '--rt-overlay-amber-16'\n | '--rt-overlay-black-4'\n | '--rt-overlay-black-50'\n | '--rt-overlay-black-8'\n | '--rt-overlay-brand-24'\n | '--rt-overlay-brand-8'\n | '--rt-overlay-danger-16'\n | '--rt-overlay-menu-bg'\n | '--rt-overlay-menu-current-bg'\n | '--rt-overlay-menu-danger-color'\n | '--rt-overlay-menu-danger-label-color'\n | '--rt-overlay-menu-item-icon-size'\n | '--rt-overlay-menu-item-min-height'\n | '--rt-overlay-menu-item-padding-x'\n | '--rt-overlay-menu-item-padding-y'\n | '--rt-overlay-menu-item-weight'\n | '--rt-overlay-menu-min-width'\n | '--rt-overlay-menu-padding-y'\n | '--rt-overlay-menu-radius'\n | '--rt-overlay-menu-shadow'\n | '--rt-overlay-menu-sm-item-icon-size'\n | '--rt-overlay-menu-sm-item-min-height'\n | '--rt-overlay-navy-70'\n | '--rt-overlay-select-check-display'\n | '--rt-overlay-select-option-font-size'\n | '--rt-overlay-select-option-min-height'\n | '--rt-overlay-select-panel-border-width'\n | '--rt-overlay-select-radius'\n | '--rt-overlay-select-selected-bg'\n | '--rt-overlay-select-selected-weight'\n | '--rt-overlay-select-shadow'\n | '--rt-overlay-tooltip-radius'\n | '--rt-overlay-tooltip-shadow'\n | '--rt-overlay-white-25'\n | '--rt-overlay-white-4'\n | '--rt-overlay-white-40'\n | '--rt-overlay-white-50'\n | '--rt-overlay-white-8'\n | '--rt-pagination-arrow-color'\n | '--rt-pagination-arrow-radius'\n | '--rt-pagination-arrow-shadow'\n | '--rt-pagination-arrow-size'\n | '--rt-pagination-box-color-border'\n | '--rt-pagination-box-color-text'\n | '--rt-pagination-box-current-color-bg'\n | '--rt-pagination-box-current-color-border'\n | '--rt-pagination-box-current-color-text'\n | '--rt-pagination-box-current-font-weight'\n | '--rt-pagination-box-radius'\n | '--rt-pagination-box-size'\n | '--rt-pagination-field-color-bg'\n | '--rt-pagination-field-color-border'\n | '--rt-pagination-field-color-text'\n | '--rt-pagination-field-height'\n | '--rt-pagination-field-padding-x'\n | '--rt-pagination-field-radius'\n | '--rt-pagination-gap'\n | '--rt-pagination-justify'\n | '--rt-pagination-nav-gap'\n | '--rt-pagination-padding-x'\n | '--rt-pagination-padding-y'\n | '--rt-pagination-per-page-gap'\n | '--rt-pagination-per-page-label-white-space'\n | '--rt-pagination-range-display'\n | '--rt-profile-avatar-font-size'\n | '--rt-profile-avatar-size'\n | '--rt-profile-item-content-gap'\n | '--rt-profile-item-font-size'\n | '--rt-profile-item-font-weight'\n | '--rt-profile-item-padding-y'\n | '--rt-profile-item-radius'\n | '--rt-profile-menu-min-width'\n | '--rt-profile-menu-padding'\n | '--rt-profile-menu-shadow'\n | '--rt-profile-row-inset'\n | '--rt-profile-theme-icon-padding'\n | '--rt-radius-2xl'\n | '--rt-radius-control'\n | '--rt-radius-full'\n | '--rt-radius-lg'\n | '--rt-radius-md'\n | '--rt-radius-ms'\n | '--rt-radius-none'\n | '--rt-radius-sm'\n | '--rt-radius-xl'\n | '--rt-radius-xs'\n | '--rt-shadow-card'\n | '--rt-shadow-card-soft'\n | '--rt-shadow-dialog'\n | '--rt-shadow-focus-ring'\n | '--rt-shadow-focus-ring-danger'\n | '--rt-shadow-lg'\n | '--rt-shadow-md'\n | '--rt-shadow-nav-panel'\n | '--rt-shadow-none'\n | '--rt-shadow-profile-menu'\n | '--rt-shadow-sm'\n | '--rt-shadow-status-dot'\n | '--rt-shadow-step-indicator'\n | '--rt-shadow-xl'\n | '--rt-size-1'\n | '--rt-size-10'\n | '--rt-size-100'\n | '--rt-size-12'\n | '--rt-size-16'\n | '--rt-size-2'\n | '--rt-size-20'\n | '--rt-size-24'\n | '--rt-size-3'\n | '--rt-size-30'\n | '--rt-size-4'\n | '--rt-size-40'\n | '--rt-size-5'\n | '--rt-size-6'\n | '--rt-size-60'\n | '--rt-size-64'\n | '--rt-size-8'\n | '--rt-slate-300'\n | '--rt-space-0'\n | '--rt-space-0-5'\n | '--rt-space-1'\n | '--rt-space-10'\n | '--rt-space-12'\n | '--rt-space-16'\n | '--rt-space-2'\n | '--rt-space-20'\n | '--rt-space-24'\n | '--rt-space-2xl'\n | '--rt-space-2xs'\n | '--rt-space-3xl'\n | '--rt-space-4'\n | '--rt-space-5'\n | '--rt-space-6'\n | '--rt-space-8'\n | '--rt-space-lg'\n | '--rt-space-md'\n | '--rt-space-sm'\n | '--rt-space-xl'\n | '--rt-space-xs'\n | '--rt-success-100'\n | '--rt-success-400'\n | '--rt-success-50'\n | '--rt-success-500'\n | '--rt-success-600'\n | '--rt-success-700'\n | '--rt-text-2xl'\n | '--rt-text-2xs'\n | '--rt-text-3xl'\n | '--rt-text-3xs'\n | '--rt-text-4xl'\n | '--rt-text-base'\n | '--rt-text-lg'\n | '--rt-text-md'\n | '--rt-text-sm'\n | '--rt-text-xl'\n | '--rt-text-xs'\n | '--rt-textarea-line-height'\n | '--rt-textarea-min-height'\n | '--rt-textarea-min-height-lg'\n | '--rt-textarea-min-height-md'\n | '--rt-textarea-min-height-sm'\n | '--rt-textarea-padding-y'\n | '--rt-toggle-color-border'\n | '--rt-toggle-color-icon'\n | '--rt-toggle-color-thumb'\n | '--rt-toggle-color-track'\n | '--rt-toggle-color-track-on'\n | '--rt-toggle-shadow-border'\n | '--rt-toggle-shadow-thumb'\n | '--rt-warning-50'\n | '--rt-warning-500'\n | '--rt-warning-600'\n | '--rt-warning-700'\n | '--rt-yellow-400'\n | '--rt-z-base'\n | '--rt-z-dropdown'\n | '--rt-z-fixed'\n | '--rt-z-modal'\n | '--rt-z-modal-backdrop'\n | '--rt-z-popover'\n | '--rt-z-sticky'\n | '--rt-z-tooltip';\n\n/** The name of a consumer's handle — a property the kit deliberately does not declare. */\nexport type TRtConsumerHandleName =\n | '--rt-action-bar-action-bg-hover'\n | '--rt-action-bar-action-color-danger'\n | '--rt-action-bar-action-focus-shadow'\n | '--rt-action-bar-action-font-size'\n | '--rt-action-bar-action-height'\n | '--rt-action-bar-action-padding-block'\n | '--rt-action-bar-action-padding-inline'\n | '--rt-action-bar-action-radius'\n | '--rt-action-bar-action-weight'\n | '--rt-action-bar-bg'\n | '--rt-action-bar-close-icon-size'\n | '--rt-action-bar-close-size'\n | '--rt-action-bar-color'\n | '--rt-action-bar-counter-font-size'\n | '--rt-action-bar-counter-weight'\n | '--rt-action-bar-font-size'\n | '--rt-action-bar-gap'\n | '--rt-action-bar-holder-bottom'\n | '--rt-action-bar-holder-enter-duration'\n | '--rt-action-bar-holder-inline'\n | '--rt-action-bar-holder-leave-duration'\n | '--rt-action-bar-icon-gap'\n | '--rt-action-bar-icon-size'\n | '--rt-action-bar-menu-bg'\n | '--rt-action-bar-menu-color'\n | '--rt-action-bar-menu-gap'\n | '--rt-action-bar-menu-item-font-size'\n | '--rt-action-bar-menu-padding'\n | '--rt-action-bar-menu-radius'\n | '--rt-action-bar-menu-shadow'\n | '--rt-action-bar-padding'\n | '--rt-action-bar-radius'\n | '--rt-action-bar-shadow'\n | '--rt-aside-bg'\n | '--rt-aside-content-inset'\n | '--rt-aside-error-margin-block'\n | '--rt-aside-footer-gap'\n | '--rt-aside-footer-inset'\n | '--rt-aside-footer-justify'\n | '--rt-aside-footer-margin'\n | '--rt-aside-header-back-icon-size'\n | '--rt-aside-header-back-size'\n | '--rt-aside-header-gap'\n | '--rt-aside-header-inset'\n | '--rt-aside-header-min-height'\n | '--rt-aside-header-subtitle-size'\n | '--rt-aside-header-title-leading'\n | '--rt-aside-header-title-size'\n | '--rt-aside-header-title-weight'\n | '--rt-aside-width'\n | '--rt-data-table-scrollbar-color'\n | '--rt-data-table-scrollbar-horizontal-height'\n | '--rt-data-table-scrollbar-vertical-width'\n | '--rt-data-table-scrollbar-width'\n | '--rt-dialog-bg'\n | '--rt-dialog-border'\n | '--rt-dialog-content-max-height'\n | '--rt-dialog-content-padding'\n | '--rt-dialog-footer-border'\n | '--rt-dialog-footer-padding'\n | '--rt-dialog-header-border'\n | '--rt-dialog-header-padding'\n | '--rt-dialog-title-font-size'\n | '--rt-dialog-title-transform'\n | '--rt-dialog-title-weight'\n | '--rt-dialog-width'\n | '--rt-dynamic-selector-list-add-color'\n | '--rt-dynamic-selector-popup-bg'\n | '--rt-dynamic-selector-popup-border-width'\n | '--rt-dynamic-selector-popup-button-font-size'\n | '--rt-dynamic-selector-popup-button-height'\n | '--rt-dynamic-selector-popup-empty-icon-size'\n | '--rt-dynamic-selector-popup-empty-icon-wrap-bg'\n | '--rt-dynamic-selector-popup-empty-text-color'\n | '--rt-dynamic-selector-popup-empty-text-size'\n | '--rt-dynamic-selector-popup-empty-text-weight'\n | '--rt-dynamic-selector-popup-foot-border-width'\n | '--rt-dynamic-selector-popup-max-height'\n | '--rt-dynamic-selector-popup-min-height'\n | '--rt-dynamic-selector-popup-nav-color'\n | '--rt-dynamic-selector-popup-padding'\n | '--rt-dynamic-selector-popup-radius'\n | '--rt-dynamic-selector-popup-shadow'\n | '--rt-dynamic-selector-popup-width'\n | '--rt-header-content-max-width'\n | '--rt-header-height'\n | '--rt-icon-button-bg'\n | '--rt-icon-button-bg-hover'\n | '--rt-icon-button-size'\n | '--rt-icon-color-danger'\n | '--rt-icon-color-disabled'\n | '--rt-icon-color-info'\n | '--rt-icon-color-inverse'\n | '--rt-icon-color-muted'\n | '--rt-icon-color-primary'\n | '--rt-icon-color-success'\n | '--rt-icon-color-warning'\n | '--rt-icon-glyph-font'\n | '--rt-icon-glyph-grade'\n | '--rt-icon-glyph-opsz'\n | '--rt-icon-glyph-weight'\n | '--rt-icon-step-2xl'\n | '--rt-icon-step-3xl'\n | '--rt-icon-step-4xl'\n | '--rt-icon-step-lg'\n | '--rt-icon-step-md'\n | '--rt-icon-step-sm'\n | '--rt-icon-step-xl'\n | '--rt-icon-step-xs'\n | '--rt-logo-tagline'\n | '--rt-logo-tagline-dark'\n | '--rt-logo-wordmark'\n | '--rt-logo-wordmark-dark'\n | '--rt-page-header-bg'\n | '--rt-table-actions-bg'\n | '--rt-tag-color-bg'\n | '--rt-tag-color-border'\n | '--rt-tag-color-text'\n | '--rt-tag-letter-spacing'\n | '--rt-tag-padding-block'\n | '--rt-tag-padding-inline'\n | '--rt-toast-action-color'\n | '--rt-toast-bg'\n | '--rt-toast-border-color'\n | '--rt-toast-close-color'\n | '--rt-toast-color'\n | '--rt-toast-filled-danger-bg'\n | '--rt-toast-filled-danger-border-color'\n | '--rt-toast-filled-danger-color'\n | '--rt-toast-filled-info-bg'\n | '--rt-toast-filled-info-border-color'\n | '--rt-toast-filled-info-color'\n | '--rt-toast-filled-success-bg'\n | '--rt-toast-filled-success-border-color'\n | '--rt-toast-filled-success-color'\n | '--rt-toast-filled-warning-bg'\n | '--rt-toast-filled-warning-border-color'\n | '--rt-toast-filled-warning-color'\n | '--rt-toast-icon-color'\n | '--rt-toast-progress-color'\n | '--rt-toast-progress-height'\n | '--rt-workspace-aside-size'\n | '--rt-workspace-list-size';\n\n/** All the styling properties declared by the kit. */\nexport const RT_DESIGN_TOKEN_NAMES: readonly TRtDesignTokenName[] = [\n '--rt-amber-400',\n '--rt-border-width-medium',\n '--rt-border-width-thick',\n '--rt-border-width-thin',\n '--rt-bp-lg',\n '--rt-bp-md',\n '--rt-bp-sm',\n '--rt-bp-xl',\n '--rt-brand-100',\n '--rt-brand-200',\n '--rt-brand-300',\n '--rt-brand-400',\n '--rt-brand-50',\n '--rt-brand-500',\n '--rt-brand-600',\n '--rt-brand-700',\n '--rt-brand-800',\n '--rt-brand-900',\n '--rt-brand-950',\n '--rt-btn-tint-active',\n '--rt-btn-tint-hover',\n '--rt-charcoal-700',\n '--rt-charcoal-800',\n '--rt-charcoal-900',\n '--rt-charcoal-950',\n '--rt-charcoal-border',\n '--rt-charcoal-border-strong',\n '--rt-chat-bubble-date',\n '--rt-chat-bubble-in-author',\n '--rt-chat-bubble-in-bg',\n '--rt-chat-bubble-own-author',\n '--rt-chat-bubble-own-bg',\n '--rt-chat-status-read',\n '--rt-color-action-danger',\n '--rt-color-action-danger-active',\n '--rt-color-action-danger-hover',\n '--rt-color-action-danger-on-surface',\n '--rt-color-action-disabled',\n '--rt-color-action-info',\n '--rt-color-action-info-active',\n '--rt-color-action-info-hover',\n '--rt-color-action-info-on-surface',\n '--rt-color-action-on-danger',\n '--rt-color-action-on-disabled',\n '--rt-color-action-on-info',\n '--rt-color-action-on-primary',\n '--rt-color-action-on-secondary',\n '--rt-color-action-on-success',\n '--rt-color-action-on-warning',\n '--rt-color-action-primary',\n '--rt-color-action-primary-active',\n '--rt-color-action-primary-hover',\n '--rt-color-action-primary-on-surface',\n '--rt-color-action-primary-soft',\n '--rt-color-action-primary-subtle',\n '--rt-color-action-secondary',\n '--rt-color-action-secondary-active',\n '--rt-color-action-secondary-hover',\n '--rt-color-action-secondary-on-surface',\n '--rt-color-action-success',\n '--rt-color-action-success-active',\n '--rt-color-action-success-hover',\n '--rt-color-action-success-on-surface',\n '--rt-color-action-warning',\n '--rt-color-action-warning-active',\n '--rt-color-action-warning-hover',\n '--rt-color-action-warning-on-surface',\n '--rt-color-bg-hover',\n '--rt-color-bg-inverse',\n '--rt-color-bg-nav',\n '--rt-color-bg-overlay',\n '--rt-color-bg-page',\n '--rt-color-bg-page-auth',\n '--rt-color-bg-subtle',\n '--rt-color-bg-surface',\n '--rt-color-bg-surface-auth-card',\n '--rt-color-bg-surface-subtle',\n '--rt-color-bg-surface-subtle-2',\n '--rt-color-border-default',\n '--rt-color-border-focus',\n '--rt-color-border-strong',\n '--rt-color-border-subtle',\n '--rt-color-field-fill-underline',\n '--rt-color-skeleton-base',\n '--rt-color-skeleton-wave',\n '--rt-color-state-danger',\n '--rt-color-state-danger-bg',\n '--rt-color-state-error-text',\n '--rt-color-state-info',\n '--rt-color-state-info-bg',\n '--rt-color-state-success',\n '--rt-color-state-success-bg',\n '--rt-color-state-success-text',\n '--rt-color-state-warning',\n '--rt-color-state-warning-bg',\n '--rt-color-state-warning-text',\n '--rt-color-stepper-current',\n '--rt-color-stepper-current-subtle',\n '--rt-color-stepper-progress',\n '--rt-color-stepper-track',\n '--rt-color-table-head-bg',\n '--rt-color-text-disabled',\n '--rt-color-text-inverse',\n '--rt-color-text-link',\n '--rt-color-text-link-hover',\n '--rt-color-text-muted',\n '--rt-color-text-primary',\n '--rt-control-height-2xl',\n '--rt-control-height-lg',\n '--rt-control-height-md',\n '--rt-control-height-sm',\n '--rt-control-height-xl',\n '--rt-control-max-width',\n '--rt-control-panel-max-height',\n '--rt-control-textarea-min-height-lg',\n '--rt-control-textarea-min-height-md',\n '--rt-control-textarea-min-height-sm',\n '--rt-counter-gap',\n '--rt-counter-row-color-border',\n '--rt-counter-row-gap',\n '--rt-counter-row-hint-color',\n '--rt-counter-row-hint-font-size',\n '--rt-counter-row-label-color',\n '--rt-counter-row-label-font-size',\n '--rt-counter-row-padding-y',\n '--rt-counter-value-color',\n '--rt-counter-value-font-size',\n '--rt-counter-value-min-width',\n '--rt-danger-50',\n '--rt-danger-500',\n '--rt-danger-600',\n '--rt-danger-700',\n '--rt-duration-base',\n '--rt-duration-fast',\n '--rt-duration-slow',\n '--rt-duration-slower',\n '--rt-field-error-color',\n '--rt-field-error-font-size',\n '--rt-field-gap',\n '--rt-field-hint-color',\n '--rt-field-hint-font-size',\n '--rt-field-label-color',\n '--rt-field-label-font-size',\n '--rt-field-label-font-weight',\n '--rt-field-label-help-gap',\n '--rt-field-required-color',\n '--rt-field-value-color',\n '--rt-field-value-empty-color',\n '--rt-field-value-font-size',\n '--rt-focus-ring-color',\n '--rt-focus-ring-color-danger',\n '--rt-focus-ring-offset',\n '--rt-focus-ring-width',\n '--rt-font-family-mono',\n '--rt-font-family-sans',\n '--rt-font-weight-bold',\n '--rt-font-weight-medium',\n '--rt-font-weight-regular',\n '--rt-font-weight-semibold',\n '--rt-gray-350',\n '--rt-icon-button-color-bg-hover',\n '--rt-icon-button-disabled-color',\n '--rt-icon-button-disabled-fill',\n '--rt-icon-button-disabled-opacity',\n '--rt-info-50',\n '--rt-info-500',\n '--rt-info-600',\n '--rt-info-700',\n '--rt-input-border-width',\n '--rt-input-color-bg',\n '--rt-input-color-bg-disabled',\n '--rt-input-color-bg-hover',\n '--rt-input-color-border',\n '--rt-input-color-border-error',\n '--rt-input-color-border-focus',\n '--rt-input-color-text',\n '--rt-input-color-text-placeholder',\n '--rt-input-disabled-opacity',\n '--rt-input-focus-outline-offset',\n '--rt-input-focus-shadow',\n '--rt-input-focus-shadow-error',\n '--rt-input-font-size',\n '--rt-input-gap',\n '--rt-input-height',\n '--rt-input-height-lg',\n '--rt-input-height-md',\n '--rt-input-height-sm',\n '--rt-input-icon-color',\n '--rt-input-icon-size',\n '--rt-input-line-height',\n '--rt-input-max-width',\n '--rt-input-padding-x',\n '--rt-input-padding-y',\n '--rt-input-panel-max-height',\n '--rt-input-radius',\n '--rt-input-transition',\n '--rt-leading-none',\n '--rt-leading-normal',\n '--rt-leading-relaxed',\n '--rt-leading-snug',\n '--rt-leading-tight',\n '--rt-letter-spacing-wide',\n '--rt-list-action-color',\n '--rt-list-action-color-bg-hover',\n '--rt-list-action-color-hover',\n '--rt-list-action-divider-height',\n '--rt-list-action-gap',\n '--rt-list-action-icon-size',\n '--rt-list-action-radius',\n '--rt-list-action-shadow',\n '--rt-list-action-shadow-hover',\n '--rt-list-content-padding-bottom',\n '--rt-list-copy-button-bg',\n '--rt-list-copy-button-bg-hover',\n '--rt-list-copy-button-color',\n '--rt-list-copy-button-radius',\n '--rt-list-copy-button-size',\n '--rt-list-empty-icon-size',\n '--rt-list-empty-icon-wrap-bg',\n '--rt-list-empty-icon-wrap-size',\n '--rt-list-empty-title-size',\n '--rt-list-empty-title-weight',\n '--rt-list-filter-line-height',\n '--rt-list-placeholder-grow',\n '--rt-list-placeholder-min-height',\n '--rt-list-search-color-bg',\n '--rt-list-search-color-border',\n '--rt-list-search-color-placeholder',\n '--rt-list-search-font-size',\n '--rt-list-search-gap',\n '--rt-list-search-height',\n '--rt-list-search-icon-color',\n '--rt-list-search-icon-size',\n '--rt-list-search-padding-x',\n '--rt-list-search-radius',\n '--rt-list-search-width',\n '--rt-list-selector-label-color',\n '--rt-list-settings-icon-color',\n '--rt-list-settings-item-bg',\n '--rt-list-settings-item-radius',\n '--rt-list-table-button-radius',\n '--rt-list-table-button-size',\n '--rt-list-table-head-divider-color',\n '--rt-list-table-icon-color',\n '--rt-list-table-icon-size',\n '--rt-list-toolbar-gap',\n '--rt-list-toolbar-padding-bottom',\n '--rt-list-toolbar-padding-top',\n '--rt-mat-blue-100',\n '--rt-mat-blue-20',\n '--rt-mat-blue-40',\n '--rt-mat-blue-60',\n '--rt-mat-blue-80',\n '--rt-mat-blue-active',\n '--rt-mat-blue-hover',\n '--rt-mat-dark-10',\n '--rt-mat-dark-20',\n '--rt-mat-dark-30',\n '--rt-mat-dark-40',\n '--rt-mat-green-10',\n '--rt-mat-green-100',\n '--rt-mat-green-120',\n '--rt-mat-green-20',\n '--rt-mat-green-40',\n '--rt-mat-green-60',\n '--rt-mat-green-80',\n '--rt-mat-green-active',\n '--rt-mat-green-hover',\n '--rt-mat-menu-min-width',\n '--rt-mat-menu-sm-icon-size',\n '--rt-mat-menu-sm-item-height',\n '--rt-mat-navy-100',\n '--rt-mat-neutral-0',\n '--rt-mat-neutral-10',\n '--rt-mat-neutral-100',\n '--rt-mat-neutral-15',\n '--rt-mat-neutral-20',\n '--rt-mat-neutral-25',\n '--rt-mat-neutral-30',\n '--rt-mat-neutral-35',\n '--rt-mat-neutral-40',\n '--rt-mat-neutral-5',\n '--rt-mat-neutral-60',\n '--rt-mat-neutral-80',\n '--rt-mat-neutral-active',\n '--rt-mat-neutral-hover',\n '--rt-mat-orange-10',\n '--rt-mat-orange-100',\n '--rt-mat-orange-20',\n '--rt-mat-orange-40',\n '--rt-mat-orange-5',\n '--rt-mat-orange-60',\n '--rt-mat-orange-70',\n '--rt-mat-orange-80',\n '--rt-mat-orange-active',\n '--rt-mat-orange-hover',\n '--rt-mat-overlay-black-32',\n '--rt-mat-overlay-black-4',\n '--rt-mat-overlay-blue-24',\n '--rt-mat-overlay-blue-8',\n '--rt-mat-radius-4',\n '--rt-mat-radius-5',\n '--rt-mat-red-10',\n '--rt-mat-red-100',\n '--rt-mat-red-20',\n '--rt-mat-red-40',\n '--rt-mat-red-60',\n '--rt-mat-red-80',\n '--rt-mat-red-active',\n '--rt-mat-red-hover',\n '--rt-mat-shadow-fab',\n '--rt-mat-shadow-fab-hover',\n '--rt-mat-shadow-level-2',\n '--rt-nav-caret-size',\n '--rt-nav-color-disabled',\n '--rt-nav-color-focus',\n '--rt-nav-header-color-bg',\n '--rt-nav-header-padding',\n '--rt-nav-item-color',\n '--rt-nav-item-color-bg',\n '--rt-nav-item-color-bg-active',\n '--rt-nav-item-color-border',\n '--rt-nav-item-color-caret',\n '--rt-nav-item-color-hover',\n '--rt-nav-item-color-pressed',\n '--rt-nav-item-content-gap',\n '--rt-nav-item-font-size',\n '--rt-nav-item-font-weight',\n '--rt-nav-item-gap',\n '--rt-nav-item-height',\n '--rt-nav-item-line-height',\n '--rt-nav-item-padding',\n '--rt-nav-marker-color',\n '--rt-nav-marker-size',\n '--rt-nav-panel-color-bg',\n '--rt-nav-panel-color-border',\n '--rt-nav-panel-column-gap',\n '--rt-nav-panel-column-width',\n '--rt-nav-panel-columns',\n '--rt-nav-panel-group-color',\n '--rt-nav-panel-group-content-gap',\n '--rt-nav-panel-group-font-size',\n '--rt-nav-panel-group-font-weight',\n '--rt-nav-panel-group-gap',\n '--rt-nav-panel-item-color',\n '--rt-nav-panel-item-color-active',\n '--rt-nav-panel-item-color-bg-active',\n '--rt-nav-panel-item-color-bg-hover',\n '--rt-nav-panel-item-content-gap',\n '--rt-nav-panel-item-font-size',\n '--rt-nav-panel-item-font-weight',\n '--rt-nav-panel-item-gap',\n '--rt-nav-panel-item-height',\n '--rt-nav-panel-item-padding',\n '--rt-nav-panel-padding',\n '--rt-nav-panel-padding-y',\n '--rt-nav-panel-shadow',\n '--rt-navy-600',\n '--rt-navy-900',\n '--rt-neutral-0',\n '--rt-neutral-100',\n '--rt-neutral-200',\n '--rt-neutral-300',\n '--rt-neutral-400',\n '--rt-neutral-50',\n '--rt-neutral-500',\n '--rt-neutral-600',\n '--rt-neutral-700',\n '--rt-neutral-800',\n '--rt-neutral-900',\n '--rt-neutral-950',\n '--rt-opacity-disabled',\n '--rt-overlay-amber-16',\n '--rt-overlay-black-4',\n '--rt-overlay-black-50',\n '--rt-overlay-black-8',\n '--rt-overlay-brand-24',\n '--rt-overlay-brand-8',\n '--rt-overlay-danger-16',\n '--rt-overlay-menu-bg',\n '--rt-overlay-menu-current-bg',\n '--rt-overlay-menu-danger-color',\n '--rt-overlay-menu-danger-label-color',\n '--rt-overlay-menu-item-icon-size',\n '--rt-overlay-menu-item-min-height',\n '--rt-overlay-menu-item-padding-x',\n '--rt-overlay-menu-item-padding-y',\n '--rt-overlay-menu-item-weight',\n '--rt-overlay-menu-min-width',\n '--rt-overlay-menu-padding-y',\n '--rt-overlay-menu-radius',\n '--rt-overlay-menu-shadow',\n '--rt-overlay-menu-sm-item-icon-size',\n '--rt-overlay-menu-sm-item-min-height',\n '--rt-overlay-navy-70',\n '--rt-overlay-select-check-display',\n '--rt-overlay-select-option-font-size',\n '--rt-overlay-select-option-min-height',\n '--rt-overlay-select-panel-border-width',\n '--rt-overlay-select-radius',\n '--rt-overlay-select-selected-bg',\n '--rt-overlay-select-selected-weight',\n '--rt-overlay-select-shadow',\n '--rt-overlay-tooltip-radius',\n '--rt-overlay-tooltip-shadow',\n '--rt-overlay-white-25',\n '--rt-overlay-white-4',\n '--rt-overlay-white-40',\n '--rt-overlay-white-50',\n '--rt-overlay-white-8',\n '--rt-pagination-arrow-color',\n '--rt-pagination-arrow-radius',\n '--rt-pagination-arrow-shadow',\n '--rt-pagination-arrow-size',\n '--rt-pagination-box-color-border',\n '--rt-pagination-box-color-text',\n '--rt-pagination-box-current-color-bg',\n '--rt-pagination-box-current-color-border',\n '--rt-pagination-box-current-color-text',\n '--rt-pagination-box-current-font-weight',\n '--rt-pagination-box-radius',\n '--rt-pagination-box-size',\n '--rt-pagination-field-color-bg',\n '--rt-pagination-field-color-border',\n '--rt-pagination-field-color-text',\n '--rt-pagination-field-height',\n '--rt-pagination-field-padding-x',\n '--rt-pagination-field-radius',\n '--rt-pagination-gap',\n '--rt-pagination-justify',\n '--rt-pagination-nav-gap',\n '--rt-pagination-padding-x',\n '--rt-pagination-padding-y',\n '--rt-pagination-per-page-gap',\n '--rt-pagination-per-page-label-white-space',\n '--rt-pagination-range-display',\n '--rt-profile-avatar-font-size',\n '--rt-profile-avatar-size',\n '--rt-profile-item-content-gap',\n '--rt-profile-item-font-size',\n '--rt-profile-item-font-weight',\n '--rt-profile-item-padding-y',\n '--rt-profile-item-radius',\n '--rt-profile-menu-min-width',\n '--rt-profile-menu-padding',\n '--rt-profile-menu-shadow',\n '--rt-profile-row-inset',\n '--rt-profile-theme-icon-padding',\n '--rt-radius-2xl',\n '--rt-radius-control',\n '--rt-radius-full',\n '--rt-radius-lg',\n '--rt-radius-md',\n '--rt-radius-ms',\n '--rt-radius-none',\n '--rt-radius-sm',\n '--rt-radius-xl',\n '--rt-radius-xs',\n '--rt-shadow-card',\n '--rt-shadow-card-soft',\n '--rt-shadow-dialog',\n '--rt-shadow-focus-ring',\n '--rt-shadow-focus-ring-danger',\n '--rt-shadow-lg',\n '--rt-shadow-md',\n '--rt-shadow-nav-panel',\n '--rt-shadow-none',\n '--rt-shadow-profile-menu',\n '--rt-shadow-sm',\n '--rt-shadow-status-dot',\n '--rt-shadow-step-indicator',\n '--rt-shadow-xl',\n '--rt-size-1',\n '--rt-size-10',\n '--rt-size-100',\n '--rt-size-12',\n '--rt-size-16',\n '--rt-size-2',\n '--rt-size-20',\n '--rt-size-24',\n '--rt-size-3',\n '--rt-size-30',\n '--rt-size-4',\n '--rt-size-40',\n '--rt-size-5',\n '--rt-size-6',\n '--rt-size-60',\n '--rt-size-64',\n '--rt-size-8',\n '--rt-slate-300',\n '--rt-space-0',\n '--rt-space-0-5',\n '--rt-space-1',\n '--rt-space-10',\n '--rt-space-12',\n '--rt-space-16',\n '--rt-space-2',\n '--rt-space-20',\n '--rt-space-24',\n '--rt-space-2xl',\n '--rt-space-2xs',\n '--rt-space-3xl',\n '--rt-space-4',\n '--rt-space-5',\n '--rt-space-6',\n '--rt-space-8',\n '--rt-space-lg',\n '--rt-space-md',\n '--rt-space-sm',\n '--rt-space-xl',\n '--rt-space-xs',\n '--rt-success-100',\n '--rt-success-400',\n '--rt-success-50',\n '--rt-success-500',\n '--rt-success-600',\n '--rt-success-700',\n '--rt-text-2xl',\n '--rt-text-2xs',\n '--rt-text-3xl',\n '--rt-text-3xs',\n '--rt-text-4xl',\n '--rt-text-base',\n '--rt-text-lg',\n '--rt-text-md',\n '--rt-text-sm',\n '--rt-text-xl',\n '--rt-text-xs',\n '--rt-textarea-line-height',\n '--rt-textarea-min-height',\n '--rt-textarea-min-height-lg',\n '--rt-textarea-min-height-md',\n '--rt-textarea-min-height-sm',\n '--rt-textarea-padding-y',\n '--rt-toggle-color-border',\n '--rt-toggle-color-icon',\n '--rt-toggle-color-thumb',\n '--rt-toggle-color-track',\n '--rt-toggle-color-track-on',\n '--rt-toggle-shadow-border',\n '--rt-toggle-shadow-thumb',\n '--rt-warning-50',\n '--rt-warning-500',\n '--rt-warning-600',\n '--rt-warning-700',\n '--rt-yellow-400',\n '--rt-z-base',\n '--rt-z-dropdown',\n '--rt-z-fixed',\n '--rt-z-modal',\n '--rt-z-modal-backdrop',\n '--rt-z-popover',\n '--rt-z-sticky',\n '--rt-z-tooltip',\n];\n\n/** All the consumer's handles: the value comes from the application, until then the fallback works. */\nexport const RT_CONSUMER_HANDLE_NAMES: readonly TRtConsumerHandleName[] = [\n '--rt-action-bar-action-bg-hover',\n '--rt-action-bar-action-color-danger',\n '--rt-action-bar-action-focus-shadow',\n '--rt-action-bar-action-font-size',\n '--rt-action-bar-action-height',\n '--rt-action-bar-action-padding-block',\n '--rt-action-bar-action-padding-inline',\n '--rt-action-bar-action-radius',\n '--rt-action-bar-action-weight',\n '--rt-action-bar-bg',\n '--rt-action-bar-close-icon-size',\n '--rt-action-bar-close-size',\n '--rt-action-bar-color',\n '--rt-action-bar-counter-font-size',\n '--rt-action-bar-counter-weight',\n '--rt-action-bar-font-size',\n '--rt-action-bar-gap',\n '--rt-action-bar-holder-bottom',\n '--rt-action-bar-holder-enter-duration',\n '--rt-action-bar-holder-inline',\n '--rt-action-bar-holder-leave-duration',\n '--rt-action-bar-icon-gap',\n '--rt-action-bar-icon-size',\n '--rt-action-bar-menu-bg',\n '--rt-action-bar-menu-color',\n '--rt-action-bar-menu-gap',\n '--rt-action-bar-menu-item-font-size',\n '--rt-action-bar-menu-padding',\n '--rt-action-bar-menu-radius',\n '--rt-action-bar-menu-shadow',\n '--rt-action-bar-padding',\n '--rt-action-bar-radius',\n '--rt-action-bar-shadow',\n '--rt-aside-bg',\n '--rt-aside-content-inset',\n '--rt-aside-error-margin-block',\n '--rt-aside-footer-gap',\n '--rt-aside-footer-inset',\n '--rt-aside-footer-justify',\n '--rt-aside-footer-margin',\n '--rt-aside-header-back-icon-size',\n '--rt-aside-header-back-size',\n '--rt-aside-header-gap',\n '--rt-aside-header-inset',\n '--rt-aside-header-min-height',\n '--rt-aside-header-subtitle-size',\n '--rt-aside-header-title-leading',\n '--rt-aside-header-title-size',\n '--rt-aside-header-title-weight',\n '--rt-aside-width',\n '--rt-data-table-scrollbar-color',\n '--rt-data-table-scrollbar-horizontal-height',\n '--rt-data-table-scrollbar-vertical-width',\n '--rt-data-table-scrollbar-width',\n '--rt-dialog-bg',\n '--rt-dialog-border',\n '--rt-dialog-content-max-height',\n '--rt-dialog-content-padding',\n '--rt-dialog-footer-border',\n '--rt-dialog-footer-padding',\n '--rt-dialog-header-border',\n '--rt-dialog-header-padding',\n '--rt-dialog-title-font-size',\n '--rt-dialog-title-transform',\n '--rt-dialog-title-weight',\n '--rt-dialog-width',\n '--rt-dynamic-selector-list-add-color',\n '--rt-dynamic-selector-popup-bg',\n '--rt-dynamic-selector-popup-border-width',\n '--rt-dynamic-selector-popup-button-font-size',\n '--rt-dynamic-selector-popup-button-height',\n '--rt-dynamic-selector-popup-empty-icon-size',\n '--rt-dynamic-selector-popup-empty-icon-wrap-bg',\n '--rt-dynamic-selector-popup-empty-text-color',\n '--rt-dynamic-selector-popup-empty-text-size',\n '--rt-dynamic-selector-popup-empty-text-weight',\n '--rt-dynamic-selector-popup-foot-border-width',\n '--rt-dynamic-selector-popup-max-height',\n '--rt-dynamic-selector-popup-min-height',\n '--rt-dynamic-selector-popup-nav-color',\n '--rt-dynamic-selector-popup-padding',\n '--rt-dynamic-selector-popup-radius',\n '--rt-dynamic-selector-popup-shadow',\n '--rt-dynamic-selector-popup-width',\n '--rt-header-content-max-width',\n '--rt-header-height',\n '--rt-icon-button-bg',\n '--rt-icon-button-bg-hover',\n '--rt-icon-button-size',\n '--rt-icon-color-danger',\n '--rt-icon-color-disabled',\n '--rt-icon-color-info',\n '--rt-icon-color-inverse',\n '--rt-icon-color-muted',\n '--rt-icon-color-primary',\n '--rt-icon-color-success',\n '--rt-icon-color-warning',\n '--rt-icon-glyph-font',\n '--rt-icon-glyph-grade',\n '--rt-icon-glyph-opsz',\n '--rt-icon-glyph-weight',\n '--rt-icon-step-2xl',\n '--rt-icon-step-3xl',\n '--rt-icon-step-4xl',\n '--rt-icon-step-lg',\n '--rt-icon-step-md',\n '--rt-icon-step-sm',\n '--rt-icon-step-xl',\n '--rt-icon-step-xs',\n '--rt-logo-tagline',\n '--rt-logo-tagline-dark',\n '--rt-logo-wordmark',\n '--rt-logo-wordmark-dark',\n '--rt-page-header-bg',\n '--rt-table-actions-bg',\n '--rt-tag-color-bg',\n '--rt-tag-color-border',\n '--rt-tag-color-text',\n '--rt-tag-letter-spacing',\n '--rt-tag-padding-block',\n '--rt-tag-padding-inline',\n '--rt-toast-action-color',\n '--rt-toast-bg',\n '--rt-toast-border-color',\n '--rt-toast-close-color',\n '--rt-toast-color',\n '--rt-toast-filled-danger-bg',\n '--rt-toast-filled-danger-border-color',\n '--rt-toast-filled-danger-color',\n '--rt-toast-filled-info-bg',\n '--rt-toast-filled-info-border-color',\n '--rt-toast-filled-info-color',\n '--rt-toast-filled-success-bg',\n '--rt-toast-filled-success-border-color',\n '--rt-toast-filled-success-color',\n '--rt-toast-filled-warning-bg',\n '--rt-toast-filled-warning-border-color',\n '--rt-toast-filled-warning-color',\n '--rt-toast-icon-color',\n '--rt-toast-progress-color',\n '--rt-toast-progress-height',\n '--rt-workspace-aside-size',\n '--rt-workspace-list-size',\n];\n","/**\n * Подпись по умолчанию, когда из URL не удалось извлечь имя файла. Нейтральная\n * и непереводимая: кит не знает языка потребителя, а видимую подпись\n * вызывающая сторона передаёт вторым аргументом.\n */\nconst DEFAULT_ATTACHMENT_NAME: string = 'file';\n\n/**\n * Извлекает имя файла из URL: последний сегмент пути без query/fragment,\n * декодированный из percent-encoding. Нужен для вложений, у которых источник\n * отдаёт только ссылку на скачивание без метаданных (имени/размера).\n *\n * @param url Ссылка на файл. Пустая/`null` → `fallback`.\n * @param fallback Что вернуть, если сегмент пустой или URL не распарсился.\n */\nexport function fileNameFromUrl(url: string | null | undefined, fallback: string = DEFAULT_ATTACHMENT_NAME): string {\n if (!url) {\n return fallback;\n }\n\n const path: string = url.split('?')[0].split('#')[0];\n // У абсолютных URL имя файла живёт только в pathname — отбрасываем протокол и хост,\n // иначе для ссылки без пути (\"https://host/\") именем стал бы сам хост.\n let pathname: string = path;\n const schemeIdx: number = path.indexOf('://');\n if (schemeIdx !== -1) {\n const slashIdx: number = path.indexOf('/', schemeIdx + 3);\n pathname = slashIdx === -1 ? '' : path.slice(slashIdx);\n }\n const segment: string = pathname.split('/').filter(Boolean).pop() ?? '';\n if (!segment) {\n return fallback;\n }\n\n try {\n return decodeURIComponent(segment);\n } catch {\n // Некорректный percent-encoding — показываем сегмент как есть.\n return segment;\n }\n}\n","/**\n * Форматирует размер файла в байтах в человекочитаемую строку (SI, base-1000).\n *\n * Используется десятичная система (1 кБ = 1000 Б), а не двоичная (KiB), —\n * так размер совпадает с тем, что показывает большинство ОС и файловых менеджеров.\n * Единицы — латиницей (`B` / `kB` / `MB` / `GB`), как в макете карточки файла.\n *\n * @param bytes Размер в байтах. `null`/`undefined`/`NaN`/отрицательное → пустая строка\n * (caller сам решает, скрывать бейдж или нет).\n * @returns Строка вида `\"82 kB\"`, `\"1.4 MB\"` или `\"\"`, если размер неизвестен.\n */\nexport function formatFileSize(bytes: number | null | undefined): string {\n if (bytes === null || bytes === undefined || Number.isNaN(bytes) || bytes < 0) {\n return '';\n }\n\n if (bytes < 1_000) {\n return `${bytes} B`;\n }\n\n if (bytes < 1_000_000) {\n return `${Math.round(bytes / 1_000)} kB`;\n }\n\n if (bytes < 1_000_000_000) {\n return `${(bytes / 1_000_000).toFixed(1)} MB`;\n }\n\n return `${(bytes / 1_000_000_000).toFixed(1)} GB`;\n}\n","/**\n * Дерево узлов показа разметки: то, во что разборщик переводит присланный текст.\n *\n * Перечень узлов закрыт. Разборщик не умеет строить ничего, кроме перечисленного здесь, —\n * поэтому сырой HTML, картинки и адреса чужих схем в вывод не попадают вовсе: для них тут\n * просто нет узла, и они остаются видимым текстом.\n */\n\n/** Род блока — то, чем текст разделён по вертикали. */\nexport enum ERtMarkdownBlock {\n Heading = 'heading',\n Paragraph = 'paragraph',\n List = 'list',\n Quote = 'quote',\n Code = 'code',\n Table = 'table',\n}\n\n/** Род куска строки — то, чем текст размечен внутри абзаца. */\nexport enum ERtMarkdownInline {\n Text = 'text',\n Strong = 'strong',\n Emphasis = 'emphasis',\n Strike = 'strike',\n Code = 'code',\n Link = 'link',\n Break = 'break',\n}\n\n/** Кусок строки: либо сам текст, либо разметка вокруг вложенных кусков. */\nexport interface IRtMarkdownInlineNode {\n readonly kind: ERtMarkdownInline;\n /** Текст куска. У разметки вокруг вложенного — пустая строка. */\n readonly text: string;\n /** Вложенные куски у жирного, курсива и зачёркнутого; у остальных пусто. */\n readonly children: readonly IRtMarkdownInlineNode[];\n /** Адрес ссылки. Стоит только у ссылки и только разрешённой схемы. */\n readonly href: string | null;\n}\n\n/** Пункт списка: свои куски строки и уровень вложенности, считая от нуля. */\nexport interface IRtMarkdownListItem {\n readonly level: number;\n /**\n * Тот же уровень строкой — для модификатора разметки.\n *\n * Директива модификатора числа не принимает: любое нестроковое значение она сводит к\n * признаку и даёт класс без значения, то есть один и тот же на все уровни.\n */\n readonly levelName: string;\n readonly content: readonly IRtMarkdownInlineNode[];\n}\n\n/** Блок показа. Поля, которых у этого рода нет, стоят пустыми. */\nexport interface IRtMarkdownBlockNode {\n readonly kind: ERtMarkdownBlock;\n /** Уровень заголовка, от 1 до 6. У остальных родов — 0. */\n readonly level: number;\n /** Тот же уровень строкой — для модификатора разметки; у остальных родов пусто. */\n readonly levelName: string;\n /** Куски строки у заголовка, абзаца и цитаты. */\n readonly content: readonly IRtMarkdownInlineNode[];\n /** Пункты списка. */\n readonly items: readonly IRtMarkdownListItem[];\n /** Признак нумерованного списка. */\n readonly ordered: boolean;\n /** Текст блока кода как есть, без разбора разметки внутри. */\n readonly code: string;\n /** Слово языка у ограды блока кода. Разбирается, но на вид не влияет. */\n readonly language: string | null;\n /** Строка заголовка таблицы: ячейка — свои куски строки. */\n readonly head: readonly (readonly IRtMarkdownInlineNode[])[];\n /** Прочие строки таблицы. */\n readonly rows: readonly (readonly (readonly IRtMarkdownInlineNode[])[])[];\n}\n","import { ERtMarkdownInline, IRtMarkdownInlineNode } from './markdown.model';\n\n/**\n * Разбор строки на куски: жирный, курсив, зачёркнутый, код и ссылка.\n *\n * Всё, чего в этом перечне нет, остаётся текстом — включая угловые скобки, разметку картинки и\n * ссылку чужой схемы. Вычистки здесь нет и быть не может: разборщик не строит узла, которого не\n * знает, и присланное показывается ровно так, как приехало.\n */\n\n/** Схемы, при которых адрес становится ссылкой. Любая другая ссылкой не становится. */\nconst ALLOWED_SCHEMES: readonly string[] = ['http://', 'https://', 'mailto:'];\n\n/** Парная разметка: открывающая строка, её род и то, разбираются ли куски внутри. */\ninterface IPairedMark {\n readonly mark: string;\n readonly kind: ERtMarkdownInline;\n readonly nested: boolean;\n}\n\n/**\n * Порядок важен: длинные строки стоят раньше коротких, иначе `**` разберётся двумя `*`.\n * Код стоит первым — внутри него разметка не действует.\n */\nconst PAIRED_MARKS: readonly IPairedMark[] = [\n { mark: '`', kind: ERtMarkdownInline.Code, nested: false },\n { mark: '**', kind: ERtMarkdownInline.Strong, nested: true },\n { mark: '__', kind: ERtMarkdownInline.Strong, nested: true },\n { mark: '~~', kind: ERtMarkdownInline.Strike, nested: true },\n { mark: '*', kind: ERtMarkdownInline.Emphasis, nested: true },\n { mark: '_', kind: ERtMarkdownInline.Emphasis, nested: true },\n];\n\n/**\n * Прочитанный кусок: сколько знаков он занял и каким узлом стал.\n *\n * Пустой узел означает, что знаки остаются видимым текстом: так уходят разметка картинки,\n * ссылка чужой схемы и непарные знаки разметки.\n */\ninterface ITaken {\n readonly length: number;\n readonly node: IRtMarkdownInlineNode | null;\n}\n\n/** Разбор вложенного куска. Передаётся доводом, чтобы файл читался сверху вниз. */\ntype TNested = (source: string) => IRtMarkdownInlineNode[];\n\n/** Кусок текста. */\nfunction textNode(value: string): IRtMarkdownInlineNode {\n return { kind: ERtMarkdownInline.Text, text: value, children: [], href: null };\n}\n\n/** Перенос строки внутри абзаца: одиночный перенос остаётся переносом. */\nexport function breakNode(): IRtMarkdownInlineNode {\n return { kind: ERtMarkdownInline.Break, text: '', children: [], href: null };\n}\n\n/** Адрес, который годится в ссылку. Всё прочее ссылкой не становится. */\nfunction isAllowedHref(value: string): boolean {\n const lowered: string = value.toLowerCase();\n\n return ALLOWED_SCHEMES.some((scheme: string): boolean => lowered.startsWith(scheme));\n}\n\n/** Разметка картинки узлом не становится и остаётся текстом целиком. */\nfunction readImage(source: string, start: number): ITaken | null {\n if (source[start] !== '!' || source[start + 1] !== '[') {\n return null;\n }\n\n const close: number = source.indexOf(']', start + 2);\n\n if (close === -1 || source[close + 1] !== '(') {\n return null;\n }\n\n const end: number = source.indexOf(')', close + 2);\n\n return end === -1 ? null : { length: end - start + 1, node: null };\n}\n\n/** Читает `[текст](адрес)`, начиная с открывающей скобки. */\nfunction readLink(source: string, start: number, nested: TNested): ITaken | null {\n if (source[start] !== '[') {\n return null;\n }\n\n const close: number = source.indexOf(']', start + 1);\n\n if (close === -1 || source[close + 1] !== '(') {\n return null;\n }\n\n const end: number = source.indexOf(')', close + 2);\n\n if (end === -1) {\n return null;\n }\n\n const address: string = source.slice(close + 2, end).trim();\n\n if (!isAllowedHref(address)) {\n return null;\n }\n\n const label: string = source.slice(start + 1, close);\n\n return {\n length: end - start + 1,\n node: { kind: ERtMarkdownInline.Link, text: label, children: nested(label), href: address },\n };\n}\n\n/** Читает парную разметку, начиная с её открывающей строки. */\nfunction readPaired(source: string, start: number, nested: TNested): ITaken | null {\n const pair: IPairedMark | undefined = PAIRED_MARKS.find((candidate: IPairedMark): boolean => source.startsWith(candidate.mark, start));\n\n if (pair === undefined) {\n return null;\n }\n\n const from: number = start + pair.mark.length;\n const close: number = source.indexOf(pair.mark, from);\n\n if (close === -1 || close === from) {\n return null;\n }\n\n const inner: string = source.slice(from, close);\n\n return {\n length: close - start + pair.mark.length,\n node: {\n kind: pair.kind,\n text: pair.nested ? '' : inner,\n children: pair.nested ? nested(inner) : [],\n href: null,\n },\n };\n}\n\n/** Кусок, начинающийся в этом месте строки. Пустой узел — знаки остаются текстом. */\nfunction readAt(source: string, index: number, nested: TNested): ITaken {\n const taken: ITaken | null = readImage(source, index) ?? readLink(source, index, nested) ?? readPaired(source, index, nested);\n\n return taken ?? { length: 1, node: null };\n}\n\n/**\n * Разбирает строку на куски показа.\n *\n * @param source Строка без переносов.\n * @returns Куски строки по порядку; у строки без разметки — один кусок текста.\n */\nexport function parseInline(source: string): IRtMarkdownInlineNode[] {\n const nodes: IRtMarkdownInlineNode[] = [];\n let plain: string = '';\n let index: number = 0;\n\n const flush: () => void = (): void => {\n if (plain !== '') {\n nodes.push(textNode(plain));\n plain = '';\n }\n };\n\n while (index < source.length) {\n const taken: ITaken = readAt(source, index, parseInline);\n\n if (taken.node === null) {\n plain += source.slice(index, index + taken.length);\n } else {\n flush();\n nodes.push(taken.node);\n }\n\n index += taken.length;\n }\n\n flush();\n\n return nodes;\n}\n","import { breakNode, parseInline } from './markdown-inline';\nimport { ERtMarkdownBlock, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem } from './markdown.model';\n\n/**\n * Разбор текста, написанного разметкой, в дерево узлов показа.\n *\n * Перечень закрыт: заголовки, абзацы, списки, цитаты, код строкой и блоком, таблицы, жирный,\n * курсив, зачёркнутый и ссылка. Всё прочее — сырой HTML, картинки, ссылки чужих схем — узлом не\n * становится и остаётся видимым текстом: вычищать нечего, потому что строить такой узел\n * разборщик не умеет.\n *\n * Одиночный перенос строки внутри абзаца остаётся переносом: тексты пишут деревья, и перенос\n * там ставят осмысленно.\n */\n\n/** Ограда блока кода. */\nconst FENCE: string = '```';\n\n/** Заголовок: от одной до шести решёток и пробел. */\nconst HEADING_LINE: RegExp = /^(#{1,6}) (.*)$/;\n\n/** Строка цитаты. */\nconst QUOTE_LINE: RegExp = /^ {0,3}> ?(.*)$/;\n\n/** Пункт простого списка: отступ задаёт уровень вложенности. */\nconst BULLET_LINE: RegExp = /^( *)[-*+] (.*)$/;\n\n/** Пункт нумерованного списка. */\nconst ORDERED_LINE: RegExp = /^( *)\\d+[.)] (.*)$/;\n\n/** Знаки, из которых состоит строка-разделитель под шапкой таблицы. */\nconst DIVIDER_CHARS: readonly string[] = ['|', '-', ':', ' '];\n\n/** Сколько пробелов отступа даёт один уровень вложенности списка. */\nconst SPACES_PER_LEVEL: number = 2;\n\n/** Ширина отступа, которой заменяется знак табуляции. */\nconst TAB_WIDTH: string = ' ';\n\n/** Прочитанный блок и место, с которого читать дальше. */\ninterface IReadBlock {\n readonly next: number;\n readonly block: IRtMarkdownBlockNode;\n}\n\n/** Читатель блока: разбирает своё, а на чужом отвечает пустотой. */\ntype TBlockReader = (lines: readonly string[], start: number) => IReadBlock | null;\n\n/** Блок с пустыми полями: род и то, что этому роду нужно, дописывает читающий. */\nfunction makeBlock(kind: ERtMarkdownBlock, patch: Partial<IRtMarkdownBlockNode>): IRtMarkdownBlockNode {\n return {\n kind,\n level: 0,\n levelName: '',\n content: [],\n items: [],\n ordered: false,\n code: '',\n language: null,\n head: [],\n rows: [],\n ...patch,\n };\n}\n\n/** Ячейки строки таблицы: крайние палки не считаются столбцами. */\nfunction tableCells(line: string): IRtMarkdownInlineNode[][] {\n const trimmed: string = line.trim().replace(/^\\|/, '').replace(/\\|$/, '');\n\n return trimmed.split('|').map((cell: string): IRtMarkdownInlineNode[] => parseInline(cell.trim()));\n}\n\n/** Строка-разделитель под шапкой таблицы. */\nfunction isTableDivider(line: string): boolean {\n const trimmed: string = line.trim();\n\n return trimmed.includes('-') && [...trimmed].every((char: string): boolean => DIVIDER_CHARS.includes(char));\n}\n\n/** Куски нескольких строк подряд, разделённые переносом. */\nfunction joinLines(lines: readonly string[]): IRtMarkdownInlineNode[] {\n const nodes: IRtMarkdownInlineNode[] = [];\n\n lines.forEach((line: string, index: number): void => {\n if (index > 0) {\n nodes.push(breakNode());\n }\n\n nodes.push(...parseInline(line));\n });\n\n return nodes;\n}\n\n/** Пункт списка, если эта строка им является. */\nfunction listItemOf(line: string, ordered: boolean): IRtMarkdownListItem | null {\n const match: RegExpExecArray | null = (ordered ? ORDERED_LINE : BULLET_LINE).exec(line);\n\n if (match === null) {\n return null;\n }\n\n const level: number = Math.floor(match[1].length / SPACES_PER_LEVEL);\n\n return { level, levelName: String(level), content: parseInline(match[2]) };\n}\n\n/** Блок кода: от ограды до ограды либо до конца текста. */\nfunction readCode(lines: readonly string[], start: number): IReadBlock | null {\n if (!lines[start].startsWith(FENCE)) {\n return null;\n }\n\n const language: string = lines[start].slice(FENCE.length).trim();\n let end: number = start + 1;\n\n while (end < lines.length && !lines[end].startsWith(FENCE)) {\n end += 1;\n }\n\n return {\n next: end < lines.length ? end + 1 : end,\n block: makeBlock(ERtMarkdownBlock.Code, {\n code: lines.slice(start + 1, end).join('\\n'),\n language: language === '' ? null : language,\n }),\n };\n}\n\n/** Заголовок. */\nfunction readHeading(lines: readonly string[], start: number): IReadBlock | null {\n const match: RegExpExecArray | null = HEADING_LINE.exec(lines[start]);\n\n if (match === null) {\n return null;\n }\n\n return {\n next: start + 1,\n block: makeBlock(ERtMarkdownBlock.Heading, {\n level: match[1].length,\n levelName: String(match[1].length),\n content: parseInline(match[2]),\n }),\n };\n}\n\n/** Цитата: подряд идущие строки со знаком цитаты. */\nfunction readQuote(lines: readonly string[], start: number): IReadBlock | null {\n if (!QUOTE_LINE.test(lines[start])) {\n return null;\n }\n\n const taken: string[] = [];\n let end: number = start;\n\n while (end < lines.length && QUOTE_LINE.test(lines[end])) {\n const match: RegExpExecArray | null = QUOTE_LINE.exec(lines[end]);\n\n taken.push(match === null ? '' : match[1]);\n end += 1;\n }\n\n return { next: end, block: makeBlock(ERtMarkdownBlock.Quote, { content: joinLines(taken) }) };\n}\n\n/** Список: подряд идущие пункты одного рода. */\nfunction readList(lines: readonly string[], start: number): IReadBlock | null {\n const ordered: boolean = ORDERED_LINE.test(lines[start]);\n\n if (!ordered && !BULLET_LINE.test(lines[start])) {\n return null;\n }\n\n const items: IRtMarkdownListItem[] = [];\n let end: number = start;\n let item: IRtMarkdownListItem | null = listItemOf(lines[end], ordered);\n\n while (item !== null) {\n items.push(item);\n end += 1;\n item = end < lines.length ? listItemOf(lines[end], ordered) : null;\n }\n\n return { next: end, block: makeBlock(ERtMarkdownBlock.List, { items, ordered }) };\n}\n\n/** Таблица: строка шапки, разделитель под ней и строки значений. */\nfunction readTable(lines: readonly string[], start: number): IReadBlock | null {\n const hasDivider: boolean = start + 1 < lines.length && isTableDivider(lines[start + 1]);\n\n if (!lines[start].includes('|') || !hasDivider) {\n return null;\n }\n\n const rows: IRtMarkdownInlineNode[][][] = [];\n let end: number = start + 2;\n\n while (end < lines.length && lines[end].includes('|')) {\n rows.push(tableCells(lines[end]));\n end += 1;\n }\n\n return { next: end, block: makeBlock(ERtMarkdownBlock.Table, { head: tableCells(lines[start]), rows }) };\n}\n\n/** Строки, по которым видно, что абзац кончился и начался блок другого рода. */\nconst BLOCK_STARTS: readonly RegExp[] = [HEADING_LINE, QUOTE_LINE, BULLET_LINE, ORDERED_LINE];\n\n/** Признак того, что строка начинает блок другого рода. */\nfunction startsOtherBlock(line: string): boolean {\n if (line.trim() === '' || line.startsWith(FENCE)) {\n return true;\n }\n\n return BLOCK_STARTS.some((start: RegExp): boolean => start.test(line));\n}\n\n/** Абзац: строки до пустой строки или до начала блока другого рода. */\nfunction readParagraph(lines: readonly string[], start: number): IReadBlock {\n const taken: string[] = [];\n let end: number = start;\n\n while (end < lines.length && !startsOtherBlock(lines[end])) {\n taken.push(lines[end]);\n end += 1;\n }\n\n return { next: end, block: makeBlock(ERtMarkdownBlock.Paragraph, { content: joinLines(taken) }) };\n}\n\n/** Порядок читателей: первым отвечает тот, чью разметку строка несёт. */\nconst BLOCK_READERS: readonly TBlockReader[] = [readCode, readHeading, readTable, readQuote, readList];\n\n/** Блок, начинающийся на этой строке. Ничей — значит абзац. */\nfunction readBlockAt(lines: readonly string[], start: number): IReadBlock {\n for (const reader of BLOCK_READERS) {\n const read: IReadBlock | null = reader(lines, start);\n\n if (read !== null) {\n return read;\n }\n }\n\n return readParagraph(lines, start);\n}\n\n/**\n * Разбирает текст груза в дерево узлов показа.\n *\n * @param source Текст записи. Пустота и отсутствие значения дают пустой список блоков.\n * @returns Блоки показа по порядку.\n */\nexport function parseMarkdown(source: string | null | undefined): IRtMarkdownBlockNode[] {\n if (source === null || source === undefined || source.trim() === '') {\n return [];\n }\n\n const lines: string[] = source\n .replace(/\\r\\n?/g, '\\n')\n .split('\\n')\n .map((line: string): string => line.replace(/\\t/g, TAB_WIDTH));\n const blocks: IRtMarkdownBlockNode[] = [];\n let index: number = 0;\n\n while (index < lines.length) {\n const read: IReadBlock | null = lines[index].trim() === '' ? null : readBlockAt(lines, index);\n\n if (read === null) {\n index += 1;\n } else {\n blocks.push(read.block);\n index = read.next;\n }\n }\n\n return blocks;\n}\n","import { IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp } from './quill-delta.model';\n\n/** Значение — ровно `true` (флаговые атрибуты). */\nfunction isTrue(value: unknown): boolean {\n return value === true;\n}\n\n/** Per-key валидаторы whitelist: ключа нет в карте ⇒ атрибут запрещён. */\nconst ATTR_VALIDATORS: ReadonlyMap<string, (value: unknown) => boolean> = new Map<string, (value: unknown) => boolean>([\n ['bold', isTrue],\n ['italic', isTrue],\n ['underline', isTrue],\n ['strike', isTrue],\n ['blockquote', isTrue],\n ['code-block', isTrue],\n ['list', (value: unknown): boolean => value === 'ordered' || value === 'bullet'],\n ['header', (value: unknown): boolean => value === 1 || value === 2 || value === 3],\n]);\n\n/** Объект без прототипных сюрпризов — узкая guard-проверка. */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\n/** Все ключи атрибутов — из whitelist и с валидным значением. */\nfunction isValidAttributes(raw: Record<string, unknown>): boolean {\n return Object.keys(raw).every((key: string): boolean => {\n const validate: ((value: unknown) => boolean) | undefined = ATTR_VALIDATORS.get(key);\n return validate !== undefined && validate(raw[key]);\n });\n}\n\n/** Нормализует одну op; `null` — если форма нарушена (весь delta тогда отвергается). */\nfunction normalizeOp(op: unknown): IQuillDeltaOp | null {\n if (!isRecord(op)) {\n return null;\n }\n const insert: unknown = op['insert'];\n if (typeof insert !== 'string') {\n return null;\n }\n if (Object.keys(op).some((key: string): boolean => key !== 'insert' && key !== 'attributes')) {\n return null;\n }\n const attrs: unknown = op['attributes'];\n if (attrs === undefined) {\n return { insert };\n }\n if (!isRecord(attrs) || Object.keys(attrs).length === 0 || !isValidAttributes(attrs)) {\n return null;\n }\n return { insert, attributes: attrs as unknown as IQuillDeltaAttributes };\n}\n\n/**\n * Приводит сырой вывод Quill 2 к контракту `IQuillDelta`. Quill 2 хранит в\n * `code-block` язык подсветки (по умолчанию строку `\"plain\"`), тогда как контракт\n * и бэк ждут флаг `true`; без приведения бэк отвергает delta как\n * `invalid_message_delta`. Остальные атрибуты уже в нужной форме — их не трогаем.\n */\nexport function coerceQuillDeltaOutput(delta: IQuillDelta): IQuillDelta {\n return {\n ops: delta.ops.map((op: IQuillDeltaOp): IQuillDeltaOp => {\n const attrs: Record<string, unknown> | undefined = op.attributes as unknown as Record<string, unknown> | undefined;\n const codeBlock: unknown = attrs?.['code-block'];\n if (attrs === undefined || codeBlock === undefined || codeBlock === true) {\n return op;\n }\n return {\n ...op,\n attributes: { ...op.attributes, 'code-block': true },\n };\n }),\n };\n}\n\n/**\n * Defensive-нормализация тела rich-сообщения: пропускает только строго валидную\n * форму (top-level `{ops}`, `ops` непустой массив, `insert` — строка, `attributes`\n * непустой и из whitelist), иначе `null` — сообщение отрендерится plain-фолбэком\n * по `message`. Бэк гарантирует форму, но рендер не доверяет входу вслепую.\n */\nexport function normalizeQuillDelta(raw: unknown): IQuillDelta | null {\n if (!isRecord(raw)) {\n return null;\n }\n const ops: unknown = raw['ops'];\n if (!Array.isArray(ops) || ops.length === 0) {\n return null;\n }\n const clean: IQuillDeltaOp[] = [];\n for (const op of ops) {\n const normalized: IQuillDeltaOp | null = normalizeOp(op);\n if (normalized === null) {\n return null;\n }\n clean.push(normalized);\n }\n return { ops: clean };\n}\n","/**\n * Тело сообщения чата в rich-формате Quill delta. Форма и whitelist атрибутов\n * зафиксированы контрактом бэка: только текстовые вставки + ограниченный набор\n * форматирования, никаких ссылок и вложенных объектов (анонимность).\n */\n\n/** Атрибуты форматирования Quill delta — строго whitelist (без link/media). */\nexport interface IQuillDeltaAttributes {\n bold?: true;\n italic?: true;\n underline?: true;\n strike?: true;\n blockquote?: true;\n 'code-block'?: true;\n list?: 'ordered' | 'bullet';\n header?: 1 | 2 | 3;\n}\n\n/** Одна операция delta: текстовая вставка + опциональные атрибуты. */\nexport interface IQuillDeltaOp {\n insert: string;\n attributes?: IQuillDeltaAttributes;\n}\n\n/** Тело сообщения в rich-формате Quill delta. */\nexport interface IQuillDelta {\n ops: IQuillDeltaOp[];\n}\n","import { MonoTypeOperatorFunction, debounce, timer } from 'rxjs';\n\n/** Единый дебаунс полей поиска (мс) — одинаковый по всему киту. */\nexport const SEARCH_DEBOUNCE_MS: number = 300;\n\n/**\n * Дебаунс поля поиска с мгновенным сбросом. Непустой ввод откладывается на\n * SEARCH_DEBOUNCE_MS (не бить фильтром/запросом на каждый символ), пустое\n * значение — очистка крестиком или удаление до конца — применяется сразу,\n * без задержки. Иначе сброс поиска ощущается лагающим.\n */\nexport function searchDebounce(): MonoTypeOperatorFunction<string> {\n return debounce((value: string): ReturnType<typeof timer> => timer(value.trim() === '' ? 0 : SEARCH_DEBOUNCE_MS));\n}\n","/** Признак материального набора в разметке: атрибут или класс, которые ставит приложение. */\nexport const RT_MATERIAL_PRESET_SELECTOR: string = \"[data-preset='material'],.rt-preset-material\";\n\n/** Класс набора, который несёт узел вне поддерева, где набор объявлен. */\nexport const RT_MATERIAL_PRESET_CLASS: string = 'rt-preset-material';\n\n/**\n * Классы набора для панели наложения, открытой от `origin`. Панель лежит в конце страницы, вне\n * контейнера с признаком набора, и назначения набора до неё не доходят: она берёт класс набора\n * сама, если признак стоит над узлом, от которого она открыта. Кит читает признак приложения, а не\n * ставит свой.\n */\nexport function materialPresetClassesOf(origin: Element): string[] {\n return origin.closest(RT_MATERIAL_PRESET_SELECTOR) ? [RT_MATERIAL_PRESET_CLASS] : [];\n}\n\n/**\n * Классы набора для панели, которую открывает сервис без узла-источника: диалог, боковая панель.\n * Источником служит узел в фокусе в момент открытия — нажатая кнопка. Панель, открытая не по\n * нажатию, набор от фокуса не берёт; для неё остаётся `panelClass` приложения.\n */\nexport function materialPresetClassesOfFocus(document: Document): string[] {\n const focused: Element | null = document.activeElement;\n return focused ? materialPresetClassesOf(focused) : [];\n}\n\n/** Атрибут местного куска темы — его ставит `rtTheme` и читают правила куска в стилях кита. */\nexport const RT_THEME_SCOPE_ATTRIBUTE: string = 'data-theme';\n\n/**\n * Тема местного куска, от которого открыта панель, — значение ближайшего `data-theme` над `origin`.\n * Панель лежит в конце страницы, вне куска, и без этого рисуется темой страницы: список тёмной\n * карточки на светлой странице выходил светлым. Тема корня страницы не возвращается: её панель\n * наследует и так, а признак на панели повторил бы весь набор назначений ещё раз.\n */\nexport function themeScopeOf(origin: Element): string | null {\n const scope: Element | null = origin.closest(`[${RT_THEME_SCOPE_ATTRIBUTE}]`);\n if (scope === null || scope === origin.ownerDocument.documentElement) {\n return null;\n }\n\n return scope.getAttribute(RT_THEME_SCOPE_ATTRIBUTE) || null;\n}\n\nfunction applyThemeScope(pane: HTMLElement, theme: string | null): void {\n if (theme === null) {\n pane.removeAttribute(RT_THEME_SCOPE_ATTRIBUTE);\n } else {\n pane.setAttribute(RT_THEME_SCOPE_ATTRIBUTE, theme);\n }\n}\n\n/**\n * Переносит тему куска `origin` на коробку панели или снимает её, если кусок ушёл. Зовётся на\n * каждом открытии: коробка переживает закрытие, а кусок вокруг источника мог смениться.\n */\nexport function carryThemeScope(pane: HTMLElement, origin: Element): void {\n applyThemeScope(pane, themeScopeOf(origin));\n}\n\n/**\n * Тема местного куска для панели, которую открывает сервис без узла-источника: диалог, боковая\n * панель. Источником служит узел в фокусе в момент открытия — нажатая кнопка, как у\n * `materialPresetClassesOfFocus`. Без фокуса, как и под темой корня, возвращает `null`.\n */\nexport function themeScopeOfFocus(document: Document): string | null {\n const focused: Element | null = document.activeElement;\n return focused ? themeScopeOf(focused) : null;\n}\n\n/**\n * Переносит на коробку панели тему куска, где стоит фокус. Зовётся до того, как панель заберёт\n * фокус себе: после этого `activeElement` уже внутри панели, в конце страницы, вне куска.\n */\nexport function carryThemeScopeOfFocus(pane: HTMLElement, document: Document): void {\n applyThemeScope(pane, themeScopeOfFocus(document));\n}\n","/**\n * Контракты `rt-data-table` — таблицы первого кита во втором, рядом с `rt-table` и вместо неё не\n * встающей.\n *\n * Описание колонки перенесено из первого кита поле в поле, вместе с полями, которых таблица не\n * рисует: экран приложения переезжает без правок описаний колонок и сохранённых настроек,\n * меняются только имена. Значения перечислений те же строки, что в первом ките.\n */\nimport { InjectionToken } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\nimport { IFilterModel, ISortModel, TFilterOperatorType } from '@rt-tools/utils';\n\n/** Вид колонки: решает, чем рисуется значение ячейки. */\nexport enum ERtDataTableColumnType {\n DATE = 'date',\n PERCENT = 'percent',\n ARRAY = 'array',\n BOOLEAN = 'boolean',\n TEXT = 'text',\n CURRENCY = 'currency',\n CUSTOM = 'custom',\n}\n\n/** Чем колонка отбирает в строке отбора. */\nexport enum ERtDataTableFilterType {\n TEXT = 'text',\n NUMBER = 'number',\n SELECT = 'select',\n DATE = 'date',\n}\n\n/** Цвет значка ячейки. */\nexport enum ERtDataTableCellColor {\n NEUTRAL = 'neutral',\n DANGER = 'danger',\n WARNING = 'warning',\n SUCCESS = 'success',\n EMPTY = 'empty',\n}\n\n/**\n * Условия отбора таблицы. Ключ — имя свойства колонки, а не ключ записи: отбирают по колонке.\n */\nexport type TRtDataTableFilters<T> = Array<IFilterModel<Extract<keyof T, string>>>;\n\n/**\n * Класс материального набора на узле. Стоит на хосте семьи и уходит панелям, которые семья открывает\n * поверх страницы: вне хоста признак вида до них иначе не доходит.\n */\nexport const RT_PRESET_MATERIAL_CLASS: string = 'rt-preset-material';\n\n/**\n * Набор оформления таблице даёт узел вокруг неё. Так делает список: класс набора стоит на нём, и\n * таблица внутри себе класс не ставит. Поставь она его, кусок набора объявил бы на ней весь набор\n * назначений заново, и значение, заданное приложением на списке, до таблицы бы не дошло.\n */\nexport const RT_DATA_TABLE_PRESET_FROM_HOST: InjectionToken<boolean> = new InjectionToken<boolean>('RT_DATA_TABLE_PRESET_FROM_HOST');\n\nexport namespace IRtDataTable {\n /**\n * Вид семьи: `material` — вид первого кита, материальный набор на самом узле; `own` — свой вид\n * второго кита. Умолчание — вид первого кита: семья переехала оттуда и выглядит как там.\n */\n export type Look = 'material' | 'own';\n\n export type CellColor = `${ERtDataTableCellColor}`;\n\n export type ColumnType = `${ERtDataTableColumnType}`;\n\n export type FilterType = `${ERtDataTableFilterType}`;\n\n export type Align = 'right' | 'left' | 'center';\n\n export interface Column<T = Record<string, unknown>> extends Record<string, unknown> {\n align: IRtDataTable.Align;\n /* Имя свойства записи, только строковое: им же колонка называет себя строке отбора, а та\n берёт строку — у первого кита имя свойства тоже всегда строка. */\n propName: Extract<keyof T, string>;\n type: IRtDataTable.ColumnType;\n copyable: boolean;\n header: IRtDataTable.Header;\n\n sorting?: ISortModel<NonNullable<Extract<keyof T, string>>>;\n /** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */\n filtering?: boolean;\n /** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */\n filteringMultiple?: boolean;\n copyBtnAlign?: 'right' | 'left';\n\n width?: string;\n minWidth?: string;\n\n icon?: IRtDataTable.Icon;\n iconTransform?: (value: T[keyof T]) => string;\n /** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */\n href?: string;\n /** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */\n className?: string;\n tooltip?: string;\n transform?: (value: T[keyof T]) => string | number;\n\n filterType?: IRtDataTable.FilterType;\n defaultFilterOperator?: TFilterOperatorType;\n filterOperators?: TFilterOperatorType[];\n filterSelectOptions?: string[];\n\n displayName?: string;\n orderIndex?: number;\n hidden?: boolean;\n /** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */\n fixed?: boolean;\n }\n\n export interface ColumnFilter {\n propName: string;\n value: string;\n }\n\n export interface Header {\n align: IRtDataTable.Align;\n label: string;\n\n className?: string;\n tooltip?: string;\n icon?: IRtDataTable.Icon;\n }\n\n /**\n * Значок колонки. Имя — имя первого кита; рисует его набор кита через перечень соответствий,\n * а шаблон значка, отданный приложением, рисует его сам.\n */\n export interface Icon {\n glyph: string;\n\n color?: IRtDataTable.CellColor;\n tooltip?: string;\n visible?: boolean;\n placement?: 'left' | 'right';\n /**\n * Контурный рисунок вместо залитого, как у первого кита: без признака значок колонки залит.\n * Заливку рисует материальный набор; свой набор кита рисует значок одним рисунком.\n */\n outlined?: boolean;\n }\n\n export namespace Config {\n /** Сохранённые настройки таблицы: та же форма, что у первого кита, — их читает и новое семейство. */\n export interface Data<T> {\n isVerticalScrollbarShown: boolean;\n isHorizontalScrollbarShown: boolean;\n columns: Array<IRtDataTable.Column<T>>;\n }\n\n export interface Form<T> {\n isVerticalScrollbarShown: FormControl<boolean>;\n isHorizontalScrollbarShown: FormControl<boolean>;\n columns: FormControl<(keyof T)[]>;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/** Один шаг шкалы скругления. Значения шагов лежат в токенах `--rt-radius-<шаг>`. */\nexport type TRtRadius = 'none' | 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n\n/** Шаги скругления кита — вся шкала, от квадрата до полного круга, по порядку. */\nexport const RT_RADIUS_STEPS: readonly TRtRadius[] = ['none', 'xs', 'sm', 'ms', 'md', 'lg', 'xl', '2xl', 'full'];\n\n/**\n * Шаг, который компонент берёт, когда вход скругления пуст.\n *\n * Большинству компонентов он не нужен: их скругление по умолчанию стоит в их\n * собственных стилях. Токен нужен тому, у кого умолчание задаёт приложение, —\n * кнопке, чья настройка кита называет шаг для всех кнопок сразу.\n */\nexport const RT_RADIUS_DEFAULT: InjectionToken<TRtRadius | null> = new InjectionToken<TRtRadius | null>('RT_RADIUS_DEFAULT');\n","/**\n * Имена иконок rt-icon. Набор лежит в `assets/icons` пакета, откуда сборка\n * приложения кладёт его туда, куда указывает `provideRtIcons()`. Большинство\n * файлов пришло из фрейма iconsLib\n * (https://www.figma.com/design/x1rxhwomHt1pQRUcM3Zqjb?node-id=2922-7969).\n *\n * При добавлении новой иконки: положить SVG в `assets/icons` пакета, добавить\n * slug сюда, прогнать pnpm exec eslint --fix + pnpm exec prettier --write по этому файлу.\n * Имя без файла гасит только свой значок: реестр ходит за каждым именем отдельно, и промах\n * виден пустым местом на экране, а не отказом в прогоне.\n *\n * Аннотация типа намеренно не указывается: явный `readonly string[]` потерял бы узкий\n * литеральный тип, нужный для `IRtIcon.Name` (см. `rt-icon.model.ts`). `as const`\n * сохраняет литеральные ключи.\n */\n\n// eslint-disable-next-line @typescript-eslint/typedef -- аннотация стёрла бы литеральный тип, на котором стоит IRtIcon.Name\nexport const iconsName = [\n 'alarm-clock',\n 'align-center',\n 'align-justify',\n 'align-left',\n 'align-right',\n 'angle-double-down',\n 'angle-double-left',\n 'angle-double-right',\n 'angle-double-up',\n 'angle-down',\n 'angle-left',\n 'angle-right',\n 'angle-up',\n 'arrow-bottom-old',\n 'arrow-circle-down',\n 'arrow-circle-left',\n 'arrow-circle-right',\n 'arrow-circle-up',\n 'arrow-down',\n 'arrow-down-left',\n 'arrow-down-long',\n 'arrow-down-right',\n 'arrow-left',\n 'arrow-left-old',\n 'arrow-leftlong',\n 'arrow-right',\n 'arrow-right-old',\n 'arrow-rightlong',\n 'arrow-top-old',\n 'arrow-up',\n 'arrow-up-left',\n 'arrow-up-long',\n 'arrow-up-right',\n 'arrows',\n 'arrows-h',\n 'arrows-v',\n 'at',\n 'attach-docx-doc',\n 'attach-eml',\n 'attach-folder',\n 'attach-jpg-png',\n 'attach-msg',\n 'attach-other',\n 'attach-pdf',\n 'attach-ppt-pptx',\n 'attach-txt',\n 'attach-webp',\n 'attach-xlsx-xls',\n 'attach-zip-rar',\n 'ban',\n 'bars',\n 'bell',\n 'bolt',\n 'book',\n 'bookmark',\n 'bookmark-fill',\n 'bot',\n 'box',\n 'briefcase',\n 'building',\n 'burger',\n 'calendar',\n 'calendar-minus',\n 'calendar-plus',\n 'calendar-times',\n 'camera',\n 'chart-bar',\n 'chart-line',\n 'chart-line-2',\n 'chart-pie',\n 'chat-error',\n 'check',\n 'check-circle',\n 'check-double',\n 'check-square',\n 'chevron-circle-down',\n 'chevron-circle-left',\n 'chevron-circle-right',\n 'chevron-circle-up',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'chevron-up-down',\n 'clock',\n 'clone',\n 'close',\n 'cloud',\n 'cloud-download',\n 'cloud-upload',\n 'code',\n 'cog',\n 'comment',\n 'comments',\n 'copy',\n 'credit-card',\n 'database',\n 'desktop',\n 'directions',\n 'directions-alt',\n 'doc-success',\n 'docBox',\n 'ellipsis-h',\n 'ellipsis-v',\n 'email',\n 'equals',\n 'exclamation-circle',\n 'external-link',\n 'eye',\n 'eye-slash',\n 'file',\n 'file-excel',\n 'file-o',\n 'file-pdf',\n 'filter',\n 'filter-fill',\n 'filter-slash',\n 'flag',\n 'flag-fill',\n 'flagman-a',\n 'flagman-b',\n 'flagman-c',\n 'flagman-q',\n 'folder',\n 'folder-open',\n 'fork-spoon',\n 'fullscreen',\n 'globe',\n 'groupen',\n 'hashtag',\n 'heart',\n 'heart-fill',\n 'help',\n 'history',\n 'historyUpdate',\n 'home',\n 'ico-age',\n 'ico-alert',\n 'ico-b',\n 'ico-babyPacifier',\n 'ico-bank',\n 'ico-bill',\n 'ico-bill-striked',\n 'ico-bookmark-right',\n 'ico-books',\n 'ico-burger',\n 'ico-businessman',\n 'ico-c',\n 'ico-calendar',\n 'ico-case',\n 'ico-change',\n 'ico-change-2',\n 'ico-check',\n 'ico-checked',\n 'ico-checked-alert',\n 'ico-cheker',\n 'ico-chevron',\n 'ico-chevron-down',\n 'ico-close',\n 'ico-config',\n 'ico-contragents',\n 'ico-control',\n 'ico-copy',\n 'ico-counterparty',\n 'ico-coworkers',\n 'ico-debt',\n 'ico-director',\n 'ico-doc',\n 'ico-docDocprimary',\n 'ico-docs',\n 'ico-door',\n 'ico-dotted-more-horizontal',\n 'ico-doubleArrows',\n 'ico-download',\n 'ico-eagle',\n 'ico-edit',\n 'ico-edo',\n 'ico-email',\n 'ico-email1',\n 'ico-error',\n 'ico-exit',\n 'ico-eye',\n 'ico-eyeClose',\n 'ico-faq',\n 'ico-farm',\n 'ico-filter',\n 'ico-fine',\n 'ico-gasket',\n 'ico-generator',\n 'ico-grade',\n 'ico-grade-2',\n 'ico-ground-area-transport',\n 'ico-groundArea',\n 'ico-groupen',\n 'ico-hands',\n 'ico-help',\n 'ico-ico-history',\n 'ico-info',\n 'ico-infoFill',\n 'ico-invite',\n 'ico-key',\n 'ico-keyFill',\n 'ico-letter',\n 'ico-level',\n 'ico-level-down',\n 'ico-level-up',\n 'ico-licence',\n 'ico-limit',\n 'ico-link',\n 'ico-link-2',\n 'ico-listadd',\n 'ico-listing',\n 'ico-lock',\n 'ico-locked',\n 'ico-megafon',\n 'ico-new-window',\n 'ico-notification',\n 'ico-notificationOff',\n 'ico-percent-alert',\n 'ico-plus',\n 'ico-referal',\n 'ico-repeat',\n 'ico-reset',\n 'ico-return',\n 'ico-search',\n 'ico-setting',\n 'ico-settings',\n 'ico-site',\n 'ico-snowflake',\n 'ico-spec',\n 'ico-statement',\n 'ico-subuser',\n 'ico-sun',\n 'ico-sunrise',\n 'ico-support',\n 'ico-target',\n 'ico-team',\n 'ico-tech',\n 'ico-telegram',\n 'ico-time',\n 'ico-trash',\n 'ico-try',\n 'ico-txt',\n 'ico-unlock',\n 'ico-upload',\n 'ico-user',\n 'ico-user-2',\n 'ico-users',\n 'ico-users-2',\n 'ico-video-play',\n 'ico-warning',\n 'ico-warranty',\n 'ico-warranty-shield',\n 'ico-xml',\n 'id-card',\n 'image',\n 'images',\n 'inbox',\n 'info',\n 'info-circle',\n 'layers',\n 'link',\n 'list',\n 'lock',\n 'lock-open',\n 'map',\n 'mapYandex',\n 'microsoft',\n 'minus',\n 'minus-circle',\n 'mobile',\n 'money-bill',\n 'moon',\n 'paperclip',\n 'pause',\n 'pencil',\n 'percentage',\n 'phone',\n 'pie-chart',\n 'pin',\n 'plus-circle',\n 'power-off',\n 'print',\n 'qrcode',\n 'question-circle',\n 'refresh',\n 'replay',\n 'reply',\n 'reset',\n 'search',\n 'search-minus',\n 'search-plus',\n 'send',\n 'server',\n 'share-alt',\n 'shield',\n 'sitemap',\n 'sliders-v',\n 'social-facebook',\n 'social-instagram',\n 'social-kakaotalk',\n 'social-line',\n 'social-naver',\n 'social-pinterest',\n 'social-tiktok',\n 'social-vk',\n 'social-wechat',\n 'social-x',\n 'social-xiaohongshu',\n 'social-youtube',\n 'sort-alpha-alt-down',\n 'sort-alpha-alt-up',\n 'sort-alpha-down',\n 'sort-alpha-up',\n 'sort-alt',\n 'sort-alt-slash',\n 'sort-amount-down',\n 'sort-amount-down-alt',\n 'sort-amount-up',\n 'sort-amount-up-alt',\n 'sort-numeric-alt-down',\n 'sort-numeric-alt-up',\n 'sort-numeric-down',\n 'sort-numeric-up',\n 'sparkle',\n 'spinner',\n 'star',\n 'star-fill',\n 'stock',\n 'stop',\n 'sync',\n 'table',\n 'tablet',\n 'tag',\n 'tags',\n 'telegram',\n 'th-large',\n 'thumb-down',\n 'thumb-up',\n 'ticket',\n 'times-circle',\n 'trash',\n 'trash-x',\n 'troubleshoot',\n 'undo',\n 'unlock',\n 'user',\n 'user-edit',\n 'user-minus',\n 'user-off',\n 'user-plus',\n 'users',\n 'video',\n 'volume-down',\n 'volume-off',\n 'volume-up',\n 'wallet',\n 'warning',\n 'wifi',\n 'window-maximize',\n 'window-minimize',\n] as const;\n","/**\n * Ядро кита: настройки, словари, среда исполнения, токены, чистые функции и модели,\n * на которых стоят настройки. Компоненты берут это отсюда, друг у друга — через свои точки входа.\n */\nexport * from './config';\nexport * from './i18n';\nexport * from './platform';\nexport * from './pipes';\nexport * from './scroll';\nexport * from './tokens';\nexport * from './util';\nexport * from './components/button/rt-button.model';\nexport * from './components/data-table/rt-data-table.model';\nexport * from './components/input/rt-input.model';\nexport * from './components/radius/rt-radius.model';\nexport * from './components/icon/rt-icon.model';\nexport * from './components/icon/rt-icon-names';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './core';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rt-tools-ui-kit-v2-core.mjs","sources":["../../../projects/ui-kit-v2/src/lib/config/rt-kit-config.providers.ts","../../../projects/ui-kit-v2/src/lib/i18n/rt-kit-labels.en.ts","../../../projects/ui-kit-v2/src/lib/i18n/rt-kit-labels.providers.ts","../../../projects/ui-kit-v2/src/lib/i18n/rt-kit-label.pipe.ts","../../../projects/ui-kit-v2/src/lib/platform/breakpoints.service.ts","../../../projects/ui-kit-v2/src/lib/platform/message-bus.ts","../../../projects/ui-kit-v2/src/lib/platform/notification-bus.service.ts","../../../projects/ui-kit-v2/src/lib/platform/rt-theme-scope.directive.ts","../../../projects/ui-kit-v2/src/lib/platform/storage-keys.enum.ts","../../../projects/ui-kit-v2/src/lib/platform/theme.service.ts","../../../projects/ui-kit-v2/src/lib/pipes/rt-day-stamp.pipe.ts","../../../projects/ui-kit-v2/src/lib/scroll/infinite-scroll.directive.ts","../../../projects/ui-kit-v2/src/lib/tokens/rt-design-tokens.ts","../../../projects/ui-kit-v2/src/lib/util/file-name-from-url.ts","../../../projects/ui-kit-v2/src/lib/util/format-file-size.ts","../../../projects/ui-kit-v2/src/lib/util/markdown.model.ts","../../../projects/ui-kit-v2/src/lib/util/markdown-inline.ts","../../../projects/ui-kit-v2/src/lib/util/markdown-parse.ts","../../../projects/ui-kit-v2/src/lib/util/quill-delta.helper.ts","../../../projects/ui-kit-v2/src/lib/util/quill-delta.model.ts","../../../projects/ui-kit-v2/src/lib/util/search-debounce.ts","../../../projects/ui-kit-v2/src/lib/util/material-preset.ts","../../../projects/ui-kit-v2/src/lib/components/data-table/rt-data-table.model.ts","../../../projects/ui-kit-v2/src/lib/components/radius/rt-radius.model.ts","../../../projects/ui-kit-v2/src/lib/components/icon/rt-icon-names.ts","../../../projects/ui-kit-v2/src/lib/core.ts","../../../projects/ui-kit-v2/src/lib/rt-tools-ui-kit-v2-core.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';\n\nimport { IRtKitConfig } from './rt-kit-config.model';\n\n/**\n * Настройки кита, которые приложение дало на старте.\n *\n * Токен объявлен **значением**, а не сигналом, и этим отличается от подписей и\n * от темы: настройки — снимок старта. Их читают один раз, когда узел создан, и\n * поздняя подмена на уже нарисованное не действует. Тому, что меняется на живой\n * странице, место во входе узла или в службе темы.\n *\n * Умолчание — пустой объект: кит без единой настройки рисует то же, что рисовал\n * до их появления.\n */\nexport const RT_KIT_CONFIG: InjectionToken<IRtKitConfig.Config> = new InjectionToken<IRtKitConfig.Config>('RT_KIT_CONFIG', {\n providedIn: 'root',\n factory: (): IRtKitConfig.Config => ({}),\n});\n\n/**\n * Разрешение умолчания — одно место на весь кит, а не повтор в каждом узле.\n *\n * Порядок от частного к общему: вход на месте вызова, умолчание узла, общее\n * умолчание, умолчание кита. Первый найденный ответ выигрывает, поиск на нём\n * останавливается. Вход на месте сюда не приходит вовсе — он перебивает всё\n * тем, что значение отсюда становится лишь тем, **с чего вход стартует**.\n *\n * Зовётся в поле класса: там есть контекст внедрения.\n *\n * ```typescript\n * readonly #size: IButton.Size = rtKitDefault('button', (it: IRtKitConfig.Button): IButton.Size | undefined => it.size, 'md');\n * public readonly size: InputSignal<IButton.Size> = input<IButton.Size>(this.#size);\n * ```\n *\n * @param node Имя узла — ключ раздела умолчаний по узлам.\n * @param pick Что взять из умолчаний этого узла.\n * @param fallback Умолчание кита: то, что рисуется, когда не сказано ничего.\n * @param pickCommon Что взять из общих умолчаний, если поле живёт и там. Поля,\n * стоящего на обоих уровнях, сегодня нет ни одного — ступень объявлена под\n * поле, которое назовёт владелец, и до тех пор не зовётся.\n */\nexport function rtKitDefault<NODE extends keyof IRtKitConfig.Components, VALUE>(\n node: NODE,\n pick: (settings: NonNullable<IRtKitConfig.Components[NODE]>) => VALUE | undefined,\n fallback: VALUE,\n pickCommon?: (settings: IRtKitConfig.Global) => VALUE | undefined\n): VALUE {\n const config: IRtKitConfig.Config = inject(RT_KIT_CONFIG);\n const nodeSettings: IRtKitConfig.Components[NODE] | undefined = config.components?.[node];\n const fromNode: VALUE | undefined = nodeSettings === undefined ? undefined : pick(nodeSettings);\n\n if (fromNode !== undefined) {\n return fromNode;\n }\n\n const global: IRtKitConfig.Global | undefined = config.global;\n const fromCommon: VALUE | undefined = pickCommon === undefined || global === undefined ? undefined : pickCommon(global);\n\n return fromCommon ?? fallback;\n}\n\n/**\n * Отдаёт киту настройки приложения.\n *\n * Раздача необязательна: без неё работают умолчания кита. Частично заданный\n * объект не обнуляет остальное — неназванное поле проваливается на уровень\n * выше.\n *\n * ```typescript\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideRtKit({\n * global: { theme: 'auto' },\n * components: { button: { size: 'lg' }, aside: { closeOnEscape: false } },\n * }),\n * ],\n * };\n * ```\n *\n * @param config Настройки целиком. Всё в них необязательно.\n */\nexport function provideRtKit(config: IRtKitConfig.Config): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: RT_KIT_CONFIG, useValue: config }]);\n}\n","/**\n * Английские подписи кита — умолчание, а не локализация.\n *\n * Кит рисует часть текста сам: кнопки диалогов, тексты ошибок поля, расшифровки\n * иконок для скринридера. Своего языка у него нет и быть не может — его знает\n * приложение и отдаёт функцией-переводчиком (`provideRtKitLabels`). Этот набор\n * стоит под ней умолчанием, чтобы кит без единой настройки не рисовал пустоты:\n * среди ключей много `aria`-подписей, и пустая там означает кнопку без имени\n * для скринридера.\n *\n * Набор задаёт и **перечень ключей**: `TRtKitLabelKey` выводится отсюда, поэтому\n * опечатка в ключе не доживает до рантайма.\n *\n * Места вида `{{name}}` заполняются параметрами — их принимает `rtKitLabel()`.\n */\n/** Число дней во множественном числе: в английском формы «few» и «many» совпадают с «other». */\nconst COUNT_DAYS: string = '{{count}} days';\n\n// eslint-disable-next-line @typescript-eslint/typedef -- аннотация стёрла бы литеральный тип, на котором стоит TRtKitLabelKey\nexport const RT_KIT_LABELS_EN = {\n aiBackToChat: 'Back to conversation',\n aiClose: 'Close assistant',\n aiCopyReference: 'Copy reference',\n aiDeleteThread: 'Delete conversation',\n aiDisclaimer: 'AI can make mistakes. Check important information.',\n aiDislike: 'Bad answer',\n aiEmptyText: 'Ask a question or pick a suggestion.',\n aiEmptyTitle: 'How can I help?',\n aiExitFullScreen: 'Exit full screen',\n aiFullScreen: 'Full screen',\n aiHideSteps: 'Hide steps',\n aiLike: 'Good answer',\n aiNewThread: 'New conversation',\n aiNoThreads: 'No conversations yet',\n aiReference: 'Reference',\n aiRetry: 'Ask again',\n aiSearchThreads: 'Search conversations',\n aiShowSteps: 'Show steps',\n aiThreads: 'Conversations',\n aiTitle: 'Assistant',\n aiYou: 'You',\n asideCopyErrorInfo: 'Copy error info',\n asideRequestError: 'Request Error',\n bottomSheetClose: 'Close',\n chatAttachAria: 'Attach a file',\n chatAttachTooltip: 'Attach a file',\n chatAttachmentFallback: 'Attachment',\n chatCollapse: 'Collapse chat',\n chatComposerAria: 'Message input',\n chatComposerHint: 'Enter to send, Shift + Enter for a new line',\n chatDeleteAria: 'Delete message',\n chatDeleteTooltip: 'Delete',\n chatDropOverlay: 'Drop the files to attach them to your message',\n chatEmptyHint: 'Chat is not available yet.',\n chatEmptyThread: 'No messages yet.',\n chatExpand: 'Expand chat to full screen',\n chatMessageDeleted: 'Message deleted',\n chatPlaceholder: 'Type a message',\n chatRefreshAria: 'Refresh messages',\n chatRefreshTooltip: 'Refresh messages',\n chatRetryAria: 'Send again',\n chatRetryTooltip: 'Retry',\n chatSendAria: 'Send message',\n chatSendLabel: 'Send',\n chatStatusFailed: 'Not sent',\n chatStatusRead: 'Read',\n chatStatusSending: 'Sending',\n chatStatusSent: 'Delivered',\n chatStopAria: 'Stop the answer',\n chatStopLabel: 'Stop',\n chatTitle: 'Chat',\n counterDecrease: 'Decrease',\n counterIncrease: 'Increase',\n dataListClearFilters: 'Clear filters',\n dataListHorizontalScrollbar: 'Horizontal scrollbar shown',\n dataListPlaceholder: 'No Data Found',\n dataListRefresh: 'Refresh',\n dataListSearchPlaceholder: 'Search...',\n dataListSelectAll: 'Select all',\n dataListSelected: 'Selected: {{count}}',\n dataListSettingsHint: 'Change columns visibility and order, show(hide) scrollbar',\n dataListSettingsTitle: 'Edit table configuration',\n dataListTableConfig: 'Table configuration',\n dataListVerticalScrollbar: 'Vertical scrollbar shown',\n dynamicInputPlaceholder: 'Type and press Enter',\n dynamicSelectorAdd: 'Add',\n dynamicSelectorApply: 'Apply',\n dynamicSelectorClear: 'Clear list',\n dynamicSelectorDrag: 'Hold to drag',\n dynamicSelectorEdit: 'Edit',\n dynamicSelectorMulti: 'Multi selection',\n dynamicSelectorMultiHint: 'Hold Ctrl or Cmd to tick several rows',\n dynamicSelectorNoResults: 'No results',\n dynamicSelectorNothingToChoose: 'There are no available items to choose',\n dynamicSelectorRemove: 'Remove the item',\n dynamicSelectorReset: 'Reset to initial list',\n dynamicSelectorSearch: 'Search...',\n dataTableActions: 'Actions',\n dataTableCopied: 'Copied!',\n dataTableCopy: 'Copy',\n dataTableFilterClear: 'Clear filter',\n dataTableFilterOperatorContains: 'Contains',\n dataTableFilterOperatorEquals: 'Equal',\n dataTableFilterOperatorGreaterThan: 'More than',\n dataTableFilterOperatorLessThan: 'Less than',\n dataTableFilterOperatorNotEquals: 'Not equal',\n dataTableFilterSelectPlaceholder: 'Choose filter',\n dataTableFilterValuePlaceholder: 'Type in filter value',\n dataTableSelectPage: 'Select the rows of this page',\n dataTableSelectRow: 'Select row',\n fieldErrorEmail: 'Invalid email',\n fieldErrorMax: 'Value is too large',\n fieldErrorMaxLength: 'Value is too long',\n fieldErrorMin: 'Value is too small',\n fieldErrorMinLength: 'Value is too short',\n fieldErrorPattern: 'Invalid format',\n fieldErrorRequired: 'Required field',\n photoViewerClose: 'Close viewer',\n photoViewerNext: 'Next photo',\n photoViewerPrev: 'Previous photo',\n sideMenuBack: 'Main menu',\n sideMenuFavoriteAdd: 'Add to favourites',\n sideMenuFavoriteDrag: 'Hold button to drag',\n sideMenuFavoriteRemove: 'Remove from favourites',\n sideMenuFavorites: 'Favourites',\n sideMenuFavoritesCollapse: 'Collapse favourites',\n sideMenuFavoritesExpand: 'Expand favourites',\n sideMenuNothingFound: 'Nothing found',\n sideMenuPin: 'Pin submenu',\n sideMenuResize: 'Resize submenu',\n sideMenuSearch: 'Search',\n sideMenuUnpin: 'Unpin submenu',\n themeToggleLabel: 'Switch theme',\n uiActions: 'Actions',\n uiApply: 'Apply',\n uiAuditEmptyHint: 'Deal events will appear here — stage changes and other actions.',\n uiBack: 'Back',\n uiBackToList: 'Back to list',\n uiBaseline: 'was {{value}}',\n uiCancel: 'Cancel',\n uiChangeAgent: 'Change agent',\n uiChooseFile: 'Choose file',\n uiChooseMonth: 'Choose month and year',\n uiClear: 'Clear',\n uiClearFilters: 'Clear filters',\n uiClose: 'Close',\n uiCollapse: 'Collapse',\n uiColumnLocked: 'Column is pinned',\n uiColumnSettings: 'Column settings',\n uiColumnSettingsTitle: 'Configure columns',\n uiCommentOptional: 'Comment (optional)',\n uiConfirm: 'Confirm',\n uiConfirmAction: 'Confirm action',\n uiContinue: 'Continue',\n uiCopied: 'Copied',\n uiCopy: 'Copy',\n uiCurrentStage: 'Current stage',\n uiDate: 'Date',\n uiDaysFew: COUNT_DAYS,\n uiDaysMany: COUNT_DAYS,\n uiDaysOne: '{{count}} day',\n uiDaysOther: COUNT_DAYS,\n uiDetails: 'Details',\n uiDiscardChanges: 'Discard Changes',\n uiDone: 'Done',\n uiDownload: 'Download',\n uiDownloadFile: 'Download: {{name}}',\n uiDragColumn: 'Drag column',\n uiExpand: 'Expand',\n uiFileDropOverlay: 'Drop the files to attach them',\n uiFilterChoose: 'Choose',\n uiFilterContains: 'Contains',\n uiFilterEndsWith: 'Ends with',\n uiFilterEquals: 'Equals',\n uiFilterGreaterThan: 'Greater than',\n uiFilterLessThan: 'Less than',\n uiFilterNotEquals: 'Does not equal',\n uiFilterStartsWith: 'Starts with',\n uiFilterValue: 'Filter value',\n uiFilters: 'Filters',\n uiForward: 'Forward',\n uiHide: 'Hide',\n uiHideColumn: 'Hide column',\n uiHidePassword: 'Hide password',\n uiHint: 'Hint',\n uiHistory: 'History',\n uiHours: 'Hours',\n uiImageCropperFrame: 'Crop frame',\n uiImageCropperHandleE: 'Right edge of the crop frame',\n uiImageCropperHandleN: 'Top edge of the crop frame',\n uiImageCropperHandleNe: 'Top right corner of the crop frame',\n uiImageCropperHandleNw: 'Top left corner of the crop frame',\n uiImageCropperHandleS: 'Bottom edge of the crop frame',\n uiImageCropperHandleSe: 'Bottom right corner of the crop frame',\n uiImageCropperHandleSw: 'Bottom left corner of the crop frame',\n uiImageCropperHandleW: 'Left edge of the crop frame',\n uiImageCropperPlaceholder: 'Choose an image to crop',\n uiImageCropperRefusal: 'The image could not be read',\n uiImageUploadApply: 'Apply',\n uiImageUploadCancel: 'Cancel',\n uiImageUploadChange: 'Click to change the image',\n uiImageUploadChoose: 'Choose file',\n uiImageUploadDrop: 'Drag and drop an image here or',\n uiImageUploadImage: 'Current image',\n uiInviteUser: 'Invite user',\n uiItemsPerPage: 'Items per page',\n uiLast30Days: 'Last 30 days',\n uiLast7Days: 'Last 7 days',\n uiLastMonth: 'Last month',\n uiLiveOnSite: 'On the site now',\n uiLoadMore: 'Load more',\n uiMainNav: 'Main navigation',\n uiMinutes: 'Minutes',\n uiMore: 'More',\n uiMoreActions: 'More actions',\n uiMoveStage: 'Move',\n uiMoveStageAria: 'Move stage',\n uiNavMenu: 'Navigation menu',\n uiNavUnread: 'Unread',\n uiNextMonth: 'Next month',\n uiNextPage: 'Next page',\n uiNextYear: 'Next year',\n uiNightGridAria: 'Occupancy grid',\n uiNoData: 'No data yet',\n uiNoOptions: 'No options',\n uiNoRows: 'No data',\n uiNothingFound: 'Nothing found',\n uiNotifications: 'Notifications',\n uiNow: 'Now',\n uiOpenCalendar: 'Open the calendar',\n uiPageOf: 'Page {{page}} of {{last}}',\n uiPagination: 'Pagination',\n uiPerPage: 'Items per page:',\n uiPeriod: 'Period',\n uiPickAgent: 'Select an agent',\n uiPickAnotherAgent: 'Select a different agent',\n uiPickEndDate: 'Pick the end date',\n uiPickStartDate: 'Pick the start date',\n uiPickTransition: 'Select a transition',\n uiPrevMonth: 'Previous month',\n uiPrevPage: 'Previous page',\n uiPrevYear: 'Previous year',\n uiProfile: 'Profile',\n uiQuickRanges: 'Quick ranges',\n uiRangeEmpty: '0 of 0',\n uiRangeOf: '{{from}}–{{to}} of {{total}}',\n uiRemove: 'Delete',\n uiRename: 'Rename',\n uiReplace: 'Replace',\n uiReplaceAgentTitle: 'Replace agent',\n uiReset: 'Reset',\n uiResetDefaults: 'Reset to defaults',\n uiResizeDetails: 'Resize details pane',\n uiResizeList: 'Resize list pane',\n uiRefresh: 'Refresh',\n uiRevert: 'Revert',\n uiSave: 'Save',\n uiSaveNewAgent: 'Save the new agent',\n uiScrollDown: 'Scroll down',\n uiSearch: 'Search',\n uiSectionInProgress: '{{label}} — section under development',\n uiSelectAll: 'Select all',\n uiSelectValues: 'Select values',\n uiSelectedCount: 'Selected: {{count}}',\n uiSelectedOf: 'Selected: {{count}} of {{total}}',\n uiShapeDay: 'dd',\n uiShapeHour: 'hh',\n uiShapeMinute: 'mm',\n uiShapeMonth: 'mm',\n uiShapeYear: 'yyyy',\n uiShow: 'Show',\n uiShowColumn: 'Show column',\n uiShowDetails: 'Show details',\n uiShowPassword: 'Show password',\n uiStageNoteHint: 'Internal note — the client will not see it.',\n uiStageTransition: 'Stage transition',\n uiSubscribeNotifications: 'Subscribe to notifications',\n uiTabInvalid: 'This tab contains errors',\n uiTargetStage: 'Target stage',\n uiTargetStageRequired: 'Select a target stage.',\n uiThisMonth: 'This month',\n uiThreadListEmptyHint: 'New threads will appear here.',\n uiTime: 'Time',\n uiToList: 'To list',\n uiToday: 'Today',\n uiUnsavedDiscard: 'Close without saving',\n uiUnsavedMessage: 'The panel has edits that have not been saved yet. Choose what to do with them.',\n uiUnsavedSave: 'Save and close',\n uiUnsavedStay: 'Stay',\n uiUnsavedTitle: 'Unsaved changes',\n uiWelcomeAria: 'Welcome message for a new user',\n uiYearOverYear: 'YoY',\n uiYesterday: 'Yesterday',\n} as const;\n","import { computed, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, Provider, Signal, signal } from '@angular/core';\n\nimport { RT_KIT_LABELS_EN } from './rt-kit-labels.en';\nimport { TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator } from './rt-kit-labels.model';\n\n/** Места вида `{{name}}` — их заполняет `interpolate`. */\nconst PLACEHOLDER: RegExp = /\\{\\{\\s*(\\w+)\\s*\\}\\}/g;\n\n/**\n * Подставляет параметры в подпись.\n *\n * Нужна английскому умолчанию: приложение свои подстановки делает само —\n * функция-переводчик обязана вернуть готовую строку. Место, для которого\n * параметра не дали, остаётся как есть: пустота на его месте прочиталась бы как\n * законченная фраза, а `{{name}}` виден и чинится.\n */\nfunction interpolate(text: string, params: TRtKitLabelParams | undefined): string {\n if (params === undefined) {\n return text;\n }\n\n return text.replace(PLACEHOLDER, (match: string, name: string): string => (Object.hasOwn(params, name) ? String(params[name]) : match));\n}\n\n/** Английское умолчание: кит без единой настройки рисует текст, а не пустоты. */\nconst defaultTranslator: TRtKitTranslator = (key: TRtKitLabelKey, params?: TRtKitLabelParams): string =>\n interpolate(RT_KIT_LABELS_EN[key], params);\n\n/**\n * Функция, которой кит получает подписи. Её отдаёт приложение —\n * `provideRtKitLabels()`.\n *\n * Токен объявлен **сигналом**, а не просто функцией: приложение, меняющее язык\n * на ходу, кладёт в него новую функцию, и всё, что от неё считано,\n * пересчитывается само.\n */\nexport const RT_KIT_TRANSLATOR: InjectionToken<Signal<TRtKitTranslator>> = new InjectionToken<Signal<TRtKitTranslator>>(\n 'RT_KIT_TRANSLATOR',\n {\n providedIn: 'root',\n factory: (): Signal<TRtKitTranslator> => signal<TRtKitTranslator>(defaultTranslator).asReadonly(),\n }\n);\n\n/**\n * Активная локаль. Ею кит форматирует даты — больше ни для чего она ему не\n * нужна.\n *\n * Данные локали для `DatePipe` регистрирует приложение: без них пайп падает\n * `Missing locale data`, и кит за это не отвечает.\n */\nexport const RT_KIT_LOCALE: InjectionToken<Signal<string>> = new InjectionToken<Signal<string>>('RT_KIT_LOCALE', {\n providedIn: 'root',\n factory: (): Signal<string> => signal<string>('en').asReadonly(),\n});\n\n/**\n * Все подписи кита разом, ключ → готовая строка.\n *\n * Этим пользуются компоненты: `t().uiClose` вместо ключа по одному. Карта\n * строится один раз на приложение (`providedIn: 'root'`) и пересчитывается,\n * только когда приложение сменило функцию-переводчик.\n *\n * Подпись, которой переводчик не дал (вернул пустое или упал), берётся\n * английской: пустая `aria`-подпись означает кнопку без имени для скринридера.\n */\nexport const RT_KIT_LABELS: InjectionToken<Signal<TRtKitLabelMap>> = new InjectionToken<Signal<TRtKitLabelMap>>('RT_KIT_LABELS', {\n providedIn: 'root',\n factory: (): Signal<TRtKitLabelMap> => {\n const translator: Signal<TRtKitTranslator> = inject(RT_KIT_TRANSLATOR);\n\n return computed((): TRtKitLabelMap => {\n const translate: TRtKitTranslator = translator();\n const map: Record<string, string> = {};\n for (const key of Object.keys(RT_KIT_LABELS_EN)) {\n map[key] = translate(key as TRtKitLabelKey) || RT_KIT_LABELS_EN[key as TRtKitLabelKey];\n }\n\n return map as TRtKitLabelMap;\n });\n },\n});\n\n/**\n * Одна подпись, а не вся карта.\n *\n * Карте не годятся две вещи: подпись с подстановками (параметры приходят из\n * состояния компонента) и подпись, ключ которой выбирается на ходу — кнопка\n * «свернуть ↔ развернуть», текст ошибки поля по сработавшему валидатору. Обе\n * берутся отсюда. Зовётся в поле класса, в инъекционном контексте.\n *\n * ```typescript\n * readonly #range: Signal<string> = rtKitLabel('uiRangeOf', this.#rangeParams);\n * readonly #expand: Signal<string> = rtKitLabel(computed(() => (this.expanded() ? 'chatCollapse' : 'chatExpand')));\n * ```\n *\n * @param key Ключ подписи — значением или сигналом, если он меняется. Пустой\n * ключ даёт пустую строку: у поля без сработавшего валидатора подписи нет, и\n * умолчание тут показало бы ошибку там, где её не случилось.\n * @param params Подстановки — значением или сигналом, если они меняются.\n */\nexport function rtKitLabel(\n key: TRtKitLabelKey | '' | Signal<TRtKitLabelKey | ''>,\n params?: TRtKitLabelParams | Signal<TRtKitLabelParams>\n): Signal<string> {\n const translator: Signal<TRtKitTranslator> = inject(RT_KIT_TRANSLATOR);\n\n return computed((): string => {\n const resolvedKey: TRtKitLabelKey | '' = typeof key === 'function' ? key() : key;\n if (resolvedKey === '') {\n return '';\n }\n const resolved: TRtKitLabelParams | undefined = typeof params === 'function' ? params() : params;\n\n return translator()(resolvedKey, resolved) || defaultTranslator(resolvedKey, resolved);\n });\n}\n\n/**\n * Отдаёт киту подписи приложения.\n *\n * Без него кит работает на английском умолчании — оно вшито и покрывает все\n * ключи, поэтому пустой кнопки на экране не бывает никогда.\n *\n * ```typescript\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideRtKitLabels({\n * translator: computed(() => (key, params) => transloco.translate(`rtKit.${key}`, params)),\n * locale: toSignal(transloco.langChanges$, { initialValue: transloco.getActiveLang() }),\n * }),\n * ],\n * };\n * ```\n *\n * Способ доставки — дело приложения: Transloco, `$localize`, собственный\n * словарь. Кит знает только ключи и то, что на них отвечают строкой.\n *\n * @param source Функция-переводчик и активная локаль. Локаль необязательна —\n * без неё кит форматирует даты по-английски.\n */\nexport function provideRtKitLabels(source: {\n readonly translator: Signal<TRtKitTranslator>;\n readonly locale?: Signal<string>;\n}): EnvironmentProviders {\n const providers: Provider[] = [{ provide: RT_KIT_TRANSLATOR, useValue: source.translator }];\n if (source.locale !== undefined) {\n providers.push({ provide: RT_KIT_LOCALE, useValue: source.locale });\n }\n\n return makeEnvironmentProviders(providers);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { TRtKitLabelKey, TRtKitLabelParams, TRtKitTranslator } from './rt-kit-labels.model';\n\n/**\n * Подпись кита по ключу — для значений, приходящих из контекста шаблона.\n *\n * Шаблон не зовёт методов: имя раздела приходит элементом цикла, и посчитать подпись заранее\n * нечем. Пайп чистый, поэтому функция-переводчик передаётся ему вторым доводом — сменившись,\n * она пересчитывает подпись сама.\n */\n@Pipe({\n name: 'rtKitLabel',\n pure: true,\n})\nexport class RtKitLabelPipe implements PipeTransform {\n public transform(key: TRtKitLabelKey, translator: TRtKitTranslator, params?: TRtKitLabelParams): string {\n return translator(key, params);\n }\n}\n","import { BreakpointObserver, BreakpointState, Breakpoints } from '@angular/cdk/layout';\nimport { Injectable, Signal, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { Observable, map } from 'rxjs';\n\n/** Порог узкого вьюпорта — тот же, что у `$breakpoint-lg` в стилях кита. */\nconst NARROW_VIEWPORT_QUERY: string = '(max-width: 1080px)';\n\n/**\n * Обёртка над CDK `BreakpointObserver` — публикует reactive signals для\n * mobile/tablet/desktop матчей. `toSignal()` обёртывает CDK Observable в Signal\n * с `initialValue` для CSR-safe рендера.\n */\n@Injectable({ providedIn: 'root' })\nexport class BreakpointsService {\n readonly #observer: BreakpointObserver = inject(BreakpointObserver);\n\n public readonly mobile: Signal<boolean> = toSignal(this.#match([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]), {\n initialValue: false,\n });\n\n public readonly tablet: Signal<boolean> = toSignal(this.#match([Breakpoints.TabletPortrait, Breakpoints.TabletLandscape]), {\n initialValue: false,\n });\n\n public readonly desktop: Signal<boolean> = toSignal(this.#match([Breakpoints.WebPortrait, Breakpoints.WebLandscape]), {\n initialValue: true,\n });\n\n /**\n * Узкий вьюпорт (≤1080px, планшет + мобила) — единый порог для компонентов,\n * которые на узком экране подменяют развёрнутый контрол на компактный\n * (напр. `rt-filter-control`: сегменты → `rt-select`). Совпадает с\n * брейкпоинтом 1080px из SCSS-конвенции кита. `initialValue: false` — на\n * SSR/CSR до первого matchMedia рендерим desktop-вариант.\n */\n public readonly narrow: Signal<boolean> = toSignal(this.#match([NARROW_VIEWPORT_QUERY]), {\n initialValue: false,\n });\n\n #match(queries: string[]): Observable<boolean> {\n return this.#observer.observe(queries).pipe(map((state: BreakpointState): boolean => state.matches));\n }\n}\n","import { Observable, Subject, filter } from 'rxjs';\n\n/**\n * Базовое событие шины: дискриминируется строковым `type`. Конкретные шины\n * сужают `T` до своего union'а типов событий, а полезную нагрузку добавляют\n * наследники интерфейса.\n */\nexport interface IMessageBusEvent<T = string> {\n readonly type: T;\n}\n\n/**\n * Лёгкая типизированная pub/sub-шина поверх RxJS `Subject`. Не зависит от\n * Angular DI и UI: эмиттер (например, стор) и потребитель (например, layout-\n * контейнер) развязаны — отправитель не знает, кто и как отрисует событие.\n *\n * - `emit` — опубликовать событие;\n * - `onEmit` — поток всех событий;\n * - `ofType` — поток событий конкретного типа (для точечной подписки).\n */\nexport class MessageBus<E extends IMessageBusEvent> {\n readonly #eventSource: Subject<E> = new Subject<E>();\n\n public emit(event: E): void {\n this.#eventSource.next(event);\n }\n\n public onEmit(): Observable<E> {\n return this.#eventSource.asObservable();\n }\n\n public ofType<T extends E['type']>(type: T): Observable<Extract<E, { type: T }>> {\n return this.#eventSource.asObservable().pipe(filter((event: E): event is Extract<E, { type: T }> => event.type === type));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { MessageBus } from './message-bus';\nimport { INotification } from './notification.model';\n\n/**\n * Шина уведомлений приложения. Эмиттеры (сторы) публикуют сюда событие с\n * готовым текстом и severity и больше ничего не знают об отрисовке. Подписчик\n * (`rt-toaster`) слушает `onEmit()` и показывает toast'ы.\n *\n * Convenience-методы `success/info/warning/error` собирают событие: первым\n * аргументом — текст для пользователя, вторым (необязательно) — доменный\n * action-тип для точечной фильтрации через `ofType`. Если тип не передан,\n * подставляется значение severity.\n */\n@Injectable({ providedIn: 'root' })\nexport class NotificationBus {\n readonly #bus: MessageBus<INotification.Event> = new MessageBus<INotification.Event>();\n\n public emit(event: INotification.Event): void {\n this.#bus.emit(event);\n }\n\n public onEmit(): Observable<INotification.Event> {\n return this.#bus.onEmit();\n }\n\n public ofType(type: string): Observable<INotification.Event> {\n return this.#bus.ofType(type);\n }\n\n public success(message: string, type: string = 'success', options: INotification.Options = {}): void {\n this.emit({ type, payload: { message, severity: 'success', ...options } });\n }\n\n public info(message: string, type: string = 'info', options: INotification.Options = {}): void {\n this.emit({ type, payload: { message, severity: 'info', ...options } });\n }\n\n public warning(message: string, type: string = 'warning', options: INotification.Options = {}): void {\n this.emit({ type, payload: { message, severity: 'warning', ...options } });\n }\n\n public error(message: string, type: string = 'danger', options: INotification.Options = {}): void {\n this.emit({ type, payload: { message, severity: 'danger', ...options } });\n }\n}\n","import { Directive, InputSignal, input } from '@angular/core';\n\nimport { ITheme } from './theme.model';\n\n/**\n * Местный кусок темы: узел рисует своё поддерево в своей теме, а страница\n * вокруг остаётся как была.\n *\n * Работает в обе стороны — тёмная карточка внутри светлой страницы и светлая\n * внутри тёмной, — и переключает весь набор свойств, а не часть: фон, текст,\n * рамки, тени. Ближний признак выигрывает у дальнего, повторённый внутри\n * такого же ничего не меняет, а снятый возвращает поддерево к теме страницы.\n *\n * Выбора человека и хранилища не трогает вовсе: это слово разметки об одном\n * месте, а не переключение темы.\n *\n * ```html\n * <section [rtTheme]=\"'dark'\">…</section>\n * ```\n *\n * Пустое значение темой не считается и признака не ставит.\n */\n@Directive({\n selector: '[rtTheme]',\n host: {\n '[attr.data-theme]': 'rtTheme() || null',\n },\n})\nexport class RtThemeScopeDirective {\n public readonly rtTheme: InputSignal<ITheme.Mode | ''> = input<ITheme.Mode | ''>('');\n}\n","/**\n * Ключи браузерного хранилища, которые кит занимает под себя. Единый реестр\n * вместо констант, разбросанных по компонентам: так видно весь занятый\n * неймспейс и не возникает двух ключей на одно и то же. Значения читает и пишет\n * только `StorageService` из `@rt-tools/core`.\n *\n * Неймспейс `rt.` отделяет их от ключей приложения-потребителя.\n */\nexport enum ERtStorageKeys {\n /** Выбранная тема оформления: переживает перезагрузку и смену пользователя */\n Theme = 'rt.theme',\n\n /** Префикс, а не полный ключ: итоговый вид — `rt.table.columns.<tableId>`. */\n TableColumnsPrefix = 'rt.table.columns.',\n\n /** Настройки боковых меню: один объект, в нём каждое меню под своим номером. */\n SideMenu = 'rt.side-menu',\n}\n","import { DOCUMENT } from '@angular/common';\nimport { computed, DestroyRef, effect, Injectable, Injector, Signal, WritableSignal, inject, signal } from '@angular/core';\n\nimport { PlatformService, StorageService, WINDOW } from '@rt-tools/core';\n\nimport { IRtKitConfig } from '../config/rt-kit-config.model';\nimport { RT_KIT_CONFIG } from '../config/rt-kit-config.providers';\nimport { ERtStorageKeys } from './storage-keys.enum';\nimport { ITheme } from './theme.model';\n\nconst DEFAULT_CHOICE: ITheme.Choice = 'light';\n\n/** Запрос, которым браузер отвечает о предпочтении тёмного вида. */\nconst DARK_QUERY: string = '(prefers-color-scheme: dark)';\n\n/**\n * Глобальный сервис темы. Применяет `data-theme` к `<html>` через DOM-эффект,\n * персистит выбор под единственным device-level ключом. Тема не привязана к\n * пользователю: на одном устройстве последняя выставленная тема переживает\n * вход, выход и перезагрузку.\n *\n * Хранится **выбор**, а не вид, в который он разрешился: «за машиной»,\n * записанное тёмным видом, перестало бы идти за машиной с первой же\n * перезагрузки, и на экране ничто бы об этом не сказало.\n */\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n readonly #storage: StorageService = inject(StorageService);\n readonly #document: Document = inject(DOCUMENT);\n readonly #platform: PlatformService = inject(PlatformService);\n /**\n * Окно берётся не полем, а в `#watchMachine`, под проверкой среды: фабрика `WINDOW` бросает\n * там, где у документа нет окна, — служба корневая, и упав при создании, она роняла бы\n * серверную прорисовку каждой страницы с компонентом кита.\n */\n readonly #injector: Injector = inject(Injector);\n readonly #config: IRtKitConfig.Config = inject(RT_KIT_CONFIG);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n\n readonly #choice: WritableSignal<ITheme.Choice> = signal<ITheme.Choice>(this.#readOrDefault());\n\n /** Что ответила машина про тёмный вид. Меняется на живой странице — потому сигнал. */\n readonly #machinePrefersDark: WritableSignal<boolean> = signal<boolean>(false);\n\n /** Что выбрано: два вида и «за машиной». Хранится именно это. */\n public readonly choice: Signal<ITheme.Choice> = this.#choice.asReadonly();\n\n /** Вид, в котором страница нарисована. «За машиной» разрешается здесь. */\n public readonly current: Signal<ITheme.Mode> = computed((): ITheme.Mode => {\n const choice: ITheme.Choice = this.#choice();\n\n if (choice !== 'auto') {\n return choice;\n }\n\n return this.#machinePrefersDark() ? 'dark' : 'light';\n });\n\n public readonly isDark: Signal<boolean> = computed((): boolean => this.current() === 'dark');\n\n constructor() {\n this.#watchMachine();\n\n effect((): void => {\n const mode: ITheme.Mode = this.current();\n const choice: ITheme.Choice = this.#choice();\n // Prerender/SSR-окружение не даёт documentElement.dataset — тему\n // применяем только в браузере, серверный HTML остаётся в light.\n if (!this.#platform.isPlatformBrowser) {\n return;\n }\n this.#document.documentElement.dataset['theme'] = mode;\n this.#storage.setItem(ERtStorageKeys.Theme, choice);\n });\n }\n\n /**\n * Переключает светлое и тёмное.\n *\n * Из «за машиной» уходит в противоположность тому, что сейчас на экране:\n * человек жмёт переключатель, глядя на нарисованное, и ждёт обратного ему.\n */\n public toggle(): void {\n this.#choice.set(this.current() === 'light' ? 'dark' : 'light');\n }\n\n public setTheme(theme: ITheme.Choice): void {\n this.#choice.set(theme);\n }\n\n /**\n * Подписка на ответ браузера о тёмном виде — одна, на весь век службы.\n *\n * Без неё «за машиной» превратилось бы в четвёртый способ записать вид той\n * минуты, когда страницу открыли: настройка машины меняется на живой\n * странице, и выбор обязан идти за ней без перезагрузки.\n */\n #watchMachine(): void {\n if (!this.#platform.isPlatformBrowser || !this.#document.defaultView) {\n return;\n }\n\n const view: Window & typeof globalThis = this.#injector.get(WINDOW) as Window & typeof globalThis;\n\n /*\n * Спросить машину умеет не всякое окно, назвавшееся браузерным: среда тестов потребителя\n * даёт именно такое. Служба корневая — упав здесь, она роняет каждый тест, поднявший хоть\n * один компонент кита, и чинить это потребителю нечем. Проверка среды тут не поможет: она\n * отвечает про место прорисовки, а вопрос — про умение самого окна.\n */\n if (typeof view.matchMedia !== 'function') {\n return;\n }\n\n const query: MediaQueryList = view.matchMedia(DARK_QUERY);\n this.#machinePrefersDark.set(query.matches);\n\n const listener: (event: MediaQueryListEvent) => void = (event: MediaQueryListEvent): void => {\n this.#machinePrefersDark.set(event.matches);\n };\n\n query.addEventListener('change', listener);\n this.#destroyRef.onDestroy((): void => query.removeEventListener('change', listener));\n }\n\n /**\n * Что выбрано на старте: сохранённое, а если его нет или оно киту незнакомо —\n * общее умолчание настроек, за ним умолчание кита.\n *\n * Слово, оставленное прошлым выпуском кита или рукой в консоли, выбором не\n * считается: отвечают настройки.\n */\n #readOrDefault(): ITheme.Choice {\n const fallback: ITheme.Choice = this.#config.global?.theme ?? DEFAULT_CHOICE;\n const stored: string | null = this.#storage.getItem<string>(ERtStorageKeys.Theme) ?? null;\n\n return stored === 'light' || stored === 'dark' || stored === 'auto' ? stored : fallback;\n }\n}\n","import { formatDate } from '@angular/common';\nimport { inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Штамп последнего взаимодействия для превью списков чатов: событие за сегодня\n * показывается временем («14:05»), за вчера и ранее — датой («18.07.2026»), чтобы\n * старые чаты не выглядели сегодняшними (G121).\n */\n@Pipe({ name: 'rtDayStamp' })\nexport class RtDayStampPipe implements PipeTransform {\n readonly #locale: string = inject(LOCALE_ID);\n\n public transform(value: Date | string | null): string {\n if (value == null || value === '') {\n return '—';\n }\n const date: Date = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(date.getTime())) {\n return '—';\n }\n const now: Date = new Date();\n const isToday: boolean =\n date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate();\n return formatDate(date, isToday ? 'HH:mm' : 'dd.MM.yyyy', this.#locale);\n }\n}\n","import {\n booleanAttribute,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnDestroy,\n output,\n OutputEmitterRef,\n} from '@angular/core';\n\nimport { WINDOW } from '@rt-tools/core';\n\n/**\n * Триггер бесконечной прокрутки. Вешается на элемент-«маяк» в конце списка;\n * когда маяк приближается к области видимости — эмитит `(loadMore)`, чтобы\n * потребитель догрузил следующую страницу и ДОБАВИЛ её к уже показанным\n * сущностям (а не перезаписал).\n *\n * Использует `IntersectionObserver`, поэтому не зависит от того, какой предок\n * владеет вертикальным скроллом: контент скроллится в `.rt-container__content`\n * shell'а, а не в самом feature-компоненте, и браузер сам клипует маяк\n * скроллящими предками при расчёте пересечения.\n *\n * `rootMargin` расширяет нижнюю кромку корня, чтобы триггерить догрузку\n * ЗАРАНЕЕ (по умолчанию за половину вьюпорта до низа) — страница успевает\n * подгрузиться прежде, чем пользователь упрётся в конец списка. Пока идёт\n * запрос или страниц больше нет, потребитель ставит `[disabled]=\"true\"` —\n * наблюдение приостанавливается.\n */\n@Directive({\n selector: '[rtInfiniteScroll]',\n})\nexport class RtInfiniteScrollDirective implements OnDestroy {\n readonly #host: ElementRef<HTMLElement> = inject(ElementRef);\n // Конструкторы вроде IntersectionObserver объявлены на globalThis, а не на\n // интерфейсе Window — токен отдаёт тот же объект, тип лишь уточняется.\n readonly #window: Window & typeof globalThis = inject(WINDOW) as Window & typeof globalThis;\n\n #observer: IntersectionObserver | null = null;\n\n /** Пауза наблюдения: `true`, пока идёт догрузка или страниц больше нет. */\n public readonly disabled: InputSignalWithTransform<boolean, boolean | string> = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n /**\n * Запас корня снизу — за сколько до низа триггерить догрузку. CSS-формат\n * `rootMargin` (px или %). Default `50%` — половина вьюпорта заранее.\n */\n public readonly rootMargin: InputSignal<string> = input<string>('50%');\n\n public readonly loadMore: OutputEmitterRef<void> = output<void>();\n\n constructor() {\n effect((): void => {\n // Читаем оба сигнала, чтобы effect пересоздавал наблюдатель при их\n // смене. После завершения догрузки (disabled false-edge) нужен\n // свежий observe: IntersectionObserver не шлёт повторный колбэк,\n // если пересечение с прошлого раза не менялось.\n const disabled: boolean = this.disabled();\n const rootMargin: string = this.rootMargin();\n this.#disconnect();\n if (!disabled) {\n this.#observe(rootMargin);\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.#disconnect();\n }\n\n #observe(rootMargin: string): void {\n const view: Window & typeof globalThis = this.#window;\n if (typeof view.IntersectionObserver === 'undefined') {\n return;\n }\n this.#observer = new view.IntersectionObserver(\n (entries: IntersectionObserverEntry[]): void => {\n const reached: boolean = entries.some((entry: IntersectionObserverEntry): boolean => entry.isIntersecting);\n if (reached) {\n this.loadMore.emit();\n }\n },\n { root: null, threshold: 0, rootMargin }\n );\n this.#observer.observe(this.#host.nativeElement);\n }\n\n #disconnect(): void {\n this.#observer?.disconnect();\n this.#observer = null;\n }\n}\n","/* Built by the generator `tools/build-tokens-v2.mjs` from `tokens.source.mjs` — edited there, not here. */\n\n/** The name of a styling property the kit declares itself. */\nexport type TRtDesignTokenName =\n | '--rt-amber-400'\n | '--rt-border-width-medium'\n | '--rt-border-width-thick'\n | '--rt-border-width-thin'\n | '--rt-bp-lg'\n | '--rt-bp-md'\n | '--rt-bp-sm'\n | '--rt-bp-xl'\n | '--rt-brand-100'\n | '--rt-brand-200'\n | '--rt-brand-300'\n | '--rt-brand-400'\n | '--rt-brand-50'\n | '--rt-brand-500'\n | '--rt-brand-600'\n | '--rt-brand-700'\n | '--rt-brand-800'\n | '--rt-brand-900'\n | '--rt-brand-950'\n | '--rt-btn-tint-active'\n | '--rt-btn-tint-hover'\n | '--rt-charcoal-700'\n | '--rt-charcoal-800'\n | '--rt-charcoal-900'\n | '--rt-charcoal-950'\n | '--rt-charcoal-border'\n | '--rt-charcoal-border-strong'\n | '--rt-chat-bubble-date'\n | '--rt-chat-bubble-in-author'\n | '--rt-chat-bubble-in-bg'\n | '--rt-chat-bubble-own-author'\n | '--rt-chat-bubble-own-bg'\n | '--rt-chat-status-read'\n | '--rt-color-action-danger'\n | '--rt-color-action-danger-active'\n | '--rt-color-action-danger-hover'\n | '--rt-color-action-danger-on-surface'\n | '--rt-color-action-disabled'\n | '--rt-color-action-info'\n | '--rt-color-action-info-active'\n | '--rt-color-action-info-hover'\n | '--rt-color-action-info-on-surface'\n | '--rt-color-action-on-danger'\n | '--rt-color-action-on-disabled'\n | '--rt-color-action-on-info'\n | '--rt-color-action-on-primary'\n | '--rt-color-action-on-secondary'\n | '--rt-color-action-on-success'\n | '--rt-color-action-on-warning'\n | '--rt-color-action-primary'\n | '--rt-color-action-primary-active'\n | '--rt-color-action-primary-hover'\n | '--rt-color-action-primary-on-surface'\n | '--rt-color-action-primary-soft'\n | '--rt-color-action-primary-subtle'\n | '--rt-color-action-secondary'\n | '--rt-color-action-secondary-active'\n | '--rt-color-action-secondary-hover'\n | '--rt-color-action-secondary-on-surface'\n | '--rt-color-action-success'\n | '--rt-color-action-success-active'\n | '--rt-color-action-success-hover'\n | '--rt-color-action-success-on-surface'\n | '--rt-color-action-warning'\n | '--rt-color-action-warning-active'\n | '--rt-color-action-warning-hover'\n | '--rt-color-action-warning-on-surface'\n | '--rt-color-bg-hover'\n | '--rt-color-bg-inverse'\n | '--rt-color-bg-nav'\n | '--rt-color-bg-overlay'\n | '--rt-color-bg-page'\n | '--rt-color-bg-page-auth'\n | '--rt-color-bg-subtle'\n | '--rt-color-bg-surface'\n | '--rt-color-bg-surface-auth-card'\n | '--rt-color-bg-surface-subtle'\n | '--rt-color-bg-surface-subtle-2'\n | '--rt-color-border-default'\n | '--rt-color-border-focus'\n | '--rt-color-border-strong'\n | '--rt-color-border-subtle'\n | '--rt-color-field-fill-underline'\n | '--rt-color-skeleton-base'\n | '--rt-color-skeleton-wave'\n | '--rt-color-state-danger'\n | '--rt-color-state-danger-bg'\n | '--rt-color-state-error-text'\n | '--rt-color-state-info'\n | '--rt-color-state-info-bg'\n | '--rt-color-state-success'\n | '--rt-color-state-success-bg'\n | '--rt-color-state-success-text'\n | '--rt-color-state-warning'\n | '--rt-color-state-warning-bg'\n | '--rt-color-state-warning-text'\n | '--rt-color-stepper-current'\n | '--rt-color-stepper-current-subtle'\n | '--rt-color-stepper-progress'\n | '--rt-color-stepper-track'\n | '--rt-color-table-head-bg'\n | '--rt-color-text-disabled'\n | '--rt-color-text-inverse'\n | '--rt-color-text-link'\n | '--rt-color-text-link-hover'\n | '--rt-color-text-muted'\n | '--rt-color-text-primary'\n | '--rt-control-height-2xl'\n | '--rt-control-height-lg'\n | '--rt-control-height-md'\n | '--rt-control-height-sm'\n | '--rt-control-height-xl'\n | '--rt-control-max-width'\n | '--rt-control-panel-max-height'\n | '--rt-control-textarea-min-height-lg'\n | '--rt-control-textarea-min-height-md'\n | '--rt-control-textarea-min-height-sm'\n | '--rt-counter-gap'\n | '--rt-counter-row-color-border'\n | '--rt-counter-row-gap'\n | '--rt-counter-row-hint-color'\n | '--rt-counter-row-hint-font-size'\n | '--rt-counter-row-label-color'\n | '--rt-counter-row-label-font-size'\n | '--rt-counter-row-padding-y'\n | '--rt-counter-value-color'\n | '--rt-counter-value-font-size'\n | '--rt-counter-value-min-width'\n | '--rt-danger-50'\n | '--rt-danger-500'\n | '--rt-danger-600'\n | '--rt-danger-700'\n | '--rt-duration-base'\n | '--rt-duration-fast'\n | '--rt-duration-slow'\n | '--rt-duration-slower'\n | '--rt-field-error-color'\n | '--rt-field-error-font-size'\n | '--rt-field-gap'\n | '--rt-field-hint-color'\n | '--rt-field-hint-font-size'\n | '--rt-field-label-color'\n | '--rt-field-label-font-size'\n | '--rt-field-label-font-weight'\n | '--rt-field-label-help-gap'\n | '--rt-field-required-color'\n | '--rt-field-value-color'\n | '--rt-field-value-empty-color'\n | '--rt-field-value-font-size'\n | '--rt-focus-ring-color'\n | '--rt-focus-ring-color-danger'\n | '--rt-focus-ring-offset'\n | '--rt-focus-ring-width'\n | '--rt-font-family-mono'\n | '--rt-font-family-sans'\n | '--rt-font-weight-bold'\n | '--rt-font-weight-medium'\n | '--rt-font-weight-regular'\n | '--rt-font-weight-semibold'\n | '--rt-gray-350'\n | '--rt-icon-button-color-bg-hover'\n | '--rt-icon-button-disabled-color'\n | '--rt-icon-button-disabled-fill'\n | '--rt-icon-button-disabled-opacity'\n | '--rt-info-50'\n | '--rt-info-500'\n | '--rt-info-600'\n | '--rt-info-700'\n | '--rt-input-border-width'\n | '--rt-input-color-bg'\n | '--rt-input-color-bg-disabled'\n | '--rt-input-color-bg-hover'\n | '--rt-input-color-border'\n | '--rt-input-color-border-error'\n | '--rt-input-color-border-focus'\n | '--rt-input-color-text'\n | '--rt-input-color-text-placeholder'\n | '--rt-input-disabled-opacity'\n | '--rt-input-focus-outline-offset'\n | '--rt-input-focus-shadow'\n | '--rt-input-focus-shadow-error'\n | '--rt-input-font-size'\n | '--rt-input-gap'\n | '--rt-input-height'\n | '--rt-input-height-lg'\n | '--rt-input-height-md'\n | '--rt-input-height-sm'\n | '--rt-input-icon-color'\n | '--rt-input-icon-size'\n | '--rt-input-line-height'\n | '--rt-input-max-width'\n | '--rt-input-padding-x'\n | '--rt-input-padding-y'\n | '--rt-input-panel-max-height'\n | '--rt-input-radius'\n | '--rt-input-transition'\n | '--rt-leading-none'\n | '--rt-leading-normal'\n | '--rt-leading-relaxed'\n | '--rt-leading-snug'\n | '--rt-leading-tight'\n | '--rt-letter-spacing-wide'\n | '--rt-list-action-color'\n | '--rt-list-action-color-bg-hover'\n | '--rt-list-action-color-hover'\n | '--rt-list-action-divider-height'\n | '--rt-list-action-gap'\n | '--rt-list-action-icon-size'\n | '--rt-list-action-radius'\n | '--rt-list-action-shadow'\n | '--rt-list-action-shadow-hover'\n | '--rt-list-content-padding-bottom'\n | '--rt-list-copy-button-bg'\n | '--rt-list-copy-button-bg-hover'\n | '--rt-list-copy-button-color'\n | '--rt-list-copy-button-radius'\n | '--rt-list-copy-button-size'\n | '--rt-list-empty-icon-size'\n | '--rt-list-empty-icon-wrap-bg'\n | '--rt-list-empty-icon-wrap-size'\n | '--rt-list-empty-title-size'\n | '--rt-list-empty-title-weight'\n | '--rt-list-filter-line-height'\n | '--rt-list-placeholder-grow'\n | '--rt-list-placeholder-min-height'\n | '--rt-list-search-color-bg'\n | '--rt-list-search-color-border'\n | '--rt-list-search-color-placeholder'\n | '--rt-list-search-font-size'\n | '--rt-list-search-gap'\n | '--rt-list-search-height'\n | '--rt-list-search-icon-color'\n | '--rt-list-search-icon-size'\n | '--rt-list-search-padding-x'\n | '--rt-list-search-radius'\n | '--rt-list-search-width'\n | '--rt-list-selector-label-color'\n | '--rt-list-settings-icon-color'\n | '--rt-list-settings-item-bg'\n | '--rt-list-settings-item-radius'\n | '--rt-list-table-button-radius'\n | '--rt-list-table-button-size'\n | '--rt-list-table-head-divider-color'\n | '--rt-list-table-icon-color'\n | '--rt-list-table-icon-size'\n | '--rt-list-toolbar-gap'\n | '--rt-list-toolbar-padding-bottom'\n | '--rt-list-toolbar-padding-top'\n | '--rt-mat-blue-100'\n | '--rt-mat-blue-20'\n | '--rt-mat-blue-40'\n | '--rt-mat-blue-60'\n | '--rt-mat-blue-80'\n | '--rt-mat-blue-active'\n | '--rt-mat-blue-hover'\n | '--rt-mat-dark-10'\n | '--rt-mat-dark-20'\n | '--rt-mat-dark-30'\n | '--rt-mat-dark-40'\n | '--rt-mat-green-10'\n | '--rt-mat-green-100'\n | '--rt-mat-green-120'\n | '--rt-mat-green-20'\n | '--rt-mat-green-40'\n | '--rt-mat-green-60'\n | '--rt-mat-green-80'\n | '--rt-mat-green-active'\n | '--rt-mat-green-hover'\n | '--rt-mat-menu-min-width'\n | '--rt-mat-menu-sm-icon-size'\n | '--rt-mat-menu-sm-item-height'\n | '--rt-mat-navy-100'\n | '--rt-mat-neutral-0'\n | '--rt-mat-neutral-10'\n | '--rt-mat-neutral-100'\n | '--rt-mat-neutral-15'\n | '--rt-mat-neutral-20'\n | '--rt-mat-neutral-25'\n | '--rt-mat-neutral-30'\n | '--rt-mat-neutral-35'\n | '--rt-mat-neutral-40'\n | '--rt-mat-neutral-5'\n | '--rt-mat-neutral-60'\n | '--rt-mat-neutral-80'\n | '--rt-mat-neutral-active'\n | '--rt-mat-neutral-hover'\n | '--rt-mat-orange-10'\n | '--rt-mat-orange-100'\n | '--rt-mat-orange-20'\n | '--rt-mat-orange-40'\n | '--rt-mat-orange-5'\n | '--rt-mat-orange-60'\n | '--rt-mat-orange-70'\n | '--rt-mat-orange-80'\n | '--rt-mat-orange-active'\n | '--rt-mat-orange-hover'\n | '--rt-mat-overlay-black-32'\n | '--rt-mat-overlay-black-4'\n | '--rt-mat-overlay-blue-24'\n | '--rt-mat-overlay-blue-8'\n | '--rt-mat-radius-4'\n | '--rt-mat-radius-5'\n | '--rt-mat-red-10'\n | '--rt-mat-red-100'\n | '--rt-mat-red-20'\n | '--rt-mat-red-40'\n | '--rt-mat-red-60'\n | '--rt-mat-red-80'\n | '--rt-mat-red-active'\n | '--rt-mat-red-hover'\n | '--rt-mat-shadow-fab'\n | '--rt-mat-shadow-fab-hover'\n | '--rt-mat-shadow-level-2'\n | '--rt-nav-caret-size'\n | '--rt-nav-color-disabled'\n | '--rt-nav-color-focus'\n | '--rt-nav-header-color-bg'\n | '--rt-nav-header-padding'\n | '--rt-nav-item-color'\n | '--rt-nav-item-color-bg'\n | '--rt-nav-item-color-bg-active'\n | '--rt-nav-item-color-border'\n | '--rt-nav-item-color-caret'\n | '--rt-nav-item-color-hover'\n | '--rt-nav-item-color-pressed'\n | '--rt-nav-item-content-gap'\n | '--rt-nav-item-font-size'\n | '--rt-nav-item-font-weight'\n | '--rt-nav-item-gap'\n | '--rt-nav-item-height'\n | '--rt-nav-item-line-height'\n | '--rt-nav-item-padding'\n | '--rt-nav-marker-color'\n | '--rt-nav-marker-size'\n | '--rt-nav-panel-color-bg'\n | '--rt-nav-panel-color-border'\n | '--rt-nav-panel-column-gap'\n | '--rt-nav-panel-column-width'\n | '--rt-nav-panel-columns'\n | '--rt-nav-panel-group-color'\n | '--rt-nav-panel-group-content-gap'\n | '--rt-nav-panel-group-font-size'\n | '--rt-nav-panel-group-font-weight'\n | '--rt-nav-panel-group-gap'\n | '--rt-nav-panel-item-color'\n | '--rt-nav-panel-item-color-active'\n | '--rt-nav-panel-item-color-bg-active'\n | '--rt-nav-panel-item-color-bg-hover'\n | '--rt-nav-panel-item-content-gap'\n | '--rt-nav-panel-item-font-size'\n | '--rt-nav-panel-item-font-weight'\n | '--rt-nav-panel-item-gap'\n | '--rt-nav-panel-item-height'\n | '--rt-nav-panel-item-padding'\n | '--rt-nav-panel-padding'\n | '--rt-nav-panel-padding-y'\n | '--rt-nav-panel-shadow'\n | '--rt-navy-600'\n | '--rt-navy-900'\n | '--rt-neutral-0'\n | '--rt-neutral-100'\n | '--rt-neutral-200'\n | '--rt-neutral-300'\n | '--rt-neutral-400'\n | '--rt-neutral-50'\n | '--rt-neutral-500'\n | '--rt-neutral-600'\n | '--rt-neutral-700'\n | '--rt-neutral-800'\n | '--rt-neutral-900'\n | '--rt-neutral-950'\n | '--rt-opacity-disabled'\n | '--rt-overlay-amber-16'\n | '--rt-overlay-black-4'\n | '--rt-overlay-black-50'\n | '--rt-overlay-black-8'\n | '--rt-overlay-brand-24'\n | '--rt-overlay-brand-8'\n | '--rt-overlay-danger-16'\n | '--rt-overlay-menu-bg'\n | '--rt-overlay-menu-current-bg'\n | '--rt-overlay-menu-danger-color'\n | '--rt-overlay-menu-danger-label-color'\n | '--rt-overlay-menu-item-icon-size'\n | '--rt-overlay-menu-item-min-height'\n | '--rt-overlay-menu-item-padding-x'\n | '--rt-overlay-menu-item-padding-y'\n | '--rt-overlay-menu-item-weight'\n | '--rt-overlay-menu-min-width'\n | '--rt-overlay-menu-padding-y'\n | '--rt-overlay-menu-radius'\n | '--rt-overlay-menu-shadow'\n | '--rt-overlay-menu-sm-item-icon-size'\n | '--rt-overlay-menu-sm-item-min-height'\n | '--rt-overlay-navy-70'\n | '--rt-overlay-select-check-display'\n | '--rt-overlay-select-option-font-size'\n | '--rt-overlay-select-option-min-height'\n | '--rt-overlay-select-panel-border-width'\n | '--rt-overlay-select-radius'\n | '--rt-overlay-select-selected-bg'\n | '--rt-overlay-select-selected-weight'\n | '--rt-overlay-select-shadow'\n | '--rt-overlay-tooltip-radius'\n | '--rt-overlay-tooltip-shadow'\n | '--rt-overlay-white-25'\n | '--rt-overlay-white-4'\n | '--rt-overlay-white-40'\n | '--rt-overlay-white-50'\n | '--rt-overlay-white-8'\n | '--rt-pagination-arrow-color'\n | '--rt-pagination-arrow-radius'\n | '--rt-pagination-arrow-shadow'\n | '--rt-pagination-arrow-size'\n | '--rt-pagination-box-color-border'\n | '--rt-pagination-box-color-text'\n | '--rt-pagination-box-current-color-bg'\n | '--rt-pagination-box-current-color-border'\n | '--rt-pagination-box-current-color-text'\n | '--rt-pagination-box-current-font-weight'\n | '--rt-pagination-box-radius'\n | '--rt-pagination-box-size'\n | '--rt-pagination-field-color-bg'\n | '--rt-pagination-field-color-border'\n | '--rt-pagination-field-color-text'\n | '--rt-pagination-field-height'\n | '--rt-pagination-field-padding-x'\n | '--rt-pagination-field-radius'\n | '--rt-pagination-gap'\n | '--rt-pagination-justify'\n | '--rt-pagination-nav-gap'\n | '--rt-pagination-padding-x'\n | '--rt-pagination-padding-y'\n | '--rt-pagination-per-page-gap'\n | '--rt-pagination-per-page-label-white-space'\n | '--rt-pagination-range-display'\n | '--rt-profile-avatar-font-size'\n | '--rt-profile-avatar-size'\n | '--rt-profile-item-content-gap'\n | '--rt-profile-item-font-size'\n | '--rt-profile-item-font-weight'\n | '--rt-profile-item-padding-y'\n | '--rt-profile-item-radius'\n | '--rt-profile-menu-min-width'\n | '--rt-profile-menu-padding'\n | '--rt-profile-menu-shadow'\n | '--rt-profile-row-inset'\n | '--rt-profile-theme-icon-padding'\n | '--rt-radius-2xl'\n | '--rt-radius-control'\n | '--rt-radius-full'\n | '--rt-radius-lg'\n | '--rt-radius-md'\n | '--rt-radius-ms'\n | '--rt-radius-none'\n | '--rt-radius-sm'\n | '--rt-radius-xl'\n | '--rt-radius-xs'\n | '--rt-shadow-card'\n | '--rt-shadow-card-soft'\n | '--rt-shadow-dialog'\n | '--rt-shadow-focus-ring'\n | '--rt-shadow-focus-ring-danger'\n | '--rt-shadow-lg'\n | '--rt-shadow-md'\n | '--rt-shadow-nav-panel'\n | '--rt-shadow-none'\n | '--rt-shadow-profile-menu'\n | '--rt-shadow-sm'\n | '--rt-shadow-status-dot'\n | '--rt-shadow-step-indicator'\n | '--rt-shadow-xl'\n | '--rt-size-1'\n | '--rt-size-10'\n | '--rt-size-100'\n | '--rt-size-12'\n | '--rt-size-16'\n | '--rt-size-2'\n | '--rt-size-20'\n | '--rt-size-24'\n | '--rt-size-3'\n | '--rt-size-30'\n | '--rt-size-4'\n | '--rt-size-40'\n | '--rt-size-5'\n | '--rt-size-6'\n | '--rt-size-60'\n | '--rt-size-64'\n | '--rt-size-8'\n | '--rt-slate-300'\n | '--rt-space-0'\n | '--rt-space-0-5'\n | '--rt-space-1'\n | '--rt-space-10'\n | '--rt-space-12'\n | '--rt-space-16'\n | '--rt-space-2'\n | '--rt-space-20'\n | '--rt-space-24'\n | '--rt-space-2xl'\n | '--rt-space-2xs'\n | '--rt-space-3xl'\n | '--rt-space-4'\n | '--rt-space-5'\n | '--rt-space-6'\n | '--rt-space-8'\n | '--rt-space-lg'\n | '--rt-space-md'\n | '--rt-space-sm'\n | '--rt-space-xl'\n | '--rt-space-xs'\n | '--rt-success-100'\n | '--rt-success-400'\n | '--rt-success-50'\n | '--rt-success-500'\n | '--rt-success-600'\n | '--rt-success-700'\n | '--rt-text-2xl'\n | '--rt-text-2xs'\n | '--rt-text-3xl'\n | '--rt-text-3xs'\n | '--rt-text-4xl'\n | '--rt-text-base'\n | '--rt-text-lg'\n | '--rt-text-md'\n | '--rt-text-sm'\n | '--rt-text-xl'\n | '--rt-text-xs'\n | '--rt-textarea-line-height'\n | '--rt-textarea-min-height'\n | '--rt-textarea-min-height-lg'\n | '--rt-textarea-min-height-md'\n | '--rt-textarea-min-height-sm'\n | '--rt-textarea-padding-y'\n | '--rt-toggle-color-border'\n | '--rt-toggle-color-icon'\n | '--rt-toggle-color-thumb'\n | '--rt-toggle-color-track'\n | '--rt-toggle-color-track-on'\n | '--rt-toggle-shadow-border'\n | '--rt-toggle-shadow-thumb'\n | '--rt-warning-50'\n | '--rt-warning-500'\n | '--rt-warning-600'\n | '--rt-warning-700'\n | '--rt-yellow-400'\n | '--rt-z-base'\n | '--rt-z-dropdown'\n | '--rt-z-fixed'\n | '--rt-z-modal'\n | '--rt-z-modal-backdrop'\n | '--rt-z-popover'\n | '--rt-z-sticky'\n | '--rt-z-tooltip';\n\n/** The name of a consumer's handle — a property the kit deliberately does not declare. */\nexport type TRtConsumerHandleName =\n | '--rt-action-bar-action-bg-hover'\n | '--rt-action-bar-action-color-danger'\n | '--rt-action-bar-action-focus-shadow'\n | '--rt-action-bar-action-font-size'\n | '--rt-action-bar-action-height'\n | '--rt-action-bar-action-padding-block'\n | '--rt-action-bar-action-padding-inline'\n | '--rt-action-bar-action-radius'\n | '--rt-action-bar-action-weight'\n | '--rt-action-bar-bg'\n | '--rt-action-bar-close-icon-size'\n | '--rt-action-bar-close-size'\n | '--rt-action-bar-color'\n | '--rt-action-bar-counter-font-size'\n | '--rt-action-bar-counter-weight'\n | '--rt-action-bar-font-size'\n | '--rt-action-bar-gap'\n | '--rt-action-bar-holder-bottom'\n | '--rt-action-bar-holder-enter-duration'\n | '--rt-action-bar-holder-inline'\n | '--rt-action-bar-holder-leave-duration'\n | '--rt-action-bar-icon-gap'\n | '--rt-action-bar-icon-size'\n | '--rt-action-bar-menu-bg'\n | '--rt-action-bar-menu-color'\n | '--rt-action-bar-menu-gap'\n | '--rt-action-bar-menu-item-font-size'\n | '--rt-action-bar-menu-padding'\n | '--rt-action-bar-menu-radius'\n | '--rt-action-bar-menu-shadow'\n | '--rt-action-bar-padding'\n | '--rt-action-bar-radius'\n | '--rt-action-bar-shadow'\n | '--rt-aside-bg'\n | '--rt-aside-content-inset'\n | '--rt-aside-error-margin-block'\n | '--rt-aside-footer-gap'\n | '--rt-aside-footer-inset'\n | '--rt-aside-footer-justify'\n | '--rt-aside-footer-margin'\n | '--rt-aside-header-back-icon-size'\n | '--rt-aside-header-back-size'\n | '--rt-aside-header-gap'\n | '--rt-aside-header-inset'\n | '--rt-aside-header-min-height'\n | '--rt-aside-header-subtitle-size'\n | '--rt-aside-header-title-leading'\n | '--rt-aside-header-title-size'\n | '--rt-aside-header-title-weight'\n | '--rt-aside-width'\n | '--rt-data-table-scrollbar-color'\n | '--rt-data-table-scrollbar-horizontal-height'\n | '--rt-data-table-scrollbar-vertical-width'\n | '--rt-data-table-scrollbar-width'\n | '--rt-dialog-bg'\n | '--rt-dialog-border'\n | '--rt-dialog-content-max-height'\n | '--rt-dialog-content-padding'\n | '--rt-dialog-footer-border'\n | '--rt-dialog-footer-padding'\n | '--rt-dialog-header-border'\n | '--rt-dialog-header-padding'\n | '--rt-dialog-title-font-size'\n | '--rt-dialog-title-transform'\n | '--rt-dialog-title-weight'\n | '--rt-dialog-width'\n | '--rt-dynamic-selector-list-actions-gap'\n | '--rt-dynamic-selector-list-actions-offset'\n | '--rt-dynamic-selector-list-actions-padding-end'\n | '--rt-dynamic-selector-list-add-color'\n | '--rt-dynamic-selector-list-controls-divider-color'\n | '--rt-dynamic-selector-list-controls-divider-width'\n | '--rt-dynamic-selector-list-controls-gap'\n | '--rt-dynamic-selector-list-handle-padding-end'\n | '--rt-dynamic-selector-list-handle-padding-start'\n | '--rt-dynamic-selector-list-row-padding-end'\n | '--rt-dynamic-selector-list-title-gap'\n | '--rt-dynamic-selector-popup-bg'\n | '--rt-dynamic-selector-popup-border-width'\n | '--rt-dynamic-selector-popup-button-font-size'\n | '--rt-dynamic-selector-popup-button-height'\n | '--rt-dynamic-selector-popup-empty-gap'\n | '--rt-dynamic-selector-popup-empty-icon-size'\n | '--rt-dynamic-selector-popup-empty-icon-wrap-bg'\n | '--rt-dynamic-selector-popup-empty-text-color'\n | '--rt-dynamic-selector-popup-empty-text-size'\n | '--rt-dynamic-selector-popup-empty-text-weight'\n | '--rt-dynamic-selector-popup-foot-border-width'\n | '--rt-dynamic-selector-popup-foot-padding'\n | '--rt-dynamic-selector-popup-highlight-bg'\n | '--rt-dynamic-selector-popup-highlight-color'\n | '--rt-dynamic-selector-popup-highlight-radius'\n | '--rt-dynamic-selector-popup-highlight-weight'\n | '--rt-dynamic-selector-popup-max-height'\n | '--rt-dynamic-selector-popup-min-height'\n | '--rt-dynamic-selector-popup-nav-color'\n | '--rt-dynamic-selector-popup-option-line-height'\n | '--rt-dynamic-selector-popup-option-min-height'\n | '--rt-dynamic-selector-popup-padding'\n | '--rt-dynamic-selector-popup-radius'\n | '--rt-dynamic-selector-popup-shadow'\n | '--rt-dynamic-selector-popup-width'\n | '--rt-header-content-max-width'\n | '--rt-header-height'\n | '--rt-icon-button-bg'\n | '--rt-icon-button-bg-hover'\n | '--rt-icon-button-size'\n | '--rt-icon-color-danger'\n | '--rt-icon-color-disabled'\n | '--rt-icon-color-info'\n | '--rt-icon-color-inverse'\n | '--rt-icon-color-muted'\n | '--rt-icon-color-primary'\n | '--rt-icon-color-success'\n | '--rt-icon-color-warning'\n | '--rt-icon-glyph-font'\n | '--rt-icon-glyph-grade'\n | '--rt-icon-glyph-opsz'\n | '--rt-icon-glyph-weight'\n | '--rt-icon-step-2xl'\n | '--rt-icon-step-3xl'\n | '--rt-icon-step-4xl'\n | '--rt-icon-step-lg'\n | '--rt-icon-step-md'\n | '--rt-icon-step-sm'\n | '--rt-icon-step-xl'\n | '--rt-icon-step-xs'\n | '--rt-logo-tagline'\n | '--rt-logo-tagline-dark'\n | '--rt-logo-wordmark'\n | '--rt-logo-wordmark-dark'\n | '--rt-page-header-bg'\n | '--rt-table-actions-bg'\n | '--rt-tag-color-bg'\n | '--rt-tag-color-border'\n | '--rt-tag-color-text'\n | '--rt-tag-letter-spacing'\n | '--rt-tag-padding-block'\n | '--rt-tag-padding-inline'\n | '--rt-toast-action-color'\n | '--rt-toast-bg'\n | '--rt-toast-border-color'\n | '--rt-toast-close-color'\n | '--rt-toast-color'\n | '--rt-toast-filled-danger-bg'\n | '--rt-toast-filled-danger-border-color'\n | '--rt-toast-filled-danger-color'\n | '--rt-toast-filled-info-bg'\n | '--rt-toast-filled-info-border-color'\n | '--rt-toast-filled-info-color'\n | '--rt-toast-filled-success-bg'\n | '--rt-toast-filled-success-border-color'\n | '--rt-toast-filled-success-color'\n | '--rt-toast-filled-warning-bg'\n | '--rt-toast-filled-warning-border-color'\n | '--rt-toast-filled-warning-color'\n | '--rt-toast-icon-color'\n | '--rt-toast-progress-color'\n | '--rt-toast-progress-height'\n | '--rt-workspace-aside-size'\n | '--rt-workspace-list-size';\n\n/** All the styling properties declared by the kit. */\nexport const RT_DESIGN_TOKEN_NAMES: readonly TRtDesignTokenName[] = [\n '--rt-amber-400',\n '--rt-border-width-medium',\n '--rt-border-width-thick',\n '--rt-border-width-thin',\n '--rt-bp-lg',\n '--rt-bp-md',\n '--rt-bp-sm',\n '--rt-bp-xl',\n '--rt-brand-100',\n '--rt-brand-200',\n '--rt-brand-300',\n '--rt-brand-400',\n '--rt-brand-50',\n '--rt-brand-500',\n '--rt-brand-600',\n '--rt-brand-700',\n '--rt-brand-800',\n '--rt-brand-900',\n '--rt-brand-950',\n '--rt-btn-tint-active',\n '--rt-btn-tint-hover',\n '--rt-charcoal-700',\n '--rt-charcoal-800',\n '--rt-charcoal-900',\n '--rt-charcoal-950',\n '--rt-charcoal-border',\n '--rt-charcoal-border-strong',\n '--rt-chat-bubble-date',\n '--rt-chat-bubble-in-author',\n '--rt-chat-bubble-in-bg',\n '--rt-chat-bubble-own-author',\n '--rt-chat-bubble-own-bg',\n '--rt-chat-status-read',\n '--rt-color-action-danger',\n '--rt-color-action-danger-active',\n '--rt-color-action-danger-hover',\n '--rt-color-action-danger-on-surface',\n '--rt-color-action-disabled',\n '--rt-color-action-info',\n '--rt-color-action-info-active',\n '--rt-color-action-info-hover',\n '--rt-color-action-info-on-surface',\n '--rt-color-action-on-danger',\n '--rt-color-action-on-disabled',\n '--rt-color-action-on-info',\n '--rt-color-action-on-primary',\n '--rt-color-action-on-secondary',\n '--rt-color-action-on-success',\n '--rt-color-action-on-warning',\n '--rt-color-action-primary',\n '--rt-color-action-primary-active',\n '--rt-color-action-primary-hover',\n '--rt-color-action-primary-on-surface',\n '--rt-color-action-primary-soft',\n '--rt-color-action-primary-subtle',\n '--rt-color-action-secondary',\n '--rt-color-action-secondary-active',\n '--rt-color-action-secondary-hover',\n '--rt-color-action-secondary-on-surface',\n '--rt-color-action-success',\n '--rt-color-action-success-active',\n '--rt-color-action-success-hover',\n '--rt-color-action-success-on-surface',\n '--rt-color-action-warning',\n '--rt-color-action-warning-active',\n '--rt-color-action-warning-hover',\n '--rt-color-action-warning-on-surface',\n '--rt-color-bg-hover',\n '--rt-color-bg-inverse',\n '--rt-color-bg-nav',\n '--rt-color-bg-overlay',\n '--rt-color-bg-page',\n '--rt-color-bg-page-auth',\n '--rt-color-bg-subtle',\n '--rt-color-bg-surface',\n '--rt-color-bg-surface-auth-card',\n '--rt-color-bg-surface-subtle',\n '--rt-color-bg-surface-subtle-2',\n '--rt-color-border-default',\n '--rt-color-border-focus',\n '--rt-color-border-strong',\n '--rt-color-border-subtle',\n '--rt-color-field-fill-underline',\n '--rt-color-skeleton-base',\n '--rt-color-skeleton-wave',\n '--rt-color-state-danger',\n '--rt-color-state-danger-bg',\n '--rt-color-state-error-text',\n '--rt-color-state-info',\n '--rt-color-state-info-bg',\n '--rt-color-state-success',\n '--rt-color-state-success-bg',\n '--rt-color-state-success-text',\n '--rt-color-state-warning',\n '--rt-color-state-warning-bg',\n '--rt-color-state-warning-text',\n '--rt-color-stepper-current',\n '--rt-color-stepper-current-subtle',\n '--rt-color-stepper-progress',\n '--rt-color-stepper-track',\n '--rt-color-table-head-bg',\n '--rt-color-text-disabled',\n '--rt-color-text-inverse',\n '--rt-color-text-link',\n '--rt-color-text-link-hover',\n '--rt-color-text-muted',\n '--rt-color-text-primary',\n '--rt-control-height-2xl',\n '--rt-control-height-lg',\n '--rt-control-height-md',\n '--rt-control-height-sm',\n '--rt-control-height-xl',\n '--rt-control-max-width',\n '--rt-control-panel-max-height',\n '--rt-control-textarea-min-height-lg',\n '--rt-control-textarea-min-height-md',\n '--rt-control-textarea-min-height-sm',\n '--rt-counter-gap',\n '--rt-counter-row-color-border',\n '--rt-counter-row-gap',\n '--rt-counter-row-hint-color',\n '--rt-counter-row-hint-font-size',\n '--rt-counter-row-label-color',\n '--rt-counter-row-label-font-size',\n '--rt-counter-row-padding-y',\n '--rt-counter-value-color',\n '--rt-counter-value-font-size',\n '--rt-counter-value-min-width',\n '--rt-danger-50',\n '--rt-danger-500',\n '--rt-danger-600',\n '--rt-danger-700',\n '--rt-duration-base',\n '--rt-duration-fast',\n '--rt-duration-slow',\n '--rt-duration-slower',\n '--rt-field-error-color',\n '--rt-field-error-font-size',\n '--rt-field-gap',\n '--rt-field-hint-color',\n '--rt-field-hint-font-size',\n '--rt-field-label-color',\n '--rt-field-label-font-size',\n '--rt-field-label-font-weight',\n '--rt-field-label-help-gap',\n '--rt-field-required-color',\n '--rt-field-value-color',\n '--rt-field-value-empty-color',\n '--rt-field-value-font-size',\n '--rt-focus-ring-color',\n '--rt-focus-ring-color-danger',\n '--rt-focus-ring-offset',\n '--rt-focus-ring-width',\n '--rt-font-family-mono',\n '--rt-font-family-sans',\n '--rt-font-weight-bold',\n '--rt-font-weight-medium',\n '--rt-font-weight-regular',\n '--rt-font-weight-semibold',\n '--rt-gray-350',\n '--rt-icon-button-color-bg-hover',\n '--rt-icon-button-disabled-color',\n '--rt-icon-button-disabled-fill',\n '--rt-icon-button-disabled-opacity',\n '--rt-info-50',\n '--rt-info-500',\n '--rt-info-600',\n '--rt-info-700',\n '--rt-input-border-width',\n '--rt-input-color-bg',\n '--rt-input-color-bg-disabled',\n '--rt-input-color-bg-hover',\n '--rt-input-color-border',\n '--rt-input-color-border-error',\n '--rt-input-color-border-focus',\n '--rt-input-color-text',\n '--rt-input-color-text-placeholder',\n '--rt-input-disabled-opacity',\n '--rt-input-focus-outline-offset',\n '--rt-input-focus-shadow',\n '--rt-input-focus-shadow-error',\n '--rt-input-font-size',\n '--rt-input-gap',\n '--rt-input-height',\n '--rt-input-height-lg',\n '--rt-input-height-md',\n '--rt-input-height-sm',\n '--rt-input-icon-color',\n '--rt-input-icon-size',\n '--rt-input-line-height',\n '--rt-input-max-width',\n '--rt-input-padding-x',\n '--rt-input-padding-y',\n '--rt-input-panel-max-height',\n '--rt-input-radius',\n '--rt-input-transition',\n '--rt-leading-none',\n '--rt-leading-normal',\n '--rt-leading-relaxed',\n '--rt-leading-snug',\n '--rt-leading-tight',\n '--rt-letter-spacing-wide',\n '--rt-list-action-color',\n '--rt-list-action-color-bg-hover',\n '--rt-list-action-color-hover',\n '--rt-list-action-divider-height',\n '--rt-list-action-gap',\n '--rt-list-action-icon-size',\n '--rt-list-action-radius',\n '--rt-list-action-shadow',\n '--rt-list-action-shadow-hover',\n '--rt-list-content-padding-bottom',\n '--rt-list-copy-button-bg',\n '--rt-list-copy-button-bg-hover',\n '--rt-list-copy-button-color',\n '--rt-list-copy-button-radius',\n '--rt-list-copy-button-size',\n '--rt-list-empty-icon-size',\n '--rt-list-empty-icon-wrap-bg',\n '--rt-list-empty-icon-wrap-size',\n '--rt-list-empty-title-size',\n '--rt-list-empty-title-weight',\n '--rt-list-filter-line-height',\n '--rt-list-placeholder-grow',\n '--rt-list-placeholder-min-height',\n '--rt-list-search-color-bg',\n '--rt-list-search-color-border',\n '--rt-list-search-color-placeholder',\n '--rt-list-search-font-size',\n '--rt-list-search-gap',\n '--rt-list-search-height',\n '--rt-list-search-icon-color',\n '--rt-list-search-icon-size',\n '--rt-list-search-padding-x',\n '--rt-list-search-radius',\n '--rt-list-search-width',\n '--rt-list-selector-label-color',\n '--rt-list-settings-icon-color',\n '--rt-list-settings-item-bg',\n '--rt-list-settings-item-radius',\n '--rt-list-table-button-radius',\n '--rt-list-table-button-size',\n '--rt-list-table-head-divider-color',\n '--rt-list-table-icon-color',\n '--rt-list-table-icon-size',\n '--rt-list-toolbar-gap',\n '--rt-list-toolbar-padding-bottom',\n '--rt-list-toolbar-padding-top',\n '--rt-mat-blue-100',\n '--rt-mat-blue-20',\n '--rt-mat-blue-40',\n '--rt-mat-blue-60',\n '--rt-mat-blue-80',\n '--rt-mat-blue-active',\n '--rt-mat-blue-hover',\n '--rt-mat-dark-10',\n '--rt-mat-dark-20',\n '--rt-mat-dark-30',\n '--rt-mat-dark-40',\n '--rt-mat-green-10',\n '--rt-mat-green-100',\n '--rt-mat-green-120',\n '--rt-mat-green-20',\n '--rt-mat-green-40',\n '--rt-mat-green-60',\n '--rt-mat-green-80',\n '--rt-mat-green-active',\n '--rt-mat-green-hover',\n '--rt-mat-menu-min-width',\n '--rt-mat-menu-sm-icon-size',\n '--rt-mat-menu-sm-item-height',\n '--rt-mat-navy-100',\n '--rt-mat-neutral-0',\n '--rt-mat-neutral-10',\n '--rt-mat-neutral-100',\n '--rt-mat-neutral-15',\n '--rt-mat-neutral-20',\n '--rt-mat-neutral-25',\n '--rt-mat-neutral-30',\n '--rt-mat-neutral-35',\n '--rt-mat-neutral-40',\n '--rt-mat-neutral-5',\n '--rt-mat-neutral-60',\n '--rt-mat-neutral-80',\n '--rt-mat-neutral-active',\n '--rt-mat-neutral-hover',\n '--rt-mat-orange-10',\n '--rt-mat-orange-100',\n '--rt-mat-orange-20',\n '--rt-mat-orange-40',\n '--rt-mat-orange-5',\n '--rt-mat-orange-60',\n '--rt-mat-orange-70',\n '--rt-mat-orange-80',\n '--rt-mat-orange-active',\n '--rt-mat-orange-hover',\n '--rt-mat-overlay-black-32',\n '--rt-mat-overlay-black-4',\n '--rt-mat-overlay-blue-24',\n '--rt-mat-overlay-blue-8',\n '--rt-mat-radius-4',\n '--rt-mat-radius-5',\n '--rt-mat-red-10',\n '--rt-mat-red-100',\n '--rt-mat-red-20',\n '--rt-mat-red-40',\n '--rt-mat-red-60',\n '--rt-mat-red-80',\n '--rt-mat-red-active',\n '--rt-mat-red-hover',\n '--rt-mat-shadow-fab',\n '--rt-mat-shadow-fab-hover',\n '--rt-mat-shadow-level-2',\n '--rt-nav-caret-size',\n '--rt-nav-color-disabled',\n '--rt-nav-color-focus',\n '--rt-nav-header-color-bg',\n '--rt-nav-header-padding',\n '--rt-nav-item-color',\n '--rt-nav-item-color-bg',\n '--rt-nav-item-color-bg-active',\n '--rt-nav-item-color-border',\n '--rt-nav-item-color-caret',\n '--rt-nav-item-color-hover',\n '--rt-nav-item-color-pressed',\n '--rt-nav-item-content-gap',\n '--rt-nav-item-font-size',\n '--rt-nav-item-font-weight',\n '--rt-nav-item-gap',\n '--rt-nav-item-height',\n '--rt-nav-item-line-height',\n '--rt-nav-item-padding',\n '--rt-nav-marker-color',\n '--rt-nav-marker-size',\n '--rt-nav-panel-color-bg',\n '--rt-nav-panel-color-border',\n '--rt-nav-panel-column-gap',\n '--rt-nav-panel-column-width',\n '--rt-nav-panel-columns',\n '--rt-nav-panel-group-color',\n '--rt-nav-panel-group-content-gap',\n '--rt-nav-panel-group-font-size',\n '--rt-nav-panel-group-font-weight',\n '--rt-nav-panel-group-gap',\n '--rt-nav-panel-item-color',\n '--rt-nav-panel-item-color-active',\n '--rt-nav-panel-item-color-bg-active',\n '--rt-nav-panel-item-color-bg-hover',\n '--rt-nav-panel-item-content-gap',\n '--rt-nav-panel-item-font-size',\n '--rt-nav-panel-item-font-weight',\n '--rt-nav-panel-item-gap',\n '--rt-nav-panel-item-height',\n '--rt-nav-panel-item-padding',\n '--rt-nav-panel-padding',\n '--rt-nav-panel-padding-y',\n '--rt-nav-panel-shadow',\n '--rt-navy-600',\n '--rt-navy-900',\n '--rt-neutral-0',\n '--rt-neutral-100',\n '--rt-neutral-200',\n '--rt-neutral-300',\n '--rt-neutral-400',\n '--rt-neutral-50',\n '--rt-neutral-500',\n '--rt-neutral-600',\n '--rt-neutral-700',\n '--rt-neutral-800',\n '--rt-neutral-900',\n '--rt-neutral-950',\n '--rt-opacity-disabled',\n '--rt-overlay-amber-16',\n '--rt-overlay-black-4',\n '--rt-overlay-black-50',\n '--rt-overlay-black-8',\n '--rt-overlay-brand-24',\n '--rt-overlay-brand-8',\n '--rt-overlay-danger-16',\n '--rt-overlay-menu-bg',\n '--rt-overlay-menu-current-bg',\n '--rt-overlay-menu-danger-color',\n '--rt-overlay-menu-danger-label-color',\n '--rt-overlay-menu-item-icon-size',\n '--rt-overlay-menu-item-min-height',\n '--rt-overlay-menu-item-padding-x',\n '--rt-overlay-menu-item-padding-y',\n '--rt-overlay-menu-item-weight',\n '--rt-overlay-menu-min-width',\n '--rt-overlay-menu-padding-y',\n '--rt-overlay-menu-radius',\n '--rt-overlay-menu-shadow',\n '--rt-overlay-menu-sm-item-icon-size',\n '--rt-overlay-menu-sm-item-min-height',\n '--rt-overlay-navy-70',\n '--rt-overlay-select-check-display',\n '--rt-overlay-select-option-font-size',\n '--rt-overlay-select-option-min-height',\n '--rt-overlay-select-panel-border-width',\n '--rt-overlay-select-radius',\n '--rt-overlay-select-selected-bg',\n '--rt-overlay-select-selected-weight',\n '--rt-overlay-select-shadow',\n '--rt-overlay-tooltip-radius',\n '--rt-overlay-tooltip-shadow',\n '--rt-overlay-white-25',\n '--rt-overlay-white-4',\n '--rt-overlay-white-40',\n '--rt-overlay-white-50',\n '--rt-overlay-white-8',\n '--rt-pagination-arrow-color',\n '--rt-pagination-arrow-radius',\n '--rt-pagination-arrow-shadow',\n '--rt-pagination-arrow-size',\n '--rt-pagination-box-color-border',\n '--rt-pagination-box-color-text',\n '--rt-pagination-box-current-color-bg',\n '--rt-pagination-box-current-color-border',\n '--rt-pagination-box-current-color-text',\n '--rt-pagination-box-current-font-weight',\n '--rt-pagination-box-radius',\n '--rt-pagination-box-size',\n '--rt-pagination-field-color-bg',\n '--rt-pagination-field-color-border',\n '--rt-pagination-field-color-text',\n '--rt-pagination-field-height',\n '--rt-pagination-field-padding-x',\n '--rt-pagination-field-radius',\n '--rt-pagination-gap',\n '--rt-pagination-justify',\n '--rt-pagination-nav-gap',\n '--rt-pagination-padding-x',\n '--rt-pagination-padding-y',\n '--rt-pagination-per-page-gap',\n '--rt-pagination-per-page-label-white-space',\n '--rt-pagination-range-display',\n '--rt-profile-avatar-font-size',\n '--rt-profile-avatar-size',\n '--rt-profile-item-content-gap',\n '--rt-profile-item-font-size',\n '--rt-profile-item-font-weight',\n '--rt-profile-item-padding-y',\n '--rt-profile-item-radius',\n '--rt-profile-menu-min-width',\n '--rt-profile-menu-padding',\n '--rt-profile-menu-shadow',\n '--rt-profile-row-inset',\n '--rt-profile-theme-icon-padding',\n '--rt-radius-2xl',\n '--rt-radius-control',\n '--rt-radius-full',\n '--rt-radius-lg',\n '--rt-radius-md',\n '--rt-radius-ms',\n '--rt-radius-none',\n '--rt-radius-sm',\n '--rt-radius-xl',\n '--rt-radius-xs',\n '--rt-shadow-card',\n '--rt-shadow-card-soft',\n '--rt-shadow-dialog',\n '--rt-shadow-focus-ring',\n '--rt-shadow-focus-ring-danger',\n '--rt-shadow-lg',\n '--rt-shadow-md',\n '--rt-shadow-nav-panel',\n '--rt-shadow-none',\n '--rt-shadow-profile-menu',\n '--rt-shadow-sm',\n '--rt-shadow-status-dot',\n '--rt-shadow-step-indicator',\n '--rt-shadow-xl',\n '--rt-size-1',\n '--rt-size-10',\n '--rt-size-100',\n '--rt-size-12',\n '--rt-size-16',\n '--rt-size-2',\n '--rt-size-20',\n '--rt-size-24',\n '--rt-size-3',\n '--rt-size-30',\n '--rt-size-4',\n '--rt-size-40',\n '--rt-size-5',\n '--rt-size-6',\n '--rt-size-60',\n '--rt-size-64',\n '--rt-size-8',\n '--rt-slate-300',\n '--rt-space-0',\n '--rt-space-0-5',\n '--rt-space-1',\n '--rt-space-10',\n '--rt-space-12',\n '--rt-space-16',\n '--rt-space-2',\n '--rt-space-20',\n '--rt-space-24',\n '--rt-space-2xl',\n '--rt-space-2xs',\n '--rt-space-3xl',\n '--rt-space-4',\n '--rt-space-5',\n '--rt-space-6',\n '--rt-space-8',\n '--rt-space-lg',\n '--rt-space-md',\n '--rt-space-sm',\n '--rt-space-xl',\n '--rt-space-xs',\n '--rt-success-100',\n '--rt-success-400',\n '--rt-success-50',\n '--rt-success-500',\n '--rt-success-600',\n '--rt-success-700',\n '--rt-text-2xl',\n '--rt-text-2xs',\n '--rt-text-3xl',\n '--rt-text-3xs',\n '--rt-text-4xl',\n '--rt-text-base',\n '--rt-text-lg',\n '--rt-text-md',\n '--rt-text-sm',\n '--rt-text-xl',\n '--rt-text-xs',\n '--rt-textarea-line-height',\n '--rt-textarea-min-height',\n '--rt-textarea-min-height-lg',\n '--rt-textarea-min-height-md',\n '--rt-textarea-min-height-sm',\n '--rt-textarea-padding-y',\n '--rt-toggle-color-border',\n '--rt-toggle-color-icon',\n '--rt-toggle-color-thumb',\n '--rt-toggle-color-track',\n '--rt-toggle-color-track-on',\n '--rt-toggle-shadow-border',\n '--rt-toggle-shadow-thumb',\n '--rt-warning-50',\n '--rt-warning-500',\n '--rt-warning-600',\n '--rt-warning-700',\n '--rt-yellow-400',\n '--rt-z-base',\n '--rt-z-dropdown',\n '--rt-z-fixed',\n '--rt-z-modal',\n '--rt-z-modal-backdrop',\n '--rt-z-popover',\n '--rt-z-sticky',\n '--rt-z-tooltip',\n];\n\n/** All the consumer's handles: the value comes from the application, until then the fallback works. */\nexport const RT_CONSUMER_HANDLE_NAMES: readonly TRtConsumerHandleName[] = [\n '--rt-action-bar-action-bg-hover',\n '--rt-action-bar-action-color-danger',\n '--rt-action-bar-action-focus-shadow',\n '--rt-action-bar-action-font-size',\n '--rt-action-bar-action-height',\n '--rt-action-bar-action-padding-block',\n '--rt-action-bar-action-padding-inline',\n '--rt-action-bar-action-radius',\n '--rt-action-bar-action-weight',\n '--rt-action-bar-bg',\n '--rt-action-bar-close-icon-size',\n '--rt-action-bar-close-size',\n '--rt-action-bar-color',\n '--rt-action-bar-counter-font-size',\n '--rt-action-bar-counter-weight',\n '--rt-action-bar-font-size',\n '--rt-action-bar-gap',\n '--rt-action-bar-holder-bottom',\n '--rt-action-bar-holder-enter-duration',\n '--rt-action-bar-holder-inline',\n '--rt-action-bar-holder-leave-duration',\n '--rt-action-bar-icon-gap',\n '--rt-action-bar-icon-size',\n '--rt-action-bar-menu-bg',\n '--rt-action-bar-menu-color',\n '--rt-action-bar-menu-gap',\n '--rt-action-bar-menu-item-font-size',\n '--rt-action-bar-menu-padding',\n '--rt-action-bar-menu-radius',\n '--rt-action-bar-menu-shadow',\n '--rt-action-bar-padding',\n '--rt-action-bar-radius',\n '--rt-action-bar-shadow',\n '--rt-aside-bg',\n '--rt-aside-content-inset',\n '--rt-aside-error-margin-block',\n '--rt-aside-footer-gap',\n '--rt-aside-footer-inset',\n '--rt-aside-footer-justify',\n '--rt-aside-footer-margin',\n '--rt-aside-header-back-icon-size',\n '--rt-aside-header-back-size',\n '--rt-aside-header-gap',\n '--rt-aside-header-inset',\n '--rt-aside-header-min-height',\n '--rt-aside-header-subtitle-size',\n '--rt-aside-header-title-leading',\n '--rt-aside-header-title-size',\n '--rt-aside-header-title-weight',\n '--rt-aside-width',\n '--rt-data-table-scrollbar-color',\n '--rt-data-table-scrollbar-horizontal-height',\n '--rt-data-table-scrollbar-vertical-width',\n '--rt-data-table-scrollbar-width',\n '--rt-dialog-bg',\n '--rt-dialog-border',\n '--rt-dialog-content-max-height',\n '--rt-dialog-content-padding',\n '--rt-dialog-footer-border',\n '--rt-dialog-footer-padding',\n '--rt-dialog-header-border',\n '--rt-dialog-header-padding',\n '--rt-dialog-title-font-size',\n '--rt-dialog-title-transform',\n '--rt-dialog-title-weight',\n '--rt-dialog-width',\n '--rt-dynamic-selector-list-actions-gap',\n '--rt-dynamic-selector-list-actions-offset',\n '--rt-dynamic-selector-list-actions-padding-end',\n '--rt-dynamic-selector-list-add-color',\n '--rt-dynamic-selector-list-controls-divider-color',\n '--rt-dynamic-selector-list-controls-divider-width',\n '--rt-dynamic-selector-list-controls-gap',\n '--rt-dynamic-selector-list-handle-padding-end',\n '--rt-dynamic-selector-list-handle-padding-start',\n '--rt-dynamic-selector-list-row-padding-end',\n '--rt-dynamic-selector-list-title-gap',\n '--rt-dynamic-selector-popup-bg',\n '--rt-dynamic-selector-popup-border-width',\n '--rt-dynamic-selector-popup-button-font-size',\n '--rt-dynamic-selector-popup-button-height',\n '--rt-dynamic-selector-popup-empty-gap',\n '--rt-dynamic-selector-popup-empty-icon-size',\n '--rt-dynamic-selector-popup-empty-icon-wrap-bg',\n '--rt-dynamic-selector-popup-empty-text-color',\n '--rt-dynamic-selector-popup-empty-text-size',\n '--rt-dynamic-selector-popup-empty-text-weight',\n '--rt-dynamic-selector-popup-foot-border-width',\n '--rt-dynamic-selector-popup-foot-padding',\n '--rt-dynamic-selector-popup-highlight-bg',\n '--rt-dynamic-selector-popup-highlight-color',\n '--rt-dynamic-selector-popup-highlight-radius',\n '--rt-dynamic-selector-popup-highlight-weight',\n '--rt-dynamic-selector-popup-max-height',\n '--rt-dynamic-selector-popup-min-height',\n '--rt-dynamic-selector-popup-nav-color',\n '--rt-dynamic-selector-popup-option-line-height',\n '--rt-dynamic-selector-popup-option-min-height',\n '--rt-dynamic-selector-popup-padding',\n '--rt-dynamic-selector-popup-radius',\n '--rt-dynamic-selector-popup-shadow',\n '--rt-dynamic-selector-popup-width',\n '--rt-header-content-max-width',\n '--rt-header-height',\n '--rt-icon-button-bg',\n '--rt-icon-button-bg-hover',\n '--rt-icon-button-size',\n '--rt-icon-color-danger',\n '--rt-icon-color-disabled',\n '--rt-icon-color-info',\n '--rt-icon-color-inverse',\n '--rt-icon-color-muted',\n '--rt-icon-color-primary',\n '--rt-icon-color-success',\n '--rt-icon-color-warning',\n '--rt-icon-glyph-font',\n '--rt-icon-glyph-grade',\n '--rt-icon-glyph-opsz',\n '--rt-icon-glyph-weight',\n '--rt-icon-step-2xl',\n '--rt-icon-step-3xl',\n '--rt-icon-step-4xl',\n '--rt-icon-step-lg',\n '--rt-icon-step-md',\n '--rt-icon-step-sm',\n '--rt-icon-step-xl',\n '--rt-icon-step-xs',\n '--rt-logo-tagline',\n '--rt-logo-tagline-dark',\n '--rt-logo-wordmark',\n '--rt-logo-wordmark-dark',\n '--rt-page-header-bg',\n '--rt-table-actions-bg',\n '--rt-tag-color-bg',\n '--rt-tag-color-border',\n '--rt-tag-color-text',\n '--rt-tag-letter-spacing',\n '--rt-tag-padding-block',\n '--rt-tag-padding-inline',\n '--rt-toast-action-color',\n '--rt-toast-bg',\n '--rt-toast-border-color',\n '--rt-toast-close-color',\n '--rt-toast-color',\n '--rt-toast-filled-danger-bg',\n '--rt-toast-filled-danger-border-color',\n '--rt-toast-filled-danger-color',\n '--rt-toast-filled-info-bg',\n '--rt-toast-filled-info-border-color',\n '--rt-toast-filled-info-color',\n '--rt-toast-filled-success-bg',\n '--rt-toast-filled-success-border-color',\n '--rt-toast-filled-success-color',\n '--rt-toast-filled-warning-bg',\n '--rt-toast-filled-warning-border-color',\n '--rt-toast-filled-warning-color',\n '--rt-toast-icon-color',\n '--rt-toast-progress-color',\n '--rt-toast-progress-height',\n '--rt-workspace-aside-size',\n '--rt-workspace-list-size',\n];\n","/**\n * Подпись по умолчанию, когда из URL не удалось извлечь имя файла. Нейтральная\n * и непереводимая: кит не знает языка потребителя, а видимую подпись\n * вызывающая сторона передаёт вторым аргументом.\n */\nconst DEFAULT_ATTACHMENT_NAME: string = 'file';\n\n/**\n * Извлекает имя файла из URL: последний сегмент пути без query/fragment,\n * декодированный из percent-encoding. Нужен для вложений, у которых источник\n * отдаёт только ссылку на скачивание без метаданных (имени/размера).\n *\n * @param url Ссылка на файл. Пустая/`null` → `fallback`.\n * @param fallback Что вернуть, если сегмент пустой или URL не распарсился.\n */\nexport function fileNameFromUrl(url: string | null | undefined, fallback: string = DEFAULT_ATTACHMENT_NAME): string {\n if (!url) {\n return fallback;\n }\n\n const path: string = url.split('?')[0].split('#')[0];\n // У абсолютных URL имя файла живёт только в pathname — отбрасываем протокол и хост,\n // иначе для ссылки без пути (\"https://host/\") именем стал бы сам хост.\n let pathname: string = path;\n const schemeIdx: number = path.indexOf('://');\n if (schemeIdx !== -1) {\n const slashIdx: number = path.indexOf('/', schemeIdx + 3);\n pathname = slashIdx === -1 ? '' : path.slice(slashIdx);\n }\n const segment: string = pathname.split('/').filter(Boolean).pop() ?? '';\n if (!segment) {\n return fallback;\n }\n\n try {\n return decodeURIComponent(segment);\n } catch {\n // Некорректный percent-encoding — показываем сегмент как есть.\n return segment;\n }\n}\n","/**\n * Форматирует размер файла в байтах в человекочитаемую строку (SI, base-1000).\n *\n * Используется десятичная система (1 кБ = 1000 Б), а не двоичная (KiB), —\n * так размер совпадает с тем, что показывает большинство ОС и файловых менеджеров.\n * Единицы — латиницей (`B` / `kB` / `MB` / `GB`), как в макете карточки файла.\n *\n * @param bytes Размер в байтах. `null`/`undefined`/`NaN`/отрицательное → пустая строка\n * (caller сам решает, скрывать бейдж или нет).\n * @returns Строка вида `\"82 kB\"`, `\"1.4 MB\"` или `\"\"`, если размер неизвестен.\n */\nexport function formatFileSize(bytes: number | null | undefined): string {\n if (bytes === null || bytes === undefined || Number.isNaN(bytes) || bytes < 0) {\n return '';\n }\n\n if (bytes < 1_000) {\n return `${bytes} B`;\n }\n\n if (bytes < 1_000_000) {\n return `${Math.round(bytes / 1_000)} kB`;\n }\n\n if (bytes < 1_000_000_000) {\n return `${(bytes / 1_000_000).toFixed(1)} MB`;\n }\n\n return `${(bytes / 1_000_000_000).toFixed(1)} GB`;\n}\n","/**\n * Дерево узлов показа разметки: то, во что разборщик переводит присланный текст.\n *\n * Перечень узлов закрыт. Разборщик не умеет строить ничего, кроме перечисленного здесь, —\n * поэтому сырой HTML, картинки и адреса чужих схем в вывод не попадают вовсе: для них тут\n * просто нет узла, и они остаются видимым текстом.\n */\n\n/** Род блока — то, чем текст разделён по вертикали. */\nexport enum ERtMarkdownBlock {\n Heading = 'heading',\n Paragraph = 'paragraph',\n List = 'list',\n Quote = 'quote',\n Code = 'code',\n Table = 'table',\n}\n\n/** Род куска строки — то, чем текст размечен внутри абзаца. */\nexport enum ERtMarkdownInline {\n Text = 'text',\n Strong = 'strong',\n Emphasis = 'emphasis',\n Strike = 'strike',\n Code = 'code',\n Link = 'link',\n Break = 'break',\n}\n\n/** Кусок строки: либо сам текст, либо разметка вокруг вложенных кусков. */\nexport interface IRtMarkdownInlineNode {\n readonly kind: ERtMarkdownInline;\n /** Текст куска. У разметки вокруг вложенного — пустая строка. */\n readonly text: string;\n /** Вложенные куски у жирного, курсива и зачёркнутого; у остальных пусто. */\n readonly children: readonly IRtMarkdownInlineNode[];\n /** Адрес ссылки. Стоит только у ссылки и только разрешённой схемы. */\n readonly href: string | null;\n}\n\n/** Пункт списка: свои куски строки и уровень вложенности, считая от нуля. */\nexport interface IRtMarkdownListItem {\n readonly level: number;\n /**\n * Тот же уровень строкой — для модификатора разметки.\n *\n * Директива модификатора числа не принимает: любое нестроковое значение она сводит к\n * признаку и даёт класс без значения, то есть один и тот же на все уровни.\n */\n readonly levelName: string;\n readonly content: readonly IRtMarkdownInlineNode[];\n}\n\n/** Блок показа. Поля, которых у этого рода нет, стоят пустыми. */\nexport interface IRtMarkdownBlockNode {\n readonly kind: ERtMarkdownBlock;\n /** Уровень заголовка, от 1 до 6. У остальных родов — 0. */\n readonly level: number;\n /** Тот же уровень строкой — для модификатора разметки; у остальных родов пусто. */\n readonly levelName: string;\n /** Куски строки у заголовка, абзаца и цитаты. */\n readonly content: readonly IRtMarkdownInlineNode[];\n /** Пункты списка. */\n readonly items: readonly IRtMarkdownListItem[];\n /** Признак нумерованного списка. */\n readonly ordered: boolean;\n /** Текст блока кода как есть, без разбора разметки внутри. */\n readonly code: string;\n /** Слово языка у ограды блока кода. Разбирается, но на вид не влияет. */\n readonly language: string | null;\n /** Строка заголовка таблицы: ячейка — свои куски строки. */\n readonly head: readonly (readonly IRtMarkdownInlineNode[])[];\n /** Прочие строки таблицы. */\n readonly rows: readonly (readonly (readonly IRtMarkdownInlineNode[])[])[];\n}\n","import { ERtMarkdownInline, IRtMarkdownInlineNode } from './markdown.model';\n\n/**\n * Разбор строки на куски: жирный, курсив, зачёркнутый, код и ссылка.\n *\n * Всё, чего в этом перечне нет, остаётся текстом — включая угловые скобки, разметку картинки и\n * ссылку чужой схемы. Вычистки здесь нет и быть не может: разборщик не строит узла, которого не\n * знает, и присланное показывается ровно так, как приехало.\n */\n\n/** Схемы, при которых адрес становится ссылкой. Любая другая ссылкой не становится. */\nconst ALLOWED_SCHEMES: readonly string[] = ['http://', 'https://', 'mailto:'];\n\n/** Парная разметка: открывающая строка, её род и то, разбираются ли куски внутри. */\ninterface IPairedMark {\n readonly mark: string;\n readonly kind: ERtMarkdownInline;\n readonly nested: boolean;\n}\n\n/**\n * Порядок важен: длинные строки стоят раньше коротких, иначе `**` разберётся двумя `*`.\n * Код стоит первым — внутри него разметка не действует.\n */\nconst PAIRED_MARKS: readonly IPairedMark[] = [\n { mark: '`', kind: ERtMarkdownInline.Code, nested: false },\n { mark: '**', kind: ERtMarkdownInline.Strong, nested: true },\n { mark: '__', kind: ERtMarkdownInline.Strong, nested: true },\n { mark: '~~', kind: ERtMarkdownInline.Strike, nested: true },\n { mark: '*', kind: ERtMarkdownInline.Emphasis, nested: true },\n { mark: '_', kind: ERtMarkdownInline.Emphasis, nested: true },\n];\n\n/**\n * Прочитанный кусок: сколько знаков он занял и каким узлом стал.\n *\n * Пустой узел означает, что знаки остаются видимым текстом: так уходят разметка картинки,\n * ссылка чужой схемы и непарные знаки разметки.\n */\ninterface ITaken {\n readonly length: number;\n readonly node: IRtMarkdownInlineNode | null;\n}\n\n/** Разбор вложенного куска. Передаётся доводом, чтобы файл читался сверху вниз. */\ntype TNested = (source: string) => IRtMarkdownInlineNode[];\n\n/** Кусок текста. */\nfunction textNode(value: string): IRtMarkdownInlineNode {\n return { kind: ERtMarkdownInline.Text, text: value, children: [], href: null };\n}\n\n/** Перенос строки внутри абзаца: одиночный перенос остаётся переносом. */\nexport function breakNode(): IRtMarkdownInlineNode {\n return { kind: ERtMarkdownInline.Break, text: '', children: [], href: null };\n}\n\n/** Адрес, который годится в ссылку. Всё прочее ссылкой не становится. */\nfunction isAllowedHref(value: string): boolean {\n const lowered: string = value.toLowerCase();\n\n return ALLOWED_SCHEMES.some((scheme: string): boolean => lowered.startsWith(scheme));\n}\n\n/** Разметка картинки узлом не становится и остаётся текстом целиком. */\nfunction readImage(source: string, start: number): ITaken | null {\n if (source[start] !== '!' || source[start + 1] !== '[') {\n return null;\n }\n\n const close: number = source.indexOf(']', start + 2);\n\n if (close === -1 || source[close + 1] !== '(') {\n return null;\n }\n\n const end: number = source.indexOf(')', close + 2);\n\n return end === -1 ? null : { length: end - start + 1, node: null };\n}\n\n/** Читает `[текст](адрес)`, начиная с открывающей скобки. */\nfunction readLink(source: string, start: number, nested: TNested): ITaken | null {\n if (source[start] !== '[') {\n return null;\n }\n\n const close: number = source.indexOf(']', start + 1);\n\n if (close === -1 || source[close + 1] !== '(') {\n return null;\n }\n\n const end: number = source.indexOf(')', close + 2);\n\n if (end === -1) {\n return null;\n }\n\n const address: string = source.slice(close + 2, end).trim();\n\n if (!isAllowedHref(address)) {\n return null;\n }\n\n const label: string = source.slice(start + 1, close);\n\n return {\n length: end - start + 1,\n node: { kind: ERtMarkdownInline.Link, text: label, children: nested(label), href: address },\n };\n}\n\n/** Читает парную разметку, начиная с её открывающей строки. */\nfunction readPaired(source: string, start: number, nested: TNested): ITaken | null {\n const pair: IPairedMark | undefined = PAIRED_MARKS.find((candidate: IPairedMark): boolean => source.startsWith(candidate.mark, start));\n\n if (pair === undefined) {\n return null;\n }\n\n const from: number = start + pair.mark.length;\n const close: number = source.indexOf(pair.mark, from);\n\n if (close === -1 || close === from) {\n return null;\n }\n\n const inner: string = source.slice(from, close);\n\n return {\n length: close - start + pair.mark.length,\n node: {\n kind: pair.kind,\n text: pair.nested ? '' : inner,\n children: pair.nested ? nested(inner) : [],\n href: null,\n },\n };\n}\n\n/** Кусок, начинающийся в этом месте строки. Пустой узел — знаки остаются текстом. */\nfunction readAt(source: string, index: number, nested: TNested): ITaken {\n const taken: ITaken | null = readImage(source, index) ?? readLink(source, index, nested) ?? readPaired(source, index, nested);\n\n return taken ?? { length: 1, node: null };\n}\n\n/**\n * Разбирает строку на куски показа.\n *\n * @param source Строка без переносов.\n * @returns Куски строки по порядку; у строки без разметки — один кусок текста.\n */\nexport function parseInline(source: string): IRtMarkdownInlineNode[] {\n const nodes: IRtMarkdownInlineNode[] = [];\n let plain: string = '';\n let index: number = 0;\n\n const flush: () => void = (): void => {\n if (plain !== '') {\n nodes.push(textNode(plain));\n plain = '';\n }\n };\n\n while (index < source.length) {\n const taken: ITaken = readAt(source, index, parseInline);\n\n if (taken.node === null) {\n plain += source.slice(index, index + taken.length);\n } else {\n flush();\n nodes.push(taken.node);\n }\n\n index += taken.length;\n }\n\n flush();\n\n return nodes;\n}\n","import { breakNode, parseInline } from './markdown-inline';\nimport { ERtMarkdownBlock, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem } from './markdown.model';\n\n/**\n * Разбор текста, написанного разметкой, в дерево узлов показа.\n *\n * Перечень закрыт: заголовки, абзацы, списки, цитаты, код строкой и блоком, таблицы, жирный,\n * курсив, зачёркнутый и ссылка. Всё прочее — сырой HTML, картинки, ссылки чужих схем — узлом не\n * становится и остаётся видимым текстом: вычищать нечего, потому что строить такой узел\n * разборщик не умеет.\n *\n * Одиночный перенос строки внутри абзаца остаётся переносом: тексты пишут деревья, и перенос\n * там ставят осмысленно.\n */\n\n/** Ограда блока кода. */\nconst FENCE: string = '```';\n\n/** Заголовок: от одной до шести решёток и пробел. */\nconst HEADING_LINE: RegExp = /^(#{1,6}) (.*)$/;\n\n/** Строка цитаты. */\nconst QUOTE_LINE: RegExp = /^ {0,3}> ?(.*)$/;\n\n/** Пункт простого списка: отступ задаёт уровень вложенности. */\nconst BULLET_LINE: RegExp = /^( *)[-*+] (.*)$/;\n\n/** Пункт нумерованного списка. */\nconst ORDERED_LINE: RegExp = /^( *)\\d+[.)] (.*)$/;\n\n/** Знаки, из которых состоит строка-разделитель под шапкой таблицы. */\nconst DIVIDER_CHARS: readonly string[] = ['|', '-', ':', ' '];\n\n/** Сколько пробелов отступа даёт один уровень вложенности списка. */\nconst SPACES_PER_LEVEL: number = 2;\n\n/** Ширина отступа, которой заменяется знак табуляции. */\nconst TAB_WIDTH: string = ' ';\n\n/** Прочитанный блок и место, с которого читать дальше. */\ninterface IReadBlock {\n readonly next: number;\n readonly block: IRtMarkdownBlockNode;\n}\n\n/** Читатель блока: разбирает своё, а на чужом отвечает пустотой. */\ntype TBlockReader = (lines: readonly string[], start: number) => IReadBlock | null;\n\n/** Блок с пустыми полями: род и то, что этому роду нужно, дописывает читающий. */\nfunction makeBlock(kind: ERtMarkdownBlock, patch: Partial<IRtMarkdownBlockNode>): IRtMarkdownBlockNode {\n return {\n kind,\n level: 0,\n levelName: '',\n content: [],\n items: [],\n ordered: false,\n code: '',\n language: null,\n head: [],\n rows: [],\n ...patch,\n };\n}\n\n/** Ячейки строки таблицы: крайние палки не считаются столбцами. */\nfunction tableCells(line: string): IRtMarkdownInlineNode[][] {\n const trimmed: string = line.trim().replace(/^\\|/, '').replace(/\\|$/, '');\n\n return trimmed.split('|').map((cell: string): IRtMarkdownInlineNode[] => parseInline(cell.trim()));\n}\n\n/** Строка-разделитель под шапкой таблицы. */\nfunction isTableDivider(line: string): boolean {\n const trimmed: string = line.trim();\n\n return trimmed.includes('-') && [...trimmed].every((char: string): boolean => DIVIDER_CHARS.includes(char));\n}\n\n/** Куски нескольких строк подряд, разделённые переносом. */\nfunction joinLines(lines: readonly string[]): IRtMarkdownInlineNode[] {\n const nodes: IRtMarkdownInlineNode[] = [];\n\n lines.forEach((line: string, index: number): void => {\n if (index > 0) {\n nodes.push(breakNode());\n }\n\n nodes.push(...parseInline(line));\n });\n\n return nodes;\n}\n\n/** Пункт списка, если эта строка им является. */\nfunction listItemOf(line: string, ordered: boolean): IRtMarkdownListItem | null {\n const match: RegExpExecArray | null = (ordered ? ORDERED_LINE : BULLET_LINE).exec(line);\n\n if (match === null) {\n return null;\n }\n\n const level: number = Math.floor(match[1].length / SPACES_PER_LEVEL);\n\n return { level, levelName: String(level), content: parseInline(match[2]) };\n}\n\n/** Блок кода: от ограды до ограды либо до конца текста. */\nfunction readCode(lines: readonly string[], start: number): IReadBlock | null {\n if (!lines[start].startsWith(FENCE)) {\n return null;\n }\n\n const language: string = lines[start].slice(FENCE.length).trim();\n let end: number = start + 1;\n\n while (end < lines.length && !lines[end].startsWith(FENCE)) {\n end += 1;\n }\n\n return {\n next: end < lines.length ? end + 1 : end,\n block: makeBlock(ERtMarkdownBlock.Code, {\n code: lines.slice(start + 1, end).join('\\n'),\n language: language === '' ? null : language,\n }),\n };\n}\n\n/** Заголовок. */\nfunction readHeading(lines: readonly string[], start: number): IReadBlock | null {\n const match: RegExpExecArray | null = HEADING_LINE.exec(lines[start]);\n\n if (match === null) {\n return null;\n }\n\n return {\n next: start + 1,\n block: makeBlock(ERtMarkdownBlock.Heading, {\n level: match[1].length,\n levelName: String(match[1].length),\n content: parseInline(match[2]),\n }),\n };\n}\n\n/** Цитата: подряд идущие строки со знаком цитаты. */\nfunction readQuote(lines: readonly string[], start: number): IReadBlock | null {\n if (!QUOTE_LINE.test(lines[start])) {\n return null;\n }\n\n const taken: string[] = [];\n let end: number = start;\n\n while (end < lines.length && QUOTE_LINE.test(lines[end])) {\n const match: RegExpExecArray | null = QUOTE_LINE.exec(lines[end]);\n\n taken.push(match === null ? '' : match[1]);\n end += 1;\n }\n\n return { next: end, block: makeBlock(ERtMarkdownBlock.Quote, { content: joinLines(taken) }) };\n}\n\n/** Список: подряд идущие пункты одного рода. */\nfunction readList(lines: readonly string[], start: number): IReadBlock | null {\n const ordered: boolean = ORDERED_LINE.test(lines[start]);\n\n if (!ordered && !BULLET_LINE.test(lines[start])) {\n return null;\n }\n\n const items: IRtMarkdownListItem[] = [];\n let end: number = start;\n let item: IRtMarkdownListItem | null = listItemOf(lines[end], ordered);\n\n while (item !== null) {\n items.push(item);\n end += 1;\n item = end < lines.length ? listItemOf(lines[end], ordered) : null;\n }\n\n return { next: end, block: makeBlock(ERtMarkdownBlock.List, { items, ordered }) };\n}\n\n/** Таблица: строка шапки, разделитель под ней и строки значений. */\nfunction readTable(lines: readonly string[], start: number): IReadBlock | null {\n const hasDivider: boolean = start + 1 < lines.length && isTableDivider(lines[start + 1]);\n\n if (!lines[start].includes('|') || !hasDivider) {\n return null;\n }\n\n const rows: IRtMarkdownInlineNode[][][] = [];\n let end: number = start + 2;\n\n while (end < lines.length && lines[end].includes('|')) {\n rows.push(tableCells(lines[end]));\n end += 1;\n }\n\n return { next: end, block: makeBlock(ERtMarkdownBlock.Table, { head: tableCells(lines[start]), rows }) };\n}\n\n/** Строки, по которым видно, что абзац кончился и начался блок другого рода. */\nconst BLOCK_STARTS: readonly RegExp[] = [HEADING_LINE, QUOTE_LINE, BULLET_LINE, ORDERED_LINE];\n\n/** Признак того, что строка начинает блок другого рода. */\nfunction startsOtherBlock(line: string): boolean {\n if (line.trim() === '' || line.startsWith(FENCE)) {\n return true;\n }\n\n return BLOCK_STARTS.some((start: RegExp): boolean => start.test(line));\n}\n\n/** Абзац: строки до пустой строки или до начала блока другого рода. */\nfunction readParagraph(lines: readonly string[], start: number): IReadBlock {\n const taken: string[] = [];\n let end: number = start;\n\n while (end < lines.length && !startsOtherBlock(lines[end])) {\n taken.push(lines[end]);\n end += 1;\n }\n\n return { next: end, block: makeBlock(ERtMarkdownBlock.Paragraph, { content: joinLines(taken) }) };\n}\n\n/** Порядок читателей: первым отвечает тот, чью разметку строка несёт. */\nconst BLOCK_READERS: readonly TBlockReader[] = [readCode, readHeading, readTable, readQuote, readList];\n\n/** Блок, начинающийся на этой строке. Ничей — значит абзац. */\nfunction readBlockAt(lines: readonly string[], start: number): IReadBlock {\n for (const reader of BLOCK_READERS) {\n const read: IReadBlock | null = reader(lines, start);\n\n if (read !== null) {\n return read;\n }\n }\n\n return readParagraph(lines, start);\n}\n\n/**\n * Разбирает текст груза в дерево узлов показа.\n *\n * @param source Текст записи. Пустота и отсутствие значения дают пустой список блоков.\n * @returns Блоки показа по порядку.\n */\nexport function parseMarkdown(source: string | null | undefined): IRtMarkdownBlockNode[] {\n if (source === null || source === undefined || source.trim() === '') {\n return [];\n }\n\n const lines: string[] = source\n .replace(/\\r\\n?/g, '\\n')\n .split('\\n')\n .map((line: string): string => line.replace(/\\t/g, TAB_WIDTH));\n const blocks: IRtMarkdownBlockNode[] = [];\n let index: number = 0;\n\n while (index < lines.length) {\n const read: IReadBlock | null = lines[index].trim() === '' ? null : readBlockAt(lines, index);\n\n if (read === null) {\n index += 1;\n } else {\n blocks.push(read.block);\n index = read.next;\n }\n }\n\n return blocks;\n}\n","import { IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp } from './quill-delta.model';\n\n/** Значение — ровно `true` (флаговые атрибуты). */\nfunction isTrue(value: unknown): boolean {\n return value === true;\n}\n\n/** Per-key валидаторы whitelist: ключа нет в карте ⇒ атрибут запрещён. */\nconst ATTR_VALIDATORS: ReadonlyMap<string, (value: unknown) => boolean> = new Map<string, (value: unknown) => boolean>([\n ['bold', isTrue],\n ['italic', isTrue],\n ['underline', isTrue],\n ['strike', isTrue],\n ['blockquote', isTrue],\n ['code-block', isTrue],\n ['list', (value: unknown): boolean => value === 'ordered' || value === 'bullet'],\n ['header', (value: unknown): boolean => value === 1 || value === 2 || value === 3],\n]);\n\n/** Объект без прототипных сюрпризов — узкая guard-проверка. */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\n/** Все ключи атрибутов — из whitelist и с валидным значением. */\nfunction isValidAttributes(raw: Record<string, unknown>): boolean {\n return Object.keys(raw).every((key: string): boolean => {\n const validate: ((value: unknown) => boolean) | undefined = ATTR_VALIDATORS.get(key);\n return validate !== undefined && validate(raw[key]);\n });\n}\n\n/** Нормализует одну op; `null` — если форма нарушена (весь delta тогда отвергается). */\nfunction normalizeOp(op: unknown): IQuillDeltaOp | null {\n if (!isRecord(op)) {\n return null;\n }\n const insert: unknown = op['insert'];\n if (typeof insert !== 'string') {\n return null;\n }\n if (Object.keys(op).some((key: string): boolean => key !== 'insert' && key !== 'attributes')) {\n return null;\n }\n const attrs: unknown = op['attributes'];\n if (attrs === undefined) {\n return { insert };\n }\n if (!isRecord(attrs) || Object.keys(attrs).length === 0 || !isValidAttributes(attrs)) {\n return null;\n }\n return { insert, attributes: attrs as unknown as IQuillDeltaAttributes };\n}\n\n/**\n * Приводит сырой вывод Quill 2 к контракту `IQuillDelta`. Quill 2 хранит в\n * `code-block` язык подсветки (по умолчанию строку `\"plain\"`), тогда как контракт\n * и бэк ждут флаг `true`; без приведения бэк отвергает delta как\n * `invalid_message_delta`. Остальные атрибуты уже в нужной форме — их не трогаем.\n */\nexport function coerceQuillDeltaOutput(delta: IQuillDelta): IQuillDelta {\n return {\n ops: delta.ops.map((op: IQuillDeltaOp): IQuillDeltaOp => {\n const attrs: Record<string, unknown> | undefined = op.attributes as unknown as Record<string, unknown> | undefined;\n const codeBlock: unknown = attrs?.['code-block'];\n if (attrs === undefined || codeBlock === undefined || codeBlock === true) {\n return op;\n }\n return {\n ...op,\n attributes: { ...op.attributes, 'code-block': true },\n };\n }),\n };\n}\n\n/**\n * Defensive-нормализация тела rich-сообщения: пропускает только строго валидную\n * форму (top-level `{ops}`, `ops` непустой массив, `insert` — строка, `attributes`\n * непустой и из whitelist), иначе `null` — сообщение отрендерится plain-фолбэком\n * по `message`. Бэк гарантирует форму, но рендер не доверяет входу вслепую.\n */\nexport function normalizeQuillDelta(raw: unknown): IQuillDelta | null {\n if (!isRecord(raw)) {\n return null;\n }\n const ops: unknown = raw['ops'];\n if (!Array.isArray(ops) || ops.length === 0) {\n return null;\n }\n const clean: IQuillDeltaOp[] = [];\n for (const op of ops) {\n const normalized: IQuillDeltaOp | null = normalizeOp(op);\n if (normalized === null) {\n return null;\n }\n clean.push(normalized);\n }\n return { ops: clean };\n}\n","/**\n * Тело сообщения чата в rich-формате Quill delta. Форма и whitelist атрибутов\n * зафиксированы контрактом бэка: только текстовые вставки + ограниченный набор\n * форматирования, никаких ссылок и вложенных объектов (анонимность).\n */\n\n/** Атрибуты форматирования Quill delta — строго whitelist (без link/media). */\nexport interface IQuillDeltaAttributes {\n bold?: true;\n italic?: true;\n underline?: true;\n strike?: true;\n blockquote?: true;\n 'code-block'?: true;\n list?: 'ordered' | 'bullet';\n header?: 1 | 2 | 3;\n}\n\n/** Одна операция delta: текстовая вставка + опциональные атрибуты. */\nexport interface IQuillDeltaOp {\n insert: string;\n attributes?: IQuillDeltaAttributes;\n}\n\n/** Тело сообщения в rich-формате Quill delta. */\nexport interface IQuillDelta {\n ops: IQuillDeltaOp[];\n}\n","import { MonoTypeOperatorFunction, debounce, timer } from 'rxjs';\n\n/** Единый дебаунс полей поиска (мс) — одинаковый по всему киту. */\nexport const SEARCH_DEBOUNCE_MS: number = 300;\n\n/**\n * Дебаунс поля поиска с мгновенным сбросом. Непустой ввод откладывается на\n * SEARCH_DEBOUNCE_MS (не бить фильтром/запросом на каждый символ), пустое\n * значение — очистка крестиком или удаление до конца — применяется сразу,\n * без задержки. Иначе сброс поиска ощущается лагающим.\n */\nexport function searchDebounce(): MonoTypeOperatorFunction<string> {\n return debounce((value: string): ReturnType<typeof timer> => timer(value.trim() === '' ? 0 : SEARCH_DEBOUNCE_MS));\n}\n","/** Признак материального набора в разметке: атрибут или класс, которые ставит приложение. */\nexport const RT_MATERIAL_PRESET_SELECTOR: string = \"[data-preset='material'],.rt-preset-material\";\n\n/** Класс набора, который несёт узел вне поддерева, где набор объявлен. */\nexport const RT_MATERIAL_PRESET_CLASS: string = 'rt-preset-material';\n\n/**\n * Классы набора для панели наложения, открытой от `origin`. Панель лежит в конце страницы, вне\n * контейнера с признаком набора, и назначения набора до неё не доходят: она берёт класс набора\n * сама, если признак стоит над узлом, от которого она открыта. Кит читает признак приложения, а не\n * ставит свой.\n */\nexport function materialPresetClassesOf(origin: Element): string[] {\n return origin.closest(RT_MATERIAL_PRESET_SELECTOR) ? [RT_MATERIAL_PRESET_CLASS] : [];\n}\n\n/**\n * Классы набора для панели, которую открывает сервис без узла-источника: диалог, боковая панель.\n * Источником служит узел в фокусе в момент открытия — нажатая кнопка. Панель, открытая не по\n * нажатию, набор от фокуса не берёт; для неё остаётся `panelClass` приложения.\n */\nexport function materialPresetClassesOfFocus(document: Document): string[] {\n const focused: Element | null = document.activeElement;\n return focused ? materialPresetClassesOf(focused) : [];\n}\n\n/** Атрибут местного куска темы — его ставит `rtTheme` и читают правила куска в стилях кита. */\nexport const RT_THEME_SCOPE_ATTRIBUTE: string = 'data-theme';\n\n/**\n * Тема местного куска, от которого открыта панель, — значение ближайшего `data-theme` над `origin`.\n * Панель лежит в конце страницы, вне куска, и без этого рисуется темой страницы: список тёмной\n * карточки на светлой странице выходил светлым. Тема корня страницы не возвращается: её панель\n * наследует и так, а признак на панели повторил бы весь набор назначений ещё раз.\n */\nexport function themeScopeOf(origin: Element): string | null {\n const scope: Element | null = origin.closest(`[${RT_THEME_SCOPE_ATTRIBUTE}]`);\n if (scope === null || scope === origin.ownerDocument.documentElement) {\n return null;\n }\n\n return scope.getAttribute(RT_THEME_SCOPE_ATTRIBUTE) || null;\n}\n\nfunction applyThemeScope(pane: HTMLElement, theme: string | null): void {\n if (theme === null) {\n pane.removeAttribute(RT_THEME_SCOPE_ATTRIBUTE);\n } else {\n pane.setAttribute(RT_THEME_SCOPE_ATTRIBUTE, theme);\n }\n}\n\n/**\n * Переносит тему куска `origin` на коробку панели или снимает её, если кусок ушёл. Зовётся на\n * каждом открытии: коробка переживает закрытие, а кусок вокруг источника мог смениться.\n */\nexport function carryThemeScope(pane: HTMLElement, origin: Element): void {\n applyThemeScope(pane, themeScopeOf(origin));\n}\n\n/**\n * Тема местного куска для панели, которую открывает сервис без узла-источника: диалог, боковая\n * панель. Источником служит узел в фокусе в момент открытия — нажатая кнопка, как у\n * `materialPresetClassesOfFocus`. Без фокуса, как и под темой корня, возвращает `null`.\n */\nexport function themeScopeOfFocus(document: Document): string | null {\n const focused: Element | null = document.activeElement;\n return focused ? themeScopeOf(focused) : null;\n}\n\n/**\n * Переносит на коробку панели тему куска, где стоит фокус. Зовётся до того, как панель заберёт\n * фокус себе: после этого `activeElement` уже внутри панели, в конце страницы, вне куска.\n */\nexport function carryThemeScopeOfFocus(pane: HTMLElement, document: Document): void {\n applyThemeScope(pane, themeScopeOfFocus(document));\n}\n","/**\n * Контракты `rt-data-table` — таблицы первого кита во втором, рядом с `rt-table` и вместо неё не\n * встающей.\n *\n * Описание колонки перенесено из первого кита поле в поле, вместе с полями, которых таблица не\n * рисует: экран приложения переезжает без правок описаний колонок и сохранённых настроек,\n * меняются только имена. Значения перечислений те же строки, что в первом ките.\n */\nimport { InjectionToken } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\nimport { IFilterModel, ISortModel, TFilterOperatorType } from '@rt-tools/utils';\n\n/** Вид колонки: решает, чем рисуется значение ячейки. */\nexport enum ERtDataTableColumnType {\n DATE = 'date',\n PERCENT = 'percent',\n ARRAY = 'array',\n BOOLEAN = 'boolean',\n TEXT = 'text',\n CURRENCY = 'currency',\n CUSTOM = 'custom',\n}\n\n/** Чем колонка отбирает в строке отбора. */\nexport enum ERtDataTableFilterType {\n TEXT = 'text',\n NUMBER = 'number',\n SELECT = 'select',\n DATE = 'date',\n}\n\n/** Цвет значка ячейки. */\nexport enum ERtDataTableCellColor {\n NEUTRAL = 'neutral',\n DANGER = 'danger',\n WARNING = 'warning',\n SUCCESS = 'success',\n EMPTY = 'empty',\n}\n\n/**\n * Условия отбора таблицы. Ключ — имя свойства колонки, а не ключ записи: отбирают по колонке.\n */\nexport type TRtDataTableFilters<T> = Array<IFilterModel<Extract<keyof T, string>>>;\n\n/**\n * Класс материального набора на узле. Стоит на хосте семьи и уходит панелям, которые семья открывает\n * поверх страницы: вне хоста признак вида до них иначе не доходит.\n */\nexport const RT_PRESET_MATERIAL_CLASS: string = 'rt-preset-material';\n\n/**\n * Набор оформления таблице даёт узел вокруг неё. Так делает список: класс набора стоит на нём, и\n * таблица внутри себе класс не ставит. Поставь она его, кусок набора объявил бы на ней весь набор\n * назначений заново, и значение, заданное приложением на списке, до таблицы бы не дошло.\n */\nexport const RT_DATA_TABLE_PRESET_FROM_HOST: InjectionToken<boolean> = new InjectionToken<boolean>('RT_DATA_TABLE_PRESET_FROM_HOST');\n\nexport namespace IRtDataTable {\n /**\n * Вид семьи: `material` — вид первого кита, материальный набор на самом узле; `own` — свой вид\n * второго кита. Умолчание — вид первого кита: семья переехала оттуда и выглядит как там.\n */\n export type Look = 'material' | 'own';\n\n export type CellColor = `${ERtDataTableCellColor}`;\n\n export type ColumnType = `${ERtDataTableColumnType}`;\n\n export type FilterType = `${ERtDataTableFilterType}`;\n\n export type Align = 'right' | 'left' | 'center';\n\n export interface Column<T = Record<string, unknown>> extends Record<string, unknown> {\n align: IRtDataTable.Align;\n /* Имя свойства записи, только строковое: им же колонка называет себя строке отбора, а та\n берёт строку — у первого кита имя свойства тоже всегда строка. */\n propName: Extract<keyof T, string>;\n type: IRtDataTable.ColumnType;\n copyable: boolean;\n header: IRtDataTable.Header;\n\n sorting?: ISortModel<NonNullable<Extract<keyof T, string>>>;\n /** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */\n filtering?: boolean;\n /** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */\n filteringMultiple?: boolean;\n copyBtnAlign?: 'right' | 'left';\n\n width?: string;\n minWidth?: string;\n\n icon?: IRtDataTable.Icon;\n iconTransform?: (value: T[keyof T]) => string;\n /** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */\n href?: string;\n /** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */\n className?: string;\n tooltip?: string;\n transform?: (value: T[keyof T]) => string | number;\n\n filterType?: IRtDataTable.FilterType;\n defaultFilterOperator?: TFilterOperatorType;\n filterOperators?: TFilterOperatorType[];\n filterSelectOptions?: string[];\n\n displayName?: string;\n orderIndex?: number;\n hidden?: boolean;\n /** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */\n fixed?: boolean;\n }\n\n export interface ColumnFilter {\n propName: string;\n value: string;\n }\n\n export interface Header {\n align: IRtDataTable.Align;\n label: string;\n\n className?: string;\n tooltip?: string;\n icon?: IRtDataTable.Icon;\n }\n\n /**\n * Значок колонки. Имя — имя первого кита; рисует его набор кита через перечень соответствий,\n * а шаблон значка, отданный приложением, рисует его сам.\n */\n export interface Icon {\n glyph: string;\n\n color?: IRtDataTable.CellColor;\n tooltip?: string;\n visible?: boolean;\n placement?: 'left' | 'right';\n /**\n * Контурный рисунок вместо залитого, как у первого кита: без признака значок колонки залит.\n * Заливку рисует материальный набор; свой набор кита рисует значок одним рисунком.\n */\n outlined?: boolean;\n }\n\n export namespace Config {\n /** Сохранённые настройки таблицы: та же форма, что у первого кита, — их читает и новое семейство. */\n export interface Data<T> {\n isVerticalScrollbarShown: boolean;\n isHorizontalScrollbarShown: boolean;\n columns: Array<IRtDataTable.Column<T>>;\n }\n\n export interface Form<T> {\n isVerticalScrollbarShown: FormControl<boolean>;\n isHorizontalScrollbarShown: FormControl<boolean>;\n columns: FormControl<(keyof T)[]>;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/** Один шаг шкалы скругления. Значения шагов лежат в токенах `--rt-radius-<шаг>`. */\nexport type TRtRadius = 'none' | 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n\n/** Шаги скругления кита — вся шкала, от квадрата до полного круга, по порядку. */\nexport const RT_RADIUS_STEPS: readonly TRtRadius[] = ['none', 'xs', 'sm', 'ms', 'md', 'lg', 'xl', '2xl', 'full'];\n\n/**\n * Шаг, который компонент берёт, когда вход скругления пуст.\n *\n * Большинству компонентов он не нужен: их скругление по умолчанию стоит в их\n * собственных стилях. Токен нужен тому, у кого умолчание задаёт приложение, —\n * кнопке, чья настройка кита называет шаг для всех кнопок сразу.\n */\nexport const RT_RADIUS_DEFAULT: InjectionToken<TRtRadius | null> = new InjectionToken<TRtRadius | null>('RT_RADIUS_DEFAULT');\n","/**\n * Имена иконок rt-icon. Набор лежит в `assets/icons` пакета, откуда сборка\n * приложения кладёт его туда, куда указывает `provideRtIcons()`. Большинство\n * файлов пришло из фрейма iconsLib\n * (https://www.figma.com/design/x1rxhwomHt1pQRUcM3Zqjb?node-id=2922-7969).\n *\n * При добавлении новой иконки: положить SVG в `assets/icons` пакета, добавить\n * slug сюда, прогнать pnpm exec eslint --fix + pnpm exec prettier --write по этому файлу.\n * Имя без файла гасит только свой значок: реестр ходит за каждым именем отдельно, и промах\n * виден пустым местом на экране, а не отказом в прогоне.\n *\n * Аннотация типа намеренно не указывается: явный `readonly string[]` потерял бы узкий\n * литеральный тип, нужный для `IRtIcon.Name` (см. `rt-icon.model.ts`). `as const`\n * сохраняет литеральные ключи.\n */\n\n// eslint-disable-next-line @typescript-eslint/typedef -- аннотация стёрла бы литеральный тип, на котором стоит IRtIcon.Name\nexport const iconsName = [\n 'alarm-clock',\n 'align-center',\n 'align-justify',\n 'align-left',\n 'align-right',\n 'angle-double-down',\n 'angle-double-left',\n 'angle-double-right',\n 'angle-double-up',\n 'angle-down',\n 'angle-left',\n 'angle-right',\n 'angle-up',\n 'arrow-bottom-old',\n 'arrow-circle-down',\n 'arrow-circle-left',\n 'arrow-circle-right',\n 'arrow-circle-up',\n 'arrow-down',\n 'arrow-down-left',\n 'arrow-down-long',\n 'arrow-down-right',\n 'arrow-left',\n 'arrow-left-old',\n 'arrow-leftlong',\n 'arrow-right',\n 'arrow-right-old',\n 'arrow-rightlong',\n 'arrow-top-old',\n 'arrow-up',\n 'arrow-up-left',\n 'arrow-up-long',\n 'arrow-up-right',\n 'arrows',\n 'arrows-h',\n 'arrows-v',\n 'at',\n 'attach-docx-doc',\n 'attach-eml',\n 'attach-folder',\n 'attach-jpg-png',\n 'attach-msg',\n 'attach-other',\n 'attach-pdf',\n 'attach-ppt-pptx',\n 'attach-txt',\n 'attach-webp',\n 'attach-xlsx-xls',\n 'attach-zip-rar',\n 'ban',\n 'bars',\n 'bell',\n 'bolt',\n 'book',\n 'bookmark',\n 'bookmark-fill',\n 'bot',\n 'box',\n 'briefcase',\n 'building',\n 'burger',\n 'calendar',\n 'calendar-minus',\n 'calendar-plus',\n 'calendar-times',\n 'camera',\n 'chart-bar',\n 'chart-line',\n 'chart-line-2',\n 'chart-pie',\n 'chat-error',\n 'check',\n 'check-circle',\n 'check-double',\n 'check-square',\n 'chevron-circle-down',\n 'chevron-circle-left',\n 'chevron-circle-right',\n 'chevron-circle-up',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'chevron-up-down',\n 'clock',\n 'clone',\n 'close',\n 'cloud',\n 'cloud-download',\n 'cloud-upload',\n 'code',\n 'cog',\n 'comment',\n 'comments',\n 'copy',\n 'credit-card',\n 'database',\n 'desktop',\n 'directions',\n 'directions-alt',\n 'doc-success',\n 'docBox',\n 'ellipsis-h',\n 'ellipsis-v',\n 'email',\n 'equals',\n 'exclamation-circle',\n 'external-link',\n 'eye',\n 'eye-slash',\n 'file',\n 'file-excel',\n 'file-o',\n 'file-pdf',\n 'filter',\n 'filter-fill',\n 'filter-slash',\n 'flag',\n 'flag-fill',\n 'flagman-a',\n 'flagman-b',\n 'flagman-c',\n 'flagman-q',\n 'folder',\n 'folder-open',\n 'fork-spoon',\n 'fullscreen',\n 'globe',\n 'groupen',\n 'hashtag',\n 'heart',\n 'heart-fill',\n 'help',\n 'history',\n 'historyUpdate',\n 'home',\n 'ico-age',\n 'ico-alert',\n 'ico-b',\n 'ico-babyPacifier',\n 'ico-bank',\n 'ico-bill',\n 'ico-bill-striked',\n 'ico-bookmark-right',\n 'ico-books',\n 'ico-burger',\n 'ico-businessman',\n 'ico-c',\n 'ico-calendar',\n 'ico-case',\n 'ico-change',\n 'ico-change-2',\n 'ico-check',\n 'ico-checked',\n 'ico-checked-alert',\n 'ico-cheker',\n 'ico-chevron',\n 'ico-chevron-down',\n 'ico-close',\n 'ico-config',\n 'ico-contragents',\n 'ico-control',\n 'ico-copy',\n 'ico-counterparty',\n 'ico-coworkers',\n 'ico-debt',\n 'ico-director',\n 'ico-doc',\n 'ico-docDocprimary',\n 'ico-docs',\n 'ico-door',\n 'ico-dotted-more-horizontal',\n 'ico-doubleArrows',\n 'ico-download',\n 'ico-eagle',\n 'ico-edit',\n 'ico-edo',\n 'ico-email',\n 'ico-email1',\n 'ico-error',\n 'ico-exit',\n 'ico-eye',\n 'ico-eyeClose',\n 'ico-faq',\n 'ico-farm',\n 'ico-filter',\n 'ico-fine',\n 'ico-gasket',\n 'ico-generator',\n 'ico-grade',\n 'ico-grade-2',\n 'ico-ground-area-transport',\n 'ico-groundArea',\n 'ico-groupen',\n 'ico-hands',\n 'ico-help',\n 'ico-ico-history',\n 'ico-info',\n 'ico-infoFill',\n 'ico-invite',\n 'ico-key',\n 'ico-keyFill',\n 'ico-letter',\n 'ico-level',\n 'ico-level-down',\n 'ico-level-up',\n 'ico-licence',\n 'ico-limit',\n 'ico-link',\n 'ico-link-2',\n 'ico-listadd',\n 'ico-listing',\n 'ico-lock',\n 'ico-locked',\n 'ico-megafon',\n 'ico-new-window',\n 'ico-notification',\n 'ico-notificationOff',\n 'ico-percent-alert',\n 'ico-plus',\n 'ico-referal',\n 'ico-repeat',\n 'ico-reset',\n 'ico-return',\n 'ico-search',\n 'ico-setting',\n 'ico-settings',\n 'ico-site',\n 'ico-snowflake',\n 'ico-spec',\n 'ico-statement',\n 'ico-subuser',\n 'ico-sun',\n 'ico-sunrise',\n 'ico-support',\n 'ico-target',\n 'ico-team',\n 'ico-tech',\n 'ico-telegram',\n 'ico-time',\n 'ico-trash',\n 'ico-try',\n 'ico-txt',\n 'ico-unlock',\n 'ico-upload',\n 'ico-user',\n 'ico-user-2',\n 'ico-users',\n 'ico-users-2',\n 'ico-video-play',\n 'ico-warning',\n 'ico-warranty',\n 'ico-warranty-shield',\n 'ico-xml',\n 'id-card',\n 'image',\n 'images',\n 'inbox',\n 'info',\n 'info-circle',\n 'layers',\n 'link',\n 'list',\n 'lock',\n 'lock-open',\n 'map',\n 'mapYandex',\n 'microsoft',\n 'minus',\n 'minus-circle',\n 'mobile',\n 'money-bill',\n 'moon',\n 'paperclip',\n 'pause',\n 'pencil',\n 'percentage',\n 'phone',\n 'pie-chart',\n 'pin',\n 'plus-circle',\n 'power-off',\n 'print',\n 'qrcode',\n 'question-circle',\n 'refresh',\n 'replay',\n 'reply',\n 'reset',\n 'search',\n 'search-minus',\n 'search-plus',\n 'send',\n 'server',\n 'share-alt',\n 'shield',\n 'sitemap',\n 'sliders-v',\n 'social-facebook',\n 'social-instagram',\n 'social-kakaotalk',\n 'social-line',\n 'social-naver',\n 'social-pinterest',\n 'social-tiktok',\n 'social-vk',\n 'social-wechat',\n 'social-x',\n 'social-xiaohongshu',\n 'social-youtube',\n 'sort-alpha-alt-down',\n 'sort-alpha-alt-up',\n 'sort-alpha-down',\n 'sort-alpha-up',\n 'sort-alt',\n 'sort-alt-slash',\n 'sort-amount-down',\n 'sort-amount-down-alt',\n 'sort-amount-up',\n 'sort-amount-up-alt',\n 'sort-numeric-alt-down',\n 'sort-numeric-alt-up',\n 'sort-numeric-down',\n 'sort-numeric-up',\n 'sparkle',\n 'spinner',\n 'star',\n 'star-fill',\n 'stock',\n 'stop',\n 'sync',\n 'table',\n 'tablet',\n 'tag',\n 'tags',\n 'telegram',\n 'th-large',\n 'thumb-down',\n 'thumb-up',\n 'ticket',\n 'times-circle',\n 'trash',\n 'trash-x',\n 'troubleshoot',\n 'undo',\n 'unlock',\n 'user',\n 'user-edit',\n 'user-minus',\n 'user-off',\n 'user-plus',\n 'users',\n 'video',\n 'volume-down',\n 'volume-off',\n 'volume-up',\n 'wallet',\n 'warning',\n 'wifi',\n 'window-maximize',\n 'window-minimize',\n] as const;\n","/**\n * Ядро кита: настройки, словари, среда исполнения, токены, чистые функции и модели,\n * на которых стоят настройки. Компоненты берут это отсюда, друг у друга — через свои точки входа.\n */\nexport * from './config';\nexport * from './i18n';\nexport * from './platform';\nexport * from './pipes';\nexport * from './scroll';\nexport * from './tokens';\nexport * from './util';\nexport * from './components/button/rt-button.model';\nexport * from './components/data-table/rt-data-table.model';\nexport * from './components/input/rt-input.model';\nexport * from './components/radius/rt-radius.model';\nexport * from './components/icon/rt-icon.model';\nexport * from './components/icon/rt-icon-names';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './core';\n"],"names":[],"mappings":";;;;;;;;AAIA;;;;;;;;;;AAUG;MACU,aAAa,GAAwC,IAAI,cAAc,CAAsB,eAAe,EAAE;AACvH,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,OAA4B,EAAE,CAAC;AAC3C,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;AAqBG;AACG,SAAU,YAAY,CACxB,IAAU,EACV,IAAiF,EACjF,QAAe,EACf,UAAiE,EAAA;AAEjE,IAAA,MAAM,MAAM,GAAwB,MAAM,CAAC,aAAa,CAAC;IACzD,MAAM,YAAY,GAA8C,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AACzF,IAAA,MAAM,QAAQ,GAAsB,YAAY,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AAE/F,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AACxB,QAAA,OAAO,QAAQ;IACnB;AAEA,IAAA,MAAM,MAAM,GAAoC,MAAM,CAAC,MAAM;IAC7D,MAAM,UAAU,GAAsB,UAAU,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;IAEvH,OAAO,UAAU,IAAI,QAAQ;AACjC;AAEA;;;;;;;;;;;;;;;;;;;AAmBG;AACG,SAAU,YAAY,CAAC,MAA2B,EAAA;AACpD,IAAA,OAAO,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AACnF;;ACpFA;;;;;;;;;;;;;;AAcG;AACH;AACA,MAAM,UAAU,GAAW,gBAAgB;AAE3C;AACO,MAAM,gBAAgB,GAAG;AAC5B,IAAA,YAAY,EAAE,sBAAsB;AACpC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,eAAe,EAAE,gBAAgB;AACjC,IAAA,cAAc,EAAE,qBAAqB;AACrC,IAAA,YAAY,EAAE,oDAAoD;AAClE,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,WAAW,EAAE,sCAAsC;AACnD,IAAA,YAAY,EAAE,iBAAiB;AAC/B,IAAA,gBAAgB,EAAE,kBAAkB;AACpC,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,WAAW,EAAE,kBAAkB;AAC/B,IAAA,WAAW,EAAE,sBAAsB;AACnC,IAAA,WAAW,EAAE,WAAW;AACxB,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,eAAe,EAAE,sBAAsB;AACvC,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,kBAAkB,EAAE,iBAAiB;AACrC,IAAA,iBAAiB,EAAE,eAAe;AAClC,IAAA,gBAAgB,EAAE,OAAO;AACzB,IAAA,cAAc,EAAE,eAAe;AAC/B,IAAA,iBAAiB,EAAE,eAAe;AAClC,IAAA,sBAAsB,EAAE,YAAY;AACpC,IAAA,YAAY,EAAE,eAAe;AAC7B,IAAA,gBAAgB,EAAE,eAAe;AACjC,IAAA,gBAAgB,EAAE,6CAA6C;AAC/D,IAAA,cAAc,EAAE,gBAAgB;AAChC,IAAA,iBAAiB,EAAE,QAAQ;AAC3B,IAAA,eAAe,EAAE,+CAA+C;AAChE,IAAA,aAAa,EAAE,4BAA4B;AAC3C,IAAA,eAAe,EAAE,kBAAkB;AACnC,IAAA,UAAU,EAAE,4BAA4B;AACxC,IAAA,kBAAkB,EAAE,iBAAiB;AACrC,IAAA,eAAe,EAAE,gBAAgB;AACjC,IAAA,eAAe,EAAE,kBAAkB;AACnC,IAAA,kBAAkB,EAAE,kBAAkB;AACtC,IAAA,aAAa,EAAE,YAAY;AAC3B,IAAA,gBAAgB,EAAE,OAAO;AACzB,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,gBAAgB,EAAE,UAAU;AAC5B,IAAA,cAAc,EAAE,MAAM;AACtB,IAAA,iBAAiB,EAAE,SAAS;AAC5B,IAAA,cAAc,EAAE,WAAW;AAC3B,IAAA,YAAY,EAAE,iBAAiB;AAC/B,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,eAAe,EAAE,UAAU;AAC3B,IAAA,eAAe,EAAE,UAAU;AAC3B,IAAA,oBAAoB,EAAE,eAAe;AACrC,IAAA,2BAA2B,EAAE,4BAA4B;AACzD,IAAA,mBAAmB,EAAE,eAAe;AACpC,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,yBAAyB,EAAE,WAAW;AACtC,IAAA,iBAAiB,EAAE,YAAY;AAC/B,IAAA,gBAAgB,EAAE,qBAAqB;AACvC,IAAA,oBAAoB,EAAE,2DAA2D;AACjF,IAAA,qBAAqB,EAAE,0BAA0B;AACjD,IAAA,mBAAmB,EAAE,qBAAqB;AAC1C,IAAA,yBAAyB,EAAE,0BAA0B;AACrD,IAAA,uBAAuB,EAAE,sBAAsB;AAC/C,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,oBAAoB,EAAE,OAAO;AAC7B,IAAA,oBAAoB,EAAE,YAAY;AAClC,IAAA,mBAAmB,EAAE,cAAc;AACnC,IAAA,mBAAmB,EAAE,MAAM;AAC3B,IAAA,oBAAoB,EAAE,iBAAiB;AACvC,IAAA,wBAAwB,EAAE,uCAAuC;AACjE,IAAA,wBAAwB,EAAE,YAAY;AACtC,IAAA,8BAA8B,EAAE,wCAAwC;AACxE,IAAA,qBAAqB,EAAE,iBAAiB;AACxC,IAAA,oBAAoB,EAAE,uBAAuB;AAC7C,IAAA,qBAAqB,EAAE,WAAW;AAClC,IAAA,gBAAgB,EAAE,SAAS;AAC3B,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,oBAAoB,EAAE,cAAc;AACpC,IAAA,+BAA+B,EAAE,UAAU;AAC3C,IAAA,6BAA6B,EAAE,OAAO;AACtC,IAAA,kCAAkC,EAAE,WAAW;AAC/C,IAAA,+BAA+B,EAAE,WAAW;AAC5C,IAAA,gCAAgC,EAAE,WAAW;AAC7C,IAAA,gCAAgC,EAAE,eAAe;AACjD,IAAA,+BAA+B,EAAE,sBAAsB;AACvD,IAAA,mBAAmB,EAAE,8BAA8B;AACnD,IAAA,kBAAkB,EAAE,YAAY;AAChC,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,aAAa,EAAE,oBAAoB;AACnC,IAAA,mBAAmB,EAAE,mBAAmB;AACxC,IAAA,aAAa,EAAE,oBAAoB;AACnC,IAAA,mBAAmB,EAAE,oBAAoB;AACzC,IAAA,iBAAiB,EAAE,gBAAgB;AACnC,IAAA,kBAAkB,EAAE,gBAAgB;AACpC,IAAA,gBAAgB,EAAE,cAAc;AAChC,IAAA,eAAe,EAAE,YAAY;AAC7B,IAAA,eAAe,EAAE,gBAAgB;AACjC,IAAA,YAAY,EAAE,WAAW;AACzB,IAAA,mBAAmB,EAAE,mBAAmB;AACxC,IAAA,oBAAoB,EAAE,qBAAqB;AAC3C,IAAA,sBAAsB,EAAE,wBAAwB;AAChD,IAAA,iBAAiB,EAAE,YAAY;AAC/B,IAAA,yBAAyB,EAAE,qBAAqB;AAChD,IAAA,uBAAuB,EAAE,mBAAmB;AAC5C,IAAA,oBAAoB,EAAE,eAAe;AACrC,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,cAAc,EAAE,gBAAgB;AAChC,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,gBAAgB,EAAE,cAAc;AAChC,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,gBAAgB,EAAE,iEAAiE;AACnF,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,aAAa,EAAE,cAAc;AAC7B,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,aAAa,EAAE,uBAAuB;AACtC,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,cAAc,EAAE,eAAe;AAC/B,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,cAAc,EAAE,kBAAkB;AAClC,IAAA,gBAAgB,EAAE,iBAAiB;AACnC,IAAA,qBAAqB,EAAE,mBAAmB;AAC1C,IAAA,iBAAiB,EAAE,oBAAoB;AACvC,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,eAAe,EAAE,gBAAgB;AACjC,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,cAAc,EAAE,eAAe;AAC/B,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,SAAS,EAAE,UAAU;AACrB,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,WAAW,EAAE,UAAU;AACvB,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,gBAAgB,EAAE,iBAAiB;AACnC,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,cAAc,EAAE,oBAAoB;AACpC,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,iBAAiB,EAAE,+BAA+B;AAClD,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,gBAAgB,EAAE,UAAU;AAC5B,IAAA,gBAAgB,EAAE,WAAW;AAC7B,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,mBAAmB,EAAE,cAAc;AACnC,IAAA,gBAAgB,EAAE,WAAW;AAC7B,IAAA,iBAAiB,EAAE,gBAAgB;AACnC,IAAA,kBAAkB,EAAE,aAAa;AACjC,IAAA,aAAa,EAAE,cAAc;AAC7B,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,cAAc,EAAE,eAAe;AAC/B,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,mBAAmB,EAAE,YAAY;AACjC,IAAA,qBAAqB,EAAE,8BAA8B;AACrD,IAAA,qBAAqB,EAAE,4BAA4B;AACnD,IAAA,sBAAsB,EAAE,oCAAoC;AAC5D,IAAA,sBAAsB,EAAE,mCAAmC;AAC3D,IAAA,qBAAqB,EAAE,+BAA+B;AACtD,IAAA,sBAAsB,EAAE,uCAAuC;AAC/D,IAAA,sBAAsB,EAAE,sCAAsC;AAC9D,IAAA,qBAAqB,EAAE,6BAA6B;AACpD,IAAA,yBAAyB,EAAE,yBAAyB;AACpD,IAAA,qBAAqB,EAAE,6BAA6B;AACpD,IAAA,kBAAkB,EAAE,OAAO;AAC3B,IAAA,mBAAmB,EAAE,QAAQ;AAC7B,IAAA,mBAAmB,EAAE,2BAA2B;AAChD,IAAA,mBAAmB,EAAE,aAAa;AAClC,IAAA,iBAAiB,EAAE,gCAAgC;AACnD,IAAA,kBAAkB,EAAE,eAAe;AACnC,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,cAAc,EAAE,gBAAgB;AAChC,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,YAAY,EAAE,iBAAiB;AAC/B,IAAA,UAAU,EAAE,WAAW;AACvB,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,aAAa,EAAE,cAAc;AAC7B,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,eAAe,EAAE,YAAY;AAC7B,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,WAAW,EAAE,QAAQ;AACrB,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,UAAU,EAAE,WAAW;AACvB,IAAA,UAAU,EAAE,WAAW;AACvB,IAAA,eAAe,EAAE,gBAAgB;AACjC,IAAA,QAAQ,EAAE,aAAa;AACvB,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,cAAc,EAAE,eAAe;AAC/B,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,cAAc,EAAE,mBAAmB;AACnC,IAAA,QAAQ,EAAE,2BAA2B;AACrC,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,WAAW,EAAE,iBAAiB;AAC9B,IAAA,kBAAkB,EAAE,0BAA0B;AAC9C,IAAA,aAAa,EAAE,mBAAmB;AAClC,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,gBAAgB,EAAE,qBAAqB;AACvC,IAAA,WAAW,EAAE,gBAAgB;AAC7B,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,aAAa,EAAE,cAAc;AAC7B,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,SAAS,EAAE,8BAA8B;AACzC,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,mBAAmB,EAAE,eAAe;AACpC,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,eAAe,EAAE,mBAAmB;AACpC,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,cAAc,EAAE,oBAAoB;AACpC,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,mBAAmB,EAAE,uCAAuC;AAC5D,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,cAAc,EAAE,eAAe;AAC/B,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,YAAY,EAAE,kCAAkC;AAChD,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,aAAa,EAAE,cAAc;AAC7B,IAAA,cAAc,EAAE,eAAe;AAC/B,IAAA,eAAe,EAAE,6CAA6C;AAC9D,IAAA,iBAAiB,EAAE,kBAAkB;AACrC,IAAA,wBAAwB,EAAE,4BAA4B;AACtD,IAAA,YAAY,EAAE,0BAA0B;AACxC,IAAA,aAAa,EAAE,cAAc;AAC7B,IAAA,qBAAqB,EAAE,wBAAwB;AAC/C,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,qBAAqB,EAAE,+BAA+B;AACtD,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,gBAAgB,EAAE,sBAAsB;AACxC,IAAA,gBAAgB,EAAE,gFAAgF;AAClG,IAAA,aAAa,EAAE,gBAAgB;AAC/B,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,aAAa,EAAE,gCAAgC;AAC/C,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,WAAW,EAAE,WAAW;;;AC/R5B;AACA,MAAM,WAAW,GAAW,sBAAsB;AAElD;;;;;;;AAOG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,MAAqC,EAAA;AACpE,IAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAa,EAAE,IAAY,MAAc,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAC3I;AAEA;AACA,MAAM,iBAAiB,GAAqB,CAAC,GAAmB,EAAE,MAA0B,KACxF,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;AAE9C;;;;;;;AAOG;MACU,iBAAiB,GAA6C,IAAI,cAAc,CACzF,mBAAmB,EACnB;AACI,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAgC,MAAM,CAAmB,iBAAiB,CAAC,CAAC,UAAU,EAAE;AACpG,CAAA;AAGL;;;;;;AAMG;MACU,aAAa,GAAmC,IAAI,cAAc,CAAiB,eAAe,EAAE;AAC7G,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAsB,MAAM,CAAS,IAAI,CAAC,CAAC,UAAU,EAAE;AACnE,CAAA;AAED;;;;;;;;;AASG;MACU,aAAa,GAA2C,IAAI,cAAc,CAAyB,eAAe,EAAE;AAC7H,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAA6B;AAClC,QAAA,MAAM,UAAU,GAA6B,MAAM,CAAC,iBAAiB,CAAC;QAEtE,OAAO,QAAQ,CAAC,MAAqB;AACjC,YAAA,MAAM,SAAS,GAAqB,UAAU,EAAE;YAChD,MAAM,GAAG,GAA2B,EAAE;YACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC7C,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAqB,CAAC,IAAI,gBAAgB,CAAC,GAAqB,CAAC;YAC1F;AAEA,YAAA,OAAO,GAAqB;AAChC,QAAA,CAAC,CAAC;IACN,CAAC;AACJ,CAAA;AAED;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,UAAU,CACtB,GAAsD,EACtD,MAAsD,EAAA;AAEtD,IAAA,MAAM,UAAU,GAA6B,MAAM,CAAC,iBAAiB,CAAC;IAEtE,OAAO,QAAQ,CAAC,MAAa;AACzB,QAAA,MAAM,WAAW,GAAwB,OAAO,GAAG,KAAK,UAAU,GAAG,GAAG,EAAE,GAAG,GAAG;AAChF,QAAA,IAAI,WAAW,KAAK,EAAE,EAAE;AACpB,YAAA,OAAO,EAAE;QACb;AACA,QAAA,MAAM,QAAQ,GAAkC,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM;AAEhG,QAAA,OAAO,UAAU,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC;AAC1F,IAAA,CAAC,CAAC;AACN;AAEA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACG,SAAU,kBAAkB,CAAC,MAGlC,EAAA;AACG,IAAA,MAAM,SAAS,GAAe,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AAC3F,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;AAC7B,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACvE;AAEA,IAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC;AAC9C;;ACnJA;;;;;;AAMG;MAKU,cAAc,CAAA;AAChB,IAAA,SAAS,CAAC,GAAmB,EAAE,UAA4B,EAAE,MAA0B,EAAA;AAC1F,QAAA,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;IAClC;8GAHS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA;;;ACRD;AACA,MAAM,qBAAqB,GAAW,qBAAqB;AAE3D;;;;AAIG;MAEU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEa,QAAA,IAAA,CAAA,SAAS,GAAuB,MAAM,CAAC,kBAAkB,CAAC;AAEnD,QAAA,IAAA,CAAA,MAAM,GAAoB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE;AACzH,YAAA,YAAY,EAAE,KAAK;AACtB,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,MAAM,GAAoB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,EAAE;AACvH,YAAA,YAAY,EAAE,KAAK;AACtB,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,OAAO,GAAoB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE;AAClH,YAAA,YAAY,EAAE,IAAI;AACrB,SAAA,CAAC;AAEF;;;;;;AAMG;QACa,IAAA,CAAA,MAAM,GAAoB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE;AACrF,YAAA,YAAY,EAAE,KAAK;AACtB,SAAA,CAAC;AAKL,IAAA;AA5BY,IAAA,SAAS;AAyBlB,IAAA,MAAM,CAAC,OAAiB,EAAA;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAsB,KAAc,KAAK,CAAC,OAAO,CAAC,CAAC;IACxG;8GA5BS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA;;2FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACHlC;;;;;;;;AAQG;MACU,UAAU,CAAA;AACV,IAAA,YAAY,GAAe,IAAI,OAAO,EAAK;AAE7C,IAAA,IAAI,CAAC,KAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;IAEO,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;IAC3C;AAEO,IAAA,MAAM,CAAsB,IAAO,EAAA;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAQ,KAAuC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC7H;AACH;;AC3BD;;;;;;;;;AASG;MAEU,eAAe,CAAA;AACf,IAAA,IAAI,GAAoC,IAAI,UAAU,EAAuB;AAE/E,IAAA,IAAI,CAAC,KAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB;IAEO,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAC7B;AAEO,IAAA,MAAM,CAAC,IAAY,EAAA;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACjC;AAEO,IAAA,OAAO,CAAC,OAAe,EAAE,OAAe,SAAS,EAAE,UAAiC,EAAE,EAAA;QACzF,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;IAC9E;AAEO,IAAA,IAAI,CAAC,OAAe,EAAE,OAAe,MAAM,EAAE,UAAiC,EAAE,EAAA;QACnF,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;IAC3E;AAEO,IAAA,OAAO,CAAC,OAAe,EAAE,OAAe,SAAS,EAAE,UAAiC,EAAE,EAAA;QACzF,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;IAC9E;AAEO,IAAA,KAAK,CAAC,OAAe,EAAE,OAAe,QAAQ,EAAE,UAAiC,EAAE,EAAA;QACtF,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;IAC7E;8GA7BS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA,CAAA;;2FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACblC;;;;;;;;;;;;;;;;;AAiBG;MAOU,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;QAOoB,IAAA,CAAA,OAAO,GAAkC,KAAK,CAAmB,EAAE;oFAAC;AACvF,IAAA;8GAFY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACF,wBAAA,mBAAmB,EAAE,mBAAmB;AAC3C,qBAAA;AACJ,iBAAA;;;AC3BD;;;;;;;AAOG;IACS;AAAZ,CAAA,UAAY,cAAc,EAAA;;AAEtB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,UAAkB;;AAGlB,IAAA,cAAA,CAAA,oBAAA,CAAA,GAAA,mBAAwC;;AAGxC,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,cAAyB;AAC7B,CAAC,EATW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ACE1B,MAAM,cAAc,GAAkB,OAAO;AAE7C;AACA,MAAM,UAAU,GAAW,8BAA8B;AAEzD;;;;;;;;;AASG;MAEU,YAAY,CAAA;AACZ,IAAA,QAAQ;AACR,IAAA,SAAS;AACT,IAAA,SAAS;AAClB;;;;AAIG;AACM,IAAA,SAAS;AACT,IAAA,OAAO;AACP,IAAA,WAAW;AAEX,IAAA,OAAO;;AAGP,IAAA,mBAAmB;AAkB5B,IAAA,WAAA,GAAA;AAjCS,QAAA,IAAA,CAAA,QAAQ,GAAmB,MAAM,CAAC,cAAc,CAAC;AACjD,QAAA,IAAA,CAAA,SAAS,GAAa,MAAM,CAAC,QAAQ,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAoB,MAAM,CAAC,eAAe,CAAC;AAC7D;;;;AAIG;AACM,QAAA,IAAA,CAAA,SAAS,GAAa,MAAM,CAAC,QAAQ,CAAC;AACtC,QAAA,IAAA,CAAA,OAAO,GAAwB,MAAM,CAAC,aAAa,CAAC;AACpD,QAAA,IAAA,CAAA,WAAW,GAAe,MAAM,CAAC,UAAU,CAAC;AAE5C,QAAA,IAAA,CAAA,OAAO,GAAkC,MAAM,CAAgB,IAAI,CAAC,cAAc,EAAE;oFAAC;;QAGrF,IAAA,CAAA,mBAAmB,GAA4B,MAAM,CAAU,KAAK;gGAAC;;AAG9D,QAAA,IAAA,CAAA,MAAM,GAA0B,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;;AAGzD,QAAA,IAAA,CAAA,OAAO,GAAwB,QAAQ,CAAC,MAAkB;AACtE,YAAA,MAAM,MAAM,GAAkB,IAAI,CAAC,OAAO,EAAE;AAE5C,YAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AACnB,gBAAA,OAAO,MAAM;YACjB;AAEA,YAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,GAAG,MAAM,GAAG,OAAO;QACxD,CAAC;oFAAC;QAEc,IAAA,CAAA,MAAM,GAAoB,QAAQ,CAAC,MAAe,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM;mFAAC;QAGxF,IAAI,CAAC,aAAa,EAAE;QAEpB,MAAM,CAAC,MAAW;AACd,YAAA,MAAM,IAAI,GAAgB,IAAI,CAAC,OAAO,EAAE;AACxC,YAAA,MAAM,MAAM,GAAkB,IAAI,CAAC,OAAO,EAAE;;;AAG5C,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE;gBACnC;YACJ;YACA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI;YACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;AACvD,QAAA,CAAC,CAAC;IACN;AAEA;;;;;AAKG;IACI,MAAM,GAAA;QACT,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACnE;AAEO,IAAA,QAAQ,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;AAEA;;;;;;AAMG;IACH,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAClE;QACJ;QAEA,MAAM,IAAI,GAA+B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAA+B;AAEjG;;;;;AAKG;AACH,QAAA,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;YACvC;QACJ;QAEA,MAAM,KAAK,GAAmB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAE3C,QAAA,MAAM,QAAQ,GAAyC,CAAC,KAA0B,KAAU;YACxF,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/C,QAAA,CAAC;AAED,QAAA,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAY,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzF;AAEA;;;;;;AAMG;IACH,cAAc,GAAA;QACV,MAAM,QAAQ,GAAkB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,cAAc;AAC5E,QAAA,MAAM,MAAM,GAAkB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAS,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI;AAEzF,QAAA,OAAO,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,QAAQ;IAC3F;8GA/GS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA,CAAA;;2FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACtBlC;;;;AAIG;MAEU,cAAc,CAAA;AACd,IAAA,OAAO,GAAW,MAAM,CAAC,SAAS,CAAC;AAErC,IAAA,SAAS,CAAC,KAA2B,EAAA;QACxC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AAC/B,YAAA,OAAO,GAAG;QACd;AACA,QAAA,MAAM,IAAI,GAAS,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;QAClE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AAC9B,YAAA,OAAO,GAAG;QACd;AACA,QAAA,MAAM,GAAG,GAAS,IAAI,IAAI,EAAE;AAC5B,QAAA,MAAM,OAAO,GACT,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE;AACtH,QAAA,OAAO,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;IAC3E;8GAfS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAE,IAAI,EAAE,YAAY,EAAE;;;ACQ5B;;;;;;;;;;;;;;;;AAgBG;MAIU,yBAAyB,CAAA;AACzB,IAAA,KAAK;;;AAGL,IAAA,OAAO;AAEhB,IAAA,SAAS;AAeT,IAAA,WAAA,GAAA;AApBS,QAAA,IAAA,CAAA,KAAK,GAA4B,MAAM,CAAC,UAAU,CAAC;;;AAGnD,QAAA,IAAA,CAAA,OAAO,GAA+B,MAAM,CAAC,MAAM,CAA+B;QAE3F,IAAA,CAAA,SAAS,GAAgC,IAAI;;QAG7B,IAAA,CAAA,QAAQ,GAAwD,KAAK,CAA4B,KAAK,gFAClH,SAAS,EAAE,gBAAgB,EAAA,CAC7B;AAEF;;;AAGG;QACa,IAAA,CAAA,UAAU,GAAwB,KAAK,CAAS,KAAK;uFAAC;QAEtD,IAAA,CAAA,QAAQ,GAA2B,MAAM,EAAQ;QAG7D,MAAM,CAAC,MAAW;;;;;AAKd,YAAA,MAAM,QAAQ,GAAY,IAAI,CAAC,QAAQ,EAAE;AACzC,YAAA,MAAM,UAAU,GAAW,IAAI,CAAC,UAAU,EAAE;YAC5C,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE;AACX,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7B;AACJ,QAAA,CAAC,CAAC;IACN;IAEO,WAAW,GAAA;QACd,IAAI,CAAC,WAAW,EAAE;IACtB;AAEA,IAAA,QAAQ,CAAC,UAAkB,EAAA;AACvB,QAAA,MAAM,IAAI,GAA+B,IAAI,CAAC,OAAO;AACrD,QAAA,IAAI,OAAO,IAAI,CAAC,oBAAoB,KAAK,WAAW,EAAE;YAClD;QACJ;QACA,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,oBAAoB,CAC1C,CAAC,OAAoC,KAAU;AAC3C,YAAA,MAAM,OAAO,GAAY,OAAO,CAAC,IAAI,CAAC,CAAC,KAAgC,KAAc,KAAK,CAAC,cAAc,CAAC;YAC1G,IAAI,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YACxB;AACJ,QAAA,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAC3C;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IACpD;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACzB;8GA5DS,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AACjC,iBAAA;;;ACnCD;AAmtBA;AACO,MAAM,qBAAqB,GAAkC;IAChE,gBAAgB;IAChB,0BAA0B;IAC1B,yBAAyB;IACzB,wBAAwB;IACxB,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,sBAAsB;IACtB,6BAA6B;IAC7B,uBAAuB;IACvB,4BAA4B;IAC5B,wBAAwB;IACxB,6BAA6B;IAC7B,yBAAyB;IACzB,uBAAuB;IACvB,0BAA0B;IAC1B,iCAAiC;IACjC,gCAAgC;IAChC,qCAAqC;IACrC,4BAA4B;IAC5B,wBAAwB;IACxB,+BAA+B;IAC/B,8BAA8B;IAC9B,mCAAmC;IACnC,6BAA6B;IAC7B,+BAA+B;IAC/B,2BAA2B;IAC3B,8BAA8B;IAC9B,gCAAgC;IAChC,8BAA8B;IAC9B,8BAA8B;IAC9B,2BAA2B;IAC3B,kCAAkC;IAClC,iCAAiC;IACjC,sCAAsC;IACtC,gCAAgC;IAChC,kCAAkC;IAClC,6BAA6B;IAC7B,oCAAoC;IACpC,mCAAmC;IACnC,wCAAwC;IACxC,2BAA2B;IAC3B,kCAAkC;IAClC,iCAAiC;IACjC,sCAAsC;IACtC,2BAA2B;IAC3B,kCAAkC;IAClC,iCAAiC;IACjC,sCAAsC;IACtC,qBAAqB;IACrB,uBAAuB;IACvB,mBAAmB;IACnB,uBAAuB;IACvB,oBAAoB;IACpB,yBAAyB;IACzB,sBAAsB;IACtB,uBAAuB;IACvB,iCAAiC;IACjC,8BAA8B;IAC9B,gCAAgC;IAChC,2BAA2B;IAC3B,yBAAyB;IACzB,0BAA0B;IAC1B,0BAA0B;IAC1B,iCAAiC;IACjC,0BAA0B;IAC1B,0BAA0B;IAC1B,yBAAyB;IACzB,4BAA4B;IAC5B,6BAA6B;IAC7B,uBAAuB;IACvB,0BAA0B;IAC1B,0BAA0B;IAC1B,6BAA6B;IAC7B,+BAA+B;IAC/B,0BAA0B;IAC1B,6BAA6B;IAC7B,+BAA+B;IAC/B,4BAA4B;IAC5B,mCAAmC;IACnC,6BAA6B;IAC7B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,yBAAyB;IACzB,sBAAsB;IACtB,4BAA4B;IAC5B,uBAAuB;IACvB,yBAAyB;IACzB,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,+BAA+B;IAC/B,qCAAqC;IACrC,qCAAqC;IACrC,qCAAqC;IACrC,kBAAkB;IAClB,+BAA+B;IAC/B,sBAAsB;IACtB,6BAA6B;IAC7B,iCAAiC;IACjC,8BAA8B;IAC9B,kCAAkC;IAClC,4BAA4B;IAC5B,0BAA0B;IAC1B,8BAA8B;IAC9B,8BAA8B;IAC9B,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,sBAAsB;IACtB,wBAAwB;IACxB,4BAA4B;IAC5B,gBAAgB;IAChB,uBAAuB;IACvB,2BAA2B;IAC3B,wBAAwB;IACxB,4BAA4B;IAC5B,8BAA8B;IAC9B,2BAA2B;IAC3B,2BAA2B;IAC3B,wBAAwB;IACxB,8BAA8B;IAC9B,4BAA4B;IAC5B,uBAAuB;IACvB,8BAA8B;IAC9B,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,iCAAiC;IACjC,iCAAiC;IACjC,gCAAgC;IAChC,mCAAmC;IACnC,cAAc;IACd,eAAe;IACf,eAAe;IACf,eAAe;IACf,yBAAyB;IACzB,qBAAqB;IACrB,8BAA8B;IAC9B,2BAA2B;IAC3B,yBAAyB;IACzB,+BAA+B;IAC/B,+BAA+B;IAC/B,uBAAuB;IACvB,mCAAmC;IACnC,6BAA6B;IAC7B,iCAAiC;IACjC,yBAAyB;IACzB,+BAA+B;IAC/B,sBAAsB;IACtB,gBAAgB;IAChB,mBAAmB;IACnB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,uBAAuB;IACvB,sBAAsB;IACtB,wBAAwB;IACxB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,6BAA6B;IAC7B,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,mBAAmB;IACnB,oBAAoB;IACpB,0BAA0B;IAC1B,wBAAwB;IACxB,iCAAiC;IACjC,8BAA8B;IAC9B,iCAAiC;IACjC,sBAAsB;IACtB,4BAA4B;IAC5B,yBAAyB;IACzB,yBAAyB;IACzB,+BAA+B;IAC/B,kCAAkC;IAClC,0BAA0B;IAC1B,gCAAgC;IAChC,6BAA6B;IAC7B,8BAA8B;IAC9B,4BAA4B;IAC5B,2BAA2B;IAC3B,8BAA8B;IAC9B,gCAAgC;IAChC,4BAA4B;IAC5B,8BAA8B;IAC9B,8BAA8B;IAC9B,4BAA4B;IAC5B,kCAAkC;IAClC,2BAA2B;IAC3B,+BAA+B;IAC/B,oCAAoC;IACpC,4BAA4B;IAC5B,sBAAsB;IACtB,yBAAyB;IACzB,6BAA6B;IAC7B,4BAA4B;IAC5B,4BAA4B;IAC5B,yBAAyB;IACzB,wBAAwB;IACxB,gCAAgC;IAChC,+BAA+B;IAC/B,4BAA4B;IAC5B,gCAAgC;IAChC,+BAA+B;IAC/B,6BAA6B;IAC7B,oCAAoC;IACpC,4BAA4B;IAC5B,2BAA2B;IAC3B,uBAAuB;IACvB,kCAAkC;IAClC,+BAA+B;IAC/B,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,sBAAsB;IACtB,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,uBAAuB;IACvB,sBAAsB;IACtB,yBAAyB;IACzB,4BAA4B;IAC5B,8BAA8B;IAC9B,mBAAmB;IACnB,oBAAoB;IACpB,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,yBAAyB;IACzB,wBAAwB;IACxB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,wBAAwB;IACxB,uBAAuB;IACvB,2BAA2B;IAC3B,0BAA0B;IAC1B,0BAA0B;IAC1B,yBAAyB;IACzB,mBAAmB;IACnB,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,2BAA2B;IAC3B,yBAAyB;IACzB,qBAAqB;IACrB,yBAAyB;IACzB,sBAAsB;IACtB,0BAA0B;IAC1B,yBAAyB;IACzB,qBAAqB;IACrB,wBAAwB;IACxB,+BAA+B;IAC/B,4BAA4B;IAC5B,2BAA2B;IAC3B,2BAA2B;IAC3B,6BAA6B;IAC7B,2BAA2B;IAC3B,yBAAyB;IACzB,2BAA2B;IAC3B,mBAAmB;IACnB,sBAAsB;IACtB,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,yBAAyB;IACzB,6BAA6B;IAC7B,2BAA2B;IAC3B,6BAA6B;IAC7B,wBAAwB;IACxB,4BAA4B;IAC5B,kCAAkC;IAClC,gCAAgC;IAChC,kCAAkC;IAClC,0BAA0B;IAC1B,2BAA2B;IAC3B,kCAAkC;IAClC,qCAAqC;IACrC,oCAAoC;IACpC,iCAAiC;IACjC,+BAA+B;IAC/B,iCAAiC;IACjC,yBAAyB;IACzB,4BAA4B;IAC5B,6BAA6B;IAC7B,wBAAwB;IACxB,0BAA0B;IAC1B,uBAAuB;IACvB,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,uBAAuB;IACvB,sBAAsB;IACtB,uBAAuB;IACvB,sBAAsB;IACtB,wBAAwB;IACxB,sBAAsB;IACtB,8BAA8B;IAC9B,gCAAgC;IAChC,sCAAsC;IACtC,kCAAkC;IAClC,mCAAmC;IACnC,kCAAkC;IAClC,kCAAkC;IAClC,+BAA+B;IAC/B,6BAA6B;IAC7B,6BAA6B;IAC7B,0BAA0B;IAC1B,0BAA0B;IAC1B,qCAAqC;IACrC,sCAAsC;IACtC,sBAAsB;IACtB,mCAAmC;IACnC,sCAAsC;IACtC,uCAAuC;IACvC,wCAAwC;IACxC,4BAA4B;IAC5B,iCAAiC;IACjC,qCAAqC;IACrC,4BAA4B;IAC5B,6BAA6B;IAC7B,6BAA6B;IAC7B,uBAAuB;IACvB,sBAAsB;IACtB,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,6BAA6B;IAC7B,8BAA8B;IAC9B,8BAA8B;IAC9B,4BAA4B;IAC5B,kCAAkC;IAClC,gCAAgC;IAChC,sCAAsC;IACtC,0CAA0C;IAC1C,wCAAwC;IACxC,yCAAyC;IACzC,4BAA4B;IAC5B,0BAA0B;IAC1B,gCAAgC;IAChC,oCAAoC;IACpC,kCAAkC;IAClC,8BAA8B;IAC9B,iCAAiC;IACjC,8BAA8B;IAC9B,qBAAqB;IACrB,yBAAyB;IACzB,yBAAyB;IACzB,2BAA2B;IAC3B,2BAA2B;IAC3B,8BAA8B;IAC9B,4CAA4C;IAC5C,+BAA+B;IAC/B,+BAA+B;IAC/B,0BAA0B;IAC1B,+BAA+B;IAC/B,6BAA6B;IAC7B,+BAA+B;IAC/B,6BAA6B;IAC7B,0BAA0B;IAC1B,6BAA6B;IAC7B,2BAA2B;IAC3B,0BAA0B;IAC1B,wBAAwB;IACxB,iCAAiC;IACjC,iBAAiB;IACjB,qBAAqB;IACrB,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,uBAAuB;IACvB,oBAAoB;IACpB,wBAAwB;IACxB,+BAA+B;IAC/B,gBAAgB;IAChB,gBAAgB;IAChB,uBAAuB;IACvB,kBAAkB;IAClB,0BAA0B;IAC1B,gBAAgB;IAChB,wBAAwB;IACxB,4BAA4B;IAC5B,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,eAAe;IACf,cAAc;IACd,cAAc;IACd,aAAa;IACb,cAAc;IACd,cAAc;IACd,aAAa;IACb,cAAc;IACd,aAAa;IACb,cAAc;IACd,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,2BAA2B;IAC3B,0BAA0B;IAC1B,6BAA6B;IAC7B,6BAA6B;IAC7B,6BAA6B;IAC7B,yBAAyB;IACzB,0BAA0B;IAC1B,wBAAwB;IACxB,yBAAyB;IACzB,yBAAyB;IACzB,4BAA4B;IAC5B,2BAA2B;IAC3B,0BAA0B;IAC1B,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,aAAa;IACb,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,uBAAuB;IACvB,gBAAgB;IAChB,eAAe;IACf,gBAAgB;;AAGpB;AACO,MAAM,wBAAwB,GAAqC;IACtE,iCAAiC;IACjC,qCAAqC;IACrC,qCAAqC;IACrC,kCAAkC;IAClC,+BAA+B;IAC/B,sCAAsC;IACtC,uCAAuC;IACvC,+BAA+B;IAC/B,+BAA+B;IAC/B,oBAAoB;IACpB,iCAAiC;IACjC,4BAA4B;IAC5B,uBAAuB;IACvB,mCAAmC;IACnC,gCAAgC;IAChC,2BAA2B;IAC3B,qBAAqB;IACrB,+BAA+B;IAC/B,uCAAuC;IACvC,+BAA+B;IAC/B,uCAAuC;IACvC,0BAA0B;IAC1B,2BAA2B;IAC3B,yBAAyB;IACzB,4BAA4B;IAC5B,0BAA0B;IAC1B,qCAAqC;IACrC,8BAA8B;IAC9B,6BAA6B;IAC7B,6BAA6B;IAC7B,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;IACxB,eAAe;IACf,0BAA0B;IAC1B,+BAA+B;IAC/B,uBAAuB;IACvB,yBAAyB;IACzB,2BAA2B;IAC3B,0BAA0B;IAC1B,kCAAkC;IAClC,6BAA6B;IAC7B,uBAAuB;IACvB,yBAAyB;IACzB,8BAA8B;IAC9B,iCAAiC;IACjC,iCAAiC;IACjC,8BAA8B;IAC9B,gCAAgC;IAChC,kBAAkB;IAClB,iCAAiC;IACjC,6CAA6C;IAC7C,0CAA0C;IAC1C,iCAAiC;IACjC,gBAAgB;IAChB,oBAAoB;IACpB,gCAAgC;IAChC,6BAA6B;IAC7B,2BAA2B;IAC3B,4BAA4B;IAC5B,2BAA2B;IAC3B,4BAA4B;IAC5B,6BAA6B;IAC7B,6BAA6B;IAC7B,0BAA0B;IAC1B,mBAAmB;IACnB,wCAAwC;IACxC,2CAA2C;IAC3C,gDAAgD;IAChD,sCAAsC;IACtC,mDAAmD;IACnD,mDAAmD;IACnD,yCAAyC;IACzC,+CAA+C;IAC/C,iDAAiD;IACjD,4CAA4C;IAC5C,sCAAsC;IACtC,gCAAgC;IAChC,0CAA0C;IAC1C,8CAA8C;IAC9C,2CAA2C;IAC3C,uCAAuC;IACvC,6CAA6C;IAC7C,gDAAgD;IAChD,8CAA8C;IAC9C,6CAA6C;IAC7C,+CAA+C;IAC/C,+CAA+C;IAC/C,0CAA0C;IAC1C,0CAA0C;IAC1C,6CAA6C;IAC7C,8CAA8C;IAC9C,8CAA8C;IAC9C,wCAAwC;IACxC,wCAAwC;IACxC,uCAAuC;IACvC,gDAAgD;IAChD,+CAA+C;IAC/C,qCAAqC;IACrC,oCAAoC;IACpC,oCAAoC;IACpC,mCAAmC;IACnC,+BAA+B;IAC/B,oBAAoB;IACpB,qBAAqB;IACrB,2BAA2B;IAC3B,uBAAuB;IACvB,wBAAwB;IACxB,0BAA0B;IAC1B,sBAAsB;IACtB,yBAAyB;IACzB,uBAAuB;IACvB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,sBAAsB;IACtB,uBAAuB;IACvB,sBAAsB;IACtB,wBAAwB;IACxB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,wBAAwB;IACxB,oBAAoB;IACpB,yBAAyB;IACzB,qBAAqB;IACrB,uBAAuB;IACvB,mBAAmB;IACnB,uBAAuB;IACvB,qBAAqB;IACrB,yBAAyB;IACzB,wBAAwB;IACxB,yBAAyB;IACzB,yBAAyB;IACzB,eAAe;IACf,yBAAyB;IACzB,wBAAwB;IACxB,kBAAkB;IAClB,6BAA6B;IAC7B,uCAAuC;IACvC,gCAAgC;IAChC,2BAA2B;IAC3B,qCAAqC;IACrC,8BAA8B;IAC9B,8BAA8B;IAC9B,wCAAwC;IACxC,iCAAiC;IACjC,8BAA8B;IAC9B,wCAAwC;IACxC,iCAAiC;IACjC,uBAAuB;IACvB,2BAA2B;IAC3B,4BAA4B;IAC5B,2BAA2B;IAC3B,0BAA0B;;;ACn6C9B;;;;AAIG;AACH,MAAM,uBAAuB,GAAW,MAAM;AAE9C;;;;;;;AAOG;SACa,eAAe,CAAC,GAA8B,EAAE,WAAmB,uBAAuB,EAAA;IACtG,IAAI,CAAC,GAAG,EAAE;AACN,QAAA,OAAO,QAAQ;IACnB;AAEA,IAAA,MAAM,IAAI,GAAW,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;;IAGpD,IAAI,QAAQ,GAAW,IAAI;IAC3B,MAAM,SAAS,GAAW,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7C,IAAA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,QAAA,MAAM,QAAQ,GAAW,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,CAAC;AACzD,QAAA,QAAQ,GAAG,QAAQ,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC1D;AACA,IAAA,MAAM,OAAO,GAAW,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE;IACvE,IAAI,CAAC,OAAO,EAAE;AACV,QAAA,OAAO,QAAQ;IACnB;AAEA,IAAA,IAAI;AACA,QAAA,OAAO,kBAAkB,CAAC,OAAO,CAAC;IACtC;AAAE,IAAA,MAAM;;AAEJ,QAAA,OAAO,OAAO;IAClB;AACJ;;ACxCA;;;;;;;;;;AAUG;AACG,SAAU,cAAc,CAAC,KAAgC,EAAA;AAC3D,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;AAC3E,QAAA,OAAO,EAAE;IACb;AAEA,IAAA,IAAI,KAAK,GAAG,KAAK,EAAE;QACf,OAAO,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI;IACvB;AAEA,IAAA,IAAI,KAAK,GAAG,SAAS,EAAE;QACnB,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAA,GAAA,CAAK;IAC5C;AAEA,IAAA,IAAI,KAAK,GAAG,aAAa,EAAE;AACvB,QAAA,OAAO,CAAA,EAAG,CAAC,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA,GAAA,CAAK;IACjD;AAEA,IAAA,OAAO,CAAA,EAAG,CAAC,KAAK,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA,GAAA,CAAK;AACrD;;AC7BA;;;;;;AAMG;AAEH;IACY;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACnB,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;AAS5B;IACY;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACnB,CAAC,EARW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;ACjB7B;;;;;;AAMG;AAEH;AACA,MAAM,eAAe,GAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;AAS7E;;;AAGG;AACH,MAAM,YAAY,GAA2B;AACzC,IAAA,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;AAC1D,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;AAC5D,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;AAC5D,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;AAC5D,IAAA,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;AAC7D,IAAA,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;CAChE;AAgBD;AACA,SAAS,QAAQ,CAAC,KAAa,EAAA;AAC3B,IAAA,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAClF;AAEA;SACgB,SAAS,GAAA;AACrB,IAAA,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAChF;AAEA;AACA,SAAS,aAAa,CAAC,KAAa,EAAA;AAChC,IAAA,MAAM,OAAO,GAAW,KAAK,CAAC,WAAW,EAAE;AAE3C,IAAA,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,MAAc,KAAc,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxF;AAEA;AACA,SAAS,SAAS,CAAC,MAAc,EAAE,KAAa,EAAA;AAC5C,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AACpD,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,KAAK,GAAW,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAEpD,IAAA,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3C,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,GAAG,GAAW,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;IAElD,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;AACtE;AAEA;AACA,SAAS,QAAQ,CAAC,MAAc,EAAE,KAAa,EAAE,MAAe,EAAA;AAC5D,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;AACvB,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,KAAK,GAAW,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAEpD,IAAA,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3C,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,GAAG,GAAW,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAElD,IAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;AACZ,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,OAAO,GAAW,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;AAE3D,IAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AACzB,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,KAAK,GAAW,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC;IAEpD,OAAO;AACH,QAAA,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC;QACvB,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;KAC9F;AACL;AAEA;AACA,SAAS,UAAU,CAAC,MAAc,EAAE,KAAa,EAAE,MAAe,EAAA;IAC9D,MAAM,IAAI,GAA4B,YAAY,CAAC,IAAI,CAAC,CAAC,SAAsB,KAAc,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAEtI,IAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,QAAA,OAAO,IAAI;IACf;IAEA,MAAM,IAAI,GAAW,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AAC7C,IAAA,MAAM,KAAK,GAAW,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;IAErD,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE;AAChC,QAAA,OAAO,IAAI;IACf;IAEA,MAAM,KAAK,GAAW,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;IAE/C,OAAO;QACH,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AACxC,QAAA,IAAI,EAAE;YACF,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK;AAC9B,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;AAC1C,YAAA,IAAI,EAAE,IAAI;AACb,SAAA;KACJ;AACL;AAEA;AACA,SAAS,MAAM,CAAC,MAAc,EAAE,KAAa,EAAE,MAAe,EAAA;IAC1D,MAAM,KAAK,GAAkB,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IAE7H,OAAO,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7C;AAEA;;;;;AAKG;AACG,SAAU,WAAW,CAAC,MAAc,EAAA;IACtC,MAAM,KAAK,GAA4B,EAAE;IACzC,IAAI,KAAK,GAAW,EAAE;IACtB,IAAI,KAAK,GAAW,CAAC;IAErB,MAAM,KAAK,GAAe,MAAW;AACjC,QAAA,IAAI,KAAK,KAAK,EAAE,EAAE;YACd,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3B,KAAK,GAAG,EAAE;QACd;AACJ,IAAA,CAAC;AAED,IAAA,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;QAC1B,MAAM,KAAK,GAAW,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC;AAExD,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACrB,YAAA,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QACtD;aAAO;AACH,YAAA,KAAK,EAAE;AACP,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1B;AAEA,QAAA,KAAK,IAAI,KAAK,CAAC,MAAM;IACzB;AAEA,IAAA,KAAK,EAAE;AAEP,IAAA,OAAO,KAAK;AAChB;;ACnLA;;;;;;;;;;AAUG;AAEH;AACA,MAAM,KAAK,GAAW,KAAK;AAE3B;AACA,MAAM,YAAY,GAAW,iBAAiB;AAE9C;AACA,MAAM,UAAU,GAAW,iBAAiB;AAE5C;AACA,MAAM,WAAW,GAAW,kBAAkB;AAE9C;AACA,MAAM,YAAY,GAAW,oBAAoB;AAEjD;AACA,MAAM,aAAa,GAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAE7D;AACA,MAAM,gBAAgB,GAAW,CAAC;AAElC;AACA,MAAM,SAAS,GAAW,IAAI;AAW9B;AACA,SAAS,SAAS,CAAC,IAAsB,EAAE,KAAoC,EAAA;IAC3E,OAAO;QACH,IAAI;AACJ,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,GAAG,KAAK;KACX;AACL;AAEA;AACA,SAAS,UAAU,CAAC,IAAY,EAAA;IAC5B,MAAM,OAAO,GAAW,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAEzE,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAY,KAA8B,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACtG;AAEA;AACA,SAAS,cAAc,CAAC,IAAY,EAAA;AAChC,IAAA,MAAM,OAAO,GAAW,IAAI,CAAC,IAAI,EAAE;IAEnC,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAY,KAAc,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/G;AAEA;AACA,SAAS,SAAS,CAAC,KAAwB,EAAA;IACvC,MAAM,KAAK,GAA4B,EAAE;IAEzC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,KAAa,KAAU;AAChD,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACX,YAAA,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3B;QAEA,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AACpC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,KAAK;AAChB;AAEA;AACA,SAAS,UAAU,CAAC,IAAY,EAAE,OAAgB,EAAA;AAC9C,IAAA,MAAM,KAAK,GAA2B,CAAC,OAAO,GAAG,YAAY,GAAG,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;AAEvF,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,gBAAgB,CAAC;IAEpE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9E;AAEA;AACA,SAAS,QAAQ,CAAC,KAAwB,EAAE,KAAa,EAAA;IACrD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACjC,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,QAAQ,GAAW,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;AAChE,IAAA,IAAI,GAAG,GAAW,KAAK,GAAG,CAAC;AAE3B,IAAA,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACxD,GAAG,IAAI,CAAC;IACZ;IAEA,OAAO;AACH,QAAA,IAAI,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;AACxC,QAAA,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE;AACpC,YAAA,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,QAAQ,EAAE,QAAQ,KAAK,EAAE,GAAG,IAAI,GAAG,QAAQ;SAC9C,CAAC;KACL;AACL;AAEA;AACA,SAAS,WAAW,CAAC,KAAwB,EAAE,KAAa,EAAA;IACxD,MAAM,KAAK,GAA2B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAErE,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,QAAA,OAAO,IAAI;IACf;IAEA,OAAO;QACH,IAAI,EAAE,KAAK,GAAG,CAAC;AACf,QAAA,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE;AACvC,YAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;YACtB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClC,YAAA,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACjC,CAAC;KACL;AACL;AAEA;AACA,SAAS,SAAS,CAAC,KAAwB,EAAE,KAAa,EAAA;IACtD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AAChC,QAAA,OAAO,IAAI;IACf;IAEA,MAAM,KAAK,GAAa,EAAE;IAC1B,IAAI,GAAG,GAAW,KAAK;AAEvB,IAAA,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;QACtD,MAAM,KAAK,GAA2B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEjE,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,GAAG,IAAI,CAAC;IACZ;IAEA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACjG;AAEA;AACA,SAAS,QAAQ,CAAC,KAAwB,EAAE,KAAa,EAAA;IACrD,MAAM,OAAO,GAAY,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAExD,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7C,QAAA,OAAO,IAAI;IACf;IAEA,MAAM,KAAK,GAA0B,EAAE;IACvC,IAAI,GAAG,GAAW,KAAK;IACvB,IAAI,IAAI,GAA+B,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;AAEtE,IAAA,OAAO,IAAI,KAAK,IAAI,EAAE;AAClB,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAChB,GAAG,IAAI,CAAC;QACR,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI;IACtE;IAEA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;AACrF;AAEA;AACA,SAAS,SAAS,CAAC,KAAwB,EAAE,KAAa,EAAA;AACtD,IAAA,MAAM,UAAU,GAAY,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAExF,IAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE;AAC5C,QAAA,OAAO,IAAI;IACf;IAEA,MAAM,IAAI,GAAgC,EAAE;AAC5C,IAAA,IAAI,GAAG,GAAW,KAAK,GAAG,CAAC;AAE3B,IAAA,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACnD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,GAAG,IAAI,CAAC;IACZ;AAEA,IAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;AAC5G;AAEA;AACA,MAAM,YAAY,GAAsB,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC;AAE7F;AACA,SAAS,gBAAgB,CAAC,IAAY,EAAA;AAClC,IAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC9C,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,KAAa,KAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1E;AAEA;AACA,SAAS,aAAa,CAAC,KAAwB,EAAE,KAAa,EAAA;IAC1D,MAAM,KAAK,GAAa,EAAE;IAC1B,IAAI,GAAG,GAAW,KAAK;AAEvB,IAAA,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;QACxD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,GAAG,IAAI,CAAC;IACZ;IAEA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACrG;AAEA;AACA,MAAM,aAAa,GAA4B,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;AAEtG;AACA,SAAS,WAAW,CAAC,KAAwB,EAAE,KAAa,EAAA;AACxD,IAAA,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE;QAChC,MAAM,IAAI,GAAsB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AAEpD,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACf,YAAA,OAAO,IAAI;QACf;IACJ;AAEA,IAAA,OAAO,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;AACtC;AAEA;;;;;AAKG;AACG,SAAU,aAAa,CAAC,MAAiC,EAAA;AAC3D,IAAA,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACjE,QAAA,OAAO,EAAE;IACb;IAEA,MAAM,KAAK,GAAa;AACnB,SAAA,OAAO,CAAC,QAAQ,EAAE,IAAI;SACtB,KAAK,CAAC,IAAI;AACV,SAAA,GAAG,CAAC,CAAC,IAAY,KAAa,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClE,MAAM,MAAM,GAA2B,EAAE;IACzC,IAAI,KAAK,GAAW,CAAC;AAErB,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;QACzB,MAAM,IAAI,GAAsB,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;AAE7F,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,KAAK,IAAI,CAAC;QACd;aAAO;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,YAAA,KAAK,GAAG,IAAI,CAAC,IAAI;QACrB;IACJ;AAEA,IAAA,OAAO,MAAM;AACjB;;ACnRA;AACA,SAAS,MAAM,CAAC,KAAc,EAAA;IAC1B,OAAO,KAAK,KAAK,IAAI;AACzB;AAEA;AACA,MAAM,eAAe,GAAqD,IAAI,GAAG,CAAsC;IACnH,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,YAAY,EAAE,MAAM,CAAC;AACtB,IAAA,CAAC,MAAM,EAAE,CAAC,KAAc,KAAc,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAC;AAChF,IAAA,CAAC,QAAQ,EAAE,CAAC,KAAc,KAAc,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AACrF,CAAA,CAAC;AAEF;AACA,SAAS,QAAQ,CAAC,KAAc,EAAA;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;AACtD;AAEA;AACA,SAAS,iBAAiB,CAAC,GAA4B,EAAA;AACnD,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAW,KAAa;QACnD,MAAM,QAAQ,GAA8C,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;QACpF,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvD,IAAA,CAAC,CAAC;AACN;AAEA;AACA,SAAS,WAAW,CAAC,EAAW,EAAA;AAC5B,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACf,QAAA,OAAO,IAAI;IACf;AACA,IAAA,MAAM,MAAM,GAAY,EAAE,CAAC,QAAQ,CAAC;AACpC,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC5B,QAAA,OAAO,IAAI;IACf;IACA,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAW,KAAc,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,YAAY,CAAC,EAAE;AAC1F,QAAA,OAAO,IAAI;IACf;AACA,IAAA,MAAM,KAAK,GAAY,EAAE,CAAC,YAAY,CAAC;AACvC,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;QACrB,OAAO,EAAE,MAAM,EAAE;IACrB;IACA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AAClF,QAAA,OAAO,IAAI;IACf;AACA,IAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAyC,EAAE;AAC5E;AAEA;;;;;AAKG;AACG,SAAU,sBAAsB,CAAC,KAAkB,EAAA;IACrD,OAAO;QACH,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAiB,KAAmB;AACpD,YAAA,MAAM,KAAK,GAAwC,EAAE,CAAC,UAA4D;AAClH,YAAA,MAAM,SAAS,GAAY,KAAK,GAAG,YAAY,CAAC;AAChD,YAAA,IAAI,KAAK,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE;AACtE,gBAAA,OAAO,EAAE;YACb;YACA,OAAO;AACH,gBAAA,GAAG,EAAE;gBACL,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE;aACvD;AACL,QAAA,CAAC,CAAC;KACL;AACL;AAEA;;;;;AAKG;AACG,SAAU,mBAAmB,CAAC,GAAY,EAAA;AAC5C,IAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAChB,QAAA,OAAO,IAAI;IACf;AACA,IAAA,MAAM,GAAG,GAAY,GAAG,CAAC,KAAK,CAAC;AAC/B,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,QAAA,OAAO,IAAI;IACf;IACA,MAAM,KAAK,GAAoB,EAAE;AACjC,IAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;AAClB,QAAA,MAAM,UAAU,GAAyB,WAAW,CAAC,EAAE,CAAC;AACxD,QAAA,IAAI,UAAU,KAAK,IAAI,EAAE;AACrB,YAAA,OAAO,IAAI;QACf;AACA,QAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1B;AACA,IAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE;AACzB;;ACnGA;;;;AAIG;;ACFH;AACO,MAAM,kBAAkB,GAAW;AAE1C;;;;;AAKG;SACa,cAAc,GAAA;IAC1B,OAAO,QAAQ,CAAC,CAAC,KAAa,KAA+B,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC;AACrH;;ACbA;AACO,MAAM,2BAA2B,GAAW;AAEnD;AACO,MAAM,wBAAwB,GAAW;AAEhD;;;;;AAKG;AACG,SAAU,uBAAuB,CAAC,MAAe,EAAA;AACnD,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,wBAAwB,CAAC,GAAG,EAAE;AACxF;AAEA;;;;AAIG;AACG,SAAU,4BAA4B,CAAC,QAAkB,EAAA;AAC3D,IAAA,MAAM,OAAO,GAAmB,QAAQ,CAAC,aAAa;AACtD,IAAA,OAAO,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,GAAG,EAAE;AAC1D;AAEA;AACO,MAAM,wBAAwB,GAAW;AAEhD;;;;;AAKG;AACG,SAAU,YAAY,CAAC,MAAe,EAAA;IACxC,MAAM,KAAK,GAAmB,MAAM,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,wBAAwB,CAAA,CAAA,CAAG,CAAC;AAC7E,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE;AAClE,QAAA,OAAO,IAAI;IACf;IAEA,OAAO,KAAK,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,IAAI;AAC/D;AAEA,SAAS,eAAe,CAAC,IAAiB,EAAE,KAAoB,EAAA;AAC5D,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,QAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC;IAClD;SAAO;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,KAAK,CAAC;IACtD;AACJ;AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,IAAiB,EAAE,MAAe,EAAA;IAC9D,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAC/C;AAEA;;;;AAIG;AACG,SAAU,iBAAiB,CAAC,QAAkB,EAAA;AAChD,IAAA,MAAM,OAAO,GAAmB,QAAQ,CAAC,aAAa;AACtD,IAAA,OAAO,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;AACjD;AAEA;;;AAGG;AACG,SAAU,sBAAsB,CAAC,IAAiB,EAAE,QAAkB,EAAA;IACxE,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACtD;;AC5EA;;;;;;;AAOG;AAMH;IACY;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AAC9B,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACrB,CAAC,EARW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;AAUlC;IACY;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AAC9B,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACjB,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;AAOlC;IACY;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAC7B,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACnB,CAAC,EANW,qBAAqB,KAArB,qBAAqB,GAAA,EAAA,CAAA,CAAA;AAajC;;;AAGG;AACI,MAAM,wBAAwB,GAAW;AAEhD;;;;AAIG;MACU,8BAA8B,GAA4B,IAAI,cAAc,CAAU,gCAAgC;;ACpDnI;MACa,eAAe,GAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM;AAE/G;;;;;;AAMG;MACU,iBAAiB,GAAqC,IAAI,cAAc,CAAmB,mBAAmB;;ACf3H;;;;;;;;;;;;;;AAcG;AAEH;AACO,MAAM,SAAS,GAAG;IACrB,aAAa;IACb,cAAc;IACd,eAAe;IACf,YAAY;IACZ,aAAa;IACb,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,iBAAiB;IACjB,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,UAAU;IACV,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,iBAAiB;IACjB,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,YAAY;IACZ,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,UAAU;IACV,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,QAAQ;IACR,UAAU;IACV,UAAU;IACV,IAAI;IACJ,iBAAiB;IACjB,YAAY;IACZ,eAAe;IACf,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,YAAY;IACZ,aAAa;IACb,iBAAiB;IACjB,gBAAgB;IAChB,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU;IACV,eAAe;IACf,KAAK;IACL,KAAK;IACL,WAAW;IACX,UAAU;IACV,QAAQ;IACR,UAAU;IACV,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,cAAc;IACd,WAAW;IACX,YAAY;IACZ,OAAO;IACP,cAAc;IACd,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,mBAAmB;IACnB,cAAc;IACd,cAAc;IACd,eAAe;IACf,YAAY;IACZ,iBAAiB;IACjB,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,gBAAgB;IAChB,cAAc;IACd,MAAM;IACN,KAAK;IACL,SAAS;IACT,UAAU;IACV,MAAM;IACN,aAAa;IACb,UAAU;IACV,SAAS;IACT,YAAY;IACZ,gBAAgB;IAChB,aAAa;IACb,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,oBAAoB;IACpB,eAAe;IACf,KAAK;IACL,WAAW;IACX,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,aAAa;IACb,cAAc;IACd,MAAM;IACN,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,OAAO;IACP,SAAS;IACT,SAAS;IACT,OAAO;IACP,YAAY;IACZ,MAAM;IACN,SAAS;IACT,eAAe;IACf,MAAM;IACN,SAAS;IACT,WAAW;IACX,OAAO;IACP,kBAAkB;IAClB,UAAU;IACV,UAAU;IACV,kBAAkB;IAClB,oBAAoB;IACpB,WAAW;IACX,YAAY;IACZ,iBAAiB;IACjB,OAAO;IACP,cAAc;IACd,UAAU;IACV,YAAY;IACZ,cAAc;IACd,WAAW;IACX,aAAa;IACb,mBAAmB;IACnB,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,YAAY;IACZ,iBAAiB;IACjB,aAAa;IACb,UAAU;IACV,kBAAkB;IAClB,eAAe;IACf,UAAU;IACV,cAAc;IACd,SAAS;IACT,mBAAmB;IACnB,UAAU;IACV,UAAU;IACV,4BAA4B;IAC5B,kBAAkB;IAClB,cAAc;IACd,WAAW;IACX,UAAU;IACV,SAAS;IACT,WAAW;IACX,YAAY;IACZ,WAAW;IACX,UAAU;IACV,SAAS;IACT,cAAc;IACd,SAAS;IACT,UAAU;IACV,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,eAAe;IACf,WAAW;IACX,aAAa;IACb,2BAA2B;IAC3B,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,cAAc;IACd,YAAY;IACZ,SAAS;IACT,aAAa;IACb,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,cAAc;IACd,aAAa;IACb,WAAW;IACX,UAAU;IACV,YAAY;IACZ,aAAa;IACb,aAAa;IACb,UAAU;IACV,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,UAAU;IACV,aAAa;IACb,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,cAAc;IACd,UAAU;IACV,eAAe;IACf,UAAU;IACV,eAAe;IACf,aAAa;IACb,SAAS;IACT,aAAa;IACb,aAAa;IACb,YAAY;IACZ,UAAU;IACV,UAAU;IACV,cAAc;IACd,UAAU;IACV,WAAW;IACX,SAAS;IACT,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,WAAW;IACX,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,qBAAqB;IACrB,SAAS;IACT,SAAS;IACT,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,aAAa;IACb,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,WAAW;IACX,KAAK;IACL,WAAW;IACX,WAAW;IACX,OAAO;IACP,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,WAAW;IACX,KAAK;IACL,aAAa;IACb,WAAW;IACX,OAAO;IACP,QAAQ;IACR,iBAAiB;IACjB,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,QAAQ;IACR,cAAc;IACd,aAAa;IACb,MAAM;IACN,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,SAAS;IACT,WAAW;IACX,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,eAAe;IACf,WAAW;IACX,eAAe;IACf,UAAU;IACV,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;IACf,UAAU;IACV,gBAAgB;IAChB,kBAAkB;IAClB,sBAAsB;IACtB,gBAAgB;IAChB,oBAAoB;IACpB,uBAAuB;IACvB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,SAAS;IACT,SAAS;IACT,MAAM;IACN,WAAW;IACX,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,KAAK;IACL,MAAM;IACN,UAAU;IACV,UAAU;IACV,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,cAAc;IACd,OAAO;IACP,SAAS;IACT,cAAc;IACd,MAAM;IACN,QAAQ;IACR,MAAM;IACN,WAAW;IACX,YAAY;IACZ,UAAU;IACV,WAAW;IACX,OAAO;IACP,OAAO;IACP,aAAa;IACb,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,SAAS;IACT,MAAM;IACN,iBAAiB;IACjB,iBAAiB;;;AC1XrB;;;AAGG;;ACHH;;AAEG;;;;"}