You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1 lines
81 KiB

{"version":3,"file":"timepicker.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/util.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-toggle.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-toggle.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {DateAdapter, MatDateFormats} from '../core';\n\n/** Pattern that interval strings have to match. */\nconst INTERVAL_PATTERN = /^(\\d*\\.?\\d+)\\s*(h|hour|hours|m|min|minute|minutes|s|second|seconds)?$/i;\n\n/**\n * Object that can be used to configure the default options for the timepicker component.\n */\nexport interface MatTimepickerConfig {\n /** Default interval for all time pickers. */\n interval?: string | number;\n\n /** Whether ripples inside the timepicker should be disabled by default. */\n disableRipple?: boolean;\n}\n\n/**\n * Injection token that can be used to configure the default options for the timepicker component.\n */\nexport const MAT_TIMEPICKER_CONFIG = new InjectionToken<MatTimepickerConfig>(\n 'MAT_TIMEPICKER_CONFIG',\n);\n\n/**\n * Time selection option that can be displayed within a `mat-timepicker`.\n */\nexport interface MatTimepickerOption<D = unknown> {\n /** Date value of the option. */\n value: D;\n\n /** Label to show to the user. */\n label: string;\n}\n\n/** Parses an interval value into seconds. */\nexport function parseInterval(value: number | string | null): number | null {\n let result: number;\n\n if (value === null) {\n return null;\n } else if (typeof value === 'number') {\n result = value;\n } else {\n if (value.trim().length === 0) {\n return null;\n }\n\n const parsed = value.match(INTERVAL_PATTERN);\n const amount = parsed ? parseFloat(parsed[1]) : null;\n const unit = parsed?.[2]?.toLowerCase() || null;\n\n if (!parsed || amount === null || isNaN(amount)) {\n return null;\n }\n\n if (unit === 'h' || unit === 'hour' || unit === 'hours') {\n result = amount * 3600;\n } else if (unit === 'm' || unit === 'min' || unit === 'minute' || unit === 'minutes') {\n result = amount * 60;\n } else {\n result = amount;\n }\n }\n\n return result;\n}\n\n/**\n * Generates the options to show in a timepicker.\n * @param adapter Date adapter to be used to generate the options.\n * @param formats Formatting config to use when displaying the options.\n * @param min Time from which to start generating the options.\n * @param max Time at which to stop generating the options.\n * @param interval Amount of seconds between each option.\n */\nexport function generateOptions<D>(\n adapter: DateAdapter<D>,\n formats: MatDateFormats,\n min: D,\n max: D,\n interval: number,\n): MatTimepickerOption<D>[] {\n const options: MatTimepickerOption<D>[] = [];\n let current = adapter.compareTime(min, max) < 1 ? min : max;\n\n while (\n adapter.sameDate(current, min) &&\n adapter.compareTime(current, max) < 1 &&\n adapter.isValid(current)\n ) {\n options.push({value: current, label: adapter.format(current, formats.display.timeOptionLabel)});\n current = adapter.addSeconds(current, interval);\n }\n\n return options;\n}\n\n/** Checks whether a date adapter is set up correctly for use with the timepicker. */\nexport function validateAdapter(\n adapter: DateAdapter<unknown> | null,\n formats: MatDateFormats | null,\n) {\n function missingAdapterError(provider: string) {\n return Error(\n `MatTimepicker: No provider found for ${provider}. You must add one of the following ` +\n `to your app config: provideNativeDateAdapter, provideDateFnsAdapter, ` +\n `provideLuxonDateAdapter, provideMomentDateAdapter, or provide a custom implementation.`,\n );\n }\n\n if (!adapter) {\n throw missingAdapterError('DateAdapter');\n }\n\n if (!formats) {\n throw missingAdapterError('MAT_DATE_FORMATS');\n }\n\n if (\n formats.display.timeInput === undefined ||\n formats.display.timeOptionLabel === undefined ||\n formats.parse.timeInput === undefined\n ) {\n throw new Error(\n 'MatTimepicker: Incomplete `MAT_DATE_FORMATS` has been provided. ' +\n '`MAT_DATE_FORMATS` must provide `display.timeInput`, `display.timeOptionLabel` ' +\n 'and `parse.timeInput` formats in order to be compatible with MatTimepicker.',\n );\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterNextRender,\n AfterRenderRef,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnDestroy,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n viewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n _animationsDisabled,\n DateAdapter,\n MAT_DATE_FORMATS,\n MAT_OPTION_PARENT_COMPONENT,\n MatOption,\n MatOptionParentComponent,\n} from '../core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n createRepositionScrollStrategy,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {_getEventTarget} from '@angular/cdk/platform';\nimport {ENTER, ESCAPE, hasModifierKey, TAB} from '@angular/cdk/keycodes';\nimport {_IdGenerator, ActiveDescendantKeyManager} from '@angular/cdk/a11y';\nimport {\n generateOptions,\n MAT_TIMEPICKER_CONFIG,\n MatTimepickerOption,\n parseInterval,\n validateAdapter,\n} from './util';\nimport {Subscription} from 'rxjs';\n\n/** Event emitted when a value is selected in the timepicker. */\nexport interface MatTimepickerSelected<D> {\n value: D;\n source: MatTimepicker<D>;\n}\n\n/** Injection token used to configure the behavior of the timepicker dropdown while scrolling. */\nexport const MAT_TIMEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'MAT_TIMEPICKER_SCROLL_STRATEGY',\n {\n providedIn: 'root',\n factory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n },\n },\n);\n\n/** Represents an input that is connected to a `mat-timepicker`. */\nexport interface MatTimepickerConnectedInput<D> {\n /** Current value of the input. */\n value: Signal<D | null>;\n\n /** Minimum allowed time. */\n min: Signal<D | null>;\n\n /** Maximum allowed time. */\n max: Signal<D | null>;\n\n /** Whether the input is disabled. */\n disabled: Signal<boolean>;\n\n /** Focuses the input. */\n focus(): void;\n\n /** Gets the element to which to connect the timepicker overlay. */\n getOverlayOrigin(): ElementRef<HTMLElement>;\n\n /** Gets the ID of the input's label. */\n getLabelId(): string | null;\n\n /** Callback invoked when the timepicker assigns a value. */\n timepickerValueAssigned(value: D | null): void;\n}\n\n/**\n * Renders out a listbox that can be used to select a time of day.\n * Intended to be used together with `MatTimepickerInput`.\n */\n@Component({\n selector: 'mat-timepicker',\n exportAs: 'matTimepicker',\n templateUrl: 'timepicker.html',\n styleUrl: 'timepicker.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [MatOption],\n providers: [\n {\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatTimepicker,\n },\n ],\n})\nexport class MatTimepicker<D> implements OnDestroy, MatOptionParentComponent {\n private _dir = inject(Directionality, {optional: true});\n private _viewContainerRef = inject(ViewContainerRef);\n private _injector = inject(Injector);\n private _defaultConfig = inject(MAT_TIMEPICKER_CONFIG, {optional: true});\n private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {optional: true})!;\n private _dateFormats = inject(MAT_DATE_FORMATS, {optional: true})!;\n private _scrollStrategyFactory = inject(MAT_TIMEPICKER_SCROLL_STRATEGY);\n protected _animationsDisabled = _animationsDisabled();\n\n private _isOpen = signal(false);\n private _activeDescendant = signal<string | null>(null);\n\n private _input = signal<MatTimepickerConnectedInput<D> | null>(null);\n private _overlayRef: OverlayRef | null = null;\n private _portal: TemplatePortal<unknown> | null = null;\n private _optionsCacheKey: string | null = null;\n private _localeChanges: Subscription | undefined;\n private _onOpenRender: AfterRenderRef | null = null;\n\n protected _panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\n protected _timeOptions: readonly MatTimepickerOption<D>[] = [];\n protected _options = viewChildren(MatOption);\n\n private _keyManager = new ActiveDescendantKeyManager(this._options, this._injector)\n .withHomeAndEnd(true)\n .withPageUpDown(true)\n .withVerticalOrientation(true);\n\n /**\n * Interval between each option in the timepicker. The value can either be an amount of\n * seconds (e.g. 90) or a number with a unit (e.g. 45m). Supported units are `s` for seconds,\n * `m` for minutes or `h` for hours.\n */\n readonly interval: InputSignalWithTransform<number | null, number | string | null> = input(\n parseInterval(this._defaultConfig?.interval || null),\n {transform: parseInterval},\n );\n\n /**\n * Array of pre-defined options that the user can select from, as an alternative to using the\n * `interval` input. An error will be thrown if both `options` and `interval` are specified.\n */\n readonly options: InputSignal<readonly MatTimepickerOption<D>[] | null> = input<\n readonly MatTimepickerOption<D>[] | null\n >(null);\n\n /** Whether the timepicker is open. */\n readonly isOpen: Signal<boolean> = this._isOpen.asReadonly();\n\n /** Emits when the user selects a time. */\n readonly selected: OutputEmitterRef<MatTimepickerSelected<D>> = output();\n\n /** Emits when the timepicker is opened. */\n readonly opened: OutputEmitterRef<void> = output();\n\n /** Emits when the timepicker is closed. */\n readonly closed: OutputEmitterRef<void> = output();\n\n /** ID of the active descendant option. */\n readonly activeDescendant: Signal<string | null> = this._activeDescendant.asReadonly();\n\n /** Unique ID of the timepicker's panel */\n readonly panelId: string = inject(_IdGenerator).getId('mat-timepicker-panel-');\n\n /** Whether ripples within the timepicker should be disabled. */\n readonly disableRipple: InputSignalWithTransform<boolean, unknown> = input(\n this._defaultConfig?.disableRipple ?? false,\n {\n transform: booleanAttribute,\n },\n );\n\n /** ARIA label for the timepicker panel. */\n readonly ariaLabel: InputSignal<string | null> = input<string | null>(null, {\n alias: 'aria-label',\n });\n\n /** ID of the label element for the timepicker panel. */\n readonly ariaLabelledby: InputSignal<string | null> = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n\n /** Whether the timepicker is currently disabled. */\n readonly disabled: Signal<boolean> = computed(() => !!this._input()?.disabled());\n\n constructor() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n validateAdapter(this._dateAdapter, this._dateFormats);\n\n effect(() => {\n const options = this.options();\n const interval = this.interval();\n\n if (options !== null && interval !== null) {\n throw new Error(\n 'Cannot specify both the `options` and `interval` inputs at the same time',\n );\n } else if (options?.length === 0) {\n throw new Error('Value of `options` input cannot be an empty array');\n }\n });\n }\n\n // Since the panel ID is static, we can set it once without having to maintain a host binding.\n const element = inject<ElementRef<HTMLElement>>(ElementRef);\n element.nativeElement.setAttribute('mat-timepicker-panel-id', this.panelId);\n this._handleLocaleChanges();\n this._handleInputStateChanges();\n this._keyManager.change.subscribe(() =>\n this._activeDescendant.set(this._keyManager.activeItem?.id || null),\n );\n }\n\n /** Opens the timepicker. */\n open(): void {\n const input = this._input();\n\n if (!input) {\n return;\n }\n\n // Focus should already be on the input, but this call is in case the timepicker is opened\n // programmatically. We need to call this even if the timepicker is already open, because\n // the user might be clicking the toggle.\n input.focus();\n\n if (this._isOpen()) {\n return;\n }\n\n this._isOpen.set(true);\n this._generateOptions();\n const overlayRef = this._getOverlayRef();\n overlayRef.updateSize({width: input.getOverlayOrigin().nativeElement.offsetWidth});\n this._portal ??= new TemplatePortal(this._panelTemplate(), this._viewContainerRef);\n\n // We need to check this in case `isOpen` was flipped, but change detection hasn't\n // had a chance to run yet. See https://github.com/angular/components/issues/30637\n if (!overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n }\n\n this._onOpenRender?.destroy();\n this._onOpenRender = afterNextRender(\n () => {\n const options = this._options();\n this._syncSelectedState(input.value(), options, options[0]);\n this._onOpenRender = null;\n },\n {injector: this._injector},\n );\n\n this.opened.emit();\n }\n\n /** Closes the timepicker. */\n close(): void {\n if (this._isOpen()) {\n this._isOpen.set(false);\n this.closed.emit();\n\n if (this._animationsDisabled) {\n this._overlayRef?.detach();\n }\n }\n }\n\n /** Registers an input with the timepicker. */\n registerInput(input: MatTimepickerConnectedInput<D>): void {\n const currentInput = this._input();\n\n if (currentInput && input !== currentInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error('MatTimepicker can only be registered with one input at a time');\n }\n\n this._input.set(input);\n }\n\n ngOnDestroy(): void {\n this._keyManager.destroy();\n this._localeChanges?.unsubscribe();\n this._onOpenRender?.destroy();\n this._overlayRef?.dispose();\n }\n\n _getOverlayHost() {\n return this._overlayRef?.hostElement;\n }\n\n /** Selects a specific time value. */\n protected _selectValue(option: MatOption<D>) {\n this.close();\n this._keyManager.setActiveItem(option);\n this._options().forEach(current => {\n // This is primarily here so we don't show two selected options while animating away.\n if (current !== option) {\n current.deselect(false);\n }\n });\n // Notify the input first so it can sync up the form control before emitting to `selected`.\n this._input()?.timepickerValueAssigned(option.value);\n this.selected.emit({value: option.value, source: this});\n this._input()?.focus();\n }\n\n /** Gets the value of the `aria-labelledby` attribute. */\n protected _getAriaLabelledby(): string | null {\n if (this.ariaLabel()) {\n return null;\n }\n return this.ariaLabelledby() || this._input()?.getLabelId() || null;\n }\n\n /** Handles animation events coming from the panel. */\n protected _handleAnimationEnd(event: AnimationEvent) {\n if (event.animationName === '_mat-timepicker-exit') {\n this._overlayRef?.detach();\n }\n }\n\n /** Creates an overlay reference for the timepicker panel. */\n private _getOverlayRef(): OverlayRef {\n if (this._overlayRef) {\n return this._overlayRef;\n }\n\n const positionStrategy = createFlexibleConnectedPositionStrategy(\n this._injector,\n this._input()!.getOverlayOrigin(),\n )\n .withFlexibleDimensions(false)\n .withPush(false)\n .withTransformOriginOn('.mat-timepicker-panel')\n .withPopoverLocation('inline')\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'mat-timepicker-above',\n },\n ]);\n\n this._overlayRef = createOverlayRef(this._injector, {\n positionStrategy,\n scrollStrategy: this._scrollStrategyFactory(),\n direction: this._dir || 'ltr',\n hasBackdrop: false,\n disableAnimations: this._animationsDisabled,\n });\n\n this._overlayRef.detachments().subscribe(() => this.close());\n this._overlayRef.keydownEvents().subscribe(event => this._handleKeydown(event));\n this._overlayRef.outsidePointerEvents().subscribe(event => {\n const target = _getEventTarget(event) as HTMLElement;\n const origin = this._input()?.getOverlayOrigin().nativeElement;\n\n if (target && origin && target !== origin && !origin.contains(target)) {\n this.close();\n }\n });\n\n return this._overlayRef;\n }\n\n /** Generates the list of options from which the user can select.. */\n private _generateOptions(): void {\n // Default the interval to 30 minutes.\n const interval = this.interval() ?? 30 * 60;\n const options = this.options();\n\n if (options !== null) {\n this._timeOptions = options;\n } else {\n const input = this._input();\n const adapter = this._dateAdapter;\n const timeFormat = this._dateFormats.display.timeInput;\n const min = input?.min() || adapter.setTime(adapter.today(), 0, 0, 0);\n const max = input?.max() || adapter.setTime(adapter.today(), 23, 59, 0);\n const cacheKey =\n interval + '/' + adapter.format(min, timeFormat) + '/' + adapter.format(max, timeFormat);\n\n // Don't re-generate the options if the inputs haven't changed.\n if (cacheKey !== this._optionsCacheKey) {\n this._optionsCacheKey = cacheKey;\n this._timeOptions = generateOptions(adapter, this._dateFormats, min, max, interval);\n }\n }\n }\n\n /**\n * Synchronizes the internal state of the component based on a specific selected date.\n * @param value Currently selected date.\n * @param options Options rendered out in the timepicker.\n * @param fallback Option to set as active if no option is selected.\n */\n private _syncSelectedState(\n value: D | null,\n options: readonly MatOption[],\n fallback: MatOption | null,\n ): void {\n let hasSelected = false;\n\n for (const option of options) {\n if (value && this._dateAdapter.sameTime(option.value, value)) {\n option.select(false);\n scrollOptionIntoView(option, 'center');\n untracked(() => this._keyManager.setActiveItem(option));\n hasSelected = true;\n } else {\n option.deselect(false);\n }\n }\n\n // If no option was selected, we need to reset the key manager since\n // it might be holding onto an option that no longer exists.\n if (!hasSelected) {\n if (fallback) {\n untracked(() => this._keyManager.setActiveItem(fallback));\n scrollOptionIntoView(fallback, 'center');\n } else {\n untracked(() => this._keyManager.setActiveItem(-1));\n }\n }\n }\n\n /** Handles keyboard events while the overlay is open. */\n private _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n if (keyCode === TAB) {\n this.close();\n } else if (keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n this.close();\n } else if (keyCode === ENTER) {\n event.preventDefault();\n\n if (this._keyManager.activeItem) {\n this._selectValue(this._keyManager.activeItem);\n } else {\n this.close();\n }\n } else {\n const previousActive = this._keyManager.activeItem;\n this._keyManager.onKeydown(event);\n const currentActive = this._keyManager.activeItem;\n\n if (currentActive && currentActive !== previousActive) {\n scrollOptionIntoView(currentActive, 'nearest');\n }\n }\n }\n\n /** Sets up the logic that updates the timepicker when the locale changes. */\n private _handleLocaleChanges(): void {\n // Re-generate the options list if the locale changes.\n this._localeChanges = this._dateAdapter.localeChanges.subscribe(() => {\n this._optionsCacheKey = null;\n\n if (this.isOpen()) {\n this._generateOptions();\n }\n });\n }\n\n /**\n * Sets up the logic that updates the timepicker when the state of the connected input changes.\n */\n private _handleInputStateChanges(): void {\n effect(() => {\n const input = this._input();\n const options = this._options();\n\n if (this._isOpen() && input) {\n this._syncSelectedState(input.value(), options, null);\n }\n });\n }\n}\n\n/**\n * Scrolls an option into view.\n * @param option Option to be scrolled into view.\n * @param position Position to which to align the option relative to the scrollable container.\n */\nfunction scrollOptionIntoView(option: MatOption, position: ScrollLogicalPosition) {\n option._getHostElement().scrollIntoView({block: position, inline: position});\n}\n","<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n class=\"mat-timepicker-panel\"\n [class.mat-timepicker-panel-animations-enabled]=\"!_animationsDisabled\"\n [class.mat-timepicker-panel-exit]=\"!isOpen()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"_getAriaLabelledby()\"\n [id]=\"panelId\"\n (animationend)=\"_handleAnimationEnd($event)\">\n @for (option of _timeOptions; track option.value) {\n <mat-option\n [value]=\"option.value\"\n (onSelectionChange)=\"_selectValue($event.source)\">{{option.label}}</mat-option>\n }\n </div>\n</ng-template>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n model,\n ModelSignal,\n OnDestroy,\n OutputRefSubscription,\n Renderer2,\n Signal,\n signal,\n} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS} from '../core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {MAT_FORM_FIELD} from '../form-field';\nimport {MatTimepicker, MatTimepickerConnectedInput} from './timepicker';\nimport {MAT_INPUT_VALUE_ACCESSOR} from '../input';\nimport {Subscription} from 'rxjs';\nimport {DOWN_ARROW, ESCAPE, hasModifierKey, UP_ARROW} from '@angular/cdk/keycodes';\nimport {validateAdapter} from './util';\nimport {_getEventTarget, _getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\n\n/**\n * Input that can be used to enter time and connect to a `mat-timepicker`.\n */\n@Directive({\n selector: 'input[matTimepicker]',\n exportAs: 'matTimepickerInput',\n host: {\n 'class': 'mat-timepicker-input',\n 'role': 'combobox',\n 'type': 'text',\n 'aria-haspopup': 'listbox',\n '[attr.aria-activedescendant]': '_ariaActiveDescendant()',\n '[attr.aria-expanded]': '_ariaExpanded()',\n '[attr.aria-controls]': '_ariaControls()',\n '[attr.mat-timepicker-id]': 'timepicker()?.panelId',\n '[disabled]': 'disabled()',\n '(blur)': '_handleBlur()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: MatTimepickerInput,\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: MatTimepickerInput,\n multi: true,\n },\n {\n provide: MAT_INPUT_VALUE_ACCESSOR,\n useExisting: MatTimepickerInput,\n },\n ],\n})\nexport class MatTimepickerInput<D>\n implements MatTimepickerConnectedInput<D>, ControlValueAccessor, Validator, OnDestroy\n{\n private _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {optional: true})!;\n private _dateFormats = inject(MAT_DATE_FORMATS, {optional: true})!;\n private _formField = inject(MAT_FORM_FIELD, {optional: true});\n\n private _onChange: ((value: unknown) => void) | undefined;\n private _onTouched: (() => void) | undefined;\n private _validatorOnChange: (() => void) | undefined;\n private _cleanupClick: () => void;\n private _accessorDisabled = signal(false);\n private _localeSubscription: Subscription;\n private _timepickerSubscription: OutputRefSubscription | undefined;\n private _validator: ValidatorFn;\n private _lastValueValid = true;\n private _minValid = true;\n private _maxValid = true;\n private _lastValidDate: D | null = null;\n\n /** Value of the `aria-activedescendant` attribute. */\n protected readonly _ariaActiveDescendant = computed(() => {\n const timepicker = this.timepicker();\n const isOpen = timepicker.isOpen();\n const activeDescendant = timepicker.activeDescendant();\n return isOpen && activeDescendant ? activeDescendant : null;\n });\n\n /** Value of the `aria-expanded` attribute. */\n protected readonly _ariaExpanded = computed(() => this.timepicker().isOpen() + '');\n\n /** Value of the `aria-controls` attribute. */\n protected readonly _ariaControls = computed(() => {\n const timepicker = this.timepicker();\n return timepicker.isOpen() ? timepicker.panelId : null;\n });\n\n /** Current value of the input. */\n readonly value: ModelSignal<D | null> = model<D | null>(null);\n\n /** Timepicker that the input is associated with. */\n readonly timepicker: InputSignal<MatTimepicker<D>> = input.required<MatTimepicker<D>>({\n alias: 'matTimepicker',\n });\n\n /**\n * Minimum time that can be selected or typed in. Can be either\n * a date object (only time will be used) or a valid time string.\n */\n readonly min: InputSignalWithTransform<D | null, unknown> = input(null, {\n alias: 'matTimepickerMin',\n transform: (value: unknown) => this._transformDateInput<D>(value),\n });\n\n /**\n * Maximum time that can be selected or typed in. Can be either\n * a date object (only time will be used) or a valid time string.\n */\n readonly max: InputSignalWithTransform<D | null, unknown> = input(null, {\n alias: 'matTimepickerMax',\n transform: (value: unknown) => this._transformDateInput<D>(value),\n });\n\n /**\n * Whether to open the timepicker overlay when clicking on the input. Enabled by default.\n * Note that when disabling this option, you'll have to provide your own logic for opening\n * the overlay.\n */\n readonly openOnClick: InputSignalWithTransform<boolean, unknown> = input(true, {\n alias: 'matTimepickerOpenOnClick',\n transform: booleanAttribute,\n });\n\n /** Whether the input is disabled. */\n readonly disabled: Signal<boolean> = computed(\n () => this.disabledInput() || this._accessorDisabled(),\n );\n\n /**\n * Whether the input should be disabled through the template.\n * @docs-private\n */\n readonly disabledInput: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n\n constructor() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n validateAdapter(this._dateAdapter, this._dateFormats);\n }\n\n const renderer = inject(Renderer2);\n this._validator = this._getValidator();\n this._updateFormsState();\n this._registerTimepicker();\n this._localeSubscription = this._dateAdapter.localeChanges.subscribe(() => {\n if (!this._hasFocus()) {\n this._formatValue(this.value());\n }\n });\n\n // Bind the click listener manually to the overlay origin, because we want the entire\n // form field to be clickable, if the timepicker is used in `mat-form-field`.\n this._cleanupClick = renderer.listen(\n this.getOverlayOrigin().nativeElement,\n 'click',\n this._handleClick,\n );\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n writeValue(value: unknown): void {\n // Note that we need to deserialize here, rather than depend on the value change effect,\n // because `getValidDateOrNull` will clobber the value if it's parseable, but not created by\n // the current adapter (see #30140).\n const deserialized = this._dateAdapter.deserialize(value);\n this.value.set(this._dateAdapter.getValidDateOrNull(deserialized));\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n registerOnChange(fn: (value: unknown) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this._accessorDisabled.set(isDisabled);\n }\n\n /**\n * Implemented as a part of `Validator`.\n * @docs-private\n */\n validate(control: AbstractControl): ValidationErrors | null {\n return this._validator(control);\n }\n\n /**\n * Implemented as a part of `Validator`.\n * @docs-private\n */\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** Gets the element to which the timepicker popup should be attached. */\n getOverlayOrigin(): ElementRef<HTMLElement> {\n return this._formField?.getConnectedOverlayOrigin() || this._elementRef;\n }\n\n /** Focuses the input. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n ngOnDestroy(): void {\n this._cleanupClick();\n this._timepickerSubscription?.unsubscribe();\n this._localeSubscription.unsubscribe();\n }\n\n /** Gets the ID of the input's label. */\n getLabelId(): string | null {\n return this._formField?.getLabelId() || null;\n }\n\n /** Handles clicks on the input or the containing form field. */\n private _handleClick = (event: MouseEvent): void => {\n if (this.disabled() || !this.openOnClick()) {\n return;\n }\n\n const target = _getEventTarget(event) as Node | null;\n const overlayHost = this.timepicker()._getOverlayHost();\n\n if (!target || !overlayHost || !overlayHost.contains(target)) {\n this.timepicker().open();\n }\n };\n\n /** Handles the `input` event. */\n protected _handleInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n const currentValue = this.value();\n const date = this._dateAdapter.parseTime(value, this._dateFormats.parse.timeInput);\n const hasChanged = !this._dateAdapter.sameTime(date, currentValue);\n\n if (!date || hasChanged || !!(value && !currentValue)) {\n // We need to fire the CVA change event for all nulls, otherwise the validators won't run.\n this._assignUserSelection(date, true);\n } else {\n // Call the validator even if the value hasn't changed since\n // some fields change depending on what the user has entered.\n this._validatorOnChange?.();\n }\n }\n\n /** Handles the `blur` event. */\n protected _handleBlur() {\n const value = this.value();\n\n // Only reformat on blur so the value doesn't change while the user is interacting.\n if (value && this._isValid(value)) {\n this._formatValue(value);\n }\n\n if (!this.timepicker().isOpen()) {\n this._onTouched?.();\n }\n }\n\n /** Handles the `keydown` event. */\n protected _handleKeydown(event: KeyboardEvent) {\n // All keyboard events while open are handled through the timepicker.\n if (this.timepicker().isOpen() || this.disabled()) {\n return;\n }\n\n if (event.keyCode === ESCAPE && !hasModifierKey(event) && this.value() !== null) {\n event.preventDefault();\n this.value.set(null);\n this._formatValue(null);\n } else if (event.keyCode === DOWN_ARROW || event.keyCode === UP_ARROW) {\n event.preventDefault();\n this.timepicker().open();\n }\n }\n\n /** Called by the timepicker to sync up the user-selected value. */\n timepickerValueAssigned(value: D | null) {\n if (!this._dateAdapter.sameTime(value, this.value())) {\n this._assignUserSelection(value, true);\n this._formatValue(value);\n }\n }\n\n /** Sets up the code that keeps the input state in sync with the forms module. */\n private _updateFormsState(): void {\n effect(() => {\n const {\n _dateAdapter: adapter,\n _lastValueValid: prevValueValid,\n _minValid: prevMinValid,\n _maxValid: prevMaxValid,\n } = this;\n const value = adapter.deserialize(this.value());\n const min = this.min();\n const max = this.max();\n const valueValid = (this._lastValueValid = this._isValid(value));\n this._minValid = !min || !value || !valueValid || adapter.compareTime(min, value) <= 0;\n this._maxValid = !max || !value || !valueValid || adapter.compareTime(max, value) >= 0;\n const stateChanged =\n prevValueValid !== valueValid ||\n prevMinValid !== this._minValid ||\n prevMaxValid !== this._maxValid;\n\n // Reformat the value if it changes while the user isn't interacting.\n if (!this._hasFocus()) {\n this._formatValue(value);\n }\n\n if (value && valueValid) {\n this._lastValidDate = value;\n }\n\n // Trigger the validator if the state changed.\n if (stateChanged) {\n this._validatorOnChange?.();\n }\n });\n }\n\n /** Sets up the logic that registers the input with the timepicker. */\n private _registerTimepicker(): void {\n effect(() => {\n const timepicker = this.timepicker();\n timepicker.registerInput(this);\n timepicker.closed.subscribe(() => this._onTouched?.());\n });\n }\n\n /**\n * Assigns a value set by the user to the input's model.\n * @param selection Time selected by the user that should be assigned.\n * @param propagateToAccessor Whether the value should be propagated to the ControlValueAccessor.\n */\n private _assignUserSelection(selection: D | null, propagateToAccessor: boolean) {\n let toAssign: D | null;\n\n if (selection == null || !this._isValid(selection)) {\n toAssign = selection;\n } else {\n // If a datepicker and timepicker are writing to the same object and the user enters an\n // invalid time into the timepicker, we may end up clearing their selection from the\n // datepicker. If the user enters a valid time afterwards, the datepicker's selection will\n // have been lost. This logic restores the previously-valid date and sets its time to\n // the newly-selected time.\n const adapter = this._dateAdapter;\n const target = adapter.getValidDateOrNull(this._lastValidDate || this.value());\n const hours = adapter.getHours(selection);\n const minutes = adapter.getMinutes(selection);\n const seconds = adapter.getSeconds(selection);\n toAssign = target ? adapter.setTime(target, hours, minutes, seconds) : selection;\n }\n\n // Propagate to the form control before emitting to `valueChange`.\n if (propagateToAccessor) {\n this._onChange?.(toAssign);\n }\n\n this.value.set(toAssign);\n }\n\n /** Formats the current value and assigns it to the input. */\n private _formatValue(value: D | null): void {\n value = this._dateAdapter.getValidDateOrNull(value);\n this._elementRef.nativeElement.value =\n value == null ? '' : this._dateAdapter.format(value, this._dateFormats.display.timeInput);\n }\n\n /** Checks whether a value is valid. */\n private _isValid(value: D | null): boolean {\n return !value || this._dateAdapter.isValid(value);\n }\n\n /** Transforms an arbitrary value into a value that can be assigned to a date-based input. */\n private _transformDateInput<D>(value: unknown): D | null {\n const date =\n typeof value === 'string'\n ? this._dateAdapter.parseTime(value, this._dateFormats.parse.timeInput)\n : this._dateAdapter.deserialize(value);\n return date && this._dateAdapter.isValid(date) ? (date as D) : null;\n }\n\n /** Whether the input is currently focused. */\n private _hasFocus(): boolean {\n return _getFocusedElementPierceShadowDom() === this._elementRef.nativeElement;\n }\n\n /** Gets a function that can be used to validate the input. */\n private _getValidator(): ValidatorFn {\n return Validators.compose([\n () =>\n this._lastValueValid\n ? null\n : {'matTimepickerParse': {'text': this._elementRef.nativeElement.value}},\n control =>\n this._minValid\n ? null\n : {\n 'matTimepickerMin': {\n 'min': this.min(),\n 'actual': this._dateAdapter.getValidDateOrNull(\n this._dateAdapter.deserialize(control.value),\n ),\n },\n },\n control =>\n this._maxValid\n ? null\n : {\n 'matTimepickerMax': {\n 'max': this.max(),\n 'actual': this._dateAdapter.getValidDateOrNull(\n this._dateAdapter.deserialize(control.value),\n ),\n },\n },\n ])!;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatIconButton} from '../button';\nimport {MAT_TIMEPICKER_CONFIG} from './util';\nimport type {MatTimepicker} from './timepicker';\n\n/** Button that can be used to open a `mat-timepicker`. */\n@Component({\n selector: 'mat-timepicker-toggle',\n templateUrl: 'timepicker-toggle.html',\n host: {\n 'class': 'mat-timepicker-toggle',\n '[attr.tabindex]': 'null',\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)',\n },\n exportAs: 'matTimepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconButton],\n})\nexport class MatTimepickerToggle<D> {\n private _defaultConfig = inject(MAT_TIMEPICKER_CONFIG, {optional: true});\n private _defaultTabIndex = (() => {\n const value = inject(new HostAttributeToken('tabindex'), {optional: true});\n const parsed = Number(value);\n return isNaN(parsed) ? null : parsed;\n })();\n\n protected _isDisabled = computed(() => {\n const timepicker = this.timepicker();\n return this.disabled() || timepicker.disabled();\n });\n\n /** Timepicker instance that the button will toggle. */\n readonly timepicker: InputSignal<MatTimepicker<D>> = input.required<MatTimepicker<D>>({\n alias: 'for',\n });\n\n /** Screen-reader label for the button. */\n readonly ariaLabel = input<string | undefined>(undefined, {\n alias: 'aria-label',\n });\n\n /** Screen-reader labelled by id for the button. */\n readonly ariaLabelledby = input<string | undefined>(undefined, {\n alias: 'aria-labelledby',\n });\n\n /** Default aria-label for the toggle if none is provided. */\n private readonly _defaultAriaLabel = 'Open timepicker options';\n\n /** Whether the toggle button is disabled. */\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n\n /** Tabindex for the toggle. */\n readonly tabIndex: InputSignal<number | null> = input(this._defaultTabIndex);\n\n /** Whether ripples on the toggle should be disabled. */\n readonly disableRipple: InputSignalWithTransform<boolean, unknown> = input(\n this._defaultConfig?.disableRipple ?? false,\n {transform: booleanAttribute},\n );\n\n /** Opens the connected timepicker. */\n protected _open(event: Event): void {\n if (this.timepicker() && !this._isDisabled()) {\n this.timepicker().open();\n event.stopPropagation();\n }\n }\n\n /**\n * Checks for ariaLabelledby and if empty uses custom\n * aria-label or defaultAriaLabel if neither is provided.\n */\n getAriaLabel(): string | null {\n return this.ariaLabelledby() ? null : this.ariaLabel() || this._defaultAriaLabel;\n }\n}\n","<button\n matIconButton\n type=\"button\"\n aria-haspopup=\"listbox\"\n [attr.aria-label]=\"getAriaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-expanded]=\"timepicker().isOpen()\"\n [tabIndex]=\"_isDisabled() ? -1 : tabIndex()\"\n [disabled]=\"_isDisabled()\"\n [disableRipple]=\"disableRipple()\">\n\n <ng-content select=\"[matTimepickerToggleIcon]\">\n <svg\n class=\"mat-timepicker-toggle-default-icon\"\n height=\"24px\"\n width=\"24px\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z\"/>\n </svg>\n </ng-content>\n</button>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {MatTimepicker} from './timepicker';\nimport {MatTimepickerInput} from './timepicker-input';\nimport {MatTimepickerToggle} from './timepicker-toggle';\n\n@NgModule({\n imports: [MatTimepicker, MatTimepickerInput, MatTimepickerToggle],\n exports: [CdkScrollableModule, MatTimepicker, MatTimepickerInput, MatTimepickerToggle],\n})\nexport class MatTimepickerModule {}\n"],"names":["INTERVAL_PATTERN","MAT_TIMEPICKER_CONFIG","InjectionToken","parseInterval","value","result","trim","length","parsed","match","amount","parseFloat","unit","toLowerCase","isNaN","generateOptions","adapter","formats","min","max","interval","options","current","compareTime","sameDate","isValid","push","label","format","display","timeOptionLabel","addSeconds","validateAdapter","missingAdapterError","provider","Error","timeInput","undefined","parse","MAT_TIMEPICKER_SCROLL_STRATEGY","providedIn","factory","injector","inject","Injector","createRepositionScrollStrategy","MatTimepicker","_dir","Directionality","optional","_viewContainerRef","ViewContainerRef","_injector","_defaultConfig","_dateAdapter","DateAdapter","_dateFormats","MAT_DATE_FORMATS","_scrollStrategyFactory","_animationsDisabled","_isOpen","signal","_activeDescendant","_input","_overlayRef","_portal","_optionsCacheKey","_localeChanges","_onOpenRender","_panelTemplate","viewChild","required","_timeOptions","_options","viewChildren","MatOption","_keyManager","ActiveDescendantKeyManager","withHomeAndEnd","withPageUpDown","withVerticalOrientation","input","ngDevMode","debugName","transform","isOpen","asReadonly","selected","output","opened","closed","activeDescendant","panelId","_IdGenerator","getId","disableRipple","booleanAttribute","ariaLabel","alias","ariaLabelledby","disabled","computed","constructor","effect","element","ElementRef","nativeElement","setAttribute","_handleLocaleChanges","_handleInputStateChanges","change","subscribe","set","activeItem","id","open","focus","_generateOptions","overlayRef","_getOverlayRef","updateSize","width","getOverlayOrigin","offsetWidth","TemplatePortal","hasAttached","attach","destroy","afterNextRender","_syncSelectedState","emit","close","detach","registerInput","currentInput","ngOnDestroy","unsubscribe","dispose","_getOverlayHost","hostElement","_selectValue","option","setActiveItem","forEach","deselect","timepickerValueAssigned","source","_getAriaLabelledby","getLabelId","_handleAnimationEnd","event","animationName","positionStrategy","createFlexibleConnectedPositionStrategy","withFlexibleDimensions","withPush","withTransformOriginOn","withPopoverLocation","withPositions","originX","originY","overlayX","overlayY","panelClass","createOverlayRef","scrollStrategy","direction","hasBackdrop","disableAnimations","detachments","keydownEvents","_handleKeydown","outsidePointerEvents","target","_getEventTarget","origin","contains","timeFormat","setTime","today","cacheKey","fallback","hasSelected","sameTime","select","scrollOptionIntoView","untracked","keyCode","TAB","ESCAPE","hasModifierKey","preventDefault","ENTER","previousActive","onKeydown","currentActive","localeChanges","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","providers","provide","MAT_OPTION_PARENT_COMPONENT","useExisting","viewQueries","propertyName","first","predicate","descendants","exportAs","ngImport","template","styles","dependencies","kind","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","imports","ctorParameters","propDecorators","ViewChild","Input","Output","position","_getHostElement","scrollIntoView","block","inline","MatTimepickerInput","_elementRef","_formField","MAT_FORM_FIELD","_onChange","_onTouched","_validatorOnChange","_cleanupClick","_accessorDisabled","_localeSubscription","_timepickerSubscription","_validator","_lastValueValid","_minValid","_maxValid","_lastValidDate","_ariaActiveDescendant","timepicker","_ariaExpanded","_ariaControls","model","_transformDateInput","openOnClick","disabledInput","renderer","Renderer2","_getValidator","_updateFormsState","_registerTimepicker","_hasFocus","_formatValue","listen","_handleClick","writeValue","deserialized","deserialize","getValidDateOrNull","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","validate","control","registerOnValidatorChange","getConnectedOverlayOrigin","overlayHost","_handleInput","currentValue","date","parseTime","hasChanged","_assignUserSelection","_handleBlur","_isValid","DOWN_ARROW","UP_ARROW","prevValueValid","prevMinValid","prevMaxValid","valueValid","stateChanged","selection","propagateToAccessor","toAssign","hours","getHours","minutes","getMinutes","seconds","getSeconds","_getFocusedElementPierceShadowDom","Validators","compose","Directive","ɵdir","ɵɵngDeclareDirective","host","attributes","listeners","properties","classAttribute","NG_VALUE_ACCESSOR","multi","NG_VALIDATORS","MAT_INPUT_VALUE_ACCESSOR","MatTimepickerToggle","_defaultTabIndex","HostAttributeToken","Number","_isDisabled","_defaultAriaLabel","tabIndex","_open","stopPropagation","getAriaLabel","MatIconButton","MatTimepickerModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","CdkScrollableModule","ɵinj","ɵɵngDeclareInjector"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAMA,gBAAgB,GAAG,wEAAwE;MAgBpFC,qBAAqB,GAAG,IAAIC,cAAc,CACrD,uBAAuB;AAenB,SAAUC,aAAaA,CAACC,KAA6B,EAAA;AACzD,EAAA,IAAIC,MAAc;EAElB,IAAID,KAAK,KAAK,IAAI,EAAE;AAClB,IAAA,OAAO,IAAI;AACb,GAAA,MAAO,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;AACpCC,IAAAA,MAAM,GAAGD,KAAK;AAChB,GAAA,MAAO;IACL,IAAIA,KAAK,CAACE,IAAI,EAAE,CAACC,MAAM,KAAK,CAAC,EAAE;AAC7B,MAAA,OAAO,IAAI;AACb;AAEA,IAAA,MAAMC,MAAM,GAAGJ,KAAK,CAACK,KAAK,CAACT,gBAAgB,CAAC;AAC5C,IAAA,MAAMU,MAAM,GAAGF,MAAM,GAAGG,UAAU,CAACH,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IACpD,MAAMI,IAAI,GAAGJ,MAAM,GAAG,CAAC,CAAC,EAAEK,WAAW,EAAE,IAAI,IAAI;IAE/C,IAAI,CAACL,MAAM,IAAIE,MAAM,KAAK,IAAI,IAAII,KAAK,CAACJ,MAAM,CAAC,EAAE;AAC/C,MAAA,OAAO,IAAI;AACb;IAEA,IAAIE,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,OAAO,EAAE;MACvDP,MAAM,GAAGK,MAAM,GAAG,IAAI;AACxB,KAAA,MAAO,IAAIE,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,SAAS,EAAE;MACpFP,MAAM,GAAGK,MAAM,GAAG,EAAE;AACtB,KAAA,MAAO;AACLL,MAAAA,MAAM,GAAGK,MAAM;AACjB;AACF;AAEA,EAAA,OAAOL,MAAM;AACf;AAUM,SAAUU,eAAeA,CAC7BC,OAAuB,EACvBC,OAAuB,EACvBC,GAAM,EACNC,GAAM,EACNC,QAAgB,EAAA;EAEhB,MAAMC,OAAO,GAA6B,EAAE;AAC5C,EAAA,IAAIC,OAAO,GAAGN,OAAO,CAACO,WAAW,CAACL,GAAG,EAAEC,GAAG,CAAC,GAAG,CAAC,GAAGD,GAAG,GAAGC,GAAG;EAE3D,OACEH,OAAO,CAACQ,QAAQ,CAACF,OAAO,EAAEJ,GAAG,CAAC,IAC9BF,OAAO,CAACO,WAAW,CAACD,OAAO,EAAEH,GAAG,CAAC,GAAG,CAAC,IACrCH,OAAO,CAACS,OAAO,CAACH,OAAO,CAAC,EACxB;IACAD,OAAO,CAACK,IAAI,CAAC;AAACtB,MAAAA,KAAK,EAAEkB,OAAO;MAAEK,KAAK,EAAEX,OAAO,CAACY,MAAM,CAACN,OAAO,EAAEL,OAAO,CAACY,OAAO,CAACC,eAAe;AAAE,KAAA,CAAC;IAC/FR,OAAO,GAAGN,OAAO,CAACe,UAAU,CAACT,OAAO,EAAEF,QAAQ,CAAC;AACjD;AAEA,EAAA,OAAOC,OAAO;AAChB;AAGgB,SAAAW,eAAeA,CAC7BhB,OAAoC,EACpCC,OAA8B,EAAA;EAE9B,SAASgB,mBAAmBA,CAACC,QAAgB,EAAA;IAC3C,OAAOC,KAAK,CACV,CAAwCD,qCAAAA,EAAAA,QAAQ,sCAAsC,GACpF,CAAA,qEAAA,CAAuE,GACvE,CAAA,sFAAA,CAAwF,CAC3F;AACH;EAEA,IAAI,CAAClB,OAAO,EAAE;IACZ,MAAMiB,mBAAmB,CAAC,aAAa,CAAC;AAC1C;EAEA,IAAI,CAAChB,OAAO,EAAE;IACZ,MAAMgB,mBAAmB,CAAC,kBAAkB,CAAC;AAC/C;EAEA,IACEhB,OAAO,CAACY,OAAO,CAACO,SAAS,KAAKC,SAAS,IACvCpB,OAAO,CAACY,OAAO,CAACC,eAAe,KAAKO,SAAS,IAC7CpB,OAAO,CAACqB,KAAK,CAACF,SAAS,KAAKC,SAAS,EACrC;IACA,MAAM,IAAIF,KAAK,CACb,kEAAkE,GAChE,iFAAiF,GACjF,6EAA6E,CAChF;AACH;AACF;;MCnEaI,8BAA8B,GAAG,IAAIrC,cAAc,CAC9D,gCAAgC,EAChC;AACEsC,EAAAA,UAAU,EAAE,MAAM;EAClBC,OAAO,EAAEA,MAAK;AACZ,IAAA,MAAMC,QAAQ,GAAGC,MAAM,CAACC,QAAQ,CAAC;AACjC,IAAA,OAAO,MAAMC,8BAA8B,CAACH,QAAQ,CAAC;AACvD;AACD,CAAA;MAiDUI,aAAa,CAAA;AAChBC,EAAAA,IAAI,GAAGJ,MAAM,CAACK,cAAc,EAAE;AAACC,IAAAA,QAAQ,EAAE;AAAK,GAAA,CAAC;AAC/CC,EAAAA,iBAAiB,GAAGP,MAAM,CAACQ,gBAAgB,CAAC;AAC5CC,EAAAA,SAAS,GAAGT,MAAM,CAACC,QAAQ,CAAC;AAC5BS,EAAAA,cAAc,GAAGV,MAAM,CAAC1C,qBAAqB,EAAE;AAACgD,IAAAA,QAAQ,EAAE;AAAK,GAAA,CAAC;AAChEK,EAAAA,YAAY,GAAGX,MAAM,CAAiBY,WAAW,EAAE;AAACN,IAAAA,QAAQ,EAAE;AAAK,GAAA,CAAE;AACrEO,EAAAA,YAAY,GAAGb,MAAM,CAACc,gBAAgB,EAAE;AAACR,IAAAA,QAAQ,EAAE;AAAK,GAAA,CAAE;AAC1DS,EAAAA,sBAAsB,GAAGf,MAAM,CAACJ,8BAA8B,CAAC;EAC7DoB,mBAAmB,GAAGA,mBAAmB,EAAE;EAE7CC,OAAO,GAAGC,MAAM,CAAC,KAAK;;WAAC;EACvBC,iBAAiB,GAAGD,MAAM,CAAgB,IAAI;;WAAC;EAE/CE,MAAM,GAAGF,MAAM,CAAwC,IAAI;;WAAC;AAC5DG,EAAAA,WAAW,GAAsB,IAAI;AACrCC,EAAAA,OAAO,GAAmC,IAAI;AAC9CC,EAAAA,gBAAgB,GAAkB,IAAI;EACtCC,cAAc;AACdC,EAAAA,aAAa,GAA0B,IAAI;AAEzCC,EAAAA,cAAc,GAAGC,SAAS,CAACC,QAAQ,CAAuB,eAAe,CAAC;AAC1EC,EAAAA,YAAY,GAAsC,EAAE;EACpDC,QAAQ,GAAGC,YAAY,CAACC,SAAS;;WAAC;EAEpCC,WAAW,GAAG,IAAIC,0BAA0B,CAAC,IAAI,CAACJ,QAAQ,EAAE,IAAI,CAACrB,SAAS,CAAA,CAC/E0B,cAAc,CAAC,IAAI,CAAA,CACnBC,cAAc,CAAC,IAAI,CAAA,CACnBC,uBAAuB,CAAC,IAAI,CAAC;AAOvB5D,EAAAA,QAAQ,GAAoE6D,KAAK,CACxF9E,aAAa,CAAC,IAAI,CAACkD,cAAc,EAAEjC,QAAQ,IAAI,IAAI,CAAC,EAAA;AAAA,IAAA,IAAA8D,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;AACnDC,IAAAA,SAAS,EAAEjF;IACb;EAMQkB,OAAO,GAA0D4D,KAAK,CAE7E,IAAI;;WAAC;AAGEI,EAAAA,MAAM,GAAoB,IAAI,CAACzB,OAAO,CAAC0B,UAAU,EAAE;EAGnDC,QAAQ,GAA+CC,MAAM,EAAE;EAG/DC,MAAM,GAA2BD,MAAM,EAAE;EAGzCE,MAAM,GAA2BF,MAAM,EAAE;AAGzCG,EAAAA,gBAAgB,GAA0B,IAAI,CAAC7B,iBAAiB,CAACwB,UAAU,EAAE;EAG7EM,OAAO,GAAWjD,MAAM,CAACkD,YAAY,CAAC,CAACC,KAAK,CAAC,uBAAuB,CAAC;EAGrEC,aAAa,GAA+Cd,KAAK,CACxE,IAAI,CAAC5B,cAAc,EAAE0C,aAAa,IAAI,KAAK,EAEzC;AAAA,IAAA,IAAAb,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;AAAAC,IAAAA,SAAS,EAAEY;IAEd;AAGQC,EAAAA,SAAS,GAA+BhB,KAAK,CAAgB,IAAI;;;;AACxEiB,IAAAA,KAAK,EAAE;AAAY,GAAA,CACnB;AAGOC,EAAAA,cAAc,GAA+BlB,KAAK,CAAgB,IAAI;;;;AAC7EiB,IAAAA,KAAK,EAAE;AAAiB,GAAA,CACxB;AAGOE,EAAAA,QAAQ,GAAoBC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAACtC,MAAM,EAAE,EAAEqC,QAAQ,EAAE;;WAAC;AAEhFE,EAAAA,WAAAA,GAAA;AACE,IAAA,IAAI,OAAOpB,SAAS,KAAK,WAAW,IAAIA,SAAS,EAAE;MACjDlD,eAAe,CAAC,IAAI,CAACsB,YAAY,EAAE,IAAI,CAACE,YAAY,CAAC;AAErD+C,MAAAA,MAAM,CAAC,MAAK;AACV,QAAA,MAAMlF,OAAO,GAAG,IAAI,CAACA,OAAO,EAAE;AAC9B,QAAA,MAAMD,QAAQ,GAAG,IAAI,CAACA,QAAQ,EAAE;AAEhC,QAAA,IAAIC,OAAO,KAAK,IAAI,IAAID,QAAQ,KAAK,IAAI,EAAE;AACzC,UAAA,MAAM,IAAIe,KAAK,CACb,0EAA0E,CAC3E;AACH,SAAA,MAAO,IAAId,OAAO,EAAEd,MAAM,KAAK,CAAC,EAAE;AAChC,UAAA,MAAM,IAAI4B,KAAK,CAAC,mDAAmD,CAAC;AACtE;AACF,OAAC,CAAC;AACJ;AAGA,IAAA,MAAMqE,OAAO,GAAG7D,MAAM,CAA0B8D,UAAU,CAAC;IAC3DD,OAAO,CAACE,aAAa,CAACC,YAAY,CAAC,yBAAyB,EAAE,IAAI,CAACf,OAAO,CAAC;IAC3E,IAAI,CAACgB,oBAAoB,EAAE;IAC3B,IAAI,CAACC,wBAAwB,EAAE;IAC/B,IAAI,CAACjC,WAAW,CAACkC,MAAM,CAACC,SAAS,CAAC,MAChC,IAAI,CAACjD,iBAAiB,CAACkD,GAAG,CAAC,IAAI,CAACpC,WAAW,CAACqC,UAAU,EAAEC,EAAE,IAAI,IAAI,CAAC,CACpE;AACH;AAGAC,EAAAA,IAAIA,GAAA;AACF,IAAA,MAAMlC,KAAK,GAAG,IAAI,CAAClB,MAAM,EAAE;IAE3B,IAAI,CAACkB,KAAK,EAAE;AACV,MAAA;AACF;IAKAA,KAAK,CAACmC,KAAK,EAAE;AAEb,IAAA,IAAI,IAAI,CAACxD,OAAO,EAAE,EAAE;AAClB,MAAA;AACF;AAEA,IAAA,IAAI,CAACA,OAAO,CAACoD,GAAG,CAAC,IAAI,CAAC;IACtB,IAAI,CAACK,gBAAgB,EAAE;AACvB,IAAA,MAAMC,UAAU,GAAG,IAAI,CAACC,cAAc,EAAE;IACxCD,UAAU,CAACE,UAAU,CAAC;MAACC,KAAK,EAAExC,KAAK,CAACyC,gBAAgB,EAAE,CAAChB,aAAa,CAACiB;AAAW,KAAC,CAAC;AAClF,IAAA,IAAI,CAAC1D,OAAO,KAAK,IAAI2D,cAAc,CAAC,IAAI,CAACvD,cAAc,EAAE,EAAE,IAAI,CAACnB,iBAAiB,CAAC;AAIlF,IAAA,IAAI,CAACoE,UAAU,CAACO,WAAW,EAAE,EAAE;AAC7BP,MAAAA,UAAU,CAACQ,MAAM,CAAC,IAAI,CAAC7D,OAAO,CAAC;AACjC;AAEA,IAAA,IAAI,CAACG,aAAa,EAAE2D,OAAO,EAAE;AAC7B,IAAA,IAAI,CAAC3D,aAAa,GAAG4D,eAAe,CAClC,MAAK;AACH,MAAA,MAAM3G,OAAO,GAAG,IAAI,CAACoD,QAAQ,EAAE;AAC/B,MAAA,IAAI,CAACwD,kBAAkB,CAAChD,KAAK,CAAC7E,KAAK,EAAE,EAAEiB,OAAO,EAAEA,OAAO,CAAC,CAAC,CAAC,CAAC;MAC3D,IAAI,CAAC+C,aAAa,GAAG,IAAI;AAC3B,KAAC,EACD;MAAC1B,QAAQ,EAAE,IAAI,CAACU;AAAU,KAAA,CAC3B;AAED,IAAA,IAAI,CAACqC,MAAM,CAACyC,IAAI,EAAE;AACpB;AAGAC,EAAAA,KAAKA,GAAA;AACH,IAAA,IAAI,IAAI,CAACvE,OAAO,EAAE,EAAE;AAClB,MAAA,IAAI,CAACA,OAAO,CAACoD,GAAG,CAAC,KAAK,CAAC;AACvB,MAAA,IAAI,CAACtB,MAAM,CAACwC,IAAI,EAAE;MAElB,IAAI,IAAI,CAACvE,mBAAmB,EAAE;AAC5B,QAAA,IAAI,CAACK,WAAW,EAAEoE,MAAM,EAAE;AAC5B;AACF;AACF;EAGAC,aAAaA,CAACpD,KAAqC,EAAA;AACjD,IAAA,MAAMqD,YAAY,GAAG,IAAI,CAACvE,MAAM,EAAE;AAElC,IAAA,IAAIuE,YAAY,IAAIrD,KAAK,KAAKqD,YAAY,KAAK,OAAOpD,SAAS,KAAK,WAAW,IAAIA,SAAS,CAAC,EAAE;AAC7F,MAAA,MAAM,IAAI/C,KAAK,CAAC,+DAA+D,CAAC;AAClF;AAEA,IAAA,IAAI,CAAC4B,MAAM,CAACiD,GAAG,CAAC/B,KAAK,CAAC;AACxB;AAEAsD,EAAAA,WAAWA,GAAA;AACT,IAAA,IAAI,CAAC3D,WAAW,CAACmD,OAAO,EAAE;AAC1B,IAAA,IAAI,CAAC5D,cAAc,EAAEqE,WAAW,EAAE;AAClC,IAAA,IAAI,CAACpE,aAAa,EAAE2D,OAAO,EAAE;AAC7B,IAAA,IAAI,CAAC/D,WAAW,EAAEyE,OAAO,EAAE;AAC7B;AAEAC,EAAAA,eAAeA,GAAA;AACb,IAAA,OAAO,IAAI,CAAC1E,WAAW,EAAE2E,WAAW;AACtC;EAGUC,YAAYA,CAACC,MAAoB,EAAA;IACzC,IAAI,CAACV,KAAK,EAAE;AACZ,IAAA,IAAI,CAACvD,WAAW,CAACkE,aAAa,CAACD,MAAM,CAAC;IACtC,IAAI,CAACpE,QAAQ,EAAE,CAACsE,OAAO,CAACzH,OAAO,IAAG;MAEhC,IAAIA,OAAO,KAAKuH,MAAM,EAAE;AACtBvH,QAAAA,OAAO,CAAC0H,QAAQ,CAAC,KAAK,CAAC;AACzB;AACF,KAAC,CAAC;IAEF,IAAI,CAACjF,MAAM,EAAE,EAAEkF,uBAAuB,CAACJ,MAAM,CAACzI,KAAK,CAAC;AACpD,IAAA,IAAI,CAACmF,QAAQ,CAAC2C,IAAI,CAAC;MAAC9H,KAAK,EAAEyI,MAAM,CAACzI,KAAK;AAAE8I,MAAAA,MAAM,EAAE;AAAI,KAAC,CAAC;AACvD,IAAA,IAAI,CAACnF,MAAM,EAAE,EAAEqD,KAAK,EAAE;AACxB;AAGU+B,EAAAA,kBAAkBA,GAAA;AAC1B,IAAA,IAAI,IAAI,CAAClD,SAAS,EAAE,EAAE;AACpB,MAAA,OAAO,IAAI;AACb;AACA,IAAA,OAAO,IAAI,CAACE,cAAc,EAAE,IAAI,IAAI,CAACpC,MAAM,EAAE,EAAEqF,UAAU,EAAE,IAAI,IAAI;AACrE;EAGUC,mBAAmBA,CAACC,KAAqB,EAAA;AACjD,IAAA,IAAIA,KAAK,CAACC,aAAa,KAAK,sBAAsB,EAAE;AAClD,MAAA,IAAI,CAACvF,WAAW,EAAEoE,MAAM,EAAE;AAC5B;AACF;AAGQb,EAAAA,cAAcA,GAAA;IACpB,IAAI,IAAI,CAACvD,WAAW,EAAE;MACpB,OAAO,IAAI,CAACA,WAAW;AACzB;AAEA,IAAA,MAAMwF,gBAAgB,GAAGC,uCAAuC,CAC9D,IAAI,CAACrG,SAAS,EACd,IAAI,CAACW,MAAM,EAAG,CAAC2D,gBAAgB,EAAE,CAAA,CAEhCgC,sBAAsB,CAAC,KAAK,CAAA,CAC5BC,QAAQ,CAAC,KAAK,CAAA,CACdC,qBAAqB,CAAC,uBAAuB,CAAA,CAC7CC,mBAAmB,CAAC,QAAQ,CAAA,CAC5BC,aAAa,CAAC,CACb;AACEC,MAAAA,OAAO,EAAE,OAAO;AAChBC,MAAAA,OAAO,EAAE,QAAQ;AACjBC,MAAAA,QAAQ,EAAE,OAAO;AACjBC,MAAAA,QAAQ,EAAE;AACX,KAAA,EACD;AACEH,MAAAA,OAAO,EAAE,OAAO;AAChBC,MAAAA,OAAO,EAAE,KAAK;AACdC,MAAAA,QAAQ,EAAE,OAAO;AACjBC,MAAAA,QAAQ,EAAE,QAAQ;AAClBC,MAAAA,UAAU,EAAE;AACb,KAAA,CACF,CAAC;IAEJ,IAAI,CAACnG,WAAW,GAAGoG,gBAAgB,CAAC,IAAI,CAAChH,SAAS,EAAE;MAClDoG,gBAAgB;AAChBa,MAAAA,cAAc,EAAE,IAAI,CAAC3G,sBAAsB,EAAE;AAC7C4G,MAAAA,SAAS,EAAE,IAAI,CAACvH,IAAI,IAAI,KAAK;AAC7BwH,MAAAA,WAAW,EAAE,KAAK;MAClBC,iBAAiB,EAAE,IAAI,CAAC7G;AACzB,KAAA,CAAC;AAEF,IAAA,IAAI,CAACK,WAAW,CAACyG,WAAW,EAAE,CAAC1D,SAAS,CAAC,MAAM,IAAI,CAACoB,KAAK,EAAE,CAAC;AAC5D,IAAA,IAAI,CAACnE,WAAW,CAAC0G,aAAa,EAAE,CAAC3D,SAAS,CAACuC,KAAK,IAAI,IAAI,CAACqB,cAAc,CAACrB,KAAK,CAAC,CAAC;IAC/E,IAAI,CAACtF,WAAW,CAAC4G,oBAAoB,EAAE,CAAC7D,SAAS,CAACuC,KAAK,IAAG;AACxD,MAAA,MAAMuB,MAAM,GAAGC,eAAe,CAACxB,KAAK,CAAgB;AACpD,MAAA,MAAMyB,MAAM,GAAG,IAAI,CAAChH,MAAM,EAAE,EAAE2D,gBAAgB,EAAE,CAAChB,aAAa;AAE9D,MAAA,IAAImE,MAAM,IAAIE,MAAM,IAAIF,MAAM,KAAKE,MAAM,IAAI,CAACA,MAAM,CAACC,QAAQ,CAACH,MAAM,CAAC,EAAE;QACrE,IAAI,CAAC1C,KAAK,EAAE;AACd;AACF,KAAC,CAAC;IAEF,OAAO,IAAI,CAACnE,WAAW;AACzB;AAGQqD,EAAAA,gBAAgBA,GAAA;IAEtB,MAAMjG,QAAQ,GAAG,IAAI,CAACA,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE;AAC3C,IAAA,MAAMC,OAAO,GAAG,IAAI,CAACA,OAAO,EAAE;IAE9B,IAAIA,OAAO,KAAK,IAAI,EAAE;MACpB,IAAI,CAACmD,YAAY,GAAGnD,OAAO;AAC7B,KAAA,MAAO;AACL,MAAA,MAAM4D,KAAK,GAAG,IAAI,CAAClB,MAAM,EAAE;AAC3B,MAAA,MAAM/C,OAAO,GAAG,IAAI,CAACsC,YAAY;MACjC,MAAM2H,UAAU,GAAG,IAAI,CAACzH,YAAY,CAAC3B,OAAO,CAACO,SAAS;MACtD,MAAMlB,GAAG,GAAG+D,KAAK,EAAE/D,GAAG,EAAE,IAAIF,OAAO,CAACkK,OAAO,CAAClK,OAAO,CAACmK,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MACrE,MAAMhK,GAAG,GAAG8D,KAAK,EAAE9D,GAAG,EAAE,IAAIH,OAAO,CAACkK,OAAO,CAAClK,OAAO,CAACmK,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;MACvE,MAAMC,QAAQ,GACZhK,QAAQ,GAAG,GAAG,GAAGJ,OAAO,CAACY,MAAM,CAACV,GAAG,EAAE+J,UAAU,CAAC,GAAG,GAAG,GAAGjK,OAAO,CAACY,MAAM,CAACT,GAAG,EAAE8J,UAAU,CAAC;AAG1F,MAAA,IAAIG,QAAQ,KAAK,IAAI,CAAClH,gBAAgB,EAAE;QACtC,IAAI,CAACA,gBAAgB,GAAGkH,QAAQ;AAChC,QAAA,IAAI,CAAC5G,YAAY,GAAGzD,eAAe,CAACC,OAAO,EAAE,IAAI,CAACwC,YAAY,EAAEtC,GAAG,EAAEC,GAAG,EAAEC,QAAQ,CAAC;AACrF;AACF;AACF;AAQQ6G,EAAAA,kBAAkBA,CACxB7H,KAAe,EACfiB,OAA6B,EAC7BgK,QAA0B,EAAA;IAE1B,IAAIC,WAAW,GAAG,KAAK;AAEvB,IAAA,KAAK,MAAMzC,MAAM,IAAIxH,OAAO,EAAE;AAC5B,MAAA,IAAIjB,KAAK,IAAI,IAAI,CAACkD,YAAY,CAACiI,QAAQ,CAAC1C,MAAM,CAACzI,KAAK,EAAEA,KAAK,CAAC,EAAE;AAC5DyI,QAAAA,MAAM,CAAC2C,MAAM,CAAC,KAAK,CAAC;AACpBC,QAAAA,oBAAoB,CAAC5C,MAAM,EAAE,QAAQ,CAAC;QACtC6C,SAAS,CAAC,MAAM,IAAI,CAAC9G,WAAW,CAACkE,aAAa,CAACD,MAAM,CAAC,CAAC;AACvDyC,QAAAA,WAAW,GAAG,IAAI;AACpB,OAAA,MAAO;AACLzC,QAAAA,MAAM,CAACG,QAAQ,CAAC,KAAK,CAAC;AACxB;AACF;IAIA,IAAI,CAACsC,WAAW,EAAE;AAChB,MAAA,IAAID,QAAQ,EAAE;QACZK,SAAS,CAAC,MAAM,IAAI,CAAC9G,WAAW,CAACkE,aAAa,CAACuC,QAAQ,CAAC,CAAC;AACzDI,QAAAA,oBAAoB,CAACJ,QAAQ,EAAE,QAAQ,CAAC;AAC1C,OAAA,MAAO;QACLK,SAAS,CAAC,MAAM,IAAI,CAAC9G,WAAW,CAACkE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD;AACF;AACF;EAGQ6B,cAAcA,CAACrB,KAAoB,EAAA;AACzC,IAAA,MAAMqC,OAAO,GAAGrC,KAAK,CAACqC,OAAO;IAE7B,IAAIA,OAAO,KAAKC,GAAG,EAAE;MACnB,IAAI,CAACzD,KAAK,EAAE;KACd,MAAO,IAAIwD,OAAO,KAAKE,MAAM,IAAI,CAACC,cAAc,CAACxC,KAAK,CAAC,EAAE;MACvDA,KAAK,CAACyC,cAAc,EAAE;MACtB,IAAI,CAAC5D,KAAK,EAAE;AACd,KAAA,MAAO,IAAIwD,OAAO,KAAKK,KAAK,EAAE;MAC5B1C,KAAK,CAACyC,cAAc,EAAE;AAEtB,MAAA,IAAI,IAAI,CAACnH,WAAW,CAACqC,UAAU,EAAE;QAC/B,IAAI,CAAC2B,YAAY,CAAC,IAAI,CAAChE,WAAW,CAACqC,UAAU,CAAC;AAChD,OAAA,MAAO;QACL,IAAI,CAACkB,KAAK,EAAE;AACd;AACF,KAAA,MAAO;AACL,MAAA,MAAM8D,cAAc,GAAG,IAAI,CAACrH,WAAW,CAACqC,UAAU;AAClD,MAAA,IAAI,CAACrC,WAAW,CAACsH,SAAS,CAAC5C,KAAK,CAAC;AACjC,MAAA,MAAM6C,aAAa,GAAG,IAAI,CAACvH,WAAW,CAACqC,UAAU;AAEjD,MAAA,IAAIkF,aAAa,IAAIA,aAAa,KAAKF,cAAc,EAAE;AACrDR,QAAAA,oBAAoB,CAACU,aAAa,EAAE,SAAS,CAAC;AAChD;AACF;AACF;AAGQvF,EAAAA,oBAAoBA,GAAA;IAE1B,IAAI,CAACzC,cAAc,GAAG,IAAI,CAACb,YAAY,CAAC8I,aAAa,CAACrF,SAAS,CAAC,MAAK;MACnE,IAAI,CAAC7C,gBAAgB,GAAG,IAAI;AAE5B,MAAA,IAAI,IAAI,CAACmB,MAAM,EAAE,EAAE;QACjB,IAAI,CAACgC,gBAAgB,EAAE;AACzB;AACF,KAAC,CAAC;AACJ;AAKQR,EAAAA,wBAAwBA,GAAA;AAC9BN,IAAAA,MAAM,CAAC,MAAK;AACV,MAAA,MAAMtB,KAAK,GAAG,IAAI,CAAClB,MAAM,EAAE;AAC3B,MAAA,MAAM1C,OAAO,GAAG,IAAI,CAACoD,QAAQ,EAAE;AAE/B,MAAA,IAAI,IAAI,CAACb,OAAO,EAAE,IAAIqB,KAAK,EAAE;AAC3B,QAAA,IAAI,CAACgD,kBAAkB,CAAChD,KAAK,CAAC7E,KAAK,EAAE,EAAEiB,OAAO,EAAE,IAAI,CAAC;AACvD;AACF,KAAC,CAAC;AACJ;;;;;UAlYWyB,aAAa;AAAAuJ,IAAAA,IAAA,EAAA,EAAA;AAAAxB,IAAAA,MAAA,EAAAyB,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAb,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,QAAA;AAAAC,IAAAA,IAAA,EAAA/J,aAAa;AAPbgK,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,gBAAA;AAAAC,IAAAA,MAAA,EAAA;AAAA5L,MAAAA,QAAA,EAAA;AAAA6L,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAhM,MAAAA,OAAA,EAAA;AAAA4L,QAAAA,iBAAA,EAAA,SAAA;AAAAC,QAAAA,UAAA,EAAA,SAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAtH,MAAAA,aAAA,EAAA;AAAAkH,QAAAA,iBAAA,EAAA,eAAA;AAAAC,QAAAA,UAAA,EAAA,eAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAApH,MAAAA,SAAA,EAAA;AAAAgH,QAAAA,iBAAA,EAAA,WAAA;AAAAC,QAAAA,UAAA,EAAA,YAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAlH,MAAAA,cAAA,EAAA;AAAA8G,QAAAA,iBAAA,EAAA,gBAAA;AAAAC,QAAAA,UAAA,EAAA,iBAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;AAAA;KAAA;AAAAC,IAAAA,OAAA,EAAA;AAAA/H,MAAAA,QAAA,EAAA,UAAA;AAAAE,MAAAA,MAAA,EAAA,QAAA;AAAAC,MAAAA,MAAA,EAAA;KAAA;AAAA6H,IAAAA,SAAA,EAAA,CACT;AACEC,MAAAA,OAAO,EAAEC,2BAA2B;AACpCC,MAAAA,WAAW,EAAE5K;AACd,KAAA,CACF;AAAA6K,IAAAA,WAAA,EAAA,CAAA;AAAAC,MAAAA,YAAA,EAAA,gBAAA;AAAAC,MAAAA,KAAA,EAAA,IAAA;MAAAC,SAAA,EAAA,CAAA,eAAA,CAAA;AAAAC,MAAAA,WAAA,EAAA,IAAA;AAAAZ,MAAAA,QAAA,EAAA;AAAA,KAAA,EAAA;AAAAS,MAAAA,YAAA,EAAA,UAAA;AAAAE,MAAAA,SAAA,EAwBiCnJ,SAAS;AAAAoJ,MAAAA,WAAA,EAAA,IAAA;AAAAZ,MAAAA,QAAA,EAAA;AAAA,KAAA,CAAA;IAAAa,QAAA,EAAA,CAAA,eAAA,CAAA;AAAAC,IAAAA,QAAA,EAAA3B,EAAA;AAAA4B,IAAAA,QAAA,ECtJ7C,8nBAiBA;IAAAC,MAAA,EAAA,CAAA,i/CAAA,CAAA;AAAAC,IAAAA,YAAA,EAAA,CAAA;AAAAC,MAAAA,IAAA,EAAA,WAAA;AAAAxB,MAAAA,IAAA,EDuGYlI,SAAS;AAAAoI,MAAAA,QAAA,EAAA,YAAA;AAAAC,MAAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA;MAAAM,OAAA,EAAA,CAAA,mBAAA,CAAA;MAAAU,QAAA,EAAA,CAAA,WAAA;AAAA,KAAA,CAAA;AAAAM,IAAAA,eAAA,EAAAhC,EAAA,CAAAiC,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAnC,EAAA,CAAAoC,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAQR7L,aAAa;AAAA8L,EAAAA,UAAA,EAAA,CAAA;UAfzBpC,SAAS;AACEqC,IAAAA,IAAA,EAAA,CAAA;AAAA9B,MAAAA,QAAA,EAAA,gBAAgB;AAChBiB,MAAAA,QAAA,EAAA,eAAe;MAGRM,eAAA,EAAAC,uBAAuB,CAACC,MAAM;MAAAC,aAAA,EAChCC,iBAAiB,CAACC,IAAI;MAAAG,OAAA,EAC5B,CAACnK,SAAS,CAAC;AACT4I,MAAAA,SAAA,EAAA,CACT;AACEC,QAAAA,OAAO,EAAEC,2BAA2B;AACpCC,QAAAA,WAAW,EAAe5K;AAC3B,OAAA,CACF;AAAAoL,MAAAA,QAAA,EAAA,8nBAAA;MAAAC,MAAA,EAAA,CAAA,i/CAAA;KAAA;AAsBmE,GAAA,CAAA;EAAAY,cAAA,EAAAA,MAAA,EAAA;AAAAC,EAAAA,cAAA,EAAA;AAAA3K,IAAAA,cAAA,EAAA,CAAA;MAAAwI,IAAA,EAAAP,EAAA,CAAA2C,SAAA;MAAAJ,IAAA,EAAA,CAAA,eAAe;;;;;;iCAEjDlK,SAAS,CAAA,EAAA;AAAAwI,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA/L,IAAAA,QAAA,EAAA,CAAA;MAAAyL,IAAA,EAAAP,EAAA,CAAA4C,KAAA;AAAAL,MAAAA,IAAA,EAAA,CAAA;AAAA1B,QAAAA,QAAA,EAAA,IAAA;AAAAjH,QAAAA,KAAA,EAAA,UAAA;AAAA3B,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAlD,IAAAA,OAAA,EAAA,CAAA;MAAAwL,IAAA,EAAAP,EAAA,CAAA4C,KAAA;AAAAL,MAAAA,IAAA,EAAA,CAAA;AAAA1B,QAAAA,QAAA,EAAA,IAAA;AAAAjH,QAAAA,KAAA,EAAA,SAAA;AAAA3B,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAAgB,IAAAA,QAAA,EAAA,CAAA;MAAAsH,IAAA,EAAAP,EAAA,CAAA6C,MAAA;MAAAN,IAAA,EAAA,CAAA,UAAA;AAAA,KAAA,CAAA;AAAApJ,IAAAA,MAAA,EAAA,CAAA;MAAAoH,IAAA,EAAAP,EAAA,CAAA6C,MAAA;MAAAN,IAAA,EAAA,CAAA,QAAA;AAAA,KAAA,CAAA;AAAAnJ,IAAAA,MAAA,EAAA,CAAA;MAAAmH,IAAA,EAAAP,EAAA,CAAA6C,MAAA;MAAAN,IAAA,EAAA,CAAA,QAAA;AAAA,KAAA,CAAA;AAAA9I,IAAAA,aAAA,EAAA,CAAA;MAAA8G,IAAA,EAAAP,EAAA,CAAA4C,KAAA;AAAAL,MAAAA,IAAA,EAAA,CAAA;AAAA1B,QAAAA,QAAA,EAAA,IAAA;AAAAjH,QAAAA,KAAA,EAAA,eAAA;AAAA3B,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA0B,IAAAA,SAAA,EAAA,CAAA;MAAA4G,IAAA,EAAAP,EAAA,CAAA4C,KAAA;AAAAL,MAAAA,IAAA,EAAA,CAAA;AAAA1B,QAAAA,QAAA,EAAA,IAAA;AAAAjH,QAAAA,KAAA,EAAA,YAAA;AAAA3B,QAAAA,QAAA,EAAA;OAAA;AAAA,KAAA,CAAA;AAAA4B,IAAAA,cAAA,EAAA,CAAA;MAAA0G,IAAA,EAAAP,EAAA,CAAA4C,KAAA;AAAAL,MAAAA,IAAA,EAAA,CAAA;AAAA1B,QAAAA,QAAA,EAAA,IAAA;AAAAjH,QAAAA,KAAA,EAAA,iBAAA;AAAA3B,QAAAA,QAAA,EAAA;OAAA;KAAA;AAAA;AAAA,CAAA,CAAA;AAoX7C,SAASkH,oBAAoBA,CAAC5C,MAAiB,EAAEuG,QAA+B,EAAA;AAC9EvG,EAAAA,MAAM,CAACwG,eAAe,EAAE,CAACC,cAAc,CAAC;AAACC,IAAAA,KAAK,EAAEH,QAAQ;AAAEI,IAAAA,MAAM,EAAEJ;AAAQ,GAAC,CAAC;AAC9E;;ME1baK,kBAAkB,CAAA;AAGrBC,EAAAA,WAAW,GAAG/M,MAAM,CAA+B8D,UAAU,CAAC;AAC9DnD,EAAAA,YAAY,GAAGX,MAAM,CAAiBY,WAAW,EAAE;AAACN,IAAAA,QAAQ,EAAE;AAAK,GAAA,CAAE;AACrEO,EAAAA,YAAY,GAAGb,MAAM,CAACc,gBAAgB,EAAE;AAACR,IAAAA,QAAQ,EAAE;AAAK,GAAA,CAAE;AAC1D0M,EAAAA,UAAU,GAAGhN,MAAM,CAACiN,cAAc,EAAE;AAAC3M,IAAAA,QAAQ,EAAE;AAAK,GAAA,CAAC;EAErD4M,SAAS;EACTC,UAAU;EACVC,kBAAkB;EAClBC,aAAa;EACbC,iBAAiB,GAAGpM,MAAM,CAAC,KAAK;;WAAC;EACjCqM,mBAAmB;EACnBC,uBAAuB;EACvBC,UAAU;AACVC,EAAAA,eAAe,GAAG,IAAI;AACtBC,EAAAA,SAAS,GAAG,IAAI;AAChBC,EAAAA,SAAS,GAAG,IAAI;AAChBC,EAAAA,cAAc,GAAa,IAAI;EAGpBC,qBAAqB,GAAGpK,QAAQ,CAAC,MAAK;AACvD,IAAA,MAAMqK,UAAU,GAAG,IAAI,CAACA,UAAU,EAAE;AACpC,IAAA,MAAMrL,MAAM,GAAGqL,UAAU,CAACrL,MAAM,EAAE;AAClC,IAAA,MAAMM,gBAAgB,GAAG+K,UAAU,CAAC/K,gBAAgB,EAAE;AACtD,IAAA,OAAON,MAAM,IAAIM,gBAAgB,GAAGA,gBAAgB,GAAG,IAAI;AAC7D,GAAC;;WAAC;AAGiBgL,EAAAA,aAAa,GAAGtK,QAAQ,CAAC,MAAM,IAAI,CAACqK,UAAU,EAAE,CAACrL,MAAM,EAAE,GAAG,EAAE;;WAAC;EAG/DuL,aAAa,GAAGvK,QAAQ,CAAC,MAAK;AAC/C,IAAA,MAAMqK,UAAU,GAAG,IAAI,CAACA,UAAU,EAAE;IACpC,OAAOA,UAAU,CAACrL,MAAM,EAAE,GAAGqL,UAAU,CAAC9K,OAAO,GAAG,IAAI;AACxD,GAAC;;WAAC;EAGOxF,KAAK,GAA0ByQ,KAAK,CAAW,IAAI;;WAAC;AAGpDH,EAAAA,UAAU,GAAkCzL,KAAK,CAACV,QAAQ;;;;AACjE2B,IAAAA,KAAK,EAAE;AAAe,GAAA,CACtB;AAMOhF,EAAAA,GAAG,GAAgD+D,KAAK,CAAC,IAAI,EACpE;AAAA,IAAA,IAAAC,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;AAAAe,IAAAA,KAAK,EAAE,kBAAkB;AACzBd,IAAAA,SAAS,EAAGhF,KAAc,IAAK,IAAI,CAAC0Q,mBAAmB,CAAI1Q,KAAK;IAChE;AAMOe,EAAAA,GAAG,GAAgD8D,KAAK,CAAC,IAAI,EACpE;AAAA,IAAA,IAAAC,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;AAAAe,IAAAA,KAAK,EAAE,kBAAkB;AACzBd,IAAAA,SAAS,EAAGhF,KAAc,IAAK,IAAI,CAAC0Q,mBAAmB,CAAI1Q,KAAK;IAChE;AAOO2Q,EAAAA,WAAW,GAA+C9L,KAAK,CAAC,IAAI,EAC3E;AAAA,IAAA,IAAAC,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;AAAAe,IAAAA,KAAK,EAAE,0BAA0B;AACjCd,IAAAA,SAAS,EAAEY;AAAgB,GAAA,CAC3B;AAGOI,EAAAA,QAAQ,GAAoBC,QAAQ,CAC3C,MAAM,IAAI,CAAC2K,aAAa,EAAE,IAAI,IAAI,CAACf,iBAAiB,EAAE;;WACvD;AAMQe,EAAAA,aAAa,GAA+C/L,KAAK,CAAC,KAAK,EAC9E;AAAA,IAAA,IAAAC,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;AAAAC,IAAAA,SAAS,EAAEY,gBAAgB;AAC3BE,IAAAA,KAAK,EAAE;AAAU,GAAA,CACjB;AAEFI,EAAAA,WAAAA,GAAA;AACE,IAAA,IAAI,OAAOpB,SAAS,KAAK,WAAW,IAAIA,SAAS,EAAE;MACjDlD,eAAe,CAAC,IAAI,CAACsB,YAAY,EAAE,IAAI,CAACE,YAAY,CAAC;AACvD;AAEA,IAAA,MAAMyN,QAAQ,GAAGtO,MAAM,CAACuO,SAAS,CAAC;AAClC,IAAA,IAAI,CAACd,UAAU,GAAG,IAAI,CAACe,aAAa,EAAE;IACtC,IAAI,CAACC,iBAAiB,EAAE;IACxB,IAAI,CAACC,mBAAmB,EAAE;IAC1B,IAAI,CAACnB,mBAAmB,GAAG,IAAI,CAAC5M,YAAY,CAAC8I,aAAa,CAACrF,SAAS,CAAC,MAAK;AACxE,MAAA,IAAI,CAAC,IAAI,CAACuK,SAAS,EAAE,EAAE;QACrB,IAAI,CAACC,YAAY,CAAC,IAAI,CAACnR,KAAK,EAAE,CAAC;AACjC;AACF,KAAC,CAAC;IAIF,IAAI,CAAC4P,aAAa,GAAGiB,QAAQ,CAACO,MAAM,CAClC,IAAI,CAAC9J,gBAAgB,EAAE,CAAChB,aAAa,EACrC,OAAO,EACP,IAAI,CAAC+K,YAAY,CAClB;AACH;EAMAC,UAAUA,CAACtR,KAAc,EAAA;IAIvB,MAAMuR,YAAY,GAAG,IAAI,CAACrO,YAAY,CAACsO,WAAW,CAACxR,KAAK,CAAC;AACzD,IAAA,IAAI,CAACA,KAAK,CAAC4G,GAAG,CAAC,IAAI,CAAC1D,YAAY,CAACuO,kBAAkB,CAACF,YAAY,CAAC,CAAC;AACpE;EAMAG,gBAAgBA,CAACC,EAA4B,EAAA;IAC3C,IAAI,CAAClC,SAAS,GAAGkC,EAAE;AACrB;EAMAC,iBAAiBA,CAACD,EAAc,EAAA;IAC9B,IAAI,CAACjC,UAAU,GAAGiC,EAAE;AACtB;EAMAE,gBAAgBA,CAACC,UAAmB,EAAA;AAClC,IAAA,IAAI,CAACjC,iBAAiB,CAACjJ,GAAG,CAACkL,UAAU,CAAC;AACxC;EAMAC,QAAQA,CAACC,OAAwB,EAAA;AAC/B,IAAA,OAAO,IAAI,CAAChC,UAAU,CAACgC,OAAO,CAAC;AACjC;EAMAC,yBAAyBA,CAACN,EAAc,EAAA;IACtC,IAAI,CAAChC,kBAAkB,GAAGgC,EAAE;AAC9B;AAGArK,EAAAA,gBAAgBA,GAAA;IACd,OAAO,IAAI,CAACiI,UAAU,EAAE2C,yBAAyB,EAAE,IAAI,IAAI,CAAC5C,WAAW;AACzE;AAGAtI,EAAAA,KAAKA,GAAA;AACH,IAAA,IAAI,CAACsI,WAAW,CAAChJ,aAAa,CAACU,KAAK,EAAE;AACxC;AAEAmB,EAAAA,WAAWA,GAAA;IACT,IAAI,CAACyH,aAAa,EAAE;AACpB,IAAA,IAAI,CAACG,uBAAuB,EAAE3H,WAAW,EAAE;AAC3C,IAAA,IAAI,CAAC0H,mBAAmB,CAAC1H,WAAW,EAAE;AACxC;AAGAY,EAAAA,UAAUA,GAAA;IACR,OAAO,IAAI,CAACuG,UAAU,EAAEvG,UAAU,EAAE,IAAI,IAAI;AAC9C;EAGQqI,YAAY,GAAInI,KAAiB,IAAU;AACjD,IAAA,IAAI,IAAI,CAAClD,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC2K,WAAW,EAAE,EAAE;AAC1C,MAAA;AACF;AAEA,IAAA,MAAMlG,MAAM,GAAGC,eAAe,CAACxB,KAAK,CAAgB;IACpD,MAAMiJ,WAAW,GAAG,IAAI,CAAC7B,UAAU,EAAE,CAAChI,eAAe,EAAE;AAEvD,IAAA,IAAI,CAACmC,MAAM,IAAI,CAAC0H,WAAW,IAAI,CAACA,WAAW,CAACvH,QAAQ,CAACH,MAAM,CAAC,EAAE;AAC5D,MAAA,IAAI,CAAC6F,UAAU,EAAE,CAACvJ,IAAI,EAAE;AAC1B;GACD;EAGSqL,YAAYA,CAAClJ,KAAY,EAAA;AACjC,IAAA,MAAMlJ,KAAK,GAAIkJ,KAAK,CAACuB,MAA2B,CAACzK,KAAK;AACtD,IAAA,MAAMqS,YAAY,GAAG,IAAI,CAACrS,KAAK,EAAE;AACjC,IAAA,MAAMsS,IAAI,GAAG,IAAI,CAACpP,YAAY,CAACqP,SAAS,CAACvS,KAAK,EAAE,IAAI,CAACoD,YAAY,CAAClB,KAAK,CAACF,SAAS,CAAC;AAClF,IAAA,MAAMwQ,UAAU,GAAG,CAAC,IAAI,CAACtP,YAAY,CAACiI,QAAQ,CAACmH,IAAI,EAAED,YAAY,CAAC;AAElE,IAAA,IAAI,CAACC,IAAI,IAAIE,UAAU,IAAI,CAAC,EAAExS,KAAK,IAAI,CAACqS,YAAY,CAAC,EAAE;AAErD,MAAA,IAAI,CAACI,oBAAoB,CAACH,IAAI,EAAE,IAAI,CAAC;AACvC,KAAA,MAAO;MAGL,IAAI,CAAC3C,kBAAkB,IAAI;AAC7B;AACF;AAGU+C,EAAAA,WAAWA,GAAA;AACnB,IAAA,MAAM1S,KAAK,GAAG,IAAI,CAACA,KAAK,EAAE;IAG1B,IAAIA,KAAK,IAAI,IAAI,CAAC2S,QAAQ,CAAC3S,KAAK,CAAC,EAAE;AACjC,MAAA,IAAI,CAACmR,YAAY,CAACnR,KAAK,CAAC;AAC1B;IAEA,IAAI,CAAC,IAAI,CAACsQ,UAAU,EAAE,CAACrL,MAAM,EAAE,EAAE;MAC/B,IAAI,CAACyK,UAAU,IAAI;AACrB;AACF;EAGUnF,cAAcA,CAACrB,KAAoB,EAAA;AAE3C,IAAA,IAAI,IAAI,CAACoH,UAAU,EAAE,CAACrL,MAAM,EAAE,IAAI,IAAI,CAACe,QAAQ,EAAE,EAAE;AACjD,MAAA;AACF;AAEA,IAAA,IAAIkD,KAAK,CAACqC,OAAO,KAAKE,MAAM,IAAI,CAACC,cAAc,CAACxC,KAAK,CAAC,IAAI,IAAI,CAAClJ,KAAK,EAAE,KAAK,IAAI,EAAE;MAC/EkJ,KAAK,CAACyC,cAAc,EAAE;AACtB,MAAA,IAAI,CAAC3L,KAAK,CAAC4G,GAAG,CAAC,IAAI,CAAC;AACpB,MAAA,IAAI,CAACuK,YAAY,CAAC,IAAI,CAAC;AACzB,KAAA,MAAO,IAAIjI,KAAK,CAACqC,OAAO,KAAKqH,UAAU,IAAI1J,KAAK,CAACqC,OAAO,KAAKsH,QAAQ,EAAE;MACrE3J,KAAK,CAACyC,cAAc,EAAE;AACtB,MAAA,IAAI,CAAC2E,UAAU,EAAE,CAACvJ,IAAI,EAAE;AAC1B;AACF;EAGA8B,uBAAuBA,CAAC7I,KAAe,EAAA;AACrC,IAAA,IAAI,CAAC,IAAI,CAACkD,YAAY,CAACiI,QAAQ,CAACnL,KAAK,EAAE,IAAI,CAACA,KAAK,EAAE,CAAC,EAAE;AACpD,MAAA,IAAI,CAACyS,oBAAoB,CAACzS,KAAK,EAAE,IAAI,CAAC;AACtC,MAAA,IAAI,CAACmR,YAAY,CAACnR,KAAK,CAAC;AAC1B;AACF;AAGQgR,EAAAA,iBAAiBA,GAAA;AACvB7K,IAAAA,MAAM,CAAC,MAAK;MACV,MAAM;AACJjD,QAAAA,YAAY,EAAEtC,OAAO;AACrBqP,QAAAA,eAAe,EAAE6C,cAAc;AAC/B5C,QAAAA,SAAS,EAAE6C,YAAY;AACvB5C,QAAAA,SAAS,EAAE6C;AACZ,OAAA,GAAG,IAAI;MACR,MAAMhT,KAAK,GAAGY,OAAO,CAAC4Q,WAAW,CAAC,IAAI,CAACxR,KAAK,EAAE,CAAC;AAC/C,MAAA,MAAMc,GAAG,GAAG,IAAI,CAACA,GAAG,EAAE;AACtB,MAAA,MAAMC,GAAG,GAAG,IAAI,CAACA,GAAG,EAAE;MACtB,MAAMkS,UAAU,GAAI,IAAI,CAAChD,eAAe,GAAG,IAAI,CAAC0C,QAAQ,CAAC3S,KAAK,CAAE;MAChE,IAAI,CAACkQ,SAAS,GAAG,CAACpP,GAAG,IAAI,CAACd,KAAK,IAAI,CAACiT,UAAU,IAAIrS,OAAO,CAACO,WAAW,CAACL,GAAG,EAAEd,KAAK,CAAC,IAAI,CAAC;MACtF,IAAI,CAACmQ,SAAS,GAAG,CAACpP,GAAG,IAAI,CAACf,KAAK,IAAI,CAACiT,UAAU,IAAIrS,OAAO,CAACO,WAAW,CAACJ,GAAG,EAAEf,KAAK,CAAC,IAAI,CAAC;AACtF,MAAA,MAAMkT,YAAY,GAChBJ,cAAc,KAAKG,UAAU,IAC7BF,YAAY,KAAK,IAAI,CAAC7C,SAAS,IAC/B8C,YAAY,KAAK,IAAI,CAAC7C,SAAS;AAGjC,MAAA,IAAI,CAAC,IAAI,CAACe,SAAS,EAAE,EAAE;AACrB,QAAA,IAAI,CAACC,YAAY,CAACnR,KAAK,CAAC;AAC1B;MAEA,IAAIA,KAAK,IAAIiT,UAAU,EAAE;QACvB,IAAI,CAAC7C,cAAc,GAAGpQ,KAAK;AAC7B;AAGA,MAAA,IAAIkT,YAAY,EAAE;QAChB,IAAI,CAACvD,kBAAkB,IAAI;AAC7B;AACF,KAAC,CAAC;AACJ;AAGQsB,EAAAA,mBAAmBA,GAAA;AACzB9K,IAAAA,MAAM,CAAC,MAAK;AACV,MAAA,MAAMmK,UAAU,GAAG,IAAI,CAACA,UAAU,EAAE;AACpCA,MAAAA,UAAU,CAACrI,aAAa,CAAC,IAAI,CAAC;MAC9BqI,UAAU,CAAChL,MAAM,CAACqB,SAAS,CAAC,MAAM,IAAI,CAAC+I,UAAU,IAAI,CAAC;AACxD,KAAC,CAAC;AACJ;AAOQ+C,EAAAA,oBAAoBA,CAACU,SAAmB,EAAEC,mBAA4B,EAAA;AAC5E,IAAA,IAAIC,QAAkB;IAEtB,IAAIF,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAACR,QAAQ,CAACQ,SAAS,CAAC,EAAE;AAClDE,MAAAA,QAAQ,GAAGF,SAAS;AACtB,KAAA,MAAO;AAML,MAAA,MAAMvS,OAAO,GAAG,IAAI,CAACsC,YAAY;AACjC,MAAA,MAAMuH,MAAM,GAAG7J,OAAO,CAAC6Q,kBAAkB,CAAC,IAAI,CAACrB,cAAc,IAAI,IAAI,CAACpQ,KAAK,EAAE,CAAC;AAC9E,MAAA,MAAMsT,KAAK,GAAG1S,OAAO,CAAC2S,QAAQ,CAACJ,SAAS,CAAC;AACzC,MAAA,MAAMK,OAAO,GAAG5S,OAAO,CAAC6S,UAAU,CAACN,SAAS,CAAC;AAC7C,MAAA,MAAMO,OAAO,GAAG9S,OAAO,CAAC+S,UAAU,CAACR,SAAS,CAAC;AAC7CE,MAAAA,QAAQ,GAAG5I,MAAM,GAAG7J,OAAO,CAACkK,OAAO,CAACL,MAAM,EAAE6I,KAAK,EAAEE,OAAO,EAAEE,OAAO,CAAC,GAAGP,SAAS;AAClF;AAGA,IAAA,IAAIC,mBAAmB,EAAE;AACvB,MAAA,IAAI,CAAC3D,SAAS,GAAG4D,QAAQ,CAAC;AAC5B;AAEA,IAAA,IAAI,CAACrT,KAAK,CAAC4G,GAAG,CAACyM,QAAQ,CAAC;AAC1B;EAGQlC,YAAYA,CAACnR,KAAe,EAAA;IAClCA,KAAK,GAAG,IAAI,CAACkD,YAAY,CAACuO,kBAAkB,CAACzR,KAAK,CAAC;AACnD,IAAA,IAAI,CAACsP,WAAW,CAAChJ,aAAa,CAACtG,KAAK,GAClCA,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAACkD,YAAY,CAAC1B,MAAM,CAACxB,KAAK,EAAE,IAAI,CAACoD,YAAY,CAAC3B,OAAO,CAACO,SAAS,CAAC;AAC7F;EAGQ2Q,QAAQA,CAAC3S,KAAe,EAAA;IAC9B,OAAO,CAACA,KAAK,IAAI,IAAI,CAACkD,YAAY,CAAC7B,OAAO,CAACrB,KAAK,CAAC;AACnD;EAGQ0Q,mBAAmBA,CAAI1Q,KAAc,EAAA;AAC3C,IAAA,MAAMsS,IAAI,GACR,OAAOtS,KAAK,KAAK,QAAQ,GACrB,IAAI,CAACkD,YAAY,CAACqP,SAAS,CAACvS,KAAK,EAAE,IAAI,CAACoD,YAAY,CAAClB,KAAK,CAACF,SAAS,CAAA,GACpE,IAAI,CAACkB,YAAY,CAACsO,WAAW,CAACxR,KAAK,CAAC;AAC1C,IAAA,OAAOsS,IAAI,IAAI,IAAI,CAACpP,YAAY,CAAC7B,OAAO,CAACiR,IAAI,CAAC,GAAIA,IAAU,GAAG,IAAI;AACrE;AAGQpB,EAAAA,SAASA,GAAA;IACf,OAAO0C,iCAAiC,EAAE,KAAK,IAAI,CAACtE,WAAW,CAAChJ,aAAa;AAC/E;AAGQyK,EAAAA,aAAaA,GAAA;IACnB,OAAO8C,UAAU,CAACC,OAAO,CAAC,CACxB,MACE,IAAI,CAAC7D,eAAe,GAChB,IAAI,GACJ;AAAC,MAAA,oBAAoB,EAAE;AAAC,QAAA,MAAM,EAAE,IAAI,CAACX,WAAW,CAAChJ,aAAa,CAACtG;;KAAO,EAC5EgS,OAAO,IACL,IAAI,CAAC9B,SAAS,GACV,IAAI,GACJ;AACE,MAAA,kBAAkB,EAAE;AAClB,QAAA,KAAK,EAAE,IAAI,CAACpP,GAAG,EAAE;AACjB,QAAA,QAAQ,EAAE,IAAI,CAACoC,YAAY,CAACuO,kBAAkB,CAC5C,IAAI,CAACvO,YAAY,CAACsO,WAAW,CAACQ,OAAO,CAAChS,KAAK,CAAC;AAE/C;KACF,EACPgS,OAAO,IACL,IAAI,CAAC7B,SAAS,GACV,IAAI,GACJ;AACE,MAAA,kBAAkB,EAAE;AAClB,QAAA,KAAK,EAAE,IAAI,CAACpP,GAAG,EAAE;AACjB,QAAA,QAAQ,EAAE,IAAI,CAACmC,YAAY,CAACuO,kBAAkB,CAC5C,IAAI,CAACvO,YAAY,CAACsO,WAAW,CAACQ,OAAO,CAAChS,KAAK,CAAC;AAE/C;AACF,KAAA,CACR,CAAE;AACL;;;;;UApYWqP,kBAAkB;AAAApD,IAAAA,IAAA,EAAA,EAAA;AAAAxB,IAAAA,MAAA,EAAAyB,EAAA,CAAAC,eAAA,CAAA4H;AAAA,GAAA,CAAA;AAAlB,EAAA,OAAAC,IAAA,GAAA9H,EAAA,CAAA+H,oBAAA,CAAA;AAAA1H,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,QAAA;AAAAC,IAAAA,IAAA,EAAA4C,kBAAkB;AAjBlB3C,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,sBAAA;AAAAC,IAAAA,MAAA,EAAA;AAAA5M,MAAAA,KAAA,EAAA;AAAA6M,QAAAA,iBAAA,EAAA,OAAA;AAAAC,QAAAA,UAAA,EAAA,OAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAqD,MAAAA,UAAA,EAAA;AAAAzD,QAAAA,iBAAA,EAAA,YAAA;AAAAC,QAAAA,UAAA,EAAA,eAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,IAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAnM,MAAAA,GAAA,EAAA;AAAA+L,QAAAA,iBAAA,EAAA,KAAA;AAAAC,QAAAA,UAAA,EAAA,kBAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAlM,MAAAA,GAAA,EAAA;AAAA8L,QAAAA,iBAAA,EAAA,KAAA;AAAAC,QAAAA,UAAA,EAAA,kBAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAA0D,MAAAA,WAAA,EAAA;AAAA9D,QAAAA,iBAAA,EAAA,aAAA;AAAAC,QAAAA,UAAA,EAAA,0BAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAA2D,MAAAA,aAAA,EAAA;AAAA/D,QAAAA,iBAAA,EAAA,eAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;AAAA;KAAA;AAAAC,IAAAA,OAAA,EAAA;AAAAlN,MAAAA,KAAA,EAAA;KAAA;AAAAkU,IAAAA,IAAA,EAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,MAAA,EAAA,UAAA;AAAA,QAAA,MAAA,EAAA,MAAA;AAAA,QAAA,eAAA,EAAA;OAAA;AAAAC,MAAAA,SAAA,EAAA;AAAA,QAAA,MAAA,EAAA,eAAA;AAAA,QAAA,OAAA,EAAA,sBAAA;AAAA,QAAA,SAAA,EAAA;OAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,4BAAA,EAAA,yBAAA;AAAA,QAAA,oBAAA,EAAA,iBAAA;AAAA,QAAA,oBAAA,EAAA,iBAAA;AAAA,QAAA,wBAAA,EAAA,uBAAA;AAAA,QAAA,UAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;AAAAnH,IAAAA,SAAA,EAAA,CACT;AACEC,MAAAA,OAAO,EAAEmH,iBAAiB;AAC1BjH,MAAAA,WAAW,EAAE+B,kBAAkB;AAC/BmF,MAAAA,KAAK,EAAE;AACR,KAAA,EACD;AACEpH,MAAAA,OAAO,EAAEqH,aAAa;AACtBnH,MAAAA,WAAW,EAAE+B,kBAAkB;AAC/BmF,MAAAA,KAAK,EAAE;AACR,KAAA,EACD;AACEpH,MAAAA,OAAO,EAAEsH,wBAAwB;AACjCpH,MAAAA,WAAW,EAAE+B;AACd,KAAA,CACF;IAAAzB,QAAA,EAAA,CAAA,oBAAA,CAAA;AAAAC,IAAAA,QAAA,EAAA3B;AAAA,GAAA,CAAA;;;;;;QAEUmD,kBAAkB;AAAAb,EAAAA,UAAA,EAAA,CAAA;UAlC9BuF,SAAS;AAACtF,IAAAA,IAAA,EAAA,CAAA;AACT9B,MAAAA,QAAQ,EAAE,sBAAsB;AAChCiB,MAAAA,QAAQ,EAAE,oBAAoB;AAC9BsG,MAAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,sBAAsB;AAC/B,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,eAAe,EAAE,SAAS;AAC1B,QAAA,8BAA8B,EAAE,yBAAyB;AACzD,QAAA,sBAAsB,EAAE,iBAAiB;AACzC,QAAA,sBAAsB,EAAE,iBAAiB;AACzC,QAAA,0BAA0B,EAAE,uBAAuB;AACnD,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,SAAS,EAAE,sBAAsB;AACjC,QAAA,WAAW,EAAE;OACd;AACD/G,MAAAA,SAAS,EAAE,CACT;AACEC,QAAAA,OAAO,EAAEmH,iBAAiB;AAC1BjH,QAAAA,WAAW,EAAoB+B,kBAAA;AAC/BmF,QAAAA,KAAK,EAAE;AACR,OAAA,EACD;AACEpH,QAAAA,OAAO,EAAEqH,aAAa;AACtBnH,QAAAA,WAAW,EAAoB+B,kBAAA;AAC/BmF,QAAAA,KAAK,EAAE;AACR,OAAA,EACD;AACEpH,QAAAA,OAAO,EAAEsH,wBAAwB;AACjCpH,QAAAA,WAAW,EAAoB+B;OAChC;KAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCxCYsF,mBAAmB,CAAA;AACtB1R,EAAAA,cAAc,GAAGV,MAAM,CAAC1C,qBAAqB,EAAE;AAACgD,IAAAA,QAAQ,EAAE;AAAK,GAAA,CAAC;EAChE+R,gBAAgB,GAAG,CAAC,MAAK;IAC/B,MAAM5U,KAAK,GAAGuC,MAAM,CAAC,IAAIsS,kBAAkB,CAAC,UAAU,CAAC,EAAE;AAAChS,MAAAA,QAAQ,EAAE;AAAI,KAAC,CAAC;AAC1E,IAAA,MAAMzC,MAAM,GAAG0U,MAAM,CAAC9U,KAAK,CAAC;AAC5B,IAAA,OAAOU,KAAK,CAACN,MAAM,CAAC,GAAG,IAAI,GAAGA,MAAM;AACtC,GAAC,GAAG;EAEM2U,WAAW,GAAG9O,QAAQ,CAAC,MAAK;AACpC,IAAA,MAAMqK,UAAU,GAAG,IAAI,CAACA,UAAU,EAAE;IACpC,OAAO,IAAI,CAACtK,QAAQ,EAAE,IAAIsK,UAAU,CAACtK,QAAQ,EAAE;AACjD,GAAC;;WAAC;AAGOsK,EAAAA,UAAU,GAAkCzL,KAAK,CAACV,QAAQ;;;;AACjE2B,IAAAA,KAAK,EAAE;AAAK,GAAA,CACZ;AAGOD,EAAAA,SAAS,GAAGhB,KAAK,CAAqB5C,SAAS;;;;AACtD6D,IAAAA,KAAK,EAAE;AAAY,GAAA,CACnB;AAGOC,EAAAA,cAAc,GAAGlB,KAAK,CAAqB5C,SAAS;;;;AAC3D6D,IAAAA,KAAK,EAAE;AAAiB,GAAA,CACxB;AAGekP,EAAAA,iBAAiB,GAAG,yBAAyB;AAGrDhP,EAAAA,QAAQ,GAA+CnB,KAAK,CAAC,KAAK,EACzE;AAAA,IAAA,IAAAC,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;AAAAC,IAAAA,SAAS,EAAEY,gBAAgB;AAC3BE,IAAAA,KAAK,EAAE;AAAU,GAAA,CACjB;EAGOmP,QAAQ,GAA+BpQ,KAAK,CAAC,IAAI,CAAC+P,gBAAgB;;WAAC;EAGnEjP,aAAa,GAA+Cd,KAAK,CACxE,IAAI,CAAC5B,cAAc,EAAE0C,aAAa,IAAI,KAAK,EAC1C;AAAA,IAAA,IAAAb,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;AAAAC,IAAAA,SAAS,EAAEY;IACb;EAGSsP,KAAKA,CAAChM,KAAY,EAAA;AAC1B,IAAA,IAAI,IAAI,CAACoH,UAAU,EAAE,IAAI,CAAC,IAAI,CAACyE,WAAW,EAAE,EAAE;AAC5C,MAAA,IAAI,CAACzE,UAAU,EAAE,CAACvJ,IAAI,EAAE;MACxBmC,KAAK,CAACiM,eAAe,EAAE;AACzB;AACF;AAMAC,EAAAA,YAAYA,GAAA;AACV,IAAA,OAAO,IAAI,CAACrP,cAAc,EAAE,GAAG,IAAI,GAAG,IAAI,CAACF,SAAS,EAAE,IAAI,IAAI,CAACmP,iBAAiB;AAClF;;;;;UA5DWL,mBAAmB;AAAA1I,IAAAA,IAAA,EAAA,EAAA;AAAAxB,IAAAA,MAAA,EAAAyB,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAnBuI,mBAAmB;AAAAjI,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,uBAAA;AAAAC,IAAAA,MAAA,EAAA;AAAA0D,MAAAA,UAAA,EAAA;AAAAzD,QAAAA,iBAAA,EAAA,YAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,IAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAApH,MAAAA,SAAA,EAAA;AAAAgH,QAAAA,iBAAA,EAAA,WAAA;AAAAC,QAAAA,UAAA,EAAA,YAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAlH,MAAAA,cAAA,EAAA;AAAA8G,QAAAA,iBAAA,EAAA,gBAAA;AAAAC,QAAAA,UAAA,EAAA,iBAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAjH,MAAAA,QAAA,EAAA;AAAA6G,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAgI,MAAAA,QAAA,EAAA;AAAApI,QAAAA,iBAAA,EAAA,UAAA;AAAAC,QAAAA,UAAA,EAAA,UAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;OAAA;AAAAtH,MAAAA,aAAA,EAAA;AAAAkH,QAAAA,iBAAA,EAAA,eAAA;AAAAC,QAAAA,UAAA,EAAA,eAAA;AAAAC,QAAAA,QAAA,EAAA,IAAA;AAAAC,QAAAA,UAAA,EAAA,KAAA;AAAAC,QAAAA,iBAAA,EAAA;AAAA;KAAA;AAAAiH,IAAAA,IAAA,EAAA;AAAAE,MAAAA,SAAA,EAAA;AAAA,QAAA,OAAA,EAAA;OAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,eAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;IAAA1G,QAAA,EAAA,CAAA,qBAAA,CAAA;AAAAC,IAAAA,QAAA,EAAA3B,EAAA;AAAA4B,IAAAA,QAAA,ECzChC,kgCAwBA;AAAAE,IAAAA,YAAA,EAAA,CAAA;AAAAC,MAAAA,IAAA,EAAA,WAAA;AAAAxB,MAAAA,IAAA,EDeY4I,aAAa;AAAA1I,MAAAA,QAAA,EAAA,sFAAA;AAAAiB,MAAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA;AAAA,KAAA,CAAA;AAAAM,IAAAA,eAAA,EAAAhC,EAAA,CAAAiC,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAnC,EAAA,CAAAoC,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAEZoG,mBAAmB;AAAAnG,EAAAA,UAAA,EAAA,CAAA;UAhB/BpC,SAAS;AACEqC,IAAAA,IAAA,EAAA,CAAA;AAAA9B,MAAAA,QAAA,EAAA,uBAAuB;AAE3BuH,MAAAA,IAAA,EAAA;AACJ,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,iBAAiB,EAAE,MAAM;AAIzB,QAAA,SAAS,EAAE;OACZ;AAAAtG,MAAAA,QAAA,EACS,qBAAqB;MAAAS,aAAA,EAChBC,iBAAiB,CAACC,IAAI;MAAAL,eAAA,EACpBC,uBAAuB,CAACC,MAAM;MAAAM,OAAA,EACtC,CAAC2G,aAAa,CAAC;AAAAvH,MAAAA,QAAA,EAAA;KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MErBbwH,mBAAmB,CAAA;;;;;UAAnBA,mBAAmB;AAAArJ,IAAAA,IAAA,EAAA,EAAA;AAAAxB,IAAAA,MAAA,EAAAyB,EAAA,CAAAC,eAAA,CAAAoJ;AAAA,GAAA,CAAA;AAAnB,EAAA,OAAAC,IAAA,GAAAtJ,EAAA,CAAAuJ,mBAAA,CAAA;AAAAlJ,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,QAAA;AAAAqB,IAAAA,QAAA,EAAA3B,EAAA;AAAAO,IAAAA,IAAA,EAAA6I,mBAAmB;AAHpB5G,IAAAA,OAAA,EAAA,CAAAhM,aAAa,EAAE2M,kBAAkB,EAAEsF,mBAAmB,CACtD;IAAAe,OAAA,EAAA,CAAAC,mBAAmB,EAAEjT,aAAa,EAAE2M,kBAAkB,EAAEsF,mBAAmB;AAAA,GAAA,CAAA;AAE1E,EAAA,OAAAiB,IAAA,GAAA1J,EAAA,CAAA2J,mBAAA,CAAA;AAAAtJ,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,QAAA;AAAAqB,IAAAA,QAAA,EAAA3B,EAAA;AAAAO,IAAAA,IAAA,EAAA6I,mBAAmB;AAHpB5G,IAAAA,OAAA,EAAA,CAAAhM,aAAa,EAAsBiS,mBAAmB,EACtDgB,mBAAmB;AAAA,GAAA,CAAA;;;;;;QAElBL,mBAAmB;AAAA9G,EAAAA,UAAA,EAAA,CAAA;UAJ/B+G,QAAQ;AAAC9G,IAAAA,IAAA,EAAA,CAAA;AACRC,MAAAA,OAAO,EAAE,CAAChM,aAAa,EAAE2M,kBAAkB,EAAEsF,mBAAmB,CAAC;MACjEe,OAAO,EAAE,CAACC,mBAAmB,EAAEjT,aAAa,EAAE2M,kBAAkB,EAAEsF,mBAAmB;KACtF;;;;;;"}