{"version":3,"file":"skyux-forms.mjs","sources":["../../../../../libs/components/forms/src/lib/modules/shared/sky-forms-resources.module.ts","../../../../../libs/components/forms/src/lib/modules/character-counter/character-counter-screen-reader.pipe.ts","../../../../../libs/components/forms/src/lib/modules/character-counter/character-counter-indicator.component.ts","../../../../../libs/components/forms/src/lib/modules/character-counter/character-counter-indicator.component.html","../../../../../libs/components/forms/src/lib/modules/character-counter/character-counter.directive.ts","../../../../../libs/components/forms/src/lib/modules/character-counter/character-counter.module.ts","../../../../../libs/components/forms/src/lib/modules/form-error/form-errors-enabled-token.ts","../../../../../libs/components/forms/src/lib/modules/form-error/form-error.component.ts","../../../../../libs/components/forms/src/lib/modules/form-error/form-error.module.ts","../../../../../libs/components/forms/src/lib/modules/form-error/form-errors.component.ts","../../../../../libs/components/forms/src/lib/modules/form-error/form-errors.component.html","../../../../../libs/components/forms/src/lib/modules/form-error/form-errors.module.ts","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-group.component.ts","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-group.component.html","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-label-text-label.component.ts","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-label-text-label.component.html","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-label.component.ts","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-label.component.html","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox.component.ts","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox.component.html","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox.module.ts","../../../../../libs/components/forms/src/lib/modules/field-group/field-group.component.ts","../../../../../libs/components/forms/src/lib/modules/field-group/field-group.component.html","../../../../../libs/components/forms/src/lib/modules/field-group/field-group.module.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment-label.component.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment-label.component.html","../../../../../libs/components/forms/src/lib/modules/file-attachment/shared/file-size.pipe.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment-join-ids.pipe.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment.service.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/shared/file-item.service.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment.component.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment.component.html","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment.module.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box-host.service.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box-control.directive.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box-hint-text.pipe.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box-adapter.service.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box.component.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box.component.html","../../../../../libs/components/forms/src/lib/modules/input-box/input-box.module.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-drop/file-drop.component.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-drop/file-drop.component.html","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-drop/file-item.component.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-drop/file-item.component.html","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-drop/file-drop.module.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachments.module.ts","../../../../../libs/components/forms/src/lib/modules/radio/radio-group-id.service.ts","../../../../../libs/components/forms/src/lib/modules/radio/radio.component.ts","../../../../../libs/components/forms/src/lib/modules/radio/radio.component.html","../../../../../libs/components/forms/src/lib/modules/radio/radio-group.component.ts","../../../../../libs/components/forms/src/lib/modules/radio/radio-group.component.html","../../../../../libs/components/forms/src/lib/modules/radio/radio-label.component.ts","../../../../../libs/components/forms/src/lib/modules/radio/radio-label.component.html","../../../../../libs/components/forms/src/lib/modules/radio/radio.module.ts","../../../../../libs/components/forms/src/lib/modules/required-state/required-state.directive.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-adapter.service.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-description.component.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-description.component.html","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box.component.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box.component.html","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-grid.component.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-grid.component.html","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-header.component.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-header.component.html","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box.module.ts","../../../../../libs/components/forms/src/lib/modules/toggle-switch/toggle-switch-label.component.ts","../../../../../libs/components/forms/src/lib/modules/toggle-switch/toggle-switch-label.component.html","../../../../../libs/components/forms/src/lib/modules/toggle-switch/toggle-switch.component.ts","../../../../../libs/components/forms/src/lib/modules/toggle-switch/toggle-switch.component.html","../../../../../libs/components/forms/src/lib/modules/toggle-switch/toggle-switch.module.ts","../../../../../libs/components/forms/src/skyux-forms.ts"],"sourcesContent":["/* istanbul ignore file */\n\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-forms' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n  SkyI18nModule,\n  SkyLibResources,\n  SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n  'EN-US': {\n    skyux_character_count_message: { message: '{0} characters out of {1}' },\n    skyux_character_count_over_limit: {\n      message: 'You are over the character limit.',\n    },\n    skyux_form_error_character_count: {\n      message: 'Limit {0} to {1} characters.',\n    },\n    skyux_form_error_date: { message: 'Select or enter a valid date.' },\n    skyux_form_error_date_max: {\n      message: 'Select or enter a date on or before {0}.',\n    },\n    skyux_form_error_date_min: {\n      message: 'Select or enter a date on or after {0}.',\n    },\n    skyux_form_error_fuzzy_date_future_disabled: {\n      message: 'Future dates are disabled. Select or enter a date in the past.',\n    },\n    skyux_form_error_fuzzy_date_invalid: {\n      message: 'Select or enter a valid date.',\n    },\n    skyux_form_error_fuzzy_date_max_date: {\n      message: 'Select or enter a date on or before {0}.',\n    },\n    skyux_form_error_fuzzy_date_min_date: {\n      message: 'Select or enter a date on or after {0}.',\n    },\n    skyux_form_error_fuzzy_date_year_required: { message: 'Year is required.' },\n    skyux_form_error_email: {\n      message: 'Enter an email address with a valid format.',\n    },\n    skyux_form_error_maxlength: { message: 'Limit {0} to {1} characters.' },\n    skyux_form_error_minlength: {\n      message: '{0} must be at least {1} characters.',\n    },\n    skyux_form_error_phone: {\n      message:\n        'Enter a phone number matching the format for the selected country.',\n    },\n    skyux_form_error_required: { message: '{0} is required.' },\n    skyux_form_error_time: { message: 'Select or enter a valid time.' },\n    skyux_form_error_url: { message: 'Enter a URL with a valid format.' },\n    skyux_form_group_required: { message: 'Required' },\n    skyux_file_attachment_button_label_choose_file: { message: 'Attach file' },\n    skyux_file_attachment_button_label_choose_file_label: {\n      message: 'Attach file for',\n    },\n    skyux_file_attachment_button_label_replace_file: {\n      message: 'Replace file',\n    },\n    skyux_file_attachment_button_label_replace_file_label: {\n      message: 'Replace file {0} for',\n    },\n    skyux_file_attachment_file_item_delete: { message: 'Delete {0}' },\n    skyux_file_attachment_file_item_remove: { message: 'Remove file {0} for' },\n    skyux_file_attachment_file_size_b_plural: { message: '{0} bytes' },\n    skyux_file_attachment_file_size_b_singular: { message: '{0} byte' },\n    skyux_file_attachment_file_size_gb: { message: '{0} GB' },\n    skyux_file_attachment_file_size_kb: { message: '{0} KB' },\n    skyux_file_attachment_file_size_mb: { message: '{0} MB' },\n    skyux_file_attachment_file_upload_drag_file_here: {\n      message: 'Drag a file here',\n    },\n    skyux_file_attachment_file_upload_drag_or_click: {\n      message: 'Drag a file here or click to browse',\n    },\n    skyux_file_attachment_file_upload_drop_files_here: {\n      message: 'Drop files here',\n    },\n    skyux_file_attachment_file_upload_file_added: { message: '{0} added.' },\n    skyux_file_attachment_file_upload_file_replaced: {\n      message: '{0} removed. {1} added.',\n    },\n    skyux_file_attachment_file_upload_file_removed: { message: '{0} removed.' },\n    skyux_file_attachment_file_upload_image_preview_alt_text: {\n      message: 'Image preview',\n    },\n    skyux_file_attachment_file_upload_invalid_file: {\n      message: 'This file type is invalid',\n    },\n    skyux_file_attachment_file_upload_link_label: { message: 'Link to a file' },\n    skyux_file_attachment_file_upload_or_click_to_browse: {\n      message: 'or click to browse',\n    },\n    skyux_file_attachment_file_upload_link_done: { message: 'Done' },\n    skyux_file_attachment_file_upload_link_added: {\n      message: 'Link to {0} added.',\n    },\n    skyux_file_attachment_file_upload_link_removed: {\n      message: 'Link to {0} removed.',\n    },\n    skyux_file_attachment_file_type_error_label_text: {\n      message: 'Upload one of these file types: {0}.',\n    },\n    skyux_file_attachment_file_type_error_label_text_with_name: {\n      message: '{0}: Upload one of these file types: {1}.',\n    },\n    skyux_file_attachment_max_file_size_error_label_text: {\n      message: 'Upload a file under {0}.',\n    },\n    skyux_file_attachment_max_file_size_error_label_text_with_name: {\n      message: '{0}: Upload a file under {1}.',\n    },\n    skyux_file_attachment_min_file_size_error_label_text: {\n      message: 'Upload a file over {0}.',\n    },\n    skyux_file_attachment_min_file_size_error_label_text_with_name: {\n      message: '{0}: Upload a file over {1}.',\n    },\n    skyux_file_attachment_label_no_file_chosen: { message: 'No file chosen.' },\n    skyux_file_attachment_required: { message: 'Required' },\n    skyux_input_box_help_inline_aria_label: {\n      message: 'Show help content for {0}',\n    },\n  },\n  'FR-CA': {\n    skyux_character_count_message: { message: '{0} caractères de {1}' },\n    skyux_character_count_over_limit: {\n      message: 'Vous avez dépassé la limite de caractères.',\n    },\n    skyux_form_error_character_count: {\n      message: 'Limite {0} de {1} caractère(s).',\n    },\n    skyux_form_error_date: {\n      message: 'Sélectionnez ou entrez une date valide.',\n    },\n    skyux_form_error_date_max: {\n      message: 'Sélectionnez ou entrez une date le ou avant le {0}.',\n    },\n    skyux_form_error_date_min: {\n      message: 'Sélectionnez ou entrez une date le ou après le {0}.',\n    },\n    skyux_form_error_fuzzy_date_future_disabled: {\n      message:\n        'Les dates futures sont désactivées. Sélectionnez ou entrez une date dans le passé.',\n    },\n    skyux_form_error_fuzzy_date_invalid: {\n      message: 'Sélectionnez ou entrez une date valide.',\n    },\n    skyux_form_error_fuzzy_date_max_date: {\n      message: 'Sélectionnez ou entrez une date le ou avant le {0}.',\n    },\n    skyux_form_error_fuzzy_date_min_date: {\n      message: 'Sélectionnez ou entrez une date le ou après le {0}.',\n    },\n    skyux_form_error_fuzzy_date_year_required: {\n      message: 'L’année est requise.',\n    },\n    skyux_form_error_email: {\n      message: 'Entrez une adresse courriel avec un format valide.',\n    },\n    skyux_form_error_maxlength: { message: 'Limite {0} de {1} caractère(s).' },\n    skyux_form_error_minlength: {\n      message: '{0} doit avoir au moins {1} caractère(s).',\n    },\n    skyux_form_error_phone: {\n      message:\n        'Entrez un numéro de téléphone correspondant au format du pays sélectionné.',\n    },\n    skyux_form_error_required: { message: '{0} est requis.' },\n    skyux_form_error_time: {\n      message: 'Sélectionnez ou entrez une heure valide.',\n    },\n    skyux_form_error_url: { message: 'Entrez une URL avec un format valide.' },\n    skyux_form_group_required: { message: 'Requis' },\n    skyux_file_attachment_button_label_choose_file: {\n      message: 'Joindre un fichier',\n    },\n    skyux_file_attachment_button_label_choose_file_label: {\n      message: 'Joindre un fichier pour',\n    },\n    skyux_file_attachment_button_label_replace_file: {\n      message: 'Remplacer le fichier',\n    },\n    skyux_file_attachment_button_label_replace_file_label: {\n      message: 'Remplacer le fichier {0} pour',\n    },\n    skyux_file_attachment_file_item_delete: { message: 'Supprimer {0}' },\n    skyux_file_attachment_file_item_remove: {\n      message: 'Retirer le fichier {0} pour',\n    },\n    skyux_file_attachment_file_size_b_plural: { message: '{0} octets' },\n    skyux_file_attachment_file_size_b_singular: { message: '{0} octet' },\n    skyux_file_attachment_file_size_gb: { message: '{0} Go' },\n    skyux_file_attachment_file_size_kb: { message: '{0} Ko' },\n    skyux_file_attachment_file_size_mb: { message: '{0} Mo' },\n    skyux_file_attachment_file_upload_drag_file_here: {\n      message: 'Faites glisser un fichier ici',\n    },\n    skyux_file_attachment_file_upload_drag_or_click: {\n      message: 'Faites glisser un fichier ici ou cliquez pour naviguer',\n    },\n    skyux_file_attachment_file_upload_drop_files_here: {\n      message: 'Déplacez les fichiers ici',\n    },\n    skyux_file_attachment_file_upload_file_added: {\n      message: '{0} a été ajouté.',\n    },\n    skyux_file_attachment_file_upload_file_replaced: {\n      message: '{0} a été retiré. {1} a été ajouté.',\n    },\n    skyux_file_attachment_file_upload_file_removed: {\n      message: '{0} a été retiré.',\n    },\n    skyux_file_attachment_file_upload_image_preview_alt_text: {\n      message: 'Aperçu de l’image',\n    },\n    skyux_file_attachment_file_upload_invalid_file: {\n      message: 'Ce type de fichier n’est pas valide',\n    },\n    skyux_file_attachment_file_upload_link_label: {\n      message: 'Liens vers un fichier',\n    },\n    skyux_file_attachment_file_upload_or_click_to_browse: {\n      message: 'ou cliquez pour naviguer',\n    },\n    skyux_file_attachment_file_upload_link_done: { message: 'Terminé' },\n    skyux_file_attachment_file_upload_link_added: {\n      message: 'Le lien vers {0} a été ajouté.',\n    },\n    skyux_file_attachment_file_upload_link_removed: {\n      message: 'Le lien vers {0} a été retiré.',\n    },\n    skyux_file_attachment_file_type_error_label_text: {\n      message: 'Téléversez l’un de ces types de fichier : {0}.',\n    },\n    skyux_file_attachment_file_type_error_label_text_with_name: {\n      message: '{0} : Téléversez l’un de ces types de fichier : {1}.',\n    },\n    skyux_file_attachment_max_file_size_error_label_text: {\n      message: 'Téléversez un fichier de moins de {0}.',\n    },\n    skyux_file_attachment_max_file_size_error_label_text_with_name: {\n      message: '{0} : Téléversez un fichier de moins de {1}.',\n    },\n    skyux_file_attachment_min_file_size_error_label_text: {\n      message: 'Téléversez un fichier de plus de {0}.',\n    },\n    skyux_file_attachment_min_file_size_error_label_text_with_name: {\n      message: '{0} : Téléversez un fichier de plus de {1}.',\n    },\n    skyux_file_attachment_label_no_file_chosen: {\n      message: 'Aucun fichier choisi.',\n    },\n    skyux_file_attachment_required: { message: 'Requis' },\n    skyux_input_box_help_inline_aria_label: {\n      message: 'Afficher le contenu de l’aide pour {0}',\n    },\n  },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n  exports: [SkyI18nModule],\n})\nexport class SkyFormsResourcesModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'skyCharacterCounterScreenReader',\n})\nexport class SkyCharacterCounterScreenReaderPipe implements PipeTransform {\n  #previousAnnouncementPoint: number | undefined;\n\n  public transform(\n    characterCount: number | undefined,\n    characterCountLimit: number | undefined,\n  ): string {\n    /* Safety check */\n    /* istanbul ignore if */\n    if (characterCount === undefined || characterCountLimit === undefined) {\n      return '';\n    }\n\n    // We want to announce every 10 characters if we are within 50 of the limit or every 50 otherwise.\n    const modulus =\n      characterCountLimit - Math.floor(characterCount / 10) * 10 <= 50\n        ? 10\n        : 50;\n\n    if (\n      characterCount === characterCountLimit ||\n      characterCount % modulus === 0 ||\n      this.#previousAnnouncementPoint === undefined\n    ) {\n      this.#previousAnnouncementPoint = characterCount;\n    } else {\n      // We want the floor of the previous announcement and modulus in case the previous announcement wasn't an announcement point.\n      const previousAnnouncementQuotient = Math.floor(\n        this.#previousAnnouncementPoint / modulus,\n      );\n      // Lower limit of what announcement should have been made for the current count\n      const currentAnnouncementQuotient = Math.floor(characterCount / modulus);\n      // Next announcement that would be made if the current count increases\n      const currentAnnouncementNextAnnouncement = Math.ceil(\n        characterCount / modulus,\n      );\n\n      // Jump to the appropriate announcement point if the count jumps. For example, if going from 43 of 50 characters to 21 of 50 characters.\n      if (\n        currentAnnouncementQuotient !== previousAnnouncementQuotient &&\n        currentAnnouncementNextAnnouncement !== previousAnnouncementQuotient\n      ) {\n        this.#previousAnnouncementPoint =\n          Math.floor(characterCount / modulus) * modulus;\n      }\n    }\n\n    return this.#previousAnnouncementPoint.toLocaleString();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Input,\n} from '@angular/core';\n\n@Component({\n  selector: 'sky-character-counter-indicator',\n  templateUrl: './character-counter-indicator.component.html',\n  styleUrls: ['./character-counter-indicator.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SkyCharacterCounterIndicatorComponent {\n  #_characterCountLimit = 0;\n  #_characterCount = 0;\n\n  #changeDetector: ChangeDetectorRef;\n\n  constructor(changeDetector: ChangeDetectorRef) {\n    this.#changeDetector = changeDetector;\n  }\n\n  public get characterCount(): number {\n    return this.#_characterCount;\n  }\n\n  @Input()\n  public set characterCount(count: number) {\n    this.#_characterCount = count;\n    this.#changeDetector.markForCheck();\n  }\n\n  public get characterCountLimit(): number {\n    return this.#_characterCountLimit;\n  }\n\n  @Input()\n  public set characterCountLimit(limit: number) {\n    this.#_characterCountLimit = limit;\n    this.#changeDetector.markForCheck();\n  }\n}\n","<span\n  class=\"sky-character-count-label sky-font-deemphasized\"\n  [ngClass]=\"{ 'sky-error-label': characterCount > characterCountLimit }\"\n>\n  {{ characterCount + '/' + characterCountLimit }}\n</span>\n<span aria-live=\"polite\" class=\"sky-screen-reader-only\">\n  @if (characterCount > characterCountLimit) {\n    <ng-container>{{\n      'skyux_character_count_over_limit' | skyLibResources\n    }}</ng-container>\n  } @else {\n    @if (\n      characterCount | skyCharacterCounterScreenReader: characterCountLimit;\n      as screenReaderCount\n    ) {\n      <ng-container>{{\n        'skyux_character_count_message'\n          | skyLibResources: screenReaderCount : characterCountLimit\n      }}</ng-container>\n    }\n  }\n</span>\n","import { Directive, Input } from '@angular/core';\nimport {\n  AbstractControl,\n  NG_VALIDATORS,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\n\nimport { SkyCharacterCounterIndicatorComponent } from './character-counter-indicator.component';\n\n/**\n * Creates an input field that validates the number of characters. Place this directive on\n * an `input` or `textarea` element. If users enter more characters than allowed, then the\n * input field is invalid and the component displays an error indicator.\n * @required\n */\n@Directive({\n  selector: '[skyCharacterCounter]',\n  providers: [\n    {\n      provide: NG_VALIDATORS,\n      useExisting: SkyCharacterCounterInputDirective,\n      multi: true,\n    },\n  ],\n  standalone: false,\n})\nexport class SkyCharacterCounterInputDirective implements Validator {\n  /**\n   * The character count indicator component that displays the character count,\n   * character limit, and over-the-limit indicator. Place this directive on an `input` or\n   * `textarea` element.\n   */\n  @Input()\n  public get skyCharacterCounterIndicator():\n    | SkyCharacterCounterIndicatorComponent\n    | undefined {\n    return this.#_skyCharacterCounterIndicator;\n  }\n  public set skyCharacterCounterIndicator(\n    value: SkyCharacterCounterIndicatorComponent | undefined,\n  ) {\n    this.#_skyCharacterCounterIndicator = value;\n    this.#updateIndicatorLimit();\n  }\n\n  /**\n   * The maximum number of characters allowed in the input field. Place this directive\n   * on an `input` or `textarea` element. This property accepts `number` values.\n   * @required\n   */\n  @Input()\n  public set skyCharacterCounterLimit(value: number | undefined) {\n    this.#skyCharacterCounterLimitOrDefault = value ?? 0;\n    this.#updateIndicatorLimit();\n  }\n\n  #_skyCharacterCounterIndicator:\n    | SkyCharacterCounterIndicatorComponent\n    | undefined;\n\n  #skyCharacterCounterLimitOrDefault = 0;\n\n  public validate(control: AbstractControl): ValidationErrors | null {\n    const value = control.value;\n\n    this.#updateIndicatorCount((value && value.length) || 0);\n\n    if (!value) {\n      return null;\n    }\n\n    const limit = this.#skyCharacterCounterLimitOrDefault;\n\n    if (value.length > this.#skyCharacterCounterLimitOrDefault) {\n      // This is needed to apply the appropriate error styles to the input.\n      control.markAsTouched();\n\n      return {\n        skyCharacterCounter: {\n          invalid: value,\n          limit,\n        },\n      };\n    }\n\n    return null;\n  }\n\n  public registerOnValidatorChange(fn: () => void): void {\n    this.#validatorChange = fn;\n  }\n\n  #updateIndicatorCount(count: number): void {\n    if (this.skyCharacterCounterIndicator) {\n      this.skyCharacterCounterIndicator.characterCount = count;\n    }\n  }\n\n  #updateIndicatorLimit(): void {\n    if (this.skyCharacterCounterIndicator) {\n      this.skyCharacterCounterIndicator.characterCountLimit =\n        this.#skyCharacterCounterLimitOrDefault;\n    }\n\n    this.#validatorChange();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  #validatorChange = (): void => {};\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyCharacterCounterIndicatorComponent } from './character-counter-indicator.component';\nimport { SkyCharacterCounterScreenReaderPipe } from './character-counter-screen-reader.pipe';\nimport { SkyCharacterCounterInputDirective } from './character-counter.directive';\n\n@NgModule({\n  declarations: [\n    SkyCharacterCounterInputDirective,\n    SkyCharacterCounterIndicatorComponent,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    SkyCharacterCounterScreenReaderPipe,\n    SkyFormsResourcesModule,\n  ],\n  exports: [\n    SkyCharacterCounterInputDirective,\n    SkyCharacterCounterIndicatorComponent,\n  ],\n})\nexport class SkyCharacterCounterModule {}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * @internal\n */\nexport const SKY_FORM_ERRORS_ENABLED = new InjectionToken<boolean>(\n  'SKY_FORM_ERRORS_ENABLED',\n);\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Input,\n  inject,\n} from '@angular/core';\nimport { SkyStatusIndicatorModule } from '@skyux/indicators';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { SKY_FORM_ERRORS_ENABLED } from './form-errors-enabled-token';\n\n/**\n * Displays default and custom form field error messages for form field components.\n * Set `labelText` on the `SkyInputBoxComponent` to automatically display required,\n * maximum length, minimum length, date, email, phone number, time, and URL errors.\n * To display custom errors, include `sky-form-error` elements in the `SkyInputBoxComponent`.\n */\n@Component({\n  selector: 'sky-form-error',\n  imports: [SkyStatusIndicatorModule],\n  template: `\n    @if (formErrors) {\n      <sky-status-indicator\n        class=\"sky-form-error\"\n        descriptionType=\"error\"\n        indicatorType=\"danger\"\n      >\n        {{ errorText }}\n      </sky-status-indicator>\n    }\n  `,\n  styleUrl: './form-error.component.scss',\n  hostDirectives: [SkyThemeComponentClassDirective],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyFormErrorComponent {\n  /**\n   * The name of the error.\n   * @required\n   */\n  @Input({ required: true })\n  public errorName!: string;\n\n  /**\n   * The error message to display.\n   * @required\n   */\n  @Input({ required: true })\n  public errorText!: string;\n\n  @HostBinding('attr.data-error-name') public get dataErrorName(): string {\n    return this.errorName;\n  }\n\n  protected readonly formErrors = inject(SKY_FORM_ERRORS_ENABLED, {\n    optional: true,\n  });\n\n  constructor() {\n    if (!this.formErrors) {\n      throw new Error(\n        'The `sky-form-error` component is not supported in the provided context.',\n      );\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyFormErrorComponent } from './form-error.component';\n\n@NgModule({\n  imports: [SkyFormErrorComponent],\n  exports: [SkyFormErrorComponent],\n})\nexport class SkyFormErrorModule {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Input,\n  booleanAttribute,\n} from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\n\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyFormErrorComponent } from './form-error.component';\n\n/**\n * @internal\n */\n@Component({\n  selector: 'sky-form-errors',\n  imports: [SkyIdModule, SkyFormErrorComponent, SkyFormsResourcesModule],\n  templateUrl: './form-errors.component.html',\n  styleUrls: ['./form-errors.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyFormErrorsComponent {\n  /**\n   * The validation errors from the form control.\n   */\n  @Input()\n  public errors: ValidationErrors | null | undefined;\n\n  /**\n   * Input label text to display in the error messages.\n   */\n  @Input()\n  public labelText: string | undefined;\n\n  /**\n   * Indicates whether the parent component's control is touched\n   */\n  @Input({ transform: booleanAttribute })\n  public touched = false;\n\n  /**\n   * Indicates whether the parent component's control is dirty\n   */\n  @Input({ transform: booleanAttribute })\n  public dirty = false;\n\n  @HostBinding('attr.aria-atomic')\n  protected readonly ariaAtomic = 'true';\n\n  @HostBinding('attr.aria-live')\n  protected readonly ariaLive = 'assertive';\n\n  @HostBinding('attr.aria-relevant')\n  protected readonly ariaRelevant = 'all';\n}\n","@if (labelText) {\n  @if (touched) {\n    @if (errors?.['required']) {\n      <sky-form-error\n        errorName=\"required\"\n        [errorText]=\"'skyux_form_error_required' | skyLibResources: labelText\"\n      />\n    }\n\n    @if (errors?.['minlength']; as minLengthError) {\n      <sky-form-error\n        errorName=\"minlength\"\n        [errorText]=\"\n          'skyux_form_error_minlength'\n            | skyLibResources: labelText : minLengthError.requiredLength\n        \"\n      />\n    }\n\n    @if (errors?.['skyDate'] && errors?.['skyDate']['invalid']) {\n      <sky-form-error\n        errorName=\"invalidDate\"\n        [errorText]=\"'skyux_form_error_date' | skyLibResources\"\n      />\n    }\n\n    @if (errors?.['skyDate'] && errors?.['skyDate']['minDate']) {\n      <sky-form-error\n        errorName=\"minDate\"\n        [errorText]=\"\n          'skyux_form_error_date_min'\n            | skyLibResources: errors?.['skyDate']['minDateFormatted']\n        \"\n      />\n    }\n\n    @if (errors?.['skyDate'] && errors?.['skyDate']['maxDate']) {\n      <sky-form-error\n        errorName=\"maxDate\"\n        [errorText]=\"\n          'skyux_form_error_date_max'\n            | skyLibResources: errors?.['skyDate']['maxDateFormatted']\n        \"\n      />\n    }\n\n    @if (\n      errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['futureDisabled']\n    ) {\n      <sky-form-error\n        errorName=\"fuzzyFutureDisabled\"\n        [errorText]=\"\n          'skyux_form_error_fuzzy_date_future_disabled' | skyLibResources\n        \"\n      />\n    }\n\n    @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['invalid']) {\n      <sky-form-error\n        errorName=\"fuzzyInvalidDate\"\n        [errorText]=\"'skyux_form_error_fuzzy_date_invalid' | skyLibResources\"\n      />\n    }\n\n    @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['maxDate']) {\n      <sky-form-error\n        errorName=\"fuzzyMaxDate\"\n        [errorText]=\"\n          'skyux_form_error_fuzzy_date_max_date'\n            | skyLibResources: errors?.['skyFuzzyDate']['maxDateFormatted']\n        \"\n      />\n    }\n\n    @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['minDate']) {\n      <sky-form-error\n        errorName=\"fuzzyMinDate\"\n        [errorText]=\"\n          'skyux_form_error_fuzzy_date_min_date'\n            | skyLibResources\n              : errors?.['skyFuzzyDate'] &&\n                  errors?.['skyFuzzyDate']['minDateFormatted']\n        \"\n      />\n    }\n\n    @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['yearRequired']) {\n      <sky-form-error\n        errorName=\"fuzzyYearRequired\"\n        [errorText]=\"\n          'skyux_form_error_fuzzy_date_year_required' | skyLibResources\n        \"\n      />\n    }\n\n    @if (errors?.['skyEmail']) {\n      <sky-form-error\n        errorName=\"email\"\n        [errorText]=\"'skyux_form_error_email' | skyLibResources\"\n      />\n    }\n\n    @if (errors?.['skyPhoneField']) {\n      <sky-form-error\n        errorName=\"phone\"\n        [errorText]=\"'skyux_form_error_phone' | skyLibResources\"\n      />\n    }\n\n    @if (errors?.['skyTime']) {\n      <sky-form-error\n        errorName=\"time\"\n        [errorText]=\"'skyux_form_error_time' | skyLibResources\"\n      />\n    }\n\n    @if (errors?.['skyUrl']) {\n      <sky-form-error\n        errorName=\"url\"\n        [errorText]=\"'skyux_form_error_url' | skyLibResources\"\n      />\n    }\n  }\n\n  @if (touched || dirty) {\n    @if (errors?.['maxlength']; as maxLengthError) {\n      <sky-form-error\n        errorName=\"maxlength\"\n        [errorText]=\"\n          'skyux_form_error_maxlength'\n            | skyLibResources: labelText : maxLengthError.requiredLength\n        \"\n      />\n    }\n    <ng-content />\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyFormErrorComponent } from './form-error.component';\nimport { SkyFormErrorsComponent } from './form-errors.component';\n\n/**\n * @internal\n */\n@NgModule({\n  imports: [SkyFormErrorsComponent, SkyFormErrorComponent],\n  exports: [SkyFormErrorsComponent],\n})\nexport class SkyFormErrorsModule {}\n","import { CommonModule } from '@angular/common';\nimport {\n  Component,\n  HostBinding,\n  Input,\n  TemplateRef,\n  booleanAttribute,\n  inject,\n  numberAttribute,\n} from '@angular/core';\nimport {\n  FormGroup,\n  NG_VALIDATORS,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\nimport { SkyIdModule, SkyIdService } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyThemeComponentClassDirective, SkyThemeModule } from '@skyux/theme';\n\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyCheckboxGroupHeadingLevel } from './checkbox-group-heading-level';\nimport { SkyCheckboxGroupHeadingStyle } from './checkbox-group-heading-style';\n\nfunction numberAttribute4(value: unknown): number {\n  return numberAttribute(value, 4);\n}\n\n/**\n * Organizes checkboxes into a group.\n */\n@Component({\n  selector: 'sky-checkbox-group',\n  templateUrl: './checkbox-group.component.html',\n  styleUrl: './checkbox-group.component.scss',\n  imports: [\n    CommonModule,\n    SkyFormErrorsModule,\n    SkyFormsResourcesModule,\n    SkyHelpInlineModule,\n    SkyIdModule,\n    SkyThemeModule,\n  ],\n  providers: [\n    {\n      provide: NG_VALIDATORS,\n      useExisting: SkyCheckboxGroupComponent,\n      multi: true,\n    },\n    { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n  ],\n  hostDirectives: [SkyThemeComponentClassDirective],\n})\nexport class SkyCheckboxGroupComponent implements Validator {\n  /**\n   * The content of the help popover. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to the checkbox group fieldset legend. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title. This property only applies when `headingText` is also specified.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  /**\n   * The text to display as the checkbox group's heading.\n   */\n  @Input({ required: true })\n  public headingText!: string;\n\n  /**\n   * Indicates whether to hide the `headingText`.\n   */\n  @Input({ transform: booleanAttribute })\n  public headingHidden = false;\n\n  /**\n   * The semantic heading level in the document structure. By default, the heading text is not wrapped in a heading element.\n   */\n  @Input({ transform: numberAttribute })\n  public set headingLevel(value: SkyCheckboxGroupHeadingLevel | undefined) {\n    this.#_headingLevel = value && !isNaN(value) ? value : undefined;\n    this.#updateStackedClasses();\n  }\n\n  public get headingLevel(): SkyCheckboxGroupHeadingLevel | undefined {\n    return this.#_headingLevel;\n  }\n\n  /**\n   * The heading [font style](https://developer.blackbaud.com/skyux/design/styles/typography#headings).\n   * @default 4\n   */\n  @Input({ transform: numberAttribute4 })\n  public set headingStyle(value: SkyCheckboxGroupHeadingStyle) {\n    this.headingClass = `sky-font-heading-${value}`;\n  }\n\n  /**\n   * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n   * additional context to the user.\n   */\n  @Input()\n  public hintText: string | undefined;\n\n  /**\n   * Whether the checkbox group is required.\n   */\n  @Input({ transform: booleanAttribute })\n  public required = false;\n\n  /**\n   * Whether the checkbox group is stacked on another form component. When specified, the appropriate\n   * vertical spacing is automatically added to the checkbox group.\n   */\n  @Input({ transform: booleanAttribute })\n  public set stacked(value: boolean) {\n    this.#_stacked = value;\n    this.#updateStackedClasses();\n  }\n\n  public get stacked(): boolean {\n    return this.#_stacked;\n  }\n\n  /**\n   * A help key that identifies the global help content to display. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is placed beside the checkbox group heading. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n   * as configured by the application. This property only applies when `headingText` is also specified.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  @HostBinding('class.sky-form-field-stacked')\n  public stackedLg = false;\n\n  @HostBinding('class.sky-field-group-stacked')\n  public stackedXL = false;\n\n  readonly #idSvc = inject(SkyIdService);\n  protected errorId = this.#idSvc.generateId();\n  protected headingClass = 'sky-font-heading-4';\n  protected formErrorsDataId = 'checkbox-group-form-errors';\n  protected formGroup: FormGroup | null | undefined;\n\n  #_headingLevel: SkyCheckboxGroupHeadingLevel | undefined;\n  #_stacked = false;\n\n  public validate(formGroup: FormGroup): ValidationErrors | null {\n    this.formGroup ??= formGroup;\n\n    if (!this.required) {\n      return null;\n    }\n\n    const controlNames = Object.keys(formGroup.controls);\n    let atLeastOneSelected = false;\n\n    controlNames.forEach((controlName) => {\n      const control = formGroup.get(controlName);\n      if (control?.value) {\n        atLeastOneSelected = true;\n      }\n    });\n\n    if (!atLeastOneSelected) {\n      return { required: true };\n    } else {\n      return null;\n    }\n  }\n\n  #updateStackedClasses(): void {\n    this.stackedLg = !this.headingLevel && this.stacked;\n    this.stackedXL = !!this.headingLevel && this.stacked;\n  }\n}\n","<fieldset\n  class=\"sky-checkbox-group\"\n  [attr.aria-invalid]=\"!!formGroup?.errors\"\n  [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n  [attr.aria-errormessage]=\"\n    headingText && formGroup?.errors ? errorId : undefined\n  \"\n>\n  <legend\n    class=\"sky-checkbox-group-legend\"\n    [ngClass]=\"{\n      'sky-screen-reader-only': headingHidden\n    }\"\n  >\n    <span\n      class=\"sky-checkbox-group-heading\"\n      [ngClass]=\"{\n        'sky-control-label-required': required\n      }\"\n    >\n      @switch (headingLevel) {\n        @case (3) {\n          <h3 [class]=\"headingClass\">{{ headingText }}</h3>\n        }\n        @case (4) {\n          <h4 [class]=\"headingClass\">{{ headingText }}</h4>\n        }\n        @case (5) {\n          <h5 [class]=\"headingClass\">{{ headingText }}</h5>\n        }\n        @default {\n          <span [class]=\"'sky-checkbox-group-heading-text ' + headingClass\">{{\n            headingText\n          }}</span>\n        }\n      }\n    </span>\n    @if (required) {\n      <span class=\"sky-screen-reader-only\">{{\n        'skyux_form_group_required' | skyLibResources\n      }}</span>\n    }\n    @if (helpPopoverContent || helpKey) {\n      <span class=\"sky-control-help-container\">\n        <sky-help-inline\n          [helpKey]=\"helpKey\"\n          [labelText]=\"headingText\"\n          [popoverTitle]=\"helpPopoverTitle\"\n          [popoverContent]=\"helpPopoverContent\"\n        />\n      </span>\n    }\n  </legend>\n  <div\n    #hintTextEl=\"skyId\"\n    skyId\n    [ngClass]=\"{\n      'sky-checkbox-group-hint-text': !!hintText\n    }\"\n    [skyThemeClass]=\"{\n      'sky-font-deemphasized': 'default',\n      'sky-font-hint-text-s': 'modern'\n    }\"\n  >\n    {{ hintText }}\n  </div>\n  <span class=\"sky-checkbox-group-inline sky-switch-icon-group\">\n    <ng-content select=\"sky-checkbox[iconName]\" />\n  </span>\n  <span class=\"sky-checkbox-group-stacked\">\n    <ng-content select=\"sky-checkbox\" />\n  </span>\n</fieldset>\n<sky-form-errors\n  [id]=\"errorId\"\n  [attr.data-sky-id]=\"formErrorsDataId\"\n  [errors]=\"formGroup?.errors\"\n  [labelText]=\"headingText\"\n  [touched]=\"formGroup?.touched\"\n  [dirty]=\"formGroup?.dirty\"\n>\n  <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n","import { Component, Input } from '@angular/core';\n\n/**\n@internal\n */\n@Component({\n  selector: 'sky-checkbox-label-text-label',\n  styleUrls: [\n    './checkbox-label-text-label.default.component.scss',\n    './checkbox-label-text-label.modern.component.scss',\n  ],\n  templateUrl: './checkbox-label-text-label.component.html',\n  standalone: false,\n})\nexport class SkyCheckboxLabelTextLabelComponent {\n  @Input()\n  public labelHidden = false;\n\n  @Input()\n  public set labelText(value: string) {\n    this.#_labelText = value.trim();\n  }\n\n  public get labelText(): string {\n    return this.#_labelText;\n  }\n\n  #_labelText = '';\n}\n","@if (!labelHidden) {\n  <span class=\"sky-switch-label\">{{ labelText }}</span>\n}\n","import { Component } from '@angular/core';\n\n/**\n * Specifies a label for the checkbox. To display a help button beside the label, include a help button element, such as\n * `sky-help-inline`, in the `sky-checkbox-label` element and a `sky-control-help` CSS class on that help button\n * element.\n * @deprecated Use `labelText` input on `sky-checkbox-component` instead.\n */\n@Component({\n  selector: 'sky-checkbox-label',\n  templateUrl: './checkbox-label.component.html',\n  standalone: false,\n})\nexport class SkyCheckboxLabelComponent {}\n","<span class=\"sky-switch-label\"\n  ><span skyTrim><ng-content /></span\n  ><span class=\"sky-control-help-container\"\n    ><ng-content select=\".sky-control-help\" /></span\n></span>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild,\n  booleanAttribute,\n  inject,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  Validators,\n} from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\n\nimport { SkyCheckboxChange } from './checkbox-change';\n\n/**\n * Replaces the HTML input element with `type=\"checkbox\"`. When users select a checkbox, its value\n * is driven through an `ngModel` attribute that you specify on the `sky-checkbox` element.\n */\n@Component({\n  selector: 'sky-checkbox',\n  templateUrl: './checkbox.component.html',\n  styleUrls: [\n    './checkbox.default.component.scss',\n    './checkbox.modern.component.scss',\n  ],\n  hostDirectives: [SkyThemeComponentClassDirective],\n  providers: [\n    { provide: NG_VALIDATORS, useExisting: SkyCheckboxComponent, multi: true },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: SkyCheckboxComponent,\n      multi: true,\n    },\n    { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n  ],\n  standalone: false,\n})\nexport class SkyCheckboxComponent\n  implements AfterViewInit, ControlValueAccessor, Validator\n{\n  /**\n   * The ARIA label for the checkbox. This sets the checkbox's `aria-label` attribute\n   * [to support accessibility](https://developer.blackbaud.com/skyux/components/checkbox#accessibility)\n   * when the checkbox does not include a visible label. You must set this property for icon\n   * checkboxes. If the checkbox includes a visible label, use `labelledBy` instead.\n   * @deprecated Use `labelText` instead.\n   */\n  @Input()\n  public set label(value: string | undefined) {\n    this.#_label = value;\n\n    if (value) {\n      this.#logger.deprecated('SkyCheckboxComponent.label', {\n        deprecationMajorVersion: 9,\n      });\n    }\n  }\n\n  public get label(): string | undefined {\n    return this.#_label;\n  }\n\n  /**\n   * The HTML element ID of the element that labels the\n   * checkbox. This sets the checkbox's `aria-labelledby` attribute\n   * [to support accessibility](https://developer.blackbaud.com/skyux/components/checkbox#accessibility).\n   * If the checkbox does not include a visible label, use `label` instead.\n   * @deprecated Use `labelText` instead.\n   */\n  @Input()\n  public set labelledBy(value: string | undefined) {\n    this.#_labelledBy = value;\n\n    if (value) {\n      this.#logger.deprecated('SkyCheckboxComponent.labelledBy', {\n        deprecationMajorVersion: 9,\n      });\n    }\n  }\n\n  public get labelledBy(): string | undefined {\n    return this.#_labelledBy;\n  }\n\n  /**\n   * The ID for the checkbox.\n   * If a value is not provided, an autogenerated ID is used.\n   */\n  @Input()\n  public set id(value: string | undefined) {\n    if (value) {\n      this.inputId = `sky-checkbox-${value}-input`;\n    } else {\n      this.inputId = `sky-checkbox-${this.#defaultId}-input`;\n    }\n  }\n\n  /**\n   * Whether to disable the checkbox on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n   * To set the disabled state on reactive forms, use the `FormControl` instead.\n   * @default false\n   */\n  @Input({ transform: booleanAttribute })\n  public set disabled(value: boolean) {\n    if (value !== this.#_disabled) {\n      this.#_disabled = value;\n      this.#disabledChange.next(value);\n    }\n  }\n\n  /**\n   * Whether the checkbox is disabled.\n   */\n  public get disabled(): boolean {\n    return this.#_disabled;\n  }\n\n  /**\n   * The index for the checkbox. If not defined, the index is set to the position of the\n   * checkbox on load.\n   */\n  @Input()\n  public tabindex: number | undefined = 0;\n\n  /**\n   * The name for the checkbox.\n   * If a value is not provided, an autogenerated ID is used.\n   */\n  @Input()\n  public set name(value: string | undefined) {\n    if (value && value !== this.#defaultId) {\n      this.#_name = value;\n    } else {\n      this.#_name = `sky-checkbox-${this.#defaultId}`;\n    }\n  }\n\n  public get name(): string {\n    return this.#_name;\n  }\n\n  /**\n   * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to the checkbox label. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  /**\n   * Fires when the selected value changes.\n   */\n  @Output()\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  public change = new EventEmitter<SkyCheckboxChange>();\n\n  /**\n   * The SVG icon to display in place of the checkbox. To group icon checkboxes\n   * like in the demo, place the checkboxes within a `sky-checkbox-group`.\n   */\n  @Input()\n  public iconName: string | undefined;\n\n  /**\n   * The background color type after users select a checkbox where the\n   * `icon` property displays an icon in place of the checkbox. The valid options correspond to\n   * [the label component's](https://developer.blackbaud.com/skyux/components/label)\n   * label types. `\"info\"` creates a blue background, `\"success\"` creates a green\n   * background, `\"warning\"` creates an orange background, and `\"danger\"` creates a red background.\n   * @default \"info\"\n   * @deprecated The `checkboxType` input is no longer supported.\n   */\n  @Input()\n  public set checkboxType(value: string | undefined) {\n    if (value) {\n      this.#logger.deprecated('SkyCheckboxComponent.checkboxType', {\n        deprecationMajorVersion: 7,\n      });\n    }\n\n    this.#_checkboxType = value ? value.toLowerCase() : 'info';\n  }\n\n  public get checkboxType(): string {\n    return this.#_checkboxType;\n  }\n\n  /**\n   * Whether the checkbox is selected.\n   * @default false\n   */\n  @Input()\n  public set checked(value: boolean | undefined) {\n    const checked = !!value;\n    if (checked !== this.#_checked) {\n      this.#_checked = checked;\n      this.#checkedChange.next(checked);\n    }\n  }\n\n  /**\n   * Whether the checkbox is selected.\n   */\n  public get checked(): boolean {\n    return this.#_checked;\n  }\n\n  /**\n   * Whether the checkbox is in the indeterminate state. This has no visual effect for icon checkboxes.\n   * @internal\n   */\n  @Input()\n  public set indeterminate(value: boolean | undefined) {\n    if (value !== this.#_indeterminate) {\n      this.#_indeterminate = !!value;\n      this.#indeterminateChange.next(this.#_indeterminate);\n      if (this.inputEl) {\n        this.inputEl.nativeElement.indeterminate = this.#_indeterminate;\n        this.#changeDetector.markForCheck();\n      }\n    }\n  }\n\n  public get indeterminate(): boolean {\n    return this.#_indeterminate;\n  }\n\n  /**\n   * Whether the input is required for form validation.\n   * When you set this property to `true`, the component adds `aria-required` and `required`\n   * attributes to the input element so that forms display an invalid state until the input element\n   * is complete.\n   * @default false\n   */\n  @Input({ transform: booleanAttribute })\n  public required = false;\n\n  /**\n   * The text to display as the checkbox's label. Use this instead of the `sky-checkbox-label` when the label is text-only.\n   * Specifying `labelText` also enables automatic error message handling for checkbox.\n   */\n  @Input()\n  public labelText: string | undefined;\n\n  /**\n   * Indicates whether to hide the `labelText`.\n   */\n  @Input({ transform: booleanAttribute })\n  public labelHidden = false;\n\n  /**\n   * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n   * additional context to the user.\n   */\n  @Input()\n  public hintText: string | undefined;\n\n  /**\n   * Whether the checkbox is stacked on another form component. When specified, the appropriate\n   * vertical spacing is automatically added to the checkbox. If the checkbox is within a checkbox group,\n   * set `stacked` on the checkbox group component instead.\n   */\n  @Input({ transform: booleanAttribute })\n  @HostBinding('class.sky-form-field-stacked')\n  public stacked = false;\n\n  /**\n   * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is placed beside the checkbox label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n   * as configured by the application. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  /**\n   * Fires when users select or deselect the checkbox.\n   */\n  @Output()\n  public get checkedChange(): Observable<boolean> {\n    return this.#checkedChangeObs;\n  }\n\n  /**\n   * Fires when the selected value changes.\n   */\n  @Output()\n  public get disabledChange(): Observable<boolean> {\n    return this.#disabledChangeObs;\n  }\n\n  /**\n   * Fires when the indeterminate state changes.\n   * @internal\n   */\n  @Output()\n  public get indeterminateChange(): Observable<boolean> {\n    return this.#indeterminateChangeObs;\n  }\n\n  @ViewChild('inputEl', { read: ElementRef })\n  public set inputEl(el: ElementRef | undefined) {\n    this.#_inputEl = el;\n    if (el && this.indeterminate) {\n      el.nativeElement.indeterminate = this.indeterminate;\n    }\n  }\n\n  public get inputEl(): ElementRef | undefined {\n    return this.#_inputEl;\n  }\n\n  protected get isCheckboxRequired(): boolean {\n    return !!(\n      this.required ||\n      this.control?.hasValidator(Validators.requiredTrue) ||\n      this.control?.hasValidator(Validators.required)\n    );\n  }\n\n  protected control: AbstractControl | undefined;\n  protected inputId = '';\n\n  #checkedChange: Subject<boolean>;\n  #checkedChangeObs: Observable<boolean>;\n  #disabledChange: Subject<boolean>;\n  #disabledChangeObs: Observable<boolean>;\n  #indeterminateChange: Subject<boolean>;\n  #indeterminateChangeObs: Observable<boolean>;\n\n  #_checked = false;\n  #_checkboxType = 'info';\n  #_disabled = false;\n  #_indeterminate = false;\n  #_inputEl: ElementRef | undefined;\n  #_name = '';\n  #_label: string | undefined;\n  #_labelledBy: string | undefined;\n\n  #changeDetector = inject(ChangeDetectorRef);\n  #idSvc = inject(SkyIdService);\n  #defaultId = this.#idSvc.generateId();\n  #logger = inject(SkyLogService);\n\n  protected readonly errorId = this.#idSvc.generateId();\n\n  constructor() {\n    this.#checkedChange = new Subject<boolean>();\n    this.#disabledChange = new Subject<boolean>();\n    this.#indeterminateChange = new Subject<boolean>();\n\n    this.#checkedChangeObs = this.#checkedChange.asObservable();\n    this.#disabledChangeObs = this.#disabledChange.asObservable();\n    this.#indeterminateChangeObs = this.#indeterminateChange.asObservable();\n    this.id = this.#defaultId;\n    this.name = this.#defaultId;\n  }\n\n  public ngAfterViewInit(): void {\n    this.#checkedChange.next(this.checked);\n    this.#disabledChange.next(this.disabled);\n    this.#indeterminateChange.next(this.indeterminate);\n  }\n\n  public validate(control: AbstractControl<boolean>): ValidationErrors | null {\n    this.control ||= control;\n\n    // In template-driven forms, Angular's native 'required' attribute directive only works\n    // on `input[type=\"checkbox\"]` selectors, so we need to write the validation logic ourselves.\n    // Also, we're treating Validators.required the same as Validators.requiredTrue internally, so\n    // we need to account for that decision in our custom validator.\n    return this.isCheckboxRequired && control.value !== true\n      ? { required: true }\n      : null;\n  }\n\n  /**\n   * Implemented as part of ControlValueAccessor.\n   */\n  public writeValue(value: any): void {\n    this.checked = !!value;\n  }\n\n  /**\n   * Implemented as part of ControlValueAccessor.\n   */\n  public registerOnChange(fn: (value: any) => void): void {\n    this.#controlValueAccessorChangeFn = fn;\n  }\n\n  /**\n   * Implemented as part of ControlValueAccessor.\n   */\n  public registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Implemented as part of ControlValueAccessor.\n   */\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  /**\n   * Event handler for checkbox input element.\n   * Toggles checked state if element is not disabled.\n   */\n  public onInteractionEvent(event: Event): void {\n    // We always have to stop propagation on the change event.\n    // Otherwise the change event, from the input element, will bubble up and\n    // emit its event object to the `change` output.\n    event.stopPropagation();\n\n    if (!this.disabled) {\n      this.indeterminate = false;\n      this.#toggle();\n      this.#controlValueAccessorChangeFn(this.checked);\n      this.#emitChangeEvent();\n    }\n  }\n\n  public onInputBlur(): void {\n    this.onTouched();\n  }\n\n  /** Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor. */\n\n  // istanbul ignore next\n  public onTouched: () => any = () => {};\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  #controlValueAccessorChangeFn: (value: any) => void = (value) => {};\n\n  #emitChangeEvent(): void {\n    this.change.emit({ checked: this.checked });\n  }\n\n  /**\n   * Toggles the `checked` value between true and false\n   */\n  #toggle(): void {\n    this.checked = !this.checked;\n  }\n}\n","<span class=\"sky-checkbox-outer-wrapper\">\n  <label\n    class=\"sky-checkbox-wrapper sky-switch\"\n    [ngClass]=\"{\n      'sky-control-label-required': isCheckboxRequired,\n      'sky-switch-disabled': disabled\n    }\"\n  >\n    <input\n      #inputEl\n      class=\"sky-checkbox-input sky-switch-input\"\n      type=\"checkbox\"\n      [id]=\"inputId\"\n      [checked]=\"checked\"\n      [disabled]=\"disabled\"\n      [name]=\"name\"\n      [required]=\"isCheckboxRequired\"\n      [tabIndex]=\"tabindex\"\n      [attr.aria-label]=\"labelText || label\"\n      [attr.aria-labelledby]=\"labelText ? undefined : labelledBy\"\n      [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n      [attr.aria-required]=\"isCheckboxRequired ? true : null\"\n      [attr.aria-invalid]=\"!!control?.errors\"\n      [attr.aria-errormessage]=\"\n        labelText && control?.errors ? errorId : undefined\n      \"\n      [ngClass]=\"{\n        'sky-switch-invalid':\n          (control?.touched || control?.dirty) && control?.errors\n      }\"\n      (blur)=\"onInputBlur()\"\n      (change)=\"onInteractionEvent($event)\"\n    />\n    <span\n      class=\"sky-switch-control\"\n      [ngClass]=\"{\n        'sky-switch-control-icon': iconName,\n        'sky-switch-control-info': checkboxType === 'info',\n        'sky-switch-control-success': checkboxType === 'success',\n        'sky-switch-control-warning': checkboxType === 'warning',\n        'sky-switch-control-danger': checkboxType === 'danger'\n      }\"\n      [skyThemeClass]=\"{\n        'sky-rounded-corners': 'default'\n      }\"\n    >\n      @if (iconName) {\n        <sky-icon variant=\"solid\" [iconName]=\"iconName\" />\n      } @else {\n        @if (indeterminate) {\n          <sky-icon\n            class=\"sky-checkbox-icon-indeterminate sky-checkbox-icon-modern-indeterminate\"\n            iconName=\"square\"\n            variant=\"solid\"\n            iconSize=\"s\"\n          />\n        } @else if (checked) {\n          <sky-icon\n            class=\"sky-checkbox-icon-modern-checked\"\n            iconName=\"checkmark\"\n            iconSize=\"s\"\n          />\n        }\n      }\n    </span>\n\n    @if (labelText) {\n      <sky-checkbox-label-text-label\n        [labelText]=\"labelText\"\n        [labelHidden]=\"labelHidden\"\n      />\n    } @else {\n      <ng-content select=\"sky-checkbox-label\" />\n    }\n  </label>\n  @if ((helpPopoverContent || helpKey) && labelText) {\n    <span class=\"sky-control-help-container\">\n      <sky-help-inline\n        class=\"sky-checkbox-help-inline\"\n        [helpKey]=\"helpKey\"\n        [labelText]=\"labelText\"\n        [popoverTitle]=\"helpPopoverTitle\"\n        [popoverContent]=\"helpPopoverContent\"\n      />\n    </span>\n  }\n</span>\n<span #hintTextEl=\"skyId\" skyId>\n  @if (hintText) {\n    <div\n      class=\"sky-checkbox-hint-text sky-checkbox-form-margin\"\n      [skyThemeClass]=\"{\n        'sky-font-deemphasized': 'default',\n        'sky-font-hint-text-s': 'modern'\n      }\"\n    >\n      {{ hintText }}\n    </div>\n  }\n</span>\n<sky-form-errors\n  [class.sky-checkbox-form-margin]=\"labelText && control?.errors\"\n  [id]=\"errorId\"\n  [errors]=\"control?.errors\"\n  [labelText]=\"labelText\"\n  [touched]=\"control?.touched\"\n  [dirty]=\"control?.dirty\"\n>\n  <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyFormErrorModule } from '../form-error/form-error.module';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyCheckboxGroupComponent } from './checkbox-group.component';\nimport { SkyCheckboxLabelTextLabelComponent } from './checkbox-label-text-label.component';\nimport { SkyCheckboxLabelComponent } from './checkbox-label.component';\nimport { SkyCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n  declarations: [\n    SkyCheckboxComponent,\n    SkyCheckboxLabelComponent,\n    SkyCheckboxLabelTextLabelComponent,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    SkyCheckboxGroupComponent,\n    SkyFormErrorModule,\n    SkyFormErrorsModule,\n    SkyFormsResourcesModule,\n    SkyHelpInlineModule,\n    SkyIconModule,\n    SkyIdModule,\n    SkyTrimModule,\n    SkyThemeModule,\n  ],\n  exports: [\n    SkyCheckboxComponent,\n    SkyCheckboxLabelComponent,\n    SkyCheckboxGroupComponent,\n    SkyFormErrorModule,\n  ],\n})\nexport class SkyCheckboxModule {}\n","import { CommonModule } from '@angular/common';\nimport {\n  Component,\n  HostBinding,\n  Input,\n  TemplateRef,\n  booleanAttribute,\n  numberAttribute,\n} from '@angular/core';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyFieldGroupHeadingLevel } from './field-group-heading-level';\nimport { SkyFieldGroupHeadingStyle } from './field-group-heading-style';\n\nfunction numberAttribute3(value: unknown): number {\n  return numberAttribute(value, 3);\n}\n\n/**\n * Organizes form fields into a group.\n */\n@Component({\n  selector: 'sky-field-group',\n  templateUrl: './field-group.component.html',\n  styleUrl: './field-group.component.scss',\n  imports: [CommonModule, SkyHelpInlineModule, SkyIdModule, SkyThemeModule],\n})\nexport class SkyFieldGroupComponent {\n  /**\n   * The text to display as the field group's heading.\n   */\n  @Input({ required: true })\n  public headingText!: string;\n\n  /**\n   * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n   * additional context to the user.\n   */\n  @Input()\n  public hintText: string | undefined;\n\n  /**\n   * Indicates whether to hide the `headingText`.\n   */\n  @Input({ transform: booleanAttribute })\n  public headingHidden = false;\n\n  /**\n   * Whether the field group is stacked on another field group. When specified, the appropriate\n   * vertical spacing is automatically added to the field group.\n   */\n  @Input({ transform: booleanAttribute })\n  @HostBinding('class.sky-field-group-stacked')\n  public stacked = false;\n\n  /**\n   * The semantic heading level in the document structure.\n   * @default 3\n   */\n  @Input({ transform: numberAttribute3 })\n  public headingLevel: SkyFieldGroupHeadingLevel = 3;\n\n  /**\n   * The heading [font style](https://developer.blackbaud.com/skyux/design/styles/typography#headings).\n   * @default 3\n   */\n  @Input({ transform: numberAttribute3 })\n  public set headingStyle(value: SkyFieldGroupHeadingStyle) {\n    this.headingClass = `sky-font-heading-${value}`;\n  }\n\n  /**\n   * The content of the help popover. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to the field group heading. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title. This property only applies when `headingText` is also specified.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  /**\n   * A help key that identifies the global help content to display. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is placed beside the field group heading. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n   * as configured by the application. This property only applies when `headingText` is also specified.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  protected headingClass = 'sky-font-heading-3';\n}\n","<fieldset\n  class=\"sky-field-group\"\n  [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n>\n  <legend\n    class=\"sky-field-group-legend\"\n    [ngClass]=\"{\n      'sky-screen-reader-only': headingHidden\n    }\"\n  >\n    <span class=\"sky-field-group-heading\">\n      @switch (headingLevel) {\n        @case (4) {\n          <h4 [class]=\"headingClass\">{{ headingText }}</h4>\n        }\n        @default {\n          <h3 [class]=\"headingClass\">{{ headingText }}</h3>\n        }\n      }\n    </span>\n    @if (helpPopoverContent || helpKey) {\n      <span class=\"sky-control-help-container\">\n        <sky-help-inline\n          class=\"sky-field-group-help-inline\"\n          [helpKey]=\"helpKey\"\n          [labelText]=\"headingText\"\n          [popoverTitle]=\"helpPopoverTitle\"\n          [popoverContent]=\"helpPopoverContent\"\n        />\n      </span>\n    }\n  </legend>\n  <div #hintTextEl=\"skyId\" skyId class=\"sky-field-group-hint-text-wrapper\">\n    @if (hintText) {\n      <div\n        class=\"sky-field-group-hint-text\"\n        [skyThemeClass]=\"{\n          'sky-font-deemphasized': 'default',\n          'sky-font-hint-text-s': 'modern'\n        }\"\n      >\n        {{ hintText }}\n      </div>\n    }\n  </div>\n  <div class=\"sky-field-group-content\">\n    <ng-content />\n  </div>\n</fieldset>\n","import { NgModule } from '@angular/core';\n\nimport { SkyFieldGroupComponent } from './field-group.component';\n\n@NgModule({\n  imports: [SkyFieldGroupComponent],\n  exports: [SkyFieldGroupComponent],\n})\nexport class SkyFieldGroupModule {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport { SkyIdModule, SkyLogService, SkyTrimModule } from '@skyux/core';\n\n/**\n * Displays a label above the file attachment element. To display a help button\n * beside the label, include a help button element, such as `sky-help-inline`,\n * in the `sky-file-attachment-label` element and a `sky-control-help` CSS class\n * on that help button element.\n * @deprecated Use the `labelText` input on the single file attachment component\n * instead.\n */\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [SkyIdModule, SkyTrimModule],\n  selector: 'sky-file-attachment-label',\n  styleUrl: 'file-attachment-label.component.scss',\n  templateUrl: './file-attachment-label.component.html',\n})\nexport class SkyFileAttachmentLabelComponent {\n  @ViewChild('labelContentId')\n  public labelContentId: { id: string } | undefined;\n\n  constructor() {\n    inject(SkyLogService).deprecated('SkyFileAttachmentLabelComponent', {\n      deprecationMajorVersion: 9,\n      replacementRecommendation:\n        'To add a label to single file attachment, use the `labelText` input ' +\n        'on the `sky-file-attachment` component instead.',\n    });\n  }\n}\n","<span class=\"sky-control-label\"\n  ><span #labelContentId=\"skyId\" skyId skyTrim><ng-content /></span\n  ><span class=\"sky-control-help-container\"\n    ><ng-content select=\".sky-control-help\" /></span\n></span>\n","import { formatNumber } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'skyFileSize',\n})\nexport class SkyFileSizePipe implements PipeTransform {\n  readonly #resourcesService: SkyLibResourcesService;\n  readonly #defaultLocale = 'en-US';\n\n  constructor(resourcesService: SkyLibResourcesService) {\n    this.#resourcesService = resourcesService;\n  }\n\n  public transform(input?: number | string | null): string {\n    let decimalPlaces = 0,\n      dividend = 1,\n      template: string;\n\n    if (input === null || input === undefined) {\n      return '';\n    }\n\n    if (typeof input === 'string') {\n      input = Number.parseInt(input);\n    }\n\n    if (Math.abs(input) === 1) {\n      template = 'skyux_file_attachment_file_size_b_singular';\n    } else if (input < 1024) {\n      template = 'skyux_file_attachment_file_size_b_plural';\n    } else if (input < Math.pow(1024, 2)) {\n      template = 'skyux_file_attachment_file_size_kb';\n      dividend = 1024;\n    } else if (input < Math.pow(1024, 3)) {\n      template = 'skyux_file_attachment_file_size_mb';\n      dividend = Math.pow(1024, 2);\n      decimalPlaces = 1;\n    } else {\n      template = 'skyux_file_attachment_file_size_gb';\n      dividend = Math.pow(1024, 3);\n      decimalPlaces = 1;\n    }\n\n    const roundedSize =\n      Math.floor(input / (dividend / Math.pow(10, decimalPlaces))) /\n      Math.pow(10, decimalPlaces);\n\n    const formattedSize = formatNumber(\n      roundedSize,\n      this.#defaultLocale,\n      '.0-3',\n    );\n\n    return this.#getString(template, formattedSize);\n  }\n\n  #getString(key: string, ...args: unknown[]): string {\n    // TODO: Need to implement the async `getString` method in a breaking change.\n    return this.#resourcesService.getStringForLocale(\n      { locale: this.#defaultLocale },\n      key,\n      ...args,\n    );\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Joins an array of IDs with a single space.\n * @internal\n */\n@Pipe({\n  name: 'skyFileAttachmentJoinIds',\n})\nexport class SkyFileAttachmentJoinIdsPipe implements PipeTransform {\n  public transform(...ids: (string | null | undefined)[]): string | null {\n    // Remove undefined values and join with a \" \".\n    return ids && ids.filter((id) => id).join(' ');\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SkyFileItem } from '../shared/file-item';\nimport { SkyFileValidateFn } from '../shared/file-validate-function';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyFileAttachmentService {\n  public checkFiles(\n    files: SkyFileItem[],\n    minFileSize: number,\n    maxFileSize: number,\n    acceptedTypes?: string,\n    validateFn?: SkyFileValidateFn,\n  ): SkyFileItem[] {\n    const fileResults: SkyFileItem[] = [];\n\n    files.forEach((fileItem) => {\n      if (fileItem.file.size < minFileSize) {\n        fileItem.errorType = 'minFileSize';\n        fileItem.errorParam = minFileSize.toString();\n        fileResults.push(fileItem);\n      } else if (fileItem.file.size > maxFileSize) {\n        fileItem.errorType = 'maxFileSize';\n        fileItem.errorParam = maxFileSize.toString();\n        fileResults.push(fileItem);\n      } else if (this.fileTypeRejected(fileItem.file.type, acceptedTypes)) {\n        fileItem.errorType = 'fileType';\n        fileItem.errorParam = this.#getAcceptedTypesList(acceptedTypes);\n        fileResults.push(fileItem);\n      } else if (validateFn) {\n        const errorParam = validateFn(fileItem);\n\n        if (errorParam) {\n          fileItem.errorType = 'validate';\n          fileItem.errorParam = errorParam;\n        }\n        fileResults.push(fileItem);\n      } else {\n        fileResults.push(fileItem);\n      }\n    });\n    return fileResults;\n  }\n\n  /**\n   * Returns `true` if a directory is found in the provided `files` parameter.\n   */\n  public hasDirectory(files: FileList): boolean {\n    for (let index = 0; index < files.length; index++) {\n      const file: any = files.item(index);\n      if (\n        file.webkitGetAsEntry &&\n        file.webkitGetAsEntry() &&\n        file.webkitGetAsEntry().isDirectory\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  public fileTypeRejected(fileType: string, acceptedTypes?: string): boolean {\n    if (!acceptedTypes) {\n      return false;\n    }\n\n    if (!fileType) {\n      return true;\n    }\n\n    const acceptedTypesUpper = acceptedTypes.toUpperCase();\n    const typeArray = acceptedTypesUpper.split(',');\n\n    return !this.#fileTypeInArray(typeArray, fileType.toUpperCase());\n  }\n\n  #fileTypeInArray(typeArray: string[], fileType: string): boolean {\n    if (typeArray.indexOf(fileType) !== -1) {\n      return true;\n    }\n\n    for (const type of typeArray) {\n      const validSubtype = this.#getMimeSubtype(type);\n\n      if (validSubtype === '*') {\n        if (this.#getMimeMainType(type) === this.#getMimeMainType(fileType)) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  #getAcceptedTypesList(rawTypes: string | undefined): string | undefined {\n    return rawTypes\n      ?.toUpperCase()\n      .split(',')\n      .map((type) => {\n        const subType = this.#getMimeSubtype(type);\n        return subType.startsWith('X-') ? subType.substr(2) : subType;\n      })\n      .join(', ');\n  }\n\n  #getMimeSubtype(type: string): string {\n    return type.substr(type.indexOf('/') + 1, type.length);\n  }\n\n  #getMimeMainType(type: string): string {\n    return type.substr(0, type.indexOf('/'));\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SkyFileItem } from './file-item';\n\n/**\n * @internal\n */\n@Injectable({ providedIn: 'root' })\nexport class SkyFileItemService {\n  public isFile(fileItem: SkyFileItem): boolean {\n    const file = fileItem.file;\n\n    return !!(\n      file &&\n      file !== undefined &&\n      file !== null &&\n      file.size !== undefined &&\n      file.size !== null\n    );\n  }\n\n  public isImage(fileItem: SkyFileItem): boolean {\n    const fileTypeUpper = this.getFileTypeUpper(fileItem);\n    const slashIndex = fileTypeUpper.indexOf('/');\n\n    if (slashIndex >= 0) {\n      switch (fileTypeUpper.substr(fileTypeUpper.indexOf('/') + 1)) {\n        case 'BMP':\n        case 'GIF':\n        case 'JPEG':\n        case 'PNG':\n          return true;\n        default:\n          break;\n      }\n    }\n\n    return false;\n  }\n\n  public getFileExtensionUpper(fileItem: SkyFileItem): string {\n    let extension = '',\n      name: string;\n\n    /* istanbul ignore else */\n    /* sanity check */\n    if (fileItem) {\n      const file = fileItem.file;\n      if (file) {\n        /* istanbul ignore next */\n        name = file.name || '';\n        /* istanbul ignore next */\n        extension = name.substr(name.lastIndexOf('.')) || '';\n      } else {\n        extension = '';\n      }\n    }\n\n    return extension.toUpperCase();\n  }\n\n  public getFileTypeUpper(fileItem: SkyFileItem): string {\n    let fileType = '';\n    /* istanbul ignore else */\n    /* sanity check */\n    if (fileItem) {\n      const file = fileItem.file;\n      if (file) {\n        fileType = file.type || '';\n      } else {\n        fileType = '';\n      }\n    }\n\n    return fileType.toUpperCase();\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  DOCUMENT,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  Self,\n  TemplateRef,\n  ViewChild,\n  booleanAttribute,\n  inject,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  NgControl,\n  ValidationErrors,\n  Validators,\n} from '@angular/forms';\nimport {\n  SkyFileReaderService,\n  SkyIdModule,\n  SkyIdService,\n  SkyLiveAnnouncerService,\n} from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport {\n  SkyThemeComponentClassDirective,\n  SkyThemeModule,\n  SkyThemeService,\n} from '@skyux/theme';\n\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyFormErrorComponent } from '../../form-error/form-error.component';\nimport { SKY_FORM_ERRORS_ENABLED } from '../../form-error/form-errors-enabled-token';\nimport { SkyFormErrorsComponent } from '../../form-error/form-errors.component';\nimport { SkyFormsResourcesModule } from '../../shared/sky-forms-resources.module';\nimport { SkyFileItem } from '../shared/file-item';\nimport { SkyFileItemErrorType } from '../shared/file-item-error-type';\nimport { SkyFileItemService } from '../shared/file-item.service';\nimport { SkyFileSizePipe } from '../shared/file-size.pipe';\nimport { SkyFileValidateFn } from '../shared/file-validate-function';\n\nimport { SkyFileAttachmentChange } from './file-attachment-change';\nimport { SkyFileAttachmentClick } from './file-attachment-click';\nimport { SkyFileAttachmentJoinIdsPipe } from './file-attachment-join-ids.pipe';\nimport { SkyFileAttachmentLabelComponent } from './file-attachment-label.component';\nimport { SkyFileAttachmentService } from './file-attachment.service';\n\nconst MAX_FILE_SIZE_DEFAULT = 500000;\nconst MIN_FILE_SIZE_DEFAULT = 0;\n\n/**\n * Provides an element to attach a single local file.\n */\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    SkyFileAttachmentJoinIdsPipe,\n    SkyFileSizePipe,\n    SkyFormErrorComponent,\n    SkyFormErrorsComponent,\n    SkyFormsResourcesModule,\n    SkyHelpInlineModule,\n    SkyIconModule,\n    SkyIdModule,\n    SkyThemeModule,\n    SkyThemeComponentClassDirective,\n  ],\n  providers: [\n    SkyFileAttachmentService,\n    { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n  ],\n  hostDirectives: [SkyThemeComponentClassDirective],\n  selector: 'sky-file-attachment',\n  styleUrl: './file-attachment.component.scss',\n  templateUrl: './file-attachment.component.html',\n})\nexport class SkyFileAttachmentComponent\n  implements\n    AfterViewInit,\n    AfterContentInit,\n    ControlValueAccessor,\n    OnInit,\n    OnDestroy\n{\n  readonly #document = inject(DOCUMENT);\n\n  readonly #fileReaderSvc = inject(SkyFileReaderService);\n\n  /**\n   * The comma-delimited string literal of MIME types that users can attach.\n   * By default, all file types are allowed.\n   */\n  @Input()\n  public acceptedTypes: string | undefined;\n\n  /**\n   * A custom error message to display when a file doesn't match the accepted types.\n   * This replaces a default error message that lists all accepted types.\n   */\n  @Input()\n  public acceptedTypesErrorMessage: string | undefined;\n\n  /**\n   * Whether to disable the input on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n   * To set the disabled state on reactive forms, use the `FormControl` instead.\n   */\n  @Input({ transform: booleanAttribute })\n  public disabled = false;\n\n  /**\n   * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to the single file attachment label. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  /**\n   * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is placed beside the single file attachment label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n   * as configured by the application. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  /**\n   * The text to display as the file attachment's label.\n   */\n  @Input()\n  public labelText: string | undefined;\n\n  /**\n   * Whether to hide `labelText` from view.\n   */\n  @Input({ transform: booleanAttribute })\n  public labelHidden = false;\n\n  /**\n   * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n   * additional context to the user.\n   */\n  @Input()\n  public hintText: string | undefined;\n\n  /**\n   * The maximum size in bytes for valid files.\n   * @default 500000\n   */\n  @Input()\n  public set maxFileSize(value: number | undefined) {\n    this.#_maxFileSize = value ?? MAX_FILE_SIZE_DEFAULT;\n  }\n\n  public get maxFileSize(): number {\n    return this.#_maxFileSize;\n  }\n\n  /**\n   * The minimum size in bytes for valid files.\n   * @default 0\n   */\n  @Input()\n  public set minFileSize(value: number | undefined) {\n    this.#_minFileSize = value ?? MIN_FILE_SIZE_DEFAULT;\n  }\n\n  public get minFileSize(): number {\n    return this.#_minFileSize;\n  }\n\n  /**\n   * Whether the single file attachment is stacked on another form component. When specified,\n   * the appropriate vertical spacing is automatically added to the single file attachment.\n   */\n  @Input({ transform: booleanAttribute })\n  @HostBinding('class.sky-form-field-stacked')\n  public stacked = false;\n\n  /**\n   * The custom validation function. This validation runs alongside the internal\n   * file validation. This function takes a `SkyFileItem` object as a parameter.\n   * @deprecated Add a custom Angular `Validator` function to the `FormControl` instead.\n   */\n  @Input()\n  public validateFn: SkyFileValidateFn | undefined;\n\n  /**\n   * Fires when users add or remove files.\n   * @deprecated Subscribe to the form control's `valueChanges` event instead.\n   */\n  @Output()\n  public fileChange = new EventEmitter<SkyFileAttachmentChange>();\n\n  /**\n   * Fires when users select the file name link. Make sure to bind the event.\n   * If you do not, the file name link will be a dead link.\n   */\n  @Output()\n  public fileClick = new EventEmitter<SkyFileAttachmentClick>();\n\n  public acceptedOver = false;\n\n  public hasLabelComponent = false;\n\n  public rejectedOver = false;\n\n  /**\n   * Whether the input is required for form validation.\n   * When you set this property to `true`, the component adds `aria-required` and `required`\n   * attributes to the input element so that forms display an invalid state until the input element\n   * is complete.\n   * For more information about the `aria-required` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-required).\n   */\n  @Input({ transform: booleanAttribute })\n  public required = false;\n\n  public set value(value: SkyFileItem | undefined | null) {\n    // The null check is needed to address a bug in Angular 4.\n    // writeValue is being called twice, first time with a phantom null value\n    // See: https://github.com/angular/angular/issues/14988\n    const isNewValue = value !== this.value && value !== null;\n\n    if (isNewValue) {\n      if (value) {\n        this.isImage = this.#fileItemService.isImage(value);\n      } else {\n        this.isImage = false;\n      }\n      this.#setFileName(value);\n\n      this.#_value = value;\n      this.#onChange(value);\n      this.#updateFileAttachmentButton();\n    }\n  }\n\n  public get value(): SkyFileItem | undefined {\n    return this.#_value;\n  }\n\n  public currentThemeName: string | undefined;\n\n  public fileName = '';\n\n  public showFileAttachmentButton = true;\n\n  public truncatedFileName = '';\n\n  @ViewChild('fileInputRef')\n  public inputEl: ElementRef | undefined;\n\n  @ContentChildren(SkyFileAttachmentLabelComponent)\n  public labelComponents:\n    | QueryList<SkyFileAttachmentLabelComponent>\n    | undefined;\n\n  public isImage = false;\n\n  protected get isRequired(): boolean {\n    return (\n      this.required ||\n      (this.ngControl?.control?.hasValidator(Validators.required) ?? false)\n    );\n  }\n\n  #enterEventTarget: EventTarget | undefined | null;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  #_maxFileSize = MAX_FILE_SIZE_DEFAULT;\n\n  #_minFileSize = MIN_FILE_SIZE_DEFAULT;\n\n  #_value: SkyFileItem | undefined;\n\n  #changeDetector: ChangeDetectorRef;\n  #fileAttachmentService: SkyFileAttachmentService;\n  #fileItemService: SkyFileItemService;\n  #themeSvc: SkyThemeService | undefined;\n\n  readonly #idSvc = inject(SkyIdService);\n  readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n  readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n  protected ngControl: NgControl | undefined;\n  protected errorId = this.#idSvc.generateId();\n  protected labelId = this.#idSvc.generateId();\n\n  protected fileErrorName: SkyFileItemErrorType | undefined;\n  protected fileErrorParam: string | undefined;\n  protected fileErrorValidation: ValidationErrors | null | undefined;\n\n  constructor(\n    changeDetector: ChangeDetectorRef,\n    fileAttachmentService: SkyFileAttachmentService,\n    fileItemService: SkyFileItemService,\n    @Self() @Optional() ngControl?: NgControl,\n    @Optional() themeSvc?: SkyThemeService,\n  ) {\n    this.#changeDetector = changeDetector;\n    this.#fileAttachmentService = fileAttachmentService;\n    this.#fileItemService = fileItemService;\n    this.ngControl = ngControl;\n    this.#themeSvc = themeSvc;\n\n    if (this.ngControl) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  public ngOnInit(): void {\n    if (this.#themeSvc) {\n      this.#themeSvc.settingsChange\n        .pipe(takeUntil(this.#ngUnsubscribe))\n        .subscribe((themeSettings) => {\n          this.currentThemeName = themeSettings.currentSettings.theme.name;\n          this.#updateFileAttachmentButton();\n        });\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    // This is needed to address a bug in Angular 7.\n    // When a control value is set initially, its value is not represented on the view.\n    // See: https://github.com/angular/angular/issues/13792\n    // Of note is the parent check which allows us to determine if the form is reactive.\n    // Without this check there is a changed before checked error\n    /* istanbul ignore else */\n    if (this.ngControl) {\n      setTimeout(() => {\n        this.ngControl?.control?.setValue(this.value, {\n          emitEvent: false,\n        });\n        this.#changeDetector.markForCheck();\n      });\n\n      // There is some disconnect between the host control and the form control.\n      // This handles that by running change detection whenever the host control\n      // has any changes. This is a workaround for this existing bug and will be\n      // addressed in a future story that refactors file attachment.\n      this.ngControl.control?.events.subscribe(() => {\n        this.#changeDetector.markForCheck();\n      });\n    }\n  }\n\n  public ngAfterContentInit(): void {\n    if (this.labelComponents) {\n      this.hasLabelComponent = this.labelComponents.length > 0;\n      this.#changeDetector.detectChanges();\n\n      // Handles updating classes when label changes\n      this.labelComponents.changes\n        .pipe(takeUntil(this.#ngUnsubscribe))\n        .subscribe(\n          (newLabelComponents: QueryList<SkyFileAttachmentLabelComponent>) => {\n            this.hasLabelComponent = newLabelComponents.length > 0;\n            this.#changeDetector.markForCheck();\n          },\n        );\n    }\n  }\n\n  public onButtonBlur(): void {\n    // Only mark the field as touched on blur when the document still has focus. This\n    // prevents validation from occurring while the user has the file dialog open,\n    // since focus moves away from the document and onto the file dialog before this\n    // event fires.\n    if (this.#document.hasFocus()) {\n      this.#onTouched();\n    }\n  }\n\n  public onFileCancel(): void {\n    this.#onTouched();\n  }\n\n  public onDropClicked(): void {\n    /* istanbul ignore else */\n    if (this.inputEl) {\n      this.inputEl.nativeElement.click();\n    }\n  }\n\n  public fileChangeEvent(fileChangeEvent: Event): void {\n    /** Set a timeout here to allow the browser to regain context from the system dialog. Without this, error messages do not read out correctly to screen readers. */\n    setTimeout(() => {\n      this.#handleFiles(\n        (fileChangeEvent.target as HTMLInputElement | undefined)?.files,\n      );\n    }, 500);\n  }\n\n  public fileDragEnter(dragEnterEvent: DragEvent): void {\n    // Save this target to know when the drag event leaves\n    this.#enterEventTarget = dragEnterEvent.target;\n    dragEnterEvent.stopPropagation();\n    dragEnterEvent.preventDefault();\n  }\n\n  public fileDragOver(dragOverEvent: DragEvent): void {\n    const transfer = dragOverEvent.dataTransfer;\n\n    dragOverEvent.stopPropagation();\n    dragOverEvent.preventDefault();\n\n    if (transfer) {\n      if (transfer.items) {\n        const files = Array.from(transfer.items);\n\n        for (const file of files) {\n          if (\n            file.type &&\n            this.#fileAttachmentService.fileTypeRejected(\n              file.type,\n              this.acceptedTypes,\n            )\n          ) {\n            this.rejectedOver = true;\n            this.acceptedOver = false;\n            return;\n          }\n        }\n\n        if (files.length > 0 && !this.acceptedOver) {\n          this.rejectedOver = false;\n          this.acceptedOver = true;\n        }\n      } else if (transfer.files) {\n        // If the browser does not support DataTransfer.items,\n        // defer file-type checking to drop handler.\n        // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n        this.rejectedOver = false;\n        this.acceptedOver = true;\n      }\n    }\n  }\n\n  public fileDrop(dropEvent: DragEvent): void {\n    dropEvent.stopPropagation();\n    dropEvent.preventDefault();\n\n    this.#enterEventTarget = undefined;\n    this.rejectedOver = false;\n    this.acceptedOver = false;\n\n    if (dropEvent.dataTransfer && dropEvent.dataTransfer.files) {\n      if (dropEvent.dataTransfer.files.length > 1) {\n        return;\n      }\n\n      if (\n        this.#fileAttachmentService.hasDirectory(dropEvent.dataTransfer.files)\n      ) {\n        return;\n      }\n\n      this.#handleFiles(dropEvent.dataTransfer.files);\n    }\n  }\n\n  public fileDragLeave(dragLeaveEvent: DragEvent): void {\n    if (this.#enterEventTarget === dragLeaveEvent.target) {\n      this.rejectedOver = false;\n      this.acceptedOver = false;\n    }\n  }\n\n  public deleteFileAttachment(): void {\n    const fileName = this.value?.file.name;\n    this.#onTouched();\n    this.#emitFileChangeEvent(undefined);\n\n    /* istanbul ignore else: safety check */\n    if (fileName) {\n      this.#announceState(\n        'skyux_file_attachment_file_upload_file_removed',\n        fileName,\n      );\n    }\n\n    this.#changeDetector.markForCheck();\n  }\n\n  public ngOnDestroy(): void {\n    this.fileChange.complete();\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  public registerOnChange(fn: (value: any) => any): void {\n    this.#onChange = fn;\n  }\n  public registerOnTouched(fn: () => any): void {\n    this.#onTouched = fn;\n  }\n\n  public writeValue(value: any): void {\n    this.value = value;\n    this.#changeDetector.markForCheck();\n  }\n\n  /**\n   * @internal\n   * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n   * @param isDisabled Whether the control should be disabled.\n   */\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.#changeDetector.markForCheck();\n  }\n\n  public emitClick(): void {\n    /* istanbul ignore else */\n    if (this.value) {\n      this.fileClick.emit({\n        file: this.value,\n      });\n    }\n  }\n\n  #announceState(resourceString: string, ...args: any[]): void {\n    this.#resourcesSvc\n      .getString(resourceString, ...args)\n      .pipe(take(1))\n      .subscribe((internationalizedString) => {\n        this.#liveAnnouncerSvc.announce(internationalizedString);\n      });\n  }\n\n  #emitFileChangeEvent(currentFile?: SkyFileItem): void {\n    if (currentFile && !currentFile.errorType) {\n      this.writeValue(currentFile);\n      this.fileErrorName = undefined;\n      this.fileErrorParam = undefined;\n      this.fileErrorValidation = undefined;\n    } else {\n      const hadValue = this.value !== undefined;\n      this.writeValue(undefined);\n      // Make sure value accessor is marked as dirty when a validation failure occurs\n      // and the control value remains undefined.\n      if (!hadValue) {\n        this.#onChange(undefined);\n      }\n      this.fileErrorValidation = { fileError: true };\n      this.fileErrorName = currentFile?.errorType;\n      this.fileErrorParam = currentFile?.errorParam;\n    }\n    this.fileChange.emit({\n      file: currentFile,\n    } as SkyFileAttachmentChange);\n\n    /* istanbul ignore else */\n    if (this.inputEl) {\n      this.inputEl.nativeElement.value = '';\n    }\n  }\n\n  async #loadFile(file: SkyFileItem): Promise<void> {\n    if (file.file) {\n      try {\n        const previousFileName = this.value?.file.name;\n\n        if (previousFileName) {\n          this.#announceState(\n            'skyux_file_attachment_file_upload_file_replaced',\n            previousFileName,\n            file.file.name,\n          );\n        } else {\n          this.#announceState(\n            'skyux_file_attachment_file_upload_file_added',\n            file.file.name,\n          );\n        }\n\n        file.url = await this.#fileReaderSvc.readAsDataURL(file.file);\n\n        this.#emitFileChangeEvent(file);\n      } catch {\n        this.#emitFileChangeEvent(file);\n      }\n    }\n  }\n\n  #handleFiles(fileList?: FileList | null): void {\n    this.#onTouched();\n\n    if (fileList) {\n      const files: SkyFileItem[] = [];\n\n      if ('item' in fileList) {\n        for (let index = 0; index < fileList.length; index++) {\n          files.push({\n            file: fileList.item(index),\n          } as SkyFileItem);\n        }\n      }\n\n      const processedFiles = this.#fileAttachmentService.checkFiles(\n        files,\n        this.minFileSize,\n        this.maxFileSize,\n        this.acceptedTypes,\n        this.validateFn,\n      );\n\n      for (const file of processedFiles) {\n        if (file.errorType) {\n          this.#emitFileChangeEvent(file);\n        } else {\n          void this.#loadFile(file);\n        }\n      }\n    }\n  }\n\n  #setFileName(file?: SkyFileItem): void {\n    if (file) {\n      const dropName =\n        this.#fileItemService.isFile(file) && file.file.name\n          ? file.file.name\n          : file.url;\n\n      this.fileName = dropName;\n\n      if (dropName.length > 26) {\n        this.truncatedFileName = dropName.slice(0, 26) + '...';\n      } else {\n        this.truncatedFileName = dropName;\n      }\n    } else {\n      this.fileName = '';\n      this.truncatedFileName = '';\n    }\n  }\n\n  #updateFileAttachmentButton(): void {\n    this.showFileAttachmentButton = !(\n      this.value && this.currentThemeName === 'modern'\n    );\n    this.#changeDetector.markForCheck();\n  }\n\n  // istanbul ignore next\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n  #onChange = (_: any): void => {\n    return;\n  };\n  // istanbul ignore next\n  #onTouched = (): void => {\n    return;\n  };\n}\n","<div class=\"sky-file-attachment-wrapper\">\n  <div\n    class=\"sky-file-attachment-label-wrapper\"\n    [ngClass]=\"{\n      'sky-control-label-required':\n        !labelText && isRequired && hasLabelComponent\n    }\"\n  >\n    @if (labelText) {\n      @if (!labelHidden) {\n        <span\n          class=\"sky-control-label\"\n          [attr.id]=\"labelId\"\n          [ngClass]=\"{\n            'sky-control-label-required': isRequired\n          }\"\n          >{{ labelText }}</span\n        >\n      }\n    } @else {\n      <ng-content select=\"sky-file-attachment-label\" />\n    }\n    @if (isRequired && (hasLabelComponent || labelText)) {\n      <span class=\"sky-screen-reader-only\">{{\n        'skyux_file_attachment_required' | skyLibResources\n      }}</span>\n    }\n    @if (labelText && (helpPopoverContent || helpKey)) {\n      <span class=\"sky-control-help-container\">\n        <sky-help-inline\n          [labelText]=\"labelText\"\n          [helpKey]=\"helpKey\"\n          [popoverTitle]=\"helpPopoverTitle\"\n          [popoverContent]=\"helpPopoverContent\"\n        />\n      </span>\n    }\n  </div>\n  <div\n    class=\"sky-file-attachment-upload sky-file-attachment sky-file-attachment-target\"\n    [ngClass]=\"{\n      'sky-file-attachment-accept': acceptedOver,\n      'sky-file-attachment-reject': rejectedOver\n    }\"\n    (dragenter)=\"fileDragEnter($event)\"\n    (dragover)=\"fileDragOver($event)\"\n    (dragleave)=\"fileDragLeave($event)\"\n    (drop)=\"fileDrop($event)\"\n  >\n    <div\n      #fileDropDescriptionRef=\"skyId\"\n      aria-hidden=\"true\"\n      class=\"sky-screen-reader-only\"\n      role=\"tooltip\"\n      skyId\n    >\n      {{ 'skyux_file_attachment_file_upload_drag_or_click' | skyLibResources }}\n    </div>\n    <input\n      #fileInputRef\n      hidden\n      tabindex=\"-1\"\n      type=\"file\"\n      [attr.accept]=\"acceptedTypes || null\"\n      [disabled]=\"disabled\"\n      [required]=\"isRequired\"\n      (change)=\"fileChangeEvent($event)\"\n      (cancel)=\"onFileCancel()\"\n    />\n    @if (showFileAttachmentButton) {\n      <button\n        class=\"sky-file-attachment-btn sky-btn sky-btn-default\"\n        type=\"button\"\n        [attr.aria-describedby]=\"\n          hintText && hintTextEl.id\n            | skyFileAttachmentJoinIds: fileDropDescriptionRef.id\n        \"\n        [attr.aria-labelledby]=\"\n          attachButtonLabelRef.id\n            | skyFileAttachmentJoinIds\n              : (labelText\n                  ? labelId\n                  : labelComponents?.get(0)?.labelContentId?.id)\n        \"\n        [attr.aria-invalid]=\"!!(ngControl?.errors ?? fileErrorValidation)\"\n        [attr.aria-errormessage]=\"\n          !!(ngControl?.errors ?? fileErrorValidation) ? errorId : undefined\n        \"\n        [disabled]=\"disabled\"\n        (click)=\"onDropClicked()\"\n        (blur)=\"onButtonBlur()\"\n      >\n        <sky-icon iconName=\"folder-open\" />\n        {{\n          value\n            ? ('skyux_file_attachment_button_label_replace_file'\n              | skyLibResources)\n            : ('skyux_file_attachment_button_label_choose_file'\n              | skyLibResources)\n        }}\n      </button>\n    }\n    @if (value && !isImage && currentThemeName === 'modern') {\n      <sky-icon\n        class=\"sky-file-attachment-icon\"\n        iconName=\"document\"\n        iconSize=\"xl\"\n      />\n    }\n    @if (value || currentThemeName === 'default') {\n      <span class=\"sky-file-attachment-file-link\">\n        @if (value) {\n          <a\n            class=\"sky-btn sky-btn-link-inline\"\n            [attr.title]=\"fileName\"\n            (click)=\"emitClick()\"\n          >\n            {{ truncatedFileName }}\n          </a>\n        } @else {\n          <span class=\"sky-file-attachment-none sky-font-deemphasized\">\n            {{ 'skyux_file_attachment_label_no_file_chosen' | skyLibResources }}\n          </span>\n        }\n      </span>\n    }\n\n    @if (value) {\n      <button\n        class=\"sky-btn sky-btn-icon-borderless sky-file-attachment-delete\"\n        type=\"button\"\n        [attr.aria-labelledby]=\"\n          deleteButtonLabelRef.id\n            | skyFileAttachmentJoinIds\n              : (labelText\n                  ? labelId\n                  : labelComponents?.get(0)?.labelContentId?.id)\n        \"\n        [disabled]=\"disabled\"\n        (click)=\"deleteFileAttachment()\"\n      >\n        <sky-icon iconName=\"delete\" />\n      </button>\n    }\n  </div>\n\n  @if (value && isImage) {\n    <img\n      class=\"sky-file-attachment-preview-img\"\n      [alt]=\"\n        'skyux_file_attachment_file_upload_image_preview_alt_text'\n          | skyLibResources\n      \"\n      [src]=\"value.url\"\n    />\n  }\n</div>\n<div #hintTextEl=\"skyId\" skyId>\n  @if (hintText) {\n    <div\n      class=\"sky-file-attachment-hint-text\"\n      [skyThemeClass]=\"{\n        'sky-font-deemphasized': 'default',\n        'sky-font-hint-text-s': 'modern'\n      }\"\n    >\n      {{ hintText }}\n    </div>\n  }\n</div>\n\n<sky-form-errors\n  [id]=\"errorId\"\n  [errors]=\"ngControl?.errors\"\n  [labelText]=\"labelText\"\n  [touched]=\"ngControl?.touched\"\n  [dirty]=\"ngControl?.dirty\"\n>\n  <ng-content select=\"sky-form-error\" />\n  @if (ngControl?.touched) {\n    @if (fileErrorName === 'fileType') {\n      <sky-form-error\n        errorName=\"fileType\"\n        [errorText]=\"\n          acceptedTypesErrorMessage ??\n            'skyux_file_attachment_file_type_error_label_text'\n            | skyLibResources: fileErrorParam\n        \"\n      />\n    } @else if (fileErrorName === 'maxFileSize') {\n      <sky-form-error\n        errorName=\"maxFileSize\"\n        [errorText]=\"\n          'skyux_file_attachment_max_file_size_error_label_text'\n            | skyLibResources: (fileErrorParam | skyFileSize)\n        \"\n      />\n    } @else if (fileErrorName === 'minFileSize') {\n      <sky-form-error\n        errorName=\"minFileSize\"\n        [errorText]=\"\n          'skyux_file_attachment_min_file_size_error_label_text'\n            | skyLibResources: (fileErrorParam | skyFileSize)\n        \"\n      />\n    }\n  }\n</sky-form-errors>\n\n<span\n  #attachButtonLabelRef=\"skyId\"\n  aria-hidden=\"true\"\n  class=\"sky-screen-reader-only\"\n  skyId\n>\n  {{\n    value\n      ? ('skyux_file_attachment_button_label_replace_file_label'\n        | skyLibResources: fileName)\n      : ('skyux_file_attachment_button_label_choose_file_label'\n        | skyLibResources)\n  }}\n</span>\n\n<span\n  #deleteButtonLabelRef=\"skyId\"\n  aria-hidden=\"true\"\n  class=\"sky-screen-reader-only\"\n  skyId\n>\n  {{ 'skyux_file_attachment_file_item_remove' | skyLibResources: fileName }}\n</span>\n","import { NgModule } from '@angular/core';\n\nimport { SkyFormErrorModule } from '../../form-error/form-error.module';\n\nimport { SkyFileAttachmentLabelComponent } from './file-attachment-label.component';\nimport { SkyFileAttachmentComponent } from './file-attachment.component';\n\n@NgModule({\n  exports: [\n    SkyFileAttachmentComponent,\n    SkyFileAttachmentLabelComponent,\n    SkyFormErrorModule,\n  ],\n  imports: [SkyFileAttachmentComponent, SkyFileAttachmentLabelComponent],\n})\nexport class SkyFileAttachmentModule {}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { SkyInputBoxPopulateArgs } from './input-box-populate-args';\nimport { SkyInputBoxComponent } from './input-box.component';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyInputBoxHostService implements OnDestroy {\n  #host: SkyInputBoxComponent | undefined;\n  #requiredSubject = new BehaviorSubject<boolean>(false);\n\n  public required = this.#requiredSubject.asObservable();\n\n  public get controlId(): string {\n    return this.#host?.controlId ?? '';\n  }\n\n  public get labelId(): string {\n    return this.#host?.labelText ? this.#host.labelId : '';\n  }\n\n  public get labelText(): string {\n    return this.#host?.labelText ?? '';\n  }\n\n  public get ariaDescribedBy(): Observable<string | undefined> | undefined {\n    return this.#ariaDescribedBy;\n  }\n\n  #ariaDescribedBy: Observable<string | undefined> | undefined;\n\n  public init(host: SkyInputBoxComponent): void {\n    this.#host = host;\n    this.#ariaDescribedBy = host.ariaDescribedBy.asObservable();\n  }\n\n  public ngOnDestroy(): void {\n    this.#requiredSubject.complete();\n  }\n\n  public populate(args: SkyInputBoxPopulateArgs): void {\n    if (!this.#host) {\n      throw new Error(\n        'Cannot populate the input box because `SkyInputBoxHostService` has not yet been initialized. Try running the `populate` method within an Angular lifecycle hook, such as `ngOnInit`.',\n      );\n    }\n\n    this.#host.populate(args);\n  }\n\n  public setHintText(hintText: string | undefined): void {\n    if (!this.#host) {\n      throw new Error(\n        'Cannot set hint text on the input box because `SkyInputBoxHostService` has not yet been initialized.',\n      );\n    }\n\n    this.#host.setHostHintText(hintText);\n  }\n\n  public setHintTextHidden(hide: boolean): void {\n    if (!this.#host) {\n      throw new Error(\n        'Cannot hide hint text on the input box because `SkyInputBoxHostService` has not yet been initialized.',\n      );\n    }\n\n    this.#host.setHintTextHidden(hide);\n  }\n\n  public setHintTextScreenReaderOnly(hide: boolean): void {\n    if (!this.#host) {\n      throw new Error(\n        'Cannot remove hint text on the input box because `SkyInputBoxHostService` has not yet been initialized.',\n      );\n    }\n\n    this.#host.setHintTextScreenReaderOnly(hide);\n  }\n\n  /**\n   * Set required so that input box displays the label correctly. When the input is supplied by the consumer it is a content\n   * child that input box can read required from and this is unnecessary. When the input is supplied internally by the\n   * component the input box does not have a ref to it, so the component needs to inform the input box of its required state.\n   */\n  public setRequired(required: boolean): void {\n    this.#requiredSubject.next(required);\n  }\n\n  /**\n   * Whether the focused element is inside the input box.\n   * @internal\n   */\n  public focusIsInInput(el: EventTarget): boolean {\n    if (!this.#host) {\n      throw new Error(\n        'Cannot get whether the focus is in the input box because `SkyInputBoxHostService` has not yet been initialized.',\n      );\n    }\n    return this.#host.containsElement(el);\n  }\n\n  /**\n   * Returns an html element that is inside the input box.\n   * @internal\n   */\n  public queryHost(query: string): HTMLElement | undefined {\n    if (!this.#host) {\n      throw new Error(\n        'Cannot query input box host because `SkyInputBoxHostService` has not yet been initialized.',\n      );\n    }\n    return this.#host.queryPopulatedElement(query);\n  }\n}\n","import { Directive, HostBinding, Input, inject } from '@angular/core';\n\nimport { SkyInputBoxHostService } from './input-box-host.service';\n\n/**\n * @internal\n */\n@Directive({\n  selector:\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    'input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)',\n})\nexport class SkyInputBoxControlDirective {\n  @HostBinding('autocomplete')\n  @Input()\n  public set autocomplete(value: string | undefined) {\n    this.#_autocomplete = value;\n  }\n\n  public get autocomplete(): string | undefined {\n    return this.#_autocomplete || (this.#hostSvc ? 'off' : undefined);\n  }\n\n  #_autocomplete: string | undefined;\n  #hostSvc = inject(SkyInputBoxHostService, { optional: true });\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'skyInputBoxHintText',\n})\nexport class SkyInputBoxHintTextPipe implements PipeTransform {\n  public transform(\n    hintText?: string,\n    hostHintText?: string,\n  ): string | undefined {\n    if (hintText && hostHintText) {\n      return `${hintText} ${hostHintText}`;\n    }\n\n    return hintText || hostHintText;\n  }\n}\n","import {\n  ElementRef,\n  Injectable,\n  RendererFactory2,\n  inject,\n} from '@angular/core';\n\nconst ARIA_DESCRIBEDBY_ATTR = 'aria-describedby';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyInputBoxAdapterService {\n  #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n\n  /**\n   * Returns whether the provided input box contains the focus event target.\n   */\n  // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n  public containsElement(inputRef: ElementRef, el: EventTarget): boolean {\n    return inputRef.nativeElement.contains(el);\n  }\n\n  public focusControl(elRef: ElementRef): void {\n    const control = elRef.nativeElement.querySelector('.sky-form-control');\n    /* istanbul ignore else */\n    if (control) {\n      control.focus();\n    }\n  }\n\n  /**\n   * Returns the inline help element.\n   */\n  public getInlineHelpElement(elRef: ElementRef): HTMLElement {\n    return elRef.nativeElement.querySelector('.sky-control-help');\n  }\n\n  /**\n   * Returns true if the provided element contains the focused element.\n   */\n  public isFocusInElement(el: HTMLElement): boolean {\n    if (el) {\n      return (\n        el === document.activeElement || el.contains(document.activeElement)\n      );\n    }\n    return false;\n  }\n\n  public updateDescribedBy(\n    inputRef: ElementRef,\n    hintTextId: string,\n    hintText: string | undefined,\n  ): void {\n    const inputEl = inputRef.nativeElement as HTMLElement;\n\n    const describedByIds =\n      inputEl\n        .getAttribute(ARIA_DESCRIBEDBY_ATTR)\n        ?.split(' ')\n        .map((id) => id.trim()) ?? [];\n\n    const hintTextIdIndex = describedByIds.indexOf(hintTextId);\n    const previousCount = describedByIds.length;\n\n    if (hintText && hintTextIdIndex < 0) {\n      describedByIds.push(hintTextId);\n    } else if (!hintText && hintTextIdIndex >= 0) {\n      describedByIds.splice(hintTextIdIndex, 1);\n    }\n\n    if (describedByIds.length !== previousCount) {\n      this.#setDescribedByIds(inputEl, describedByIds);\n    }\n  }\n\n  /**\n   * Queries the provided input box with the query string.\n   */\n  // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n  public queryElement(inputRef: ElementRef, query: string): HTMLElement {\n    return inputRef.nativeElement.querySelector(query);\n  }\n\n  #setDescribedByIds(inputEl: HTMLElement, describedByIds: string[]): void {\n    if (describedByIds.length === 0) {\n      this.#renderer.removeAttribute(inputEl, ARIA_DESCRIBEDBY_ATTR);\n    } else {\n      this.#renderer.setAttribute(\n        inputEl,\n        ARIA_DESCRIBEDBY_ATTR,\n        describedByIds.join(' '),\n      );\n    }\n  }\n}\n","import {\n  BooleanInput,\n  NumberInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n} from '@angular/cdk/coercion';\nimport {\n  AfterContentChecked,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  TemplateRef,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport {\n  AbstractControlDirective,\n  FormControlDirective,\n  FormControlName,\n  NgModel,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { SkyContentInfoProvider, SkyIdService } from '@skyux/core';\n\nimport { ReplaySubject, Subject, takeUntil } from 'rxjs';\n\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\n\nimport { SkyInputBoxAdapterService } from './input-box-adapter.service';\nimport { SkyInputBoxControlDirective } from './input-box-control.directive';\nimport { SkyInputBoxHostService } from './input-box-host.service';\nimport { SkyInputBoxPopulateArgs } from './input-box-populate-args';\n\n/**\n * A wrapper component that provides styling and accessibility to form elements.\n */\n@Component({\n  selector: 'sky-input-box',\n  templateUrl: './input-box.component.html',\n  styleUrls: ['./input-box.component.scss'],\n  providers: [\n    SkyContentInfoProvider,\n    SkyInputBoxAdapterService,\n    SkyInputBoxHostService,\n    {\n      provide: SKY_FORM_ERRORS_ENABLED,\n      useValue: true,\n    },\n  ],\n  // Note that change detection is not set to OnPush; default change detection allows the\n  // invalid CSS class to be added when the content control's invalid/dirty state changes.\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class SkyInputBoxComponent\n  implements OnInit, AfterContentChecked, OnDestroy\n{\n  #changeRef = inject(ChangeDetectorRef);\n  #inputBoxHostSvc = inject(SkyInputBoxHostService);\n  #adapterService = inject(SkyInputBoxAdapterService);\n  #idSvc = inject(SkyIdService);\n  #elementRef = inject(ElementRef);\n  #renderer = inject(Renderer2);\n\n  /**\n   * Whether to visually highlight the input box in an error state. If not specified, the input box\n   * displays in an error state when either the `ngModel` or the Angular `FormControl` contains an error.\n   * @default undefined\n   */\n  @Input()\n  public hasErrors: boolean | undefined;\n\n  /**\n   * Whether to visually highlight the input box as disabled. To disable the input box's\n   * input element, use the HTML `disabled` attribute or the Angular `FormControl.disabled`\n   * property. If the input element is mapped to an Angular form control\n   * (e.g. `formControlName`, `ngModel`, etc.), \"disabled\" styles are applied automatically;\n   * if the input element is not associated with an Angular form control, the `disabled`\n   * property on the input box must be set to `true` to visually indicate\n   * the disabled state on the input box.\n   * @default false\n   */\n  @Input()\n  public disabled: boolean | undefined;\n\n  /**\n   * The text to display as the input's label and in known validation error messages. The label\n   * will automatically be associated with the `input`, `select`, `textarea`, or compatible SKY UX\n   * component included in the input box.\n   */\n  @Input()\n  public labelText: string | undefined;\n\n  /**\n   * The maximum number of characters to allow in the input box. This property places a\n   * [SKY UX character count](https://developer.blackbaud.com/skyux/components/character-count)\n   * on the input element with the appropriate validator, so don't use it with inputs where\n   * users are unlikely to exceed character limits. Instead, use\n   * [Angular's max length validator](https://angular.io/api/forms/MaxLengthValidator) and a\n   * `maxLength` attribute on the input element to handle maximum length validation.\n   *\n   */\n  @Input()\n  public set characterLimit(value: NumberInput) {\n    this.#_characterLimit =\n      value === undefined ? undefined : coerceNumberProperty(value, undefined);\n\n    this.#updateMaxLengthValidator();\n  }\n\n  public get characterLimit(): number | undefined {\n    return this.#_characterLimit;\n  }\n\n  /**\n   * Whether the input box is stacked on another input box. When specified, the appropriate\n   * vertical spacing is automatically added to the input box.\n   */\n  @Input()\n  public set stacked(value: BooleanInput) {\n    this.#_stacked = coerceBooleanProperty(value);\n    this.cssClass = this.#_stacked ? 'sky-form-field-stacked' : '';\n  }\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  /**\n   * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to the input box label. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is placed beside the input box label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n   * as configured by the application. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  /**\n   * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n   * additional context to the user.\n   */\n  @Input()\n  public set hintText(value: string | undefined) {\n    this.#_hintText = value;\n\n    this.ariaDescribedBy.next(value ? this.hintTextId : undefined);\n  }\n\n  public get hintText(): string | undefined {\n    return this.#_hintText;\n  }\n\n  public hostInputTemplate: TemplateRef<unknown> | undefined;\n\n  public hostButtonsTemplate: TemplateRef<unknown> | undefined;\n\n  public hostButtonsInsetTemplate: TemplateRef<unknown> | undefined;\n\n  public hostButtonsLeftTemplate: TemplateRef<unknown> | undefined;\n\n  public formControlHasFocus = false;\n\n  public hostIconsInsetTemplate: TemplateRef<unknown> | undefined;\n\n  public hostIconsInsetLeftTemplate: TemplateRef<unknown> | undefined;\n\n  protected hintTextHidden = false;\n\n  protected hintTextScreenReaderOnly = false;\n\n  protected hostHintText: string | undefined;\n\n  public readonly controlId = this.#idSvc.generateId();\n  public readonly labelId = this.#idSvc.generateId();\n  public readonly errorId = this.#idSvc.generateId();\n  public readonly hintTextId = this.#idSvc.generateId();\n  public readonly ariaDescribedBy = new ReplaySubject<string | undefined>(1);\n\n  #requiredByFormField: boolean | undefined;\n\n  @HostBinding('class')\n  public cssClass = '';\n\n  @ContentChild(FormControlDirective)\n  public formControl: FormControlDirective | undefined;\n\n  @ContentChild(FormControlName)\n  public formControlByName: FormControlName | undefined;\n\n  @ContentChild(NgModel)\n  public ngModel: NgModel | undefined;\n\n  @ContentChild(SkyInputBoxControlDirective, {\n    read: ElementRef,\n  })\n  public inputRef: ElementRef | undefined;\n\n  protected controlDir: AbstractControlDirective | undefined;\n\n  protected get isDisabled(): boolean {\n    return !!(\n      this.disabled ||\n      this.controlDir?.control?.disabled ||\n      this.inputRef?.nativeElement?.disabled\n    );\n  }\n\n  protected get hasErrorsComputed(): boolean {\n    if (this.hasErrors === undefined) {\n      return this.#controlHasErrors(this.controlDir);\n    }\n\n    return this.hasErrors;\n  }\n\n  protected get required(): boolean {\n    return (\n      this.#hasRequiredValidator() ||\n      this.inputRef?.nativeElement.required ||\n      this.#requiredByFormField\n    );\n  }\n\n  protected characterCountScreenReader = 0;\n\n  #_stacked = false;\n  #_characterLimit: number | undefined;\n  #_hintText: string | undefined;\n\n  #previousInputRef: ElementRef | undefined;\n  #previousMaxLengthValidator: ValidatorFn | undefined;\n  #ngUnsubscribe = new Subject<void>();\n\n  public ngOnInit(): void {\n    this.#inputBoxHostSvc.init(this);\n\n    this.#inputBoxHostSvc.required\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((required) => {\n        this.#requiredByFormField = required;\n        this.#changeRef.markForCheck();\n      });\n  }\n\n  public ngAfterContentChecked(): void {\n    this.controlDir =\n      this.formControl || this.formControlByName || this.ngModel;\n\n    if (!this.formControlHasFocus) {\n      this.characterCountScreenReader = this.controlDir?.value?.length || 0;\n    }\n\n    this.#updateInputRef();\n  }\n\n  public ngOnDestroy(): void {\n    this.ariaDescribedBy.complete();\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  /**\n   * Whether the input box component contains the focused element.\n   * @internal\n   */\n  public containsElement(el: EventTarget): boolean {\n    return this.#adapterService.containsElement(this.#elementRef, el);\n  }\n\n  public formControlFocusIn(): void {\n    const inlineHelpEl = this.#adapterService.getInlineHelpElement(\n      this.#elementRef,\n    );\n    if (!this.#adapterService.isFocusInElement(inlineHelpEl)) {\n      this.#updateHasFocus(true);\n    }\n  }\n\n  public formControlFocusOut(): void {\n    this.characterCountScreenReader = this.controlDir?.value?.length || 0;\n    this.#updateHasFocus(false);\n  }\n\n  public onInsetIconClick(): void {\n    if (!this.isDisabled) {\n      this.#adapterService.focusControl(this.#elementRef);\n    }\n  }\n\n  public populate(args: SkyInputBoxPopulateArgs): void {\n    this.hostInputTemplate = args.inputTemplate;\n    this.hostButtonsTemplate = args.buttonsTemplate;\n    this.hostButtonsLeftTemplate = args.buttonsLeftTemplate;\n    this.hostButtonsInsetTemplate = args.buttonsInsetTemplate;\n    this.hostIconsInsetTemplate = args.iconsInsetTemplate;\n    this.hostIconsInsetLeftTemplate = args.iconsInsetLeftTemplate;\n    this.#changeRef.markForCheck();\n  }\n\n  /**\n   * Returns an element inside the input box.\n   * This can be used to query parts of a input box\n   * that was populated through the `SkyInputBoxHostService`\n   * @internal\n   */\n  public queryPopulatedElement(query: string): HTMLElement {\n    return this.#adapterService.queryElement(this.#elementRef, query);\n  }\n\n  public setHintTextHidden(hide: boolean): void {\n    this.hintTextHidden = hide;\n    this.#changeRef.markForCheck();\n  }\n\n  public setHostHintText(value: string | undefined): void {\n    this.hostHintText = value;\n    this.#changeRef.markForCheck();\n  }\n\n  public setHintTextScreenReaderOnly(hide: boolean): void {\n    this.hintTextScreenReaderOnly = hide;\n    this.#changeRef.markForCheck();\n  }\n\n  #hasRequiredValidator(): boolean {\n    return !!this.controlDir?.control?.hasValidator(Validators.required);\n  }\n\n  #updateHasFocus(hasFocus: boolean): void {\n    // Some components manipulate the focus of elements inside an input box programmatically,\n    // which can cause an `ExpressionChangedAfterItHasBeenCheckedError` if focus was set after\n    // initial change detection. Using `setTimeout()` here fixes it.\n    setTimeout(() => {\n      this.formControlHasFocus = hasFocus;\n      this.#changeRef.markForCheck();\n    });\n  }\n\n  #controlHasErrors(control: AbstractControlDirective | undefined): boolean {\n    return !!(control && control.invalid && (control.dirty || control.touched));\n  }\n\n  #updateInputRef(): void {\n    if (!this.inputRef) {\n      return;\n    }\n\n    const inputEl = this.inputRef.nativeElement as HTMLElement;\n\n    // Check for the Angular required validator and add an aria-required attribute\n    // to match. For template-driven forms, the input will have a `required` attribute\n    // so the aria-required attribute is unnecessary.\n    const hasRequiredValidator = this.#hasRequiredValidator();\n    const ariaRequired = inputEl.ariaRequired;\n\n    if (hasRequiredValidator && ariaRequired !== 'true') {\n      inputEl.ariaRequired = 'true';\n    } else if (!hasRequiredValidator && ariaRequired === 'true') {\n      inputEl.ariaRequired = null;\n    }\n\n    if (this.hasErrorsComputed) {\n      this.#renderer.setAttribute(inputEl, 'aria-invalid', 'true');\n      this.#renderer.setAttribute(inputEl, 'aria-errormessage', this.errorId);\n    } else {\n      this.#renderer.removeAttribute(inputEl, 'aria-invalid');\n      this.#renderer.removeAttribute(inputEl, 'aria-errormessage');\n    }\n\n    this.#adapterService.updateDescribedBy(\n      this.inputRef,\n      this.hintTextId,\n      this.hintText ?? this.hostHintText,\n    );\n\n    if (this.inputRef !== this.#previousInputRef) {\n      this.#renderer.addClass(inputEl, 'sky-form-control');\n      this.#renderer.setAttribute(inputEl, 'id', this.controlId);\n\n      this.#updateMaxLengthValidator();\n\n      this.#previousInputRef = this.inputRef;\n    }\n  }\n\n  #updateMaxLengthValidator(): void {\n    const control = this.controlDir?.control;\n\n    if (this.#previousMaxLengthValidator) {\n      control?.removeValidators(this.#previousMaxLengthValidator);\n      this.#previousMaxLengthValidator = undefined;\n    }\n\n    if (control && this.characterLimit !== undefined) {\n      this.#previousMaxLengthValidator = Validators.maxLength(\n        this.characterLimit,\n      );\n\n      control.addValidators([this.#previousMaxLengthValidator]);\n    }\n  }\n}\n","<div\n  *skyThemeIf=\"'default'\"\n  class=\"sky-input-box\"\n  [ngClass]=\"{\n    'sky-input-box-disabled': isDisabled\n  }\"\n>\n  <div class=\"sky-form-group\">\n    <div class=\"sky-input-box-label-wrapper\">\n      <ng-container *ngTemplateOutlet=\"labelTemplate\" /><ng-container\n        *ngTemplateOutlet=\"inlineHelpTemplate\"\n      />\n      <ng-container *ngTemplateOutlet=\"characterCountTemplate\" />\n    </div>\n    <div class=\"sky-input-group\">\n      <ng-container *ngTemplateOutlet=\"buttonsLeftTemplate\" />\n      <div\n        class=\"sky-input-box-input-group-inner\"\n        [ngClass]=\"{\n          'sky-field-status-active': formControlHasFocus,\n          'sky-field-status-invalid': hasErrorsComputed\n        }\"\n        (focusin)=\"formControlFocusIn()\"\n        (focusout)=\"formControlFocusOut()\"\n      >\n        <ng-container *ngTemplateOutlet=\"iconsInsetLeftTemplate\" />\n        <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n        <ng-container *ngTemplateOutlet=\"buttonsInsetTemplate\" />\n        <ng-container *ngTemplateOutlet=\"iconsInsetTemplate\" />\n      </div>\n      <ng-container *ngTemplateOutlet=\"buttonsTemplate\" />\n    </div>\n    <ng-container *ngTemplateOutlet=\"hintTextTemplate\" />\n    <ng-container *ngTemplateOutlet=\"errorLabelTemplate\" />\n  </div>\n</div>\n\n<div\n  *skyThemeIf=\"'modern'\"\n  class=\"sky-input-box\"\n  [ngClass]=\"{\n    'sky-input-box-disabled': isDisabled\n  }\"\n>\n  <div class=\"sky-input-box-group\">\n    <ng-container *ngTemplateOutlet=\"buttonsLeftTemplate\" />\n    <div\n      class=\"sky-input-box-group-form-control\"\n      [ngClass]=\"{\n        'sky-input-box-group-form-control-focus': formControlHasFocus,\n        'sky-input-box-group-form-control-invalid': hasErrorsComputed\n      }\"\n      (focusin)=\"formControlFocusIn()\"\n      (focusout)=\"formControlFocusOut()\"\n    >\n      <div class=\"sky-form-group\">\n        <ng-container *ngTemplateOutlet=\"iconsInsetLeftTemplate\" />\n        <div class=\"sky-input-box-form-group-inner\">\n          <div class=\"sky-input-box-label-wrapper\">\n            <ng-container *ngTemplateOutlet=\"labelTemplate\" /><ng-container\n              *ngTemplateOutlet=\"inlineHelpTemplate\"\n            />\n            <ng-container *ngTemplateOutlet=\"characterCountTemplate\" />\n          </div>\n          <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n        </div>\n        <ng-container *ngTemplateOutlet=\"buttonsInsetTemplate\" />\n        <ng-container *ngTemplateOutlet=\"iconsInsetTemplate\" />\n      </div>\n    </div>\n    <ng-container *ngTemplateOutlet=\"buttonsTemplate\" />\n  </div>\n  <ng-container *ngTemplateOutlet=\"hintTextTemplate\" />\n  <ng-container *ngTemplateOutlet=\"errorLabelTemplate\" />\n</div>\n\n<ng-template #labelTemplate>\n  <ng-content select=\".sky-control-label\" />\n  @if (labelText) {\n    <label\n      class=\"sky-control-label\"\n      [attr.aria-label]=\"\n        characterLimit !== undefined\n          ? labelText +\n            ' ' +\n            ('skyux_character_count_message'\n              | skyLibResources: characterCountScreenReader : characterLimit)\n          : null\n      \"\n      [for]=\"controlId\"\n      [id]=\"labelId\"\n      [ngClass]=\"{\n        'sky-control-label-required': required\n      }\"\n      >{{ labelText }}</label\n    >\n  }\n</ng-template>\n\n<ng-template #inlineHelpTemplate>\n  @if ((helpPopoverContent || helpKey) && labelText) {\n    <sky-help-inline\n      class=\"sky-control-help\"\n      [helpKey]=\"helpKey\"\n      [labelText]=\"labelText\"\n      [popoverContent]=\"helpPopoverContent\"\n      [popoverTitle]=\"helpPopoverTitle\"\n    />\n  }\n  <ng-content select=\".sky-control-help\" />\n</ng-template>\n\n<ng-template #characterCountTemplate>\n  @if (characterLimit !== undefined) {\n    <sky-character-counter-indicator\n      [characterCount]=\"controlDir?.value?.length || 0\"\n      [characterCountLimit]=\"characterLimit\"\n    />\n  }\n  <ng-content select=\"sky-character-counter-indicator\" />\n</ng-template>\n\n<ng-template #inputTemplate>\n  <ng-content\n    select=\"input,select,.sky-form-control:not(textarea),sky-autocomplete,sky-text-editor\"\n  />\n  @if (hostInputTemplate) {\n    <ng-container [ngTemplateOutlet]=\"hostInputTemplate\" />\n  }\n  <ng-content select=\"textarea\" />\n</ng-template>\n\n<ng-template #buttonsLeftTemplate>\n  <ng-content select=\".sky-input-group-btn.sky-input-box-btn-left\" />\n  @if (hostButtonsLeftTemplate) {\n    <ng-container [ngTemplateOutlet]=\"hostButtonsLeftTemplate\" />\n  }\n</ng-template>\n\n<ng-template #buttonsTemplate>\n  <ng-content\n    select=\".sky-input-group-btn:not(.sky-input-box-btn-left):not(.sky-input-box-btn-inset)\"\n  />\n  @if (hostButtonsTemplate) {\n    <ng-container [ngTemplateOutlet]=\"hostButtonsTemplate\" />\n  }\n</ng-template>\n\n<ng-template #buttonsInsetTemplate>\n  <ng-content select=\".sky-input-group-btn.sky-input-box-btn-inset\" />\n  @if (hostButtonsInsetTemplate) {\n    <ng-container [ngTemplateOutlet]=\"hostButtonsInsetTemplate\" />\n  }\n</ng-template>\n\n<ng-template #iconsInsetTemplate>\n  <div class=\"sky-input-box-icon-inset-wrapper\" (click)=\"onInsetIconClick()\">\n    <ng-content select=\".sky-input-group-icon.sky-input-box-icon-inset\" />\n    @if (hostIconsInsetTemplate) {\n      <ng-container [ngTemplateOutlet]=\"hostIconsInsetTemplate\" />\n    }\n  </div>\n</ng-template>\n\n<ng-template #iconsInsetLeftTemplate>\n  <div\n    class=\"sky-input-box-icon-inset-left-wrapper\"\n    (click)=\"onInsetIconClick()\"\n  >\n    <ng-content select=\".sky-input-group-icon.sky-input-box-icon-inset-left\" />\n    @if (hostIconsInsetLeftTemplate) {\n      <ng-container [ngTemplateOutlet]=\"hostIconsInsetLeftTemplate\" />\n    }\n  </div>\n</ng-template>\n\n<ng-template #errorLabelTemplate>\n  <sky-form-errors\n    [id]=\"errorId\"\n    [errors]=\"controlDir?.errors\"\n    [labelText]=\"labelText\"\n    [touched]=\"controlDir?.touched\"\n    [dirty]=\"controlDir?.dirty\"\n  >\n    <ng-content\n      select=\"sky-form-error,span.sky-input-box-descendent-form-error\"\n    />\n  </sky-form-errors>\n  <ng-content select=\".sky-error-label,.sky-error-indicator\" />\n</ng-template>\n\n<ng-template #hintTextTemplate>\n  @if (hintText || hostHintText) {\n    <div\n      class=\"sky-input-box-hint-text\"\n      [skyThemeClass]=\"{\n        'sky-font-deemphasized': 'default',\n        'sky-font-hint-text-s': 'modern'\n      }\"\n      [ngClass]=\"{\n        'sky-input-box-hint-text-hidden': hintTextHidden,\n        'sky-screen-reader-only': hintTextScreenReaderOnly\n      }\"\n      [id]=\"hintTextId\"\n    >\n      {{ hintText | skyInputBoxHintText: hostHintText }}\n    </div>\n  }\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyCharacterCounterModule } from '../character-counter/character-counter.module';\nimport { SkyFormErrorModule } from '../form-error/form-error.module';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyInputBoxControlDirective } from './input-box-control.directive';\nimport { SkyInputBoxHintTextPipe } from './input-box-hint-text.pipe';\nimport { SkyInputBoxComponent } from './input-box.component';\n\n@NgModule({\n  declarations: [SkyInputBoxComponent],\n  imports: [\n    CommonModule,\n    SkyCharacterCounterModule,\n    SkyFormErrorsModule,\n    SkyFormErrorModule,\n    SkyFormsResourcesModule,\n    SkyHelpInlineModule,\n    SkyInputBoxControlDirective,\n    SkyInputBoxHintTextPipe,\n    SkyThemeModule,\n  ],\n  exports: [\n    SkyInputBoxHintTextPipe,\n    SkyInputBoxComponent,\n    SkyInputBoxControlDirective,\n    SkyFormErrorModule,\n  ],\n})\nexport class SkyInputBoxModule {}\n","import { CommonModule } from '@angular/common';\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  Output,\n  TemplateRef,\n  ViewChild,\n  booleanAttribute,\n  inject,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormsModule,\n  NgControl,\n  Validators,\n} from '@angular/forms';\nimport {\n  SkyFileReaderService,\n  SkyIdModule,\n  SkyIdService,\n  SkyLiveAnnouncerService,\n} from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { take } from 'rxjs/operators';\n\nimport { SkyFormErrorComponent } from '../../form-error/form-error.component';\nimport { SKY_FORM_ERRORS_ENABLED } from '../../form-error/form-errors-enabled-token';\nimport { SkyFormErrorsComponent } from '../../form-error/form-errors.component';\nimport { SkyInputBoxModule } from '../../input-box/input-box.module';\nimport { SkyFormsResourcesModule } from '../../shared/sky-forms-resources.module';\nimport { SkyFileAttachmentService } from '../file-attachment/file-attachment.service';\nimport { SkyFileItem } from '../shared/file-item';\nimport { SkyFileSizePipe } from '../shared/file-size.pipe';\nimport { SkyFileValidateFn } from '../shared/file-validate-function';\n\nimport { SkyFileDropChange } from './file-drop-change';\nimport { SkyFileLink } from './file-link';\n\nconst MAX_FILE_SIZE_DEFAULT = 500000;\nconst MIN_FILE_SIZE_DEFAULT = 0;\n\n/**\n * Provides an element to attach multiple files where users can browse or drag and drop local files\n * or provide hyperlinks to external files. You can leave the contents of the component\n * blank to display the drop zone's default UI, or you can specify custom content to\n * display instead. When the module initializes, it disables the ability to drag and\n * drop files for the entire window to prevent the browser from opening files that are\n * accidentally dropped outside the target zone. If you implement your own file drop functionality\n * outside of the file drop component, you can place the `sky-file-drop-target` CSS class\n * on the element that receives drop events to exempt it from the drop exclusion rule.\n */\n@Component({\n  selector: 'sky-file-drop',\n  templateUrl: './file-drop.component.html',\n  styleUrls: ['./file-drop.component.scss'],\n  providers: [\n    SkyFileAttachmentService,\n    { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    SkyFileSizePipe,\n    SkyFormErrorComponent,\n    SkyFormErrorsComponent,\n    SkyFormsResourcesModule,\n    SkyHelpInlineModule,\n    SkyIconModule,\n    SkyIdModule,\n    SkyInputBoxModule,\n    SkyThemeModule,\n  ],\n})\nexport class SkyFileDropComponent implements OnDestroy, ControlValueAccessor {\n  /**\n   * Fires when users add or remove files.\n   */\n  @Output()\n  public filesChanged = new EventEmitter<SkyFileDropChange>();\n\n  /**\n   * Fires when the link input box triggers a blur event.\n   */\n  @Output()\n  public linkInputBlur = new EventEmitter<void>();\n\n  /**\n   * Fires when users add or remove links.\n   */\n  @Output()\n  public linkChanged = new EventEmitter<SkyFileLink>();\n\n  /**\n   * The ARIA label for the file upload button. This provides a text equivalent for\n   * screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n   * @default \"Drag a file here or click to browse\"\n   */\n  @Input()\n  public fileUploadAriaLabel: string | undefined;\n\n  /**\n   * The ARIA label for the link upload input. This sets the button's `aria-label` attribute to provide a text equivalent for\n   * screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n   * @default \"Link to a file\"\n   */\n  @Input()\n  public linkUploadAriaLabel: string | undefined;\n\n  /**\n   * The hint text for the link upload input.\n   */\n  @Input()\n  public linkUploadHintText: string | undefined;\n\n  /**\n   * The minimum size in bytes for valid files.\n   * @default 0\n   */\n  @Input()\n  public set minFileSize(value: number | undefined) {\n    this.#_minFileSize = value ?? MIN_FILE_SIZE_DEFAULT;\n  }\n\n  public get minFileSize(): number {\n    return this.#_minFileSize;\n  }\n\n  /**\n   * The maximum size in bytes for valid files.\n   * @default 500000\n   */\n  @Input()\n  public set maxFileSize(value: number | undefined) {\n    this.#_maxFileSize = value ?? MAX_FILE_SIZE_DEFAULT;\n  }\n\n  public get maxFileSize(): number {\n    return this.#_maxFileSize;\n  }\n\n  /**\n   * Whether users can drag and drop multiple files at the same time.\n   */\n  @Input()\n  public multiple: boolean | undefined = true;\n\n  /**\n   * The custom validation function. This validation runs alongside the internal\n   * file validation. This function takes a `SkyFileItem` object as a parameter.\n   * The string returned is used as the error message in multi-file attachment.\n   */\n  @Input()\n  public validateFn: SkyFileValidateFn | undefined;\n\n  /**\n   * The comma-delimited string literal of MIME types that users can attach.\n   * By default, all file types are allowed.\n   * @required\n   */\n  @Input()\n  public acceptedTypes: string | undefined;\n\n  /**\n   * A custom error message to display when a file doesn't match the accepted types.\n   * This replaces a default error message that lists all accepted types.\n   */\n  @Input()\n  public acceptedTypesErrorMessage: string | undefined;\n\n  /**\n   * Whether to disable the option to browse for files to attach.\n   */\n  @Input()\n  public noClick: boolean | undefined = false;\n\n  /**\n   * Whether to display the option to attach files from URLs rather than from local devices.\n   */\n  @Input()\n  public allowLinks: boolean | undefined = false;\n\n  /**\n   * The text to display as the file attachment's label.\n   */\n  @Input()\n  public labelText: string | undefined;\n\n  /**\n   * Whether to hide `labelText` from view.\n   */\n  @Input({ transform: booleanAttribute })\n  public labelHidden = false;\n\n  /**\n   * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n   * additional context to the user.\n   */\n  @Input()\n  public hintText: string | undefined;\n\n  /**\n   * Whether uploading a file or link is required.\n   * When you set this property to `true`, the component adds `aria-required` and `required`\n   * attributes to the input elements so that screen readers announce an invalid state until the input element\n   * is complete.\n   * For more information about the `aria-required` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-required).\n   */\n  @Input({ transform: booleanAttribute })\n  public required = false;\n\n  /**\n   * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to the file attachment label. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  /**\n   * Whether the file attachment is stacked on another form component. When specified, the appropriate\n   * vertical spacing is automatically added to the file attachment.\n   */\n  @Input({ transform: booleanAttribute })\n  @HostBinding('class.sky-form-field-stacked')\n  public stacked = false;\n\n  /**\n   * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is placed beside the file attachment label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n   * as configured by the application. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  @ViewChild('fileInput')\n  public inputEl: ElementRef | undefined;\n\n  public rejectedOver = false;\n  public acceptedOver = false;\n  public linkUrl: string | undefined;\n\n  #enterEventTarget: any;\n\n  #_maxFileSize = MAX_FILE_SIZE_DEFAULT;\n\n  #_minFileSize = MIN_FILE_SIZE_DEFAULT;\n\n  #notifyTouched: (() => void) | undefined;\n  #notifyChange:\n    | ((_: (SkyFileItem | SkyFileLink)[] | undefined | null) => void)\n    | undefined;\n  #_uploadedFiles: (SkyFileItem | SkyFileLink)[] = [];\n\n  readonly #fileAttachmentService = inject(SkyFileAttachmentService);\n  readonly #fileReaderSvc = inject(SkyFileReaderService);\n  readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n  readonly #resourcesSvc = inject(SkyLibResourcesService);\n  readonly #idSvc = inject(SkyIdService);\n\n  protected errorId = this.#idSvc.generateId();\n\n  protected ngControl = inject(NgControl, { optional: true });\n\n  protected rejectedFiles: SkyFileItem[] = [];\n\n  constructor() {\n    if (this.ngControl) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.filesChanged.complete();\n    this.linkChanged.complete();\n    this.linkInputBlur.complete();\n  }\n\n  public writeValue(value: unknown): void {\n    if (Array.isArray(value)) {\n      const linkUploads: SkyFileLink[] = [];\n      const fileUploads: SkyFileItem[] = [];\n\n      value.forEach((file) => {\n        if ('url' in file && file.url !== undefined) {\n          if (!('file' in file)) {\n            linkUploads.push(file);\n          } else if ('file' in file && file.file !== undefined) {\n            fileUploads.push(file);\n          }\n        }\n      });\n\n      if (!(linkUploads.length > 0) && !(fileUploads.length > 0)) {\n        this.#notifyChange?.(null);\n      } else {\n        this.#_uploadedFiles = [];\n\n        if (linkUploads.length > 0) {\n          linkUploads.forEach((file) => {\n            this.uploadLink(file);\n          });\n        }\n        if (fileUploads.length > 0) {\n          // this prevents FormControl from setting an invalid value before the async\n          // processes in #handleFile is complete\n          this.#notifyChange?.(null);\n          this.#handleFiles(fileUploads);\n        }\n      }\n    } else {\n      this.#notifyChange?.(null);\n    }\n  }\n\n  public registerOnChange(fn: any): void {\n    this.#notifyChange = fn;\n  }\n\n  public registerOnTouched(fn: () => void): void {\n    this.#notifyTouched = fn;\n  }\n\n  public dropClicked(): void {\n    if (!this.noClick && this.inputEl) {\n      this.#notifyTouched?.();\n      this.inputEl.nativeElement.click();\n    }\n  }\n\n  public fileChangeEvent(fileChangeEvent: Event): void {\n    /** Set a timeout here to allow the browser to regain context from the system dialog. Without this, error messages do not read out correctly to screen readers. */\n    setTimeout(() => {\n      this.#handleFiles(\n        (fileChangeEvent.target as HTMLInputElement | undefined)?.files,\n      );\n    }, 500);\n  }\n\n  public fileDragEnter(dragEnterEvent: DragEvent): void {\n    // Save this target to know when the drag event leaves\n    this.#enterEventTarget = dragEnterEvent.target;\n    dragEnterEvent.stopPropagation();\n    dragEnterEvent.preventDefault();\n  }\n\n  public fileDragOver(dragOverEvent: DragEvent): void {\n    const transfer = dragOverEvent.dataTransfer;\n\n    dragOverEvent.stopPropagation();\n    dragOverEvent.preventDefault();\n\n    if (transfer) {\n      if (transfer.items) {\n        const files = Array.from(transfer.items);\n\n        for (const file of files) {\n          if (\n            file.type &&\n            this.#fileAttachmentService.fileTypeRejected(\n              file.type,\n              this.acceptedTypes,\n            )\n          ) {\n            this.rejectedOver = true;\n            this.acceptedOver = false;\n            return;\n          }\n        }\n\n        if (files.length > 0 && !this.acceptedOver) {\n          this.rejectedOver = false;\n          this.acceptedOver = true;\n        }\n      } /* istanbul ignore next: untestable */ else if (transfer.files) {\n        // If the browser does not support DataTransfer.items,\n        // defer file-type checking to drop handler.\n        // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n        this.rejectedOver = false;\n        this.acceptedOver = true;\n      }\n    }\n  }\n\n  public fileDrop(dropEvent: DragEvent): void {\n    dropEvent.stopPropagation();\n    dropEvent.preventDefault();\n\n    this.#notifyTouched?.();\n\n    this.#enterEventTarget = undefined;\n    this.rejectedOver = false;\n    this.acceptedOver = false;\n\n    if (dropEvent.dataTransfer && dropEvent.dataTransfer.files) {\n      const hasDirectory = this.#fileAttachmentService.hasDirectory(\n        dropEvent.dataTransfer.files,\n      );\n      const invalidNumberOfFiles =\n        !this.multiple && dropEvent.dataTransfer.files.length > 1;\n\n      if (hasDirectory || invalidNumberOfFiles) {\n        return;\n      }\n\n      this.#handleFiles(dropEvent.dataTransfer.files);\n    }\n  }\n\n  public fileDragLeave(dragLeaveEvent: any): void {\n    if (this.#enterEventTarget === dragLeaveEvent.target) {\n      this.rejectedOver = false;\n      this.acceptedOver = false;\n    }\n  }\n\n  public addLinkEnter(event: KeyboardEvent): void {\n    if (event.which === 13) {\n      this.addLink(event);\n    }\n  }\n\n  public addLink(event: Event): void {\n    event.preventDefault();\n    this.uploadLink({ url: this.linkUrl } as SkyFileLink);\n    this.linkUrl = undefined;\n    this.#notifyTouched?.();\n  }\n\n  protected uploadLink(file: SkyFileLink): void {\n    this.linkChanged.emit(file);\n    this.#_uploadedFiles?.push(file);\n    this.#notifyChange?.(this.#_uploadedFiles);\n    this.#announceState(\n      'skyux_file_attachment_file_upload_link_added',\n      file.url,\n    );\n  }\n\n  public onLinkBlur(): void {\n    this.#notifyTouched?.();\n    this.linkInputBlur.emit();\n  }\n\n  protected get isRequired(): boolean {\n    return (\n      this.required ||\n      (this.ngControl?.control?.hasValidator(Validators.required) ?? false)\n    );\n  }\n\n  #announceState(resourceString: string, ...args: any[]): void {\n    this.#resourcesSvc\n      .getString(resourceString, ...args)\n      .pipe(take(1))\n      .subscribe((internationalizedString) => {\n        this.#liveAnnouncerSvc.announce(internationalizedString);\n      });\n  }\n\n  #emitFileChangeEvent(\n    totalFiles: number,\n    rejectedFileArray: SkyFileItem[],\n    validFileArray: SkyFileItem[],\n  ): void {\n    if (totalFiles === rejectedFileArray.length + validFileArray.length) {\n      this.filesChanged.emit({\n        files: validFileArray,\n        rejectedFiles: rejectedFileArray,\n      } as SkyFileDropChange);\n\n      if (this.inputEl) {\n        this.inputEl.nativeElement.value = '';\n      }\n    }\n  }\n\n  #filesRejected(\n    file: SkyFileItem,\n    validFileArray: SkyFileItem[],\n    rejectedFileArray: SkyFileItem[],\n    totalFiles: number,\n  ): void {\n    rejectedFileArray.push(file);\n    this.#notifyChange?.(\n      this.#_uploadedFiles.length > 0 ? this.#_uploadedFiles : null,\n    );\n    this.#emitFileChangeEvent(totalFiles, rejectedFileArray, validFileArray);\n  }\n\n  async #loadFile(\n    fileDrop: SkyFileDropComponent,\n    file: SkyFileItem,\n    validFileArray: SkyFileItem[],\n    rejectedFileArray: SkyFileItem[],\n    totalFiles: number,\n  ): Promise<void> {\n    try {\n      file.url = await this.#fileReaderSvc.readAsDataURL(file.file);\n\n      validFileArray.push(file);\n      fileDrop.#emitFileChangeEvent(\n        totalFiles,\n        rejectedFileArray,\n        validFileArray,\n      );\n      this.#announceState(\n        'skyux_file_attachment_file_upload_file_added',\n        file.file.name,\n      );\n      this.#_uploadedFiles?.push(file);\n      this.#notifyChange?.(this.#_uploadedFiles);\n    } catch {\n      fileDrop.#filesRejected(\n        file,\n        validFileArray,\n        rejectedFileArray,\n        totalFiles,\n      );\n    }\n  }\n\n  #handleFiles(fileList?: FileList | null | SkyFileItem[]): void {\n    if (fileList) {\n      const validFileArray: SkyFileItem[] = [];\n      const rejectedFileArray: SkyFileItem[] = [];\n      const totalFiles = fileList.length;\n\n      let files: SkyFileItem[] = [];\n\n      if ('item' in fileList) {\n        for (let index = 0; index < fileList.length; index++) {\n          files.push({\n            file: fileList.item(index),\n          } as SkyFileItem);\n        }\n      } else {\n        files = fileList;\n      }\n\n      const processedFiles = this.#fileAttachmentService.checkFiles(\n        files,\n        this.minFileSize,\n        this.maxFileSize,\n        this.acceptedTypes,\n        this.validateFn,\n      );\n\n      for (const file of processedFiles) {\n        if (file.errorType) {\n          this.#filesRejected(\n            file,\n            validFileArray,\n            rejectedFileArray,\n            totalFiles,\n          );\n        } else {\n          void this.#loadFile(\n            this,\n            file,\n            validFileArray,\n            rejectedFileArray,\n            totalFiles,\n          );\n        }\n      }\n\n      this.rejectedFiles = rejectedFileArray;\n    }\n  }\n}\n","<fieldset class=\"sky-file-drop-wrapper\">\n  @if (labelText) {\n    <legend\n      class=\"sky-control-label sky-font-body-default\"\n      [ngClass]=\"{\n        'sky-screen-reader-only': labelHidden\n      }\"\n    >\n      <span\n        class=\"sky-file-drop-label-text\"\n        [ngClass]=\"{\n          'sky-control-label-required': isRequired\n        }\"\n        >{{ labelText }}</span\n      >\n      @if (isRequired) {\n        <span class=\"sky-screen-reader-only\">{{\n          'skyux_file_attachment_required' | skyLibResources\n        }}</span>\n      }\n      @if (helpPopoverContent || helpKey) {\n        <span class=\"sky-control-help-container\">\n          <sky-help-inline\n            [helpKey]=\"helpKey\"\n            [labelText]=\"labelText\"\n            [popoverTitle]=\"helpPopoverTitle\"\n            [popoverContent]=\"helpPopoverContent\"\n          />\n        </span>\n      }\n    </legend>\n  }\n  <div\n    class=\"sky-file-drop-row\"\n    [ngClass]=\"{ 'sky-file-drop-allow-links': allowLinks }\"\n  >\n    <div\n      class=\"sky-file-drop-col\"\n      [ngClass]=\"{\n        'sky-file-drop-accept': acceptedOver,\n        'sky-file-drop-reject': rejectedOver\n      }\"\n    >\n      <button\n        class=\"sky-file-drop sky-file-drop-target\"\n        type=\"button\"\n        [attr.aria-label]=\"\n          fileUploadAriaLabel ||\n          ('skyux_file_attachment_file_upload_drag_or_click' | skyLibResources)\n        \"\n        [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n        [attr.aria-invalid]=\"!!rejectedFiles.length\"\n        [attr.aria-errormessage]=\"\n          labelText && rejectedFiles.length ? errorId : undefined\n        \"\n        (click)=\"dropClicked()\"\n        (dragover)=\"fileDragOver($event)\"\n        (dragenter)=\"fileDragEnter($event)\"\n        (dragleave)=\"fileDragLeave($event)\"\n        (drop)=\"fileDrop($event)\"\n      ></button>\n\n      <input\n        #fileInput\n        tabindex=\"-1\"\n        aria-hidden=\"true\"\n        type=\"file\"\n        class=\"sky-file-input-hidden\"\n        [attr.multiple]=\"multiple ? multiple : null\"\n        [attr.accept]=\"acceptedTypes ? acceptedTypes : null\"\n        (change)=\"fileChangeEvent($event)\"\n      />\n\n      @if (customEl.children.length === 0) {\n        <div class=\"sky-file-drop-contents sky-file-drop-upload-contents\">\n          <div class=\"sky-file-drop-contents-not-over\">\n            <div\n              class=\"sky-file-drop-text-header\"\n              [skyThemeClass]=\"{\n                'sky-font-display-3': 'default'\n              }\"\n            >\n              {{\n                'skyux_file_attachment_file_upload_drag_file_here'\n                  | skyLibResources\n              }}\n            </div>\n            <div class=\"sky-file-drop-text\">\n              {{\n                'skyux_file_attachment_file_upload_or_click_to_browse'\n                  | skyLibResources\n              }}\n            </div>\n            <sky-icon\n              class=\"sky-file-upload-icon\"\n              iconName=\"arrow-upload\"\n              iconSize=\"xl\"\n            />\n          </div>\n\n          <!-- This will appear when file is dragged over and is valid -->\n          <div class=\"sky-file-drop-contents-accept\">\n            <div\n              class=\"sky-file-drop-text-header\"\n              [skyThemeClass]=\"{\n                'sky-font-display-3': 'default'\n              }\"\n            >\n              {{\n                'skyux_file_attachment_file_upload_drop_files_here'\n                  | skyLibResources\n              }}\n            </div>\n            <sky-icon\n              class=\"sky-file-upload-icon sky-file-upload-icon-target\"\n              iconName=\"target\"\n              iconSize=\"xl\"\n            />\n          </div>\n\n          <!-- This will appear when file is dragged over and is invalid -->\n          <div class=\"sky-file-drop-contents-reject\">\n            <div\n              class=\"sky-file-drop-text-header\"\n              [skyThemeClass]=\"{\n                'sky-font-display-3': 'default'\n              }\"\n            >\n              {{\n                'skyux_file_attachment_file_upload_invalid_file'\n                  | skyLibResources\n              }}\n            </div>\n            <sky-icon\n              class=\"sky-file-upload-icon sky-file-upload-icon-close\"\n              iconName=\"prohibited\"\n              iconSize=\"xl\"\n            />\n          </div>\n        </div>\n      }\n\n      <div #customEl class=\"sky-file-drop-contents-custom\">\n        <ng-content />\n      </div>\n    </div>\n    @if (allowLinks) {\n      <div class=\"sky-file-drop-col\">\n        <div class=\"sky-file-drop-contents\">\n          <div class=\"sky-file-drop-link\">\n            <div class=\"sky-file-drop-link-header\">\n              <div\n                class=\"sky-file-drop-text-header\"\n                [skyThemeClass]=\"{\n                  'sky-font-display-3': 'default'\n                }\"\n              >\n                {{\n                  'skyux_file_attachment_file_upload_link_label'\n                    | skyLibResources\n                }}\n              </div>\n            </div>\n            <sky-input-box [hintText]=\"linkUploadHintText\">\n              <input\n                type=\"text\"\n                [attr.aria-label]=\"\n                  linkUploadAriaLabel ||\n                  ('skyux_file_attachment_file_upload_link_label'\n                    | skyLibResources)\n                \"\n                [attr.aria-invalid]=\"!!rejectedFiles.length\"\n                [attr.aria-errormessage]=\"\n                  labelText && rejectedFiles.length ? errorId : undefined\n                \"\n                [(ngModel)]=\"linkUrl\"\n                (blur)=\"onLinkBlur()\"\n                (keyup)=\"addLinkEnter($event)\"\n              />\n            </sky-input-box>\n            <button\n              type=\"button\"\n              class=\"sky-btn sky-btn-primary\"\n              [disabled]=\"!linkUrl\"\n              (click)=\"addLink($event)\"\n            >\n              {{\n                'skyux_file_attachment_file_upload_link_done' | skyLibResources\n              }}\n            </button>\n          </div>\n        </div>\n      </div>\n    }\n  </div>\n  <div #hintTextEl=\"skyId\" skyId>\n    @if (hintText) {\n      <div\n        class=\"sky-font-deemphasized sky-file-drop-hint-text\"\n        [skyThemeClass]=\"{\n          'sky-font-deemphasized': 'default',\n          'sky-font-hint-text-s': 'modern'\n        }\"\n      >\n        {{ hintText }}\n      </div>\n    }\n  </div>\n</fieldset>\n<sky-form-errors\n  [id]=\"errorId\"\n  [labelText]=\"labelText\"\n  [touched]=\"ngControl ? ngControl.touched : rejectedFiles.length > 0\"\n  [dirty]=\"ngControl?.dirty\"\n  [errors]=\"ngControl?.errors\"\n>\n  <ng-content select=\"sky-form-error\" />\n  @for (rejectedFile of rejectedFiles; track rejectedFile.url) {\n    <div>\n      @if (rejectedFile.errorType === 'fileType') {\n        <sky-form-error\n          errorName=\"fileType\"\n          [errorText]=\"\n            'skyux_file_attachment_file_type_error_label_text_with_name'\n              | skyLibResources\n                : rejectedFile.file.name\n                : rejectedFile.errorParam\n          \"\n        />\n      } @else if (rejectedFile.errorType === 'maxFileSize') {\n        <sky-form-error\n          errorName=\"maxFileSize\"\n          [errorText]=\"\n            acceptedTypesErrorMessage ??\n              'skyux_file_attachment_max_file_size_error_label_text_with_name'\n              | skyLibResources\n                : rejectedFile.file.name\n                : (rejectedFile.errorParam | skyFileSize)\n          \"\n        />\n      } @else if (rejectedFile.errorType === 'minFileSize') {\n        <sky-form-error\n          errorName=\"minFileSize\"\n          [errorText]=\"\n            'skyux_file_attachment_min_file_size_error_label_text_with_name'\n              | skyLibResources\n                : rejectedFile.file.name\n                : (rejectedFile.errorParam | skyFileSize)\n          \"\n        />\n      } @else if (\n        rejectedFile.errorType === 'validate' && rejectedFile.errorParam\n      ) {\n        <sky-form-error\n          errorName=\"validate\"\n          [errorText]=\"rejectedFile.file.name + ': ' + rejectedFile.errorParam\"\n        />\n      }\n    </div>\n  }\n</sky-form-errors>\n","import {\n  Component,\n  DoCheck,\n  EventEmitter,\n  Input,\n  KeyValueDiffer,\n  KeyValueDiffers,\n  Output,\n  inject,\n} from '@angular/core';\nimport { SkyLiveAnnouncerService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\n\nimport { take } from 'rxjs/operators';\n\nimport { SkyFormsResourcesModule } from '../../shared/sky-forms-resources.module';\nimport { SkyFileItem } from '../shared/file-item';\nimport { SkyFileItemService } from '../shared/file-item.service';\nimport { SkyFileSizePipe } from '../shared/file-size.pipe';\n\nimport { SkyFileLink } from './file-link';\n\n@Component({\n  imports: [SkyFileSizePipe, SkyFormsResourcesModule, SkyIconModule],\n  selector: 'sky-file-item',\n  styleUrl: './file-item.component.scss',\n  templateUrl: './file-item.component.html',\n})\nexport class SkyFileItemComponent implements DoCheck {\n  /**\n   * The summary information to display about file attachments. For local files,\n   * the default summary includes the file name, file size, file preview, and a delete button.\n   * For external files, the default summary includes the URL and a delete button.\n   * You can include additional inputs to display user-entered metadata.\n   * @required\n   */\n  @Input()\n  public set fileItem(value: SkyFileItem | SkyFileLink | undefined) {\n    this.#_fileItem = value;\n    if (value && 'file' in value) {\n      this.isFile = this.#fileItemService.isFile(value);\n      this.isImage = this.#fileItemService.isImage(value);\n      this.fileName = value.file.name;\n      this.fileSize = value.file.size;\n    } else {\n      this.isFile = this.isImage = false;\n      this.fileName = '';\n      this.fileSize = undefined;\n    }\n    this.url = value?.url ?? '';\n  }\n\n  public get fileItem(): SkyFileItem | SkyFileLink | undefined {\n    return this.#_fileItem;\n  }\n\n  /**\n   * Fires when users select the delete button for an item. The deleted item is passed to the\n   * function.\n   */\n  @Output()\n  public deleteFile = new EventEmitter<SkyFileLink | SkyFileItem>();\n\n  public fileName = '';\n\n  public fileSize: number | undefined;\n\n  public url = '';\n\n  public icon: string | undefined;\n\n  public isFile = false;\n  public isImage = false;\n\n  #_fileItem: SkyFileItem | SkyFileLink | undefined;\n\n  #differ: KeyValueDiffer<any, any>;\n  #fileItemService: SkyFileItemService;\n\n  readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n\n  readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n  constructor(differs: KeyValueDiffers, fileItemService: SkyFileItemService) {\n    this.#differ = differs.find({}).create();\n    this.#fileItemService = fileItemService;\n  }\n\n  public ngDoCheck(): void {\n    if (this.fileItem) {\n      const changes = this.#differ.diff(this.fileItem);\n\n      if (changes) {\n        let cls: string | undefined;\n        const extensionUpper = this.#fileItemService.getFileExtensionUpper(\n          this.fileItem as SkyFileItem,\n        );\n        let fileTypeUpper: string;\n\n        switch (extensionUpper) {\n          case '.PDF':\n            cls = 'pdf';\n            break;\n          case '.GZ':\n          case '.RAR':\n          case '.TGZ':\n          case '.ZIP':\n            cls = 'archive';\n            break;\n          case '.PPT':\n          case '.PPTX':\n            cls = 'ppt';\n            break;\n          case '.DOC':\n          case '.DOCX':\n            cls = 'doc';\n            break;\n          case '.XLS':\n          case '.XLSX':\n            cls = 'xls';\n            break;\n          case '.TXT':\n            cls = 'text';\n            break;\n          case '.HTM':\n          case '.HTML':\n            cls = 'chevron-double';\n            break;\n          default:\n            break;\n        }\n\n        if (!cls) {\n          fileTypeUpper = this.#fileItemService.getFileTypeUpper(\n            this.fileItem as SkyFileItem,\n          );\n\n          switch (fileTypeUpper.substr(0, fileTypeUpper.indexOf('/'))) {\n            case 'AUDIO':\n              cls = 'audio';\n              break;\n            case 'IMAGE':\n              // Normally images are displayed as thumbnails, but if an image type is not recognized\n              // as being widely supported by modern browsers (e.g. TIFF files) then an icon should\n              // be displayed instead.\n              cls = 'image';\n              break;\n            case 'TEXT':\n              cls = 'text';\n              break;\n            case 'VIDEO':\n              cls = 'video';\n              break;\n            default:\n              break;\n          }\n        }\n        this.icon = 'document' + (cls ? '-' + cls : '');\n      }\n    } else {\n      this.icon = undefined;\n    }\n  }\n\n  public itemDelete(): void {\n    this.deleteFile.emit(this.fileItem);\n    if (!this.isFile) {\n      this.#resourcesSvc\n        .getString('skyux_file_attachment_file_upload_link_removed', this.url)\n        .pipe(take(1))\n        .subscribe((resourceString) => {\n          this.#liveAnnouncerSvc.announce(resourceString);\n        });\n    } else {\n      this.#resourcesSvc\n        .getString(\n          'skyux_file_attachment_file_upload_file_removed',\n          this.fileName,\n        )\n        .pipe(take(1))\n        .subscribe((resourceString) => {\n          this.#liveAnnouncerSvc.announce(resourceString);\n        });\n    }\n  }\n}\n","@if (fileItem) {\n  <div class=\"sky-file-item\">\n    <div class=\"sky-file-item-title\">\n      <div class=\"sky-file-item-name-container\">\n        <div class=\"sky-file-item-name\">\n          @if (isFile) {\n            {{ fileName }}\n          } @else {\n            {{ url }}\n          }\n        </div>\n        @if (isFile) {\n          <div class=\"sky-file-item-size\">({{ fileSize | skyFileSize }})</div>\n        }\n      </div>\n      <div class=\"sky-file-item-controls\">\n        <button\n          type=\"button\"\n          class=\"sky-btn sky-btn-default sky-file-item-btn-delete\"\n          [attr.aria-label]=\"\n            'skyux_file_attachment_file_item_delete'\n              | skyLibResources: (isFile ? fileName : url)\n          \"\n          (click)=\"itemDelete()\"\n        >\n          <sky-icon iconName=\"delete\" />\n        </button>\n      </div>\n    </div>\n    <div class=\"sky-file-item-content\">\n      <div class=\"sky-file-item-preview\">\n        @if (isImage) {\n          <div class=\"sky-file-item-preview-img-container\">\n            <img\n              class=\"sky-file-item-preview-img\"\n              [src]=\"url\"\n              [alt]=\"\n                'skyux_file_attachment_file_upload_image_preview_alt_text'\n                  | skyLibResources\n              \"\n            />\n          </div>\n        } @else if (icon) {\n          <div class=\"sky-file-item-preview-other\">\n            <sky-icon iconSize=\"xxxl\" [iconName]=\"icon\" />\n          </div>\n        }\n      </div>\n      <div class=\"sky-file-item-content-custom\">\n        <ng-content />\n      </div>\n    </div>\n  </div>\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyFormErrorModule } from '../../form-error/form-error.module';\n\nimport { SkyFileDropComponent } from './file-drop.component';\nimport { SkyFileItemComponent } from './file-item.component';\n\n@NgModule({\n  exports: [SkyFileDropComponent, SkyFileItemComponent, SkyFormErrorModule],\n  imports: [SkyFileDropComponent, SkyFileItemComponent],\n})\nexport class SkyFileDropModule {}\n","import { NgModule } from '@angular/core';\n\nimport { SkyFileAttachmentModule } from './file-attachment/file-attachment.module';\nimport { SkyFileDropModule } from './file-drop/file-drop.module';\n\n/**\n * @deprecated Import either `SkyFileAttachmentModule` or `SkyFileDropModule`.\n */\n@NgModule({\n  exports: [SkyFileAttachmentModule, SkyFileDropModule],\n  imports: [SkyFileAttachmentModule, SkyFileDropModule],\n})\nexport class SkyFileAttachmentsModule {}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Tracks the element IDs for all radios within a radio group.\n * @internal\n */\n@Injectable()\nexport class SkyRadioGroupIdService {\n  public get radioIds(): Observable<string[]> {\n    return this.#radioIdsObs;\n  }\n\n  #radioIds: Map<string, string>;\n  #radioIds$: BehaviorSubject<string[]>;\n  #radioIdsObs: Observable<string[]>;\n\n  constructor() {\n    this.#radioIds = new Map();\n    this.#radioIds$ = new BehaviorSubject<string[]>([]);\n    this.#radioIdsObs = this.#radioIds$.asObservable();\n  }\n\n  /**\n   * Associates a radio input's ID with its parent radio group.\n   * @param {string} id A unique ID for the radio component.\n   * @param {string} inputElementId The ID applied to the radio input element.\n   */\n  public register(id: string, inputElementId: string): void {\n    if (!this.#radioIds.has(id) || this.#radioIds.get(id) !== inputElementId) {\n      this.#radioIds.set(id, inputElementId);\n      this.#emitRadioIds();\n    }\n  }\n\n  /**\n   * Disassociates a radio input's ID with its parent radio group.\n   * @param {string} id The ID used to register the radio component.\n   */\n  public unregister(id: string): void {\n    if (this.#radioIds.has(id)) {\n      this.#radioIds.delete(id);\n      this.#emitRadioIds();\n    }\n  }\n\n  #emitRadioIds(): void {\n    this.#radioIds$.next(Array.from(this.#radioIds.values()));\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  Provider,\n  TemplateRef,\n  booleanAttribute,\n  forwardRef,\n  inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyRadioGroupIdService } from './radio-group-id.service';\nimport { SkyRadioChange } from './types/radio-change';\nimport { SkyRadioType } from './types/radio-type';\n\n/**\n * Provider Expression that allows sky-radio to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n */\nconst SKY_RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => SkyRadioComponent),\n  multi: true,\n};\n\n/**\n * Renders a SKY UX-themed replacement for an HTML `input` element\n * with `type=\"radio\"`. When users select a radio button, its value is driven through an\n * `ngModel` attribute that you specify on the `sky-radio` element or the parent `sky-radio-group` element.\n */\n@Component({\n  selector: 'sky-radio',\n  templateUrl: './radio.component.html',\n  styleUrls: ['./radio.component.scss'],\n  providers: [SKY_RADIO_CONTROL_VALUE_ACCESSOR],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  hostDirectives: [SkyThemeComponentClassDirective],\n  standalone: false,\n})\nexport class SkyRadioComponent implements OnDestroy, ControlValueAccessor {\n  /**\n   * Fires when users focus off a radio button.\n   */\n  public blur = new Subject<void>();\n\n  /**\n   * Whether the radio button is selected.\n   * @default false\n   */\n  @Input()\n  public set checked(value: boolean | undefined) {\n    const newCheckedState = !!value;\n\n    if (this.#_checked !== newCheckedState) {\n      this.#_checked = newCheckedState;\n      this.checkedChange.next(newCheckedState);\n\n      if (newCheckedState) {\n        this.selectedValue = this.value;\n      }\n    }\n\n    this.#changeDetector.markForCheck();\n  }\n\n  public get checked(): boolean {\n    return this.#_checked;\n  }\n\n  /**\n   * Whether to disable the input on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n   * To set the disabled state on reactive forms, use the `FormControl` instead.\n   * @default false\n   */\n  @Input({ transform: booleanAttribute })\n  public set disabled(value: boolean) {\n    if (value !== this.disabled) {\n      this.#_disabled = value;\n      this.disabledChange.next(value);\n      this.#changeDetector.markForCheck();\n    }\n  }\n\n  public get disabled(): boolean {\n    return this.#_disabled;\n  }\n\n  /**\n   * The ID for the radio button.\n   * If a value is not provided, an autogenerated ID is used.\n   */\n  @Input()\n  public set id(value: string | undefined) {\n    if (value) {\n      this.inputId = `sky-radio-${value}-input`;\n    } else {\n      this.inputId = `sky-radio-${this.#defaultId}-input`;\n    }\n    this.#radioGroupIdSvc?.register(this.#defaultId, this.inputId);\n  }\n\n  /**\n   * The ARIA label for the radio button. This sets the radio button's `aria-label`\n   * attribute to provide a text equivalent for screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n   * when the radio button does not include a visible label. You must set this property for icon\n   * radio buttons. If the radio button includes a visible label, use `labelledBy` instead.\n   * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n   * @deprecated Use `labelText` instead.\n   */\n  @Input()\n  public set label(value: string | undefined) {\n    this.#_label = value;\n\n    if (value) {\n      this.#logger.deprecated('SkyRadioComponent.label', {\n        deprecationMajorVersion: 10,\n        replacementRecommendation: 'Use the `labelText` input instead.',\n      });\n    }\n  }\n\n  public get label(): string | undefined {\n    return this.#_label;\n  }\n\n  /**\n   * The HTML element ID of the element that labels\n   * the radio button. This sets the radio button's `aria-labelledby` attribute to provide a text equivalent for screen readers\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * If the radio button does not include a visible label, use `label` instead.\n   * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n   * @deprecated Use `labelText` instead.\n   */\n  @Input()\n  public set labelledBy(value: string | undefined) {\n    this.#_labelledBy = value;\n\n    if (value) {\n      this.#logger.deprecated('SkyRadioComponent.labelledBy', {\n        deprecationMajorVersion: 10,\n        replacementRecommendation: 'Use the `labelText` input instead.',\n      });\n    }\n  }\n\n  public get labelledBy(): string | undefined {\n    return this.#_labelledBy;\n  }\n\n  /**\n   * This property is deprecated in favor of the `name` property on the `sky-radio-group element`.\n   * We recommend using the `sky-radio-group` element with all radio buttons, but if you opt not to,\n   * then this property specifies a name for a group of radio buttons.\n   * @deprecated\n   */\n  @Input()\n  public set name(value: string | undefined) {\n    this.#_name = value;\n    this.#changeDetector.markForCheck();\n  }\n\n  public get name(): string | undefined {\n    return this.#_name;\n  }\n\n  /**\n   * This property is deprecated in favor of\n   * the `tabIndex` property on the `sky-radio-group` element. It specifies an index for the radio\n   * button. If the index is not defined, it is set to the position of the radio button on load.\n   * @deprecated\n   */\n  @Input()\n  public set tabindex(value: number | undefined) {\n    console.warn(\n      'The sky-radio `tabindex` property is deprecated. Please use the `tabindex` property on the sky-radio-group component.',\n    );\n    if (value) {\n      this.#_tabindex = value;\n    } else {\n      this.#_tabindex = 0;\n    }\n    this.#changeDetector.markForCheck();\n  }\n  public get tabindex(): number {\n    return this.#_tabindex;\n  }\n\n  // For setting the tabindex from the radio group\n  public set groupTabIndex(value: number | undefined) {\n    if (value) {\n      this.#_tabindex = value;\n    } else {\n      this.#_tabindex = 0;\n    }\n\n    this.#changeDetector.markForCheck();\n  }\n\n  /**\n   * The value bound to the radio button's `value` property. The value usually\n   * corresponds to the radio button's label, which you specify with the `sky-radio-label`\n   * component.\n   * @required\n   */\n  @Input()\n  public set value(value: any) {\n    /* istanbul ignore else */\n    if (this.#_value !== value) {\n      if (this.selectedValue && this.selectedValue === this.#_value) {\n        this.selectedValue = value;\n        this.#onChangeCallback(this.selectedValue);\n        this.#onTouchedCallback();\n      }\n\n      this.#_value = value;\n    }\n\n    this.#changeDetector.markForCheck();\n  }\n\n  public get value(): any {\n    return this.#_value;\n  }\n\n  /**\n   * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to radio button. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  /**\n   * The SVG icon to display in place of the radio button. To group radio buttons like in\n   * the demo above, place the `sky-switch-icon-group` class on the direct parent element of the\n   * radio buttons.\n   */\n  @Input()\n  public iconName: string | undefined;\n\n  /**\n   * The background color type after users select an icon radio button.\n   * The valid options correspond\n   * [the label component's](https://developer.blackbaud.com/skyux/components/label)\n   * label types. `danger` creates a red background, `info` creates a blue background,\n   * `success` creates a green background, and `warning` creates an orange background.\n   * @default \"info\"\n   * @deprecated radioType is no longer supported\n   */\n  @Input()\n  public get radioType(): SkyRadioType {\n    return this.#_radioType;\n  }\n  public set radioType(value: SkyRadioType | undefined) {\n    if (value) {\n      this.#logger.deprecated('SkyRadioComponent.radioType', {\n        deprecationMajorVersion: 7,\n      });\n    }\n\n    this.#_radioType = value ?? 'info';\n  }\n\n  /**\n   * The text to display as the radio button's label. Use this instead of the `sky-radio-label` when the label is text-only.\n   */\n  @Input()\n  public labelText: string | undefined;\n\n  /**\n   * Indicates whether to hide the `labelText`.\n   */\n  @Input({ transform: booleanAttribute })\n  public labelHidden = false;\n\n  /**\n   * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n   * additional context to the user.\n   */\n  @Input()\n  public hintText: string | undefined;\n\n  /**\n   * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is placed beside the radio button label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n   * as configured by the application. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  /**\n   * Fires when users select a radio button.\n   */\n  @Output()\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  public change = new EventEmitter<SkyRadioChange>();\n\n  /**\n   * Fires when the selected value changes.\n   */\n  @Output()\n  public checkedChange = new EventEmitter<boolean>();\n\n  /**\n   * Fires when the selected value changes.\n   */\n  @Output()\n  public disabledChange = new EventEmitter<boolean>();\n\n  public set selectedValue(value: any) {\n    if (value !== this.#_selectedValue) {\n      this.#_selectedValue = value;\n    }\n  }\n  public get selectedValue(): any {\n    return this.#_selectedValue;\n  }\n\n  public radioGroupDisabled = false;\n\n  protected inputId = '';\n\n  #_checked = false;\n  #_disabled = false;\n  #_name: string | undefined;\n  #_radioType: SkyRadioType = 'info';\n  #_selectedValue: unknown;\n  #_tabindex = 0;\n  #_value: any;\n  #_label: string | undefined;\n  #_labelledBy: string | undefined;\n\n  #changeDetector = inject(ChangeDetectorRef);\n  #defaultId = inject(SkyIdService).generateId();\n  #radioGroupIdSvc = inject(SkyRadioGroupIdService, { optional: true });\n  #logger = inject(SkyLogService);\n\n  constructor() {\n    this.id = this.#defaultId;\n  }\n\n  public ngOnDestroy(): void {\n    this.#radioGroupIdSvc?.unregister(this.#defaultId);\n    this.#removeUniqueSelectionListener();\n    this.change.complete();\n    this.checkedChange.complete();\n    this.disabledChange.complete();\n  }\n\n  public writeValue(value: unknown): void {\n    if (value === undefined) {\n      return;\n    }\n\n    this.selectedValue = value;\n    this.checked = this.value === this.selectedValue;\n\n    this.#changeDetector.markForCheck();\n  }\n\n  /**\n   * @internal\n   * Whether to disable the control. Implemented as a part of ControlValueAccessor.\n   */\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public setGroupDisabledState(isDisabled: boolean): void {\n    this.radioGroupDisabled = isDisabled;\n    this.#changeDetector.markForCheck();\n  }\n\n  public registerOnChange(fn: any): void {\n    this.#onChangeCallback = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.#onTouchedCallback = fn;\n  }\n\n  public onInputChange(event: Event): void {\n    event.stopPropagation();\n\n    if (!this.disabled) {\n      this.checked = true;\n      this.change.next({\n        value: this.value,\n      });\n\n      this.onInputFocusChange();\n      this.#onChangeCallback(this.value);\n    }\n  }\n\n  public onInputFocusChange(): void {\n    this.#onTouchedCallback();\n    this.blur.next();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  #removeUniqueSelectionListener = (): void => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  #onChangeCallback = (value: any): void => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  #onTouchedCallback = (): void => {};\n}\n","<span class=\"sky-radio-outer-wrapper\">\n  <label\n    class=\"sky-radio-wrapper sky-switch\"\n    [ngClass]=\"{ 'sky-switch-disabled': disabled || radioGroupDisabled }\"\n  >\n    <input\n      class=\"sky-radio-input sky-switch-input\"\n      type=\"radio\"\n      [attr.aria-label]=\"labelText || label\"\n      [attr.aria-labelledby]=\"labelText ? undefined : labelledBy\"\n      [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n      [checked]=\"checked\"\n      [disabled]=\"disabled || radioGroupDisabled\"\n      [id]=\"inputId\"\n      [name]=\"name\"\n      [tabIndex]=\"tabindex\"\n      [value]=\"value\"\n      (blur)=\"onInputFocusChange()\"\n      (change)=\"onInputChange($event)\"\n    />\n    <span\n      class=\"sky-switch-control\"\n      [ngClass]=\"{\n        'sky-switch-control-icon': iconName,\n        'sky-rounded-circle': !iconName,\n        'sky-switch-control-info': iconName && radioType === 'info',\n        'sky-switch-control-success': iconName && radioType === 'success',\n        'sky-switch-control-warning': iconName && radioType === 'warning',\n        'sky-switch-control-danger': iconName && radioType === 'danger'\n      }\"\n    >\n      @if (iconName) {\n        <sky-icon [iconName]=\"iconName\" />\n      }\n    </span>\n    @if (labelText) {\n      <span\n        class=\"sky-switch-label sky-radio-label-text\"\n        [class.sky-screen-reader-only]=\"labelHidden\"\n        >{{ labelText }}</span\n      >\n    } @else {\n      <ng-content select=\"sky-radio-label\" />\n    }\n  </label>\n  @if ((helpPopoverContent || helpKey) && labelText) {\n    <span class=\"sky-control-help-container\">\n      <sky-help-inline\n        class=\"sky-radio-help-inline\"\n        [helpKey]=\"helpKey\"\n        [labelText]=\"labelText\"\n        [popoverTitle]=\"helpPopoverTitle\"\n        [popoverContent]=\"helpPopoverContent\"\n      />\n    </span>\n  }\n</span>\n<div #hintTextEl=\"skyId\" skyId>\n  @if (hintText) {\n    <div\n      class=\"sky-radio-hint-text\"\n      [skyThemeClass]=\"{\n        'sky-font-deemphasized': 'default',\n        'sky-font-hint-text-s': 'modern'\n      }\"\n    >\n      {{ hintText }}\n    </div>\n  }\n</div>\n","import {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  HostBinding,\n  Input,\n  OnDestroy,\n  Optional,\n  QueryList,\n  Self,\n  TemplateRef,\n  booleanAttribute,\n  inject,\n  numberAttribute,\n} from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\n\nimport { SkyRadioGroupIdService } from './radio-group-id.service';\nimport { SkyRadioComponent } from './radio.component';\nimport { SkyRadioChange } from './types/radio-change';\nimport { SkyRadioGroupHeadingLevel } from './types/radio-group-heading-level';\nimport { SkyRadioGroupHeadingStyle } from './types/radio-group-heading-style';\n\nlet nextUniqueId = 0;\n\nfunction numberAttribute4(value: unknown): number {\n  return numberAttribute(value, 4);\n}\n\n/**\n * Organizes radio buttons into a group. It is required for radio\n * buttons on Angular reactive forms, and we recommend using it with all radio buttons.\n * On Angular forms, the component manages the selected values and keeps the forms up-to-date.\n * When users select a radio button, its value is driven through an `ngModel` attribute that you specify on the `sky-radio-group` element.\n */\n@Component({\n  selector: 'sky-radio-group',\n  templateUrl: './radio-group.component.html',\n  styleUrls: ['./radio-group.component.scss'],\n  providers: [\n    SkyRadioGroupIdService,\n    { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n  ],\n  hostDirectives: [SkyThemeComponentClassDirective],\n  standalone: false,\n})\nexport class SkyRadioGroupComponent implements AfterContentInit, OnDestroy {\n  /**\n   * The HTML element ID of the element that labels\n   * the radio button group. This sets the radio button group's `aria-labelledby` attribute to provide a text equivalent for screen readers\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * If the radio button group does not include a visible label, use `ariaLabel` instead.\n   * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n   * @deprecated Use `headingText` instead.\n   */\n  @Input()\n  public set ariaLabelledBy(value: string | undefined) {\n    this.#_ariaLabelledBy = value;\n\n    if (value) {\n      this.#logger.deprecated('SkyRadioGroupComponent.ariaLabelledBy', {\n        deprecationMajorVersion: 9,\n      });\n    }\n  }\n\n  public get ariaLabelledBy(): string | undefined {\n    return this.#_ariaLabelledBy;\n  }\n\n  /**\n   * The ARIA label for the radio button group. This sets the\n   * radio button group's `aria-label` attribute to provide a text equivalent for screen readers\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * If the radio button group includes a visible label, use `ariaLabelledBy` instead.\n   * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n   * @deprecated Use `headingText` instead.\n   */\n  @Input()\n  public set ariaLabel(value: string | undefined) {\n    this.#_ariaLabel = value;\n\n    if (value) {\n      this.#logger.deprecated('SkyRadioGroupComponent.ariaLabel', {\n        deprecationMajorVersion: 9,\n      });\n    }\n  }\n\n  public get ariaLabel(): string | undefined {\n    return this.#_ariaLabel;\n  }\n\n  /**\n   * Whether to disable the input on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n   * To set the disabled state on reactive forms, use the `FormControl` instead.\n   * @default false\n   */\n  @Input({ transform: booleanAttribute })\n  public set disabled(value: boolean) {\n    if (this.#_disabled !== value) {\n      this.#_disabled = value;\n      this.#updateRadioButtonDisabled();\n    }\n  }\n\n  public get disabled(): boolean {\n    return this.#_disabled;\n  }\n\n  /**\n   * The semantic heading level in the document structure. By default, the heading text is not wrapped in a heading element.\n   */\n  @Input({ transform: numberAttribute })\n  public set headingLevel(value: SkyRadioGroupHeadingLevel | undefined) {\n    this.#_headingLevel = value && !isNaN(value) ? value : undefined;\n    this.#updateStackedClasses();\n  }\n\n  public get headingLevel(): SkyRadioGroupHeadingLevel | undefined {\n    return this.#_headingLevel;\n  }\n\n  /**\n   * The heading [font style](https://developer.blackbaud.com/skyux/design/styles/typography#headings).\n   * @default 4\n   */\n  @Input({ transform: numberAttribute4 })\n  public set headingStyle(value: SkyRadioGroupHeadingStyle) {\n    this.headingClass = `sky-font-heading-${value}`;\n  }\n\n  /**\n   * The name for the collection of radio buttons that the component groups together.\n   * This property overwrites the deprecated `name` property on individual `sky-radio` elements,\n   * and it is required unless the `name` property is set on individual `sky-radio` elements.\n   * @required\n   */\n  @Input()\n  public set name(value: string | undefined) {\n    if (value) {\n      this.#_name = value;\n    } else {\n      this.#_name = this.#defaultName;\n    }\n    this.#updateRadioButtonNames();\n  }\n  public get name(): string {\n    return this.#_name;\n  }\n\n  /**\n   * Whether the input is required for form validation.\n   * When you set this property to `true`, the component adds `aria-required` and `required`\n   * attributes to the input element so that forms display an invalid state until the input element\n   * is complete.\n   * For more information about the `aria-required` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-required).\n   * @default false\n   */\n  @Input({ transform: booleanAttribute })\n  public required = false;\n\n  /**\n   * Whether the radio button group is stacked on another form component. When specified,\n   * the appropriate vertical spacing is automatically added to the radio button group.\n   */\n  @Input({ transform: booleanAttribute })\n  public set stacked(value: boolean) {\n    this.#_stacked = value;\n    this.#updateStackedClasses();\n  }\n\n  public get stacked(): boolean {\n    return this.#_stacked;\n  }\n\n  /**\n   * The value of the radio button to select by default when the group loads.\n   * The value corresponds to the `value` property of an individual `sky-radio` element within the\n   * group.\n   */\n  // TODO: Look into more strongly typing in a breaking change\n  @Input()\n  public set value(value: any) {\n    const isNewValue = value !== this.#controlValue;\n\n    /* istanbul ignore else */\n    if (isNewValue) {\n      this.#controlValue = value;\n      this.#onChange(value);\n      this.#updateCheckedRadioFromValue();\n    }\n  }\n\n  /**\n   * The index for all the radio buttons in the group. If the index is not defined,\n   * the indices for individual radio buttons are set to their positions on load.\n   * This property supports accessibility by placing focus on the currently selected radio\n   * button. If no radio button is selected, it places focus on the first or last button\n   * depending on how users navigate to the radio button group.\n   */\n  @Input()\n  public set tabIndex(value: number | undefined) {\n    if (this.#_tabIndex !== value) {\n      this.#_tabIndex = value;\n      this.#updateRadioButtonTabIndexes();\n    }\n  }\n  public get tabIndex(): number | undefined {\n    return this.#_tabIndex;\n  }\n\n  /**\n   * The text to display as the radio group's heading.\n   */\n  @Input()\n  public headingText: string | undefined;\n\n  /**\n   * Indicates whether to hide the `headingText`.\n   */\n  @Input({ transform: booleanAttribute })\n  public headingHidden = false;\n\n  /**\n   * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n   * additional context to the user.\n   */\n  @Input()\n  public hintText: string | undefined;\n\n  /**\n   * The content of the help popover. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to radio group. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title. This property only applies when `headingText` is also specified.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  /**\n   * A help key that identifies the global help content to display. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is placed beside the radio group heading. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n   * as configured by the application. This property only applies when `headingText` is also specified.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  /**\n   * Our radio components are usually implemented using an unordered list. This is an\n   * accessibility violation because the unordered list has an implicit role which\n   * interrupts the 'radiogroup' and 'radio' relationship. To correct this, we can set the\n   * radio group's 'aria-owns' attribute to a space-separated list of radio IDs.\n   * For more information about the `aria-owns` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-owns), and for more information about the `radio` role, see [its definition](https://www.w3.org/TR/wai-aria/#radio).\n   */\n  public ariaOwns: string | undefined;\n\n  @ContentChildren(SkyRadioComponent, { descendants: true })\n  public radios: QueryList<SkyRadioComponent> | undefined;\n\n  @HostBinding('class.sky-form-field-stacked')\n  public stackedLg = false;\n\n  @HostBinding('class.sky-field-group-stacked')\n  public stackedXL = false;\n\n  protected get isRequired(): boolean {\n    return (\n      this.required ||\n      (this.ngControl?.control?.hasValidator(Validators.required) ?? false)\n    );\n  }\n\n  protected headingClass = 'sky-font-heading-4';\n\n  #controlValue: any;\n\n  #defaultName = `sky-radio-group-${nextUniqueId++}`;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  #_disabled = false;\n\n  #_name = '';\n\n  #_tabIndex: number | undefined;\n\n  #_ariaLabel: string | undefined;\n\n  #_ariaLabelledBy: string | undefined;\n\n  #_headingLevel: SkyRadioGroupHeadingLevel | undefined;\n\n  #_stacked = false;\n\n  #changeDetector: ChangeDetectorRef;\n  #radioGroupIdSvc: SkyRadioGroupIdService;\n\n  readonly #logger = inject(SkyLogService);\n  readonly #idService = inject(SkyIdService);\n\n  protected errorId = this.#idService.generateId();\n  protected ngControl: NgControl | undefined;\n\n  constructor(\n    changeDetector: ChangeDetectorRef,\n    radioGroupIdSvc: SkyRadioGroupIdService,\n    @Self() @Optional() ngControl: NgControl,\n  ) {\n    if (ngControl) {\n      ngControl.valueAccessor = this;\n    }\n    this.#changeDetector = changeDetector;\n    this.#radioGroupIdSvc = radioGroupIdSvc;\n    this.ngControl = ngControl;\n    this.name = this.#defaultName;\n\n    this.#radioGroupIdSvc.radioIds\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((ids) => {\n        this.ariaOwns = ids.join(' ') || undefined;\n        this.#changeDetector.markForCheck();\n      });\n  }\n\n  public ngAfterContentInit(): void {\n    // Let child radio components render before updating.\n    setTimeout(() => {\n      this.#resetRadioButtons();\n    });\n\n    // Watch for radio selections.\n    this.watchForSelections();\n\n    /* istanbul ignore else */\n    if (this.radios) {\n      this.radios.changes.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n        // Wait for child radio components to finish any rendering updates.\n        setTimeout(() => {\n          this.#resetRadioButtons();\n        });\n\n        // Subscribe to the new radio buttons\n        this.watchForSelections();\n      });\n    }\n  }\n\n  public watchForSelections(): void {\n    /* istanbul ignore else */\n    if (this.radios) {\n      this.radios.forEach((radio) => {\n        radio.change\n          .pipe(takeUntil(this.#ngUnsubscribe))\n          .subscribe((change: SkyRadioChange) => {\n            this.#onTouched();\n            this.value = change.value;\n          });\n        radio.blur.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n          this.#onTouched();\n          this.#changeDetector.markForCheck();\n        });\n      });\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  public writeValue(value: unknown): void {\n    const isNewValue = value !== this.#controlValue;\n\n    /* istanbul ignore else */\n    if (isNewValue) {\n      this.#controlValue = value;\n      this.#updateCheckedRadioFromValue();\n    }\n  }\n\n  /**\n   * @internal\n   * Whether to disable the control. Implemented as a part of ControlValueAccessor.\n   */\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public registerOnChange(fn: (value: any) => void): void {\n    this.#onChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.#onTouched = fn;\n  }\n\n  /* istanbul ignore next */\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  #onChange: (value: any) => void = () => {};\n\n  /* istanbul ignore next */\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  #onTouched: () => any = () => {};\n\n  #updateRadioButtonDisabled(): void {\n    if (this.radios) {\n      this.radios.forEach((radio) =>\n        radio.setGroupDisabledState(this.disabled),\n      );\n    }\n  }\n\n  #updateRadioButtonNames(): void {\n    if (this.radios) {\n      this.radios.forEach((radio) => {\n        radio.name = this.name;\n      });\n    }\n  }\n\n  #updateRadioButtonTabIndexes(): void {\n    if (this.radios) {\n      this.radios.forEach((radio) => {\n        radio.groupTabIndex = this.tabIndex;\n      });\n    }\n  }\n\n  #updateCheckedRadioFromValue(): void {\n    if (!this.radios) {\n      return;\n    }\n\n    this.radios.forEach((radio) => {\n      radio.checked = this.#controlValue === radio.value;\n    });\n  }\n\n  #resetRadioButtons(): void {\n    this.#updateCheckedRadioFromValue();\n    this.#updateRadioButtonNames();\n    this.#updateRadioButtonTabIndexes();\n    this.#updateRadioButtonDisabled();\n  }\n\n  #updateStackedClasses(): void {\n    this.stackedLg = !this.headingLevel && this.stacked;\n    this.stackedXL = !!this.headingLevel && this.stacked;\n  }\n}\n","<fieldset\n  class=\"sky-radio-group\"\n  role=\"radiogroup\"\n  [attr.aria-label]=\"headingText ? undefined : ariaLabel\"\n  [attr.aria-labelledby]=\"headingText ? undefined : ariaLabelledBy\"\n  [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n  [attr.aria-owns]=\"ariaOwns\"\n  [attr.aria-required]=\"isRequired ? true : null\"\n  [attr.required]=\"isRequired ? '' : null\"\n  [attr.aria-invalid]=\"!!ngControl?.errors\"\n  [attr.aria-errormessage]=\"\n    headingText && ngControl?.errors ? errorId : undefined\n  \"\n>\n  @if (headingText) {\n    <legend\n      class=\"sky-radio-group-legend\"\n      [ngClass]=\"{\n        'sky-screen-reader-only': headingHidden\n      }\"\n    >\n      <span\n        [ngClass]=\"{\n          'sky-control-label-required': required\n        }\"\n      >\n        @switch (headingLevel) {\n          @case (3) {\n            <h3 [class]=\"headingClass\">{{ headingText }}</h3>\n          }\n          @case (4) {\n            <h4 [class]=\"headingClass\">{{ headingText }}</h4>\n          }\n          @case (5) {\n            <h5 [class]=\"headingClass\">{{ headingText }}</h5>\n          }\n          @default {\n            <span [class]=\"'sky-radio-group-heading-text ' + headingClass\">{{\n              headingText\n            }}</span>\n          }\n        }\n      </span>\n      @if (required) {\n        <span class=\"sky-screen-reader-only\">{{\n          'skyux_form_group_required' | skyLibResources\n        }}</span>\n      }\n      @if (helpPopoverContent || helpKey) {\n        <span class=\"sky-control-help-container\">\n          <sky-help-inline\n            [helpKey]=\"helpKey\"\n            [labelText]=\"headingText\"\n            [popoverTitle]=\"helpPopoverTitle\"\n            [popoverContent]=\"helpPopoverContent\"\n          />\n        </span>\n      }\n    </legend>\n  }\n  <div #hintTextEl=\"skyId\" skyId>\n    @if (hintText) {\n      <div\n        class=\"sky-radio-group-hint-text\"\n        [skyThemeClass]=\"{\n          'sky-font-deemphasized': 'default',\n          'sky-font-hint-text-s': 'modern'\n        }\"\n      >\n        {{ hintText }}\n      </div>\n    }\n  </div>\n  <div class=\"sky-radio-group-content\">\n    <ng-content />\n  </div>\n</fieldset>\n<sky-form-errors\n  [id]=\"errorId\"\n  [errors]=\"ngControl?.errors\"\n  [labelText]=\"headingText\"\n  [touched]=\"ngControl?.touched\"\n  [dirty]=\"ngControl?.dirty\"\n>\n  <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n","import { Component, HostListener, inject } from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\n\n/**\n * Specifies a label for the radio button. To display a help button beside the label, include a help button element,\n * such as `sky-help-inline`, in the `sky-radio-label` element and a `sky-control-help` CSS class on that help button\n * element.\n * @deprecated Use `labelText` input on `sky-radio-component` instead.\n */\n@Component({\n  selector: 'sky-radio-label',\n  templateUrl: './radio-label.component.html',\n  standalone: false,\n})\nexport class SkyRadioLabelComponent {\n  // When clicking on a checkbox label, Angular registers two click events.\n  // This handler ignores all events except for those that deal\n  // with the checkbox input explicitly.\n  @HostListener('click', ['$event'])\n  public onClick(event: MouseEvent): void {\n    event.stopPropagation();\n  }\n\n  constructor() {\n    inject(SkyLogService).deprecated('SkyToggleSwitchLabelComponent', {\n      deprecationMajorVersion: 10,\n      replacementRecommendation:\n        'To add a label to radio button, use the `labelText` input on the radio button component instead.',\n    });\n  }\n}\n","<span class=\"sky-switch-label\"\n  ><span skyTrim><ng-content /></span\n  ><span class=\"sky-control-help-container\"\n    ><ng-content select=\".sky-control-help\" /></span\n></span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyFormErrorModule } from '../form-error/form-error.module';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyRadioGroupComponent } from './radio-group.component';\nimport { SkyRadioLabelComponent } from './radio-label.component';\nimport { SkyRadioComponent } from './radio.component';\n\n@NgModule({\n  declarations: [\n    SkyRadioComponent,\n    SkyRadioGroupComponent,\n    SkyRadioLabelComponent,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    SkyFormErrorModule,\n    SkyFormErrorsModule,\n    SkyHelpInlineModule,\n    SkyIconModule,\n    SkyIdModule,\n    SkyFormsResourcesModule,\n    SkyTrimModule,\n    SkyThemeModule,\n  ],\n  exports: [\n    SkyFormErrorModule,\n    SkyRadioComponent,\n    SkyRadioGroupComponent,\n    SkyRadioLabelComponent,\n  ],\n})\nexport class SkyRadioModule {}\n","import { Directive, Input, booleanAttribute, inject } from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\n\n/**\n * A host directive used to capture the \"required\" state of the host's form control.\n * @internal\n */\n@Directive({})\nexport class SkyRequiredStateDirective {\n  @Input({ transform: booleanAttribute })\n  public required = false;\n\n  /**\n   * Whether the `required` attribute is set to `true`, or the control includes\n   * the `Validators.required` validator.\n   */\n  public isRequired(): boolean {\n    return (\n      this.required ||\n      !!this.#ngControl?.control?.hasValidator(Validators.required)\n    );\n  }\n\n  readonly #ngControl = inject(NgControl, { optional: true, self: true });\n}\n","import {\n  ElementRef,\n  Injectable,\n  Renderer2,\n  RendererFactory2,\n} from '@angular/core';\nimport { SkyCoreAdapterService, SkyMediaBreakpoints } from '@skyux/core';\n\nconst RESPONSIVE_CLASS_XS = 'sky-selection-box-container-xs';\nconst RESPONSIVE_CLASS_SM = 'sky-selection-box-container-sm';\nconst RESPONSIVE_CLASS_MD = 'sky-selection-box-container-md';\nconst RESPONSIVE_CLASS_LG = 'sky-selection-box-container-lg';\n\nconst BREAKPOINT_XS_MAX_PIXELS = 767;\nconst BREAKPOINT_SM_MIN_PIXELS = 768;\nconst BREAKPOINT_SM_MAX_PIXELS = 991;\nconst BREAKPOINT_MD_MIN_PIXELS = 992;\nconst BREAKPOINT_MD_MAX_PIXELS = 1439;\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkySelectionBoxAdapterService {\n  #coreAdapterService: SkyCoreAdapterService;\n  #renderer: Renderer2;\n\n  constructor(\n    coreAdapterService: SkyCoreAdapterService,\n    rendererFactory: RendererFactory2,\n  ) {\n    this.#coreAdapterService = coreAdapterService;\n    this.#renderer = rendererFactory.createRenderer(undefined, null);\n  }\n\n  /**\n   * Sets focus on the specified element.\n   */\n  public focus(el: ElementRef): void {\n    el.nativeElement.focus();\n  }\n\n  /**\n   * Returns a child element with the `.sky-switch` class.\n   * Useful for getting SKY UX-themed radio buttons or checkboxes.\n   */\n  public getControl(el: ElementRef): HTMLElement {\n    return el.nativeElement.querySelector('.sky-switch');\n  }\n\n  /**\n   * Returns a breakpoint based on the width.\n   * @param width Width of the element in pixels.\n   */\n  public getBreakpointForWidth(width: number | undefined): SkyMediaBreakpoints {\n    if (!width) {\n      return SkyMediaBreakpoints.lg;\n    }\n\n    if (width <= BREAKPOINT_XS_MAX_PIXELS) {\n      return SkyMediaBreakpoints.xs;\n    } else if (\n      width >= BREAKPOINT_SM_MIN_PIXELS &&\n      width <= BREAKPOINT_SM_MAX_PIXELS\n    ) {\n      return SkyMediaBreakpoints.sm;\n    } else if (\n      width >= BREAKPOINT_MD_MIN_PIXELS &&\n      width <= BREAKPOINT_MD_MAX_PIXELS\n    ) {\n      return SkyMediaBreakpoints.md;\n    } else {\n      return SkyMediaBreakpoints.lg;\n    }\n  }\n\n  /**\n   * Returns the width of the `parentNode` of the provided `element`.\n   */\n  public getParentWidth(element: ElementRef): number | undefined {\n    return (\n      element.nativeElement as HTMLElement | undefined\n    )?.parentElement?.getBoundingClientRect()?.width;\n  }\n\n  /**\n   * Returns `true` if the `childEl` is a descendant of the `parentEl`.\n   */\n  public isDescendant(parentEl: ElementRef, childEl: HTMLElement): boolean {\n    return parentEl.nativeElement.contains(childEl);\n  }\n\n  /**\n   * Sets the `tabIndex` of all focusable children of the `element` to the provided `tabIndex`.\n   */\n  public setChildrenTabIndex(element: ElementRef, tabIndex: number): void {\n    const el = element.nativeElement;\n    const focusableEls = this.#coreAdapterService.getFocusableChildren(el, {\n      ignoreVisibility: true,\n    });\n    let index = focusableEls.length;\n    while (index--) {\n      focusableEls[index].tabIndex = tabIndex;\n    }\n  }\n\n  /**\n   * Adds a responsive CSS class on the provided element based on its current width.\n   */\n  public setResponsiveClass(\n    element: ElementRef,\n    breakpoint: SkyMediaBreakpoints,\n  ): void {\n    const nativeEl: HTMLElement = element.nativeElement;\n\n    this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_XS);\n    this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_SM);\n    this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_MD);\n    this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_LG);\n\n    let newClass: string;\n\n    switch (breakpoint) {\n      case SkyMediaBreakpoints.xs: {\n        newClass = RESPONSIVE_CLASS_XS;\n        break;\n      }\n      case SkyMediaBreakpoints.sm: {\n        newClass = RESPONSIVE_CLASS_SM;\n        break;\n      }\n      case SkyMediaBreakpoints.md: {\n        newClass = RESPONSIVE_CLASS_MD;\n        break;\n      }\n      case SkyMediaBreakpoints.lg: {\n        newClass = RESPONSIVE_CLASS_LG;\n        break;\n      }\n    }\n\n    this.#renderer.addClass(nativeEl, newClass);\n  }\n\n  /**\n   * Sets the `tabIndex` of the `element` to the provided `tabIndex`.\n   */\n  public setTabIndex(element: ElementRef, tabIndex: number): void {\n    const el = element.nativeElement;\n\n    el.tabIndex = tabIndex;\n  }\n}\n","import { Component } from '@angular/core';\n\n/**\n * Specifies the description to display in a selection box.\n */\n@Component({\n  selector: 'sky-selection-box-description',\n  templateUrl: './selection-box-description.component.html',\n  standalone: false,\n})\nexport class SkySelectionBoxDescriptionComponent {}\n","<ng-content />\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyCheckboxComponent } from '../checkbox/checkbox.component';\nimport { SkyRadioComponent } from '../radio/radio.component';\n\nimport { SkySelectionBoxAdapterService } from './selection-box-adapter.service';\n\n/**\n * Creates a button to present users with a choice or question before proceeding with a one-time process.\n */\n@Component({\n  selector: 'sky-selection-box',\n  styleUrls: ['./selection-box.component.scss'],\n  templateUrl: './selection-box.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class SkySelectionBoxComponent implements OnDestroy {\n  /**\n   * The radio button or checkbox to display in the selection box.\n   * @required\n   */\n  @Input()\n  public set control(\n    value: SkyCheckboxComponent | SkyRadioComponent | undefined,\n  ) {\n    this.#_control = value;\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n    this.#ngUnsubscribe = new Subject<void>();\n    if (value) {\n      this.#updateCheckedOnControlChange();\n      this.#updateDisabledState();\n    }\n  }\n\n  public get control(): SkyCheckboxComponent | SkyRadioComponent | undefined {\n    return this.#_control;\n  }\n\n  public set checked(value: boolean) {\n    this.#_checked = value;\n    this.#changeDetector.markForCheck();\n  }\n\n  public get checked(): boolean {\n    return this.#_checked;\n  }\n\n  public set disabled(value: boolean) {\n    if (this.selectionBoxEl) {\n      this.#selectionBoxAdapterService.setTabIndex(\n        this.selectionBoxEl,\n        value ? -1 : 0,\n      );\n    }\n    this.#_disabled = value;\n    this.#changeDetector.markForCheck();\n  }\n\n  public get disabled(): boolean {\n    return this.#_disabled;\n  }\n\n  @ViewChild('control', {\n    read: ElementRef,\n    static: false,\n  })\n  public controlEl: ElementRef | undefined;\n\n  @ViewChild('selectionBox', {\n    read: ElementRef,\n    static: false,\n  })\n  public set selectionBoxEl(value: ElementRef | undefined) {\n    this.#_selectionBoxEl = value;\n    if (value) {\n      this.#selectionBoxAdapterService.setTabIndex(\n        value,\n        this.disabled ? -1 : 0,\n      );\n\n      // Wait for child elements to render before overriding tabIndex values.\n      // TODO: This logic is brittle since the checkbox/radio can set its own tab index\n      // value at any time. We need a way to enforce the tab index for the entire lifespan of the component.\n      setTimeout(() => {\n        this.#selectionBoxAdapterService.setChildrenTabIndex(value, -1);\n      });\n    }\n  }\n\n  public get selectionBoxEl(): ElementRef | undefined {\n    return this.#_selectionBoxEl;\n  }\n\n  #ngUnsubscribe = new Subject<void>();\n\n  #_checked = false;\n\n  #_control: SkyCheckboxComponent | SkyRadioComponent | undefined;\n\n  #_disabled = false;\n\n  #_selectionBoxEl: ElementRef | undefined;\n\n  #changeDetector: ChangeDetectorRef;\n  #selectionBoxAdapterService: SkySelectionBoxAdapterService;\n\n  constructor(\n    changeDetector: ChangeDetectorRef,\n    selectionBoxAdapterService: SkySelectionBoxAdapterService,\n  ) {\n    this.#changeDetector = changeDetector;\n    this.#selectionBoxAdapterService = selectionBoxAdapterService;\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  public onKeydown(event: KeyboardEvent): void {\n    /* istanbul ignore else */\n    if (event.key === ' ') {\n      this.#selectControl();\n      event.preventDefault();\n    }\n  }\n\n  #selectControl(): void {\n    if (this.controlEl) {\n      this.#selectionBoxAdapterService.getControl(this.controlEl).click();\n    }\n\n    if (this.selectionBoxEl) {\n      this.#selectionBoxAdapterService.focus(this.selectionBoxEl);\n    }\n  }\n\n  #updateCheckedOnControlChange(): void {\n    /* istanbul ignore else */\n    if (this.control) {\n      this.control.checkedChange\n        .pipe(takeUntil(this.#ngUnsubscribe))\n        .subscribe((value) => {\n          this.checked = value;\n        });\n    }\n  }\n\n  #updateDisabledState(): void {\n    /* istanbul ignore else */\n    if (this.control) {\n      this.control.disabledChange\n        .pipe(takeUntil(this.#ngUnsubscribe))\n        .subscribe((value) => {\n          this.disabled = value;\n        });\n    }\n  }\n}\n","<label\n  #selectionBox\n  class=\"sky-selection-box sky-rounded-corners sky-btn sky-btn-default\"\n  [attr.disabled]=\"disabled ? true : null\"\n  [ngClass]=\"{\n    'sky-selection-box-selected': checked,\n    'sky-selection-box-disabled': disabled\n  }\"\n  (keydown)=\"onKeydown($event)\"\n>\n  <div\n    #icon\n    class=\"sky-selection-box-icon\"\n    [ngClass]=\"{\n      'sky-selection-box-icon-hidden': !icon.innerHTML.trim()\n    }\"\n  >\n    <ng-content select=\"sky-icon\" />\n  </div>\n\n  <div class=\"sky-selection-box-content\">\n    <div class=\"sky-selection-box-header sky-font-display-2\">\n      <ng-content select=\"sky-selection-box-header\" />\n    </div>\n    <div class=\"sky-selection-box-description sky-font-deemphasized\">\n      <ng-content select=\"sky-selection-box-description\" />\n    </div>\n  </div>\n\n  <div #control class=\"sky-selection-box-control\">\n    <ng-content select=\"sky-radio\" />\n    <ng-content select=\"sky-checkbox\" />\n  </div>\n</label>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  ElementRef,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { SkyCoreAdapterService, SkyMutationObserverService } from '@skyux/core';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkySelectionBoxAdapterService } from './selection-box-adapter.service';\nimport { SkySelectionBoxComponent } from './selection-box.component';\nimport { SkySelectionBoxGridAlignItemsType } from './types/selection-box-grid-align-items-type';\n\nconst SKY_SELECTION_BOX_CLASS_NAME = '.sky-selection-box';\n\n/**\n * Creates a grid layout for an array of selection boxes.\n */\n@Component({\n  selector: 'sky-selection-box-grid',\n  templateUrl: './selection-box-grid.component.html',\n  styleUrls: ['./selection-box-grid.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class SkySelectionBoxGridComponent implements OnDestroy, OnInit {\n  /**\n   * @internal\n   * How to display the selection boxes in the grid.\n   * @default 'center'\n   */\n  @Input()\n  public set alignItems(value: SkySelectionBoxGridAlignItemsType | undefined) {\n    if (value) {\n      this.#_alignItems = value;\n    } else {\n      this.#_alignItems = 'center';\n    }\n  }\n\n  public get alignItems(): SkySelectionBoxGridAlignItemsType {\n    return this.#_alignItems;\n  }\n\n  @ContentChildren(SkySelectionBoxComponent, {\n    read: SkySelectionBoxComponent,\n  })\n  public selectionBoxes: QueryList<SkySelectionBoxComponent> | undefined;\n\n  @ViewChild('container', {\n    read: ElementRef,\n    static: true,\n  })\n  public set containerElementRef(value: ElementRef | undefined) {\n    this.#_containerElementRef = value;\n    this.#destroyMutationObserver();\n    if (value) {\n      this.#updateBreakpointClass();\n      this.#initMutationObserver();\n    }\n  }\n\n  public get containerElementRef(): ElementRef | undefined {\n    return this.#_containerElementRef;\n  }\n\n  #mutationObserver: MutationObserver | undefined;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  #_alignItems: SkySelectionBoxGridAlignItemsType = 'center';\n\n  #_containerElementRef: ElementRef | undefined;\n\n  #coreAdapterService: SkyCoreAdapterService;\n  #selectionBoxAdapter: SkySelectionBoxAdapterService;\n  #hostElRef: ElementRef;\n  #mutationObserverSvc: SkyMutationObserverService;\n  #ngZone: NgZone;\n  #themeSvc: SkyThemeService | undefined;\n\n  constructor(\n    coreAdapterService: SkyCoreAdapterService,\n    selectionBoxAdapter: SkySelectionBoxAdapterService,\n    hostElRef: ElementRef,\n    mutationObserverSvc: SkyMutationObserverService,\n    ngZone: NgZone,\n    @Optional() themeSvc?: SkyThemeService,\n  ) {\n    this.#coreAdapterService = coreAdapterService;\n    this.#selectionBoxAdapter = selectionBoxAdapter;\n    this.#hostElRef = hostElRef;\n    this.#mutationObserverSvc = mutationObserverSvc;\n    this.#ngZone = ngZone;\n    this.#themeSvc = themeSvc;\n  }\n\n  public ngOnInit(): void {\n    /* istanbul ignore else */\n    if (this.#themeSvc) {\n      this.#themeSvc.settingsChange\n        .pipe(takeUntil(this.#ngUnsubscribe))\n        .subscribe(() => {\n          this.#updateBreakpointClass();\n        });\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n\n    this.#destroyMutationObserver();\n  }\n\n  @HostListener('window:resize')\n  public onWindowResize(): void {\n    this.#updateBreakpointClass();\n  }\n\n  #initMutationObserver(): void {\n    /* istanbul ignore else */\n    if (!this.#mutationObserver && this.containerElementRef) {\n      const el = this.containerElementRef.nativeElement;\n\n      // MutationObserver is patched by Zone.js and therefore becomes part of the\n      // Angular change detection cycle, but this can lead to infinite loops in some\n      // scenarios. This will keep MutationObserver from triggering change detection.\n      this.#ngZone.runOutsideAngular(() => {\n        this.#mutationObserver = this.#mutationObserverSvc.create(() => {\n          this.#updateChildrenHeights();\n        });\n\n        this.#mutationObserver.observe(el, {\n          characterData: true,\n          subtree: true,\n        });\n      });\n    }\n  }\n\n  #destroyMutationObserver(): void {\n    /* istanbul ignore else */\n    if (this.#mutationObserver) {\n      this.#mutationObserver.disconnect();\n      this.#mutationObserver = undefined;\n    }\n  }\n\n  #updateBreakpointClass(): void {\n    const parentWidth = this.#selectionBoxAdapter.getParentWidth(\n      this.#hostElRef,\n    );\n\n    if (this.containerElementRef) {\n      this.#selectionBoxAdapter.setResponsiveClass(\n        this.containerElementRef,\n        this.#selectionBoxAdapter.getBreakpointForWidth(parentWidth),\n      );\n    }\n    this.#updateChildrenHeights();\n  }\n\n  #updateChildrenHeights(): void {\n    if (this.containerElementRef) {\n      this.#coreAdapterService.resetHeight(\n        this.containerElementRef,\n        SKY_SELECTION_BOX_CLASS_NAME,\n      );\n      this.#coreAdapterService.syncMaxHeight(\n        this.containerElementRef,\n        SKY_SELECTION_BOX_CLASS_NAME,\n      );\n    }\n  }\n}\n","<div\n  #container\n  class=\"sky-selection-box-grid\"\n  [ngClass]=\"'sky-selection-box-grid-align-' + alignItems\"\n>\n  <ng-content select=\"sky-selection-box\" />\n</div>\n","import { Component } from '@angular/core';\n\n/**\n * Specifies the header to display in a selection box.\n */\n@Component({\n  selector: 'sky-selection-box-header',\n  templateUrl: './selection-box-header.component.html',\n  standalone: false,\n})\nexport class SkySelectionBoxHeaderComponent {}\n","<ng-content />\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkySelectionBoxAdapterService } from './selection-box-adapter.service';\nimport { SkySelectionBoxDescriptionComponent } from './selection-box-description.component';\nimport { SkySelectionBoxGridComponent } from './selection-box-grid.component';\nimport { SkySelectionBoxHeaderComponent } from './selection-box-header.component';\nimport { SkySelectionBoxComponent } from './selection-box.component';\n\n@NgModule({\n  declarations: [\n    SkySelectionBoxGridComponent,\n    SkySelectionBoxComponent,\n    SkySelectionBoxDescriptionComponent,\n    SkySelectionBoxHeaderComponent,\n  ],\n  imports: [CommonModule, SkyThemeModule],\n  exports: [\n    SkySelectionBoxGridComponent,\n    SkySelectionBoxComponent,\n    SkySelectionBoxDescriptionComponent,\n    SkySelectionBoxHeaderComponent,\n  ],\n  providers: [SkySelectionBoxAdapterService],\n})\nexport class SkySelectionBoxModule {}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\n\n/**\n * Specifies the label to display beside the toggle switch. To display a help button beside the label, include a help\n * button element, such as `sky-help-inline`, in the `sky-toggle-switch` element and a `sky-control-help` CSS class on\n * that help button element.\n * @deprecated Use the `labelText` input on the toggle switch component instead.\n */\n@Component({\n  selector: 'sky-toggle-switch-label',\n  templateUrl: './toggle-switch-label.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SkyToggleSwitchLabelComponent {\n  constructor() {\n    inject(SkyLogService).deprecated('SkyToggleSwitchLabelComponent', {\n      deprecationMajorVersion: 9,\n      replacementRecommendation:\n        'To add a label to toggle switch, use the `labelText` input on the toggle switch component instead.',\n    });\n  }\n}\n","<span skyTrim><ng-content /></span>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  TemplateRef,\n  booleanAttribute,\n  forwardRef,\n  inject,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyToggleSwitchLabelComponent } from './toggle-switch-label.component';\nimport { SkyToggleSwitchChange } from './types/toggle-switch-change';\n\nconst SKY_TOGGLE_SWITCH_CONTROL_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => SkyToggleSwitchComponent),\n  multi: true,\n};\nconst SKY_TOGGLE_SWITCH_VALIDATOR = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => SkyToggleSwitchComponent),\n  multi: true,\n};\n\n@Component({\n  selector: 'sky-toggle-switch',\n  templateUrl: './toggle-switch.component.html',\n  styleUrls: ['./toggle-switch.component.scss'],\n  providers: [\n    SKY_TOGGLE_SWITCH_CONTROL_VALUE_ACCESSOR,\n    SKY_TOGGLE_SWITCH_VALIDATOR,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SkyToggleSwitchComponent\n  implements AfterContentInit, OnDestroy, ControlValueAccessor, Validator\n{\n  /**\n   * The ARIA label for the toggle switch. This sets the `aria-label`\n   * attribute to provide a text equivalent for screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * Use a context-sensitive label, such as \"Activate annual fundraiser\" for a toggle switch that activates and deactivates an annual fundraiser. Context is especially important if multiple toggle switches are in close proximity.\n   * When the `sky-toggle-switch-label` component displays a visible label, this property is only necessary if that label requires extra context.\n   * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n   * @deprecated Use the `labelText` input instead.\n   */\n  @Input()\n  public set ariaLabel(value: string | undefined) {\n    this.#_ariaLabel = value;\n\n    if (value !== undefined) {\n      this.#logSvc.deprecated('SkyToggleSwitchComponent.ariaLabel', {\n        deprecationMajorVersion: 9,\n        replacementRecommendation:\n          'To add an ARIA label to the toggle switch, use the `labelText` input instead',\n      });\n    }\n  }\n\n  public get ariaLabel(): string | undefined {\n    return this.#_ariaLabel;\n  }\n\n  /**\n   * Whether the toggle switch is selected.\n   * @default false\n   */\n  @Input()\n  public set checked(value: boolean | undefined) {\n    const checked = !!value;\n    if (checked !== this.#_checked) {\n      this.#_checked = checked;\n      this.#onChange(checked);\n\n      // Do not mark the field as \"dirty\"\n      // if the field has been initialized with a value.\n      if (this.#isFirstChange && this.#control) {\n        this.#control.markAsPristine();\n        this.#isFirstChange = false;\n      }\n    }\n  }\n\n  public get checked(): boolean {\n    return this.#_checked;\n  }\n\n  /**\n   * Whether to disable the toggle switch on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n   * To set the disabled state on reactive forms, use the `FormControl` instead.\n   */\n  @Input()\n  public disabled: boolean | undefined = false;\n\n  /**\n   * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to the toggle switch. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  /**\n   * The tab index for the toggle switch. If not defined, the index is set to the position\n   * of the toggle switch on load.\n   */\n  @Input()\n  public tabIndex: number | undefined = 0;\n\n  /**\n   * The text to display as the toggle switch's label.\n   */\n  @Input()\n  public labelText: string | undefined;\n\n  /**\n   * Whether to hide `labelText` from view.\n   */\n  @Input({ transform: booleanAttribute })\n  public labelHidden = false;\n\n  /**\n   * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is placed beside the toggle switch label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n   * as configured by the application. This property only applies when `labelText` is also specified.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  /**\n   * Fires when the checked state of a toggle switch changes.\n   */\n  @Output()\n  public toggleChange = new EventEmitter<SkyToggleSwitchChange>();\n\n  public hasLabelComponent = false;\n  public labelId: string;\n\n  public enableIndicatorAnimation = false;\n\n  @ContentChildren(SkyToggleSwitchLabelComponent)\n  public labelComponents: QueryList<SkyToggleSwitchLabelComponent> | undefined;\n\n  #control: AbstractControl | undefined;\n  #isFirstChange = true;\n  readonly #logSvc = inject(SkyLogService);\n  #ngUnsubscribe = new Subject<void>();\n\n  #_ariaLabel: string | undefined;\n  #_checked = false;\n\n  #changeDetector: ChangeDetectorRef;\n\n  constructor(changeDetector: ChangeDetectorRef, idService: SkyIdService) {\n    this.#changeDetector = changeDetector;\n    this.labelId = idService.generateId();\n  }\n\n  public ngAfterContentInit(): void {\n    /* istanbul ignore else */\n    if (this.labelComponents) {\n      this.hasLabelComponent = this.labelComponents.length > 0;\n\n      this.labelComponents.changes\n        .pipe(takeUntil(this.#ngUnsubscribe))\n        .subscribe((newLabelComponents) => {\n          this.hasLabelComponent = newLabelComponents.length > 0;\n          // Allow the template to reload any ARIA attributes that are relying on the\n          // label component existing in the DOM.\n          this.#changeDetector.markForCheck();\n        });\n    }\n\n    // Wait for the view to render before applying animation effects.\n    // (Some browsers, such as Firefox, apply the animation too early.)\n    setTimeout(() => {\n      this.enableIndicatorAnimation = true;\n    });\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  public writeValue(value: boolean): void {\n    this.checked = !!value;\n    this.#changeDetector.markForCheck();\n  }\n\n  public validate(control: AbstractControl): ValidationErrors | null {\n    if (!this.#control) {\n      this.#control = control;\n    }\n\n    return null;\n  }\n\n  public registerOnChange(fn: (value: any) => void): void {\n    this.#onChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.#onTouched = fn;\n  }\n\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n    this.#changeDetector.markForCheck();\n  }\n\n  public onButtonClick(event: any): void {\n    event.stopPropagation();\n    this.#toggleChecked();\n    this.#emitChangeEvent();\n  }\n\n  public onButtonBlur(): void {\n    this.#onTouched();\n  }\n\n  /* istanbul ignore next */\n  #onTouched: () => any = () => {};\n  /* istanbul ignore next */\n  #onChange: (value: any) => void = () => {};\n\n  #emitChangeEvent(): void {\n    this.#onChange(this.#_checked);\n    this.toggleChange.emit({\n      checked: this.#_checked,\n    });\n  }\n\n  #toggleChecked(): void {\n    this.checked = !this.checked;\n  }\n}\n","<span\n  class=\"sky-toggle-switch\"\n  [ngClass]=\"{\n    'sky-toggle-switch-with-label': hasLabelComponent || labelText\n  }\"\n>\n  <button\n    #toggle=\"skyId\"\n    class=\"sky-toggle-switch-button\"\n    role=\"switch\"\n    type=\"button\"\n    skyId\n    [attr.aria-checked]=\"checked\"\n    [attr.aria-label]=\"labelText || ariaLabel || null\"\n    [attr.aria-labelledby]=\"\n      !ariaLabel && (hasLabelComponent || labelText) ? labelId : null\n    \"\n    [disabled]=\"disabled\"\n    [ngClass]=\"{\n      'sky-toggle-switch-checked': checked,\n      'sky-toggle-switch-disabled': disabled\n    }\"\n    [tabIndex]=\"tabIndex\"\n    (blur)=\"onButtonBlur()\"\n    (click)=\"onButtonClick($event)\"\n  >\n    <div aria-hidden=\"true\" class=\"sky-toggle-switch-switch\">\n      <i\n        class=\"sky-toggle-switch-indicator\"\n        [ngClass]=\"{\n          'sky-toggle-switch-transition': enableIndicatorAnimation\n        }\"\n        >&nbsp;</i\n      >\n    </div>\n  </button>\n  <span>\n    @if (hasLabelComponent || labelText) {\n      <label\n        class=\"sky-toggle-switch-label\"\n        [for]=\"toggle.id\"\n        [attr.id]=\"labelId\"\n      >\n        @if (labelText) {\n          @if (!labelHidden) {\n            <span class=\"sky-toggle-switch-label-text\">{{ labelText }}</span>\n          }\n        } @else {\n          <ng-content select=\"sky-toggle-switch-label\" />\n        }\n      </label>\n    }\n    <span class=\"sky-control-help-container\">\n      @if (labelText && (helpPopoverContent || helpKey)) {\n        <sky-help-inline\n          [helpKey]=\"helpKey\"\n          [labelText]=\"labelText\"\n          [popoverTitle]=\"helpPopoverTitle\"\n          [popoverContent]=\"helpPopoverContent\"\n        />\n      }\n      <ng-content select=\".sky-control-help\" />\n    </span>\n  </span>\n</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\n\nimport { SkyToggleSwitchLabelComponent } from './toggle-switch-label.component';\nimport { SkyToggleSwitchComponent } from './toggle-switch.component';\n\n@NgModule({\n  declarations: [SkyToggleSwitchLabelComponent, SkyToggleSwitchComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    SkyHelpInlineModule,\n    SkyIdModule,\n    SkyTrimModule,\n  ],\n  exports: [SkyToggleSwitchLabelComponent, SkyToggleSwitchComponent],\n})\nexport class SkyToggleSwitchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.SkyCharacterCounterScreenReaderPipe","i3","i1","numberAttribute4","i2","i3.SkyFormErrorsComponent","i5","i6","i7.SkyCheckboxLabelTextLabelComponent","i4","MAX_FILE_SIZE_DEFAULT","MIN_FILE_SIZE_DEFAULT","i1.SkyFileAttachmentService","i2.SkyFileItemService","i7","i8","i9","takeUntil","i2.SkyCharacterCounterIndicatorComponent","i7.SkyInputBoxHintTextPipe","i6.SkyInputBoxComponent","i7.SkyInputBoxControlDirective","i1.SkyFileItemService","i1.SkyRadioGroupIdService","i5.SkyFormErrorsComponent","i1.SkySelectionBoxAdapterService","i2.SkySelectionBoxAdapterService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAEA;;;;;AAKG;AAQH,MAAM,SAAS,GAAoC;AACjD,IAAA,OAAO,EAAE;AACP,QAAA,6BAA6B,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE;AACvE,QAAA,gCAAgC,EAAE;AAChC,YAAA,OAAO,EAAE,mCAAmC;AAC7C,SAAA;AACD,QAAA,gCAAgC,EAAE;AAChC,YAAA,OAAO,EAAE,8BAA8B;AACxC,SAAA;AACD,QAAA,qBAAqB,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE;AACnE,QAAA,yBAAyB,EAAE;AACzB,YAAA,OAAO,EAAE,0CAA0C;AACpD,SAAA;AACD,QAAA,yBAAyB,EAAE;AACzB,YAAA,OAAO,EAAE,yCAAyC;AACnD,SAAA;AACD,QAAA,2CAA2C,EAAE;AAC3C,YAAA,OAAO,EAAE,gEAAgE;AAC1E,SAAA;AACD,QAAA,mCAAmC,EAAE;AACnC,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,oCAAoC,EAAE;AACpC,YAAA,OAAO,EAAE,0CAA0C;AACpD,SAAA;AACD,QAAA,oCAAoC,EAAE;AACpC,YAAA,OAAO,EAAE,yCAAyC;AACnD,SAAA;AACD,QAAA,yCAAyC,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE;AAC3E,QAAA,sBAAsB,EAAE;AACtB,YAAA,OAAO,EAAE,6CAA6C;AACvD,SAAA;AACD,QAAA,0BAA0B,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE;AACvE,QAAA,0BAA0B,EAAE;AAC1B,YAAA,OAAO,EAAE,sCAAsC;AAChD,SAAA;AACD,QAAA,sBAAsB,EAAE;AACtB,YAAA,OAAO,EACL,oEAAoE;AACvE,SAAA;AACD,QAAA,yBAAyB,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;AAC1D,QAAA,qBAAqB,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE;AACnE,QAAA,oBAAoB,EAAE,EAAE,OAAO,EAAE,kCAAkC,EAAE;AACrE,QAAA,yBAAyB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;AAClD,QAAA,8CAA8C,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;AAC1E,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,iBAAiB;AAC3B,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,cAAc;AACxB,SAAA;AACD,QAAA,qDAAqD,EAAE;AACrD,YAAA,OAAO,EAAE,sBAAsB;AAChC,SAAA;AACD,QAAA,sCAAsC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;AACjE,QAAA,sCAAsC,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE;AAC1E,QAAA,wCAAwC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;AAClE,QAAA,0CAA0C,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;AACnE,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,gDAAgD,EAAE;AAChD,YAAA,OAAO,EAAE,kBAAkB;AAC5B,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,qCAAqC;AAC/C,SAAA;AACD,QAAA,iDAAiD,EAAE;AACjD,YAAA,OAAO,EAAE,iBAAiB;AAC3B,SAAA;AACD,QAAA,4CAA4C,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;AACvE,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,yBAAyB;AACnC,SAAA;AACD,QAAA,8CAA8C,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;AAC3E,QAAA,wDAAwD,EAAE;AACxD,YAAA,OAAO,EAAE,eAAe;AACzB,SAAA;AACD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,2BAA2B;AACrC,SAAA;AACD,QAAA,4CAA4C,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;AAC3E,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,oBAAoB;AAC9B,SAAA;AACD,QAAA,2CAA2C,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAChE,QAAA,4CAA4C,EAAE;AAC5C,YAAA,OAAO,EAAE,oBAAoB;AAC9B,SAAA;AACD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,sBAAsB;AAChC,SAAA;AACD,QAAA,gDAAgD,EAAE;AAChD,YAAA,OAAO,EAAE,sCAAsC;AAChD,SAAA;AACD,QAAA,0DAA0D,EAAE;AAC1D,YAAA,OAAO,EAAE,2CAA2C;AACrD,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,0BAA0B;AACpC,SAAA;AACD,QAAA,8DAA8D,EAAE;AAC9D,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,yBAAyB;AACnC,SAAA;AACD,QAAA,8DAA8D,EAAE;AAC9D,YAAA,OAAO,EAAE,8BAA8B;AACxC,SAAA;AACD,QAAA,0CAA0C,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;AAC1E,QAAA,8BAA8B,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;AACvD,QAAA,sCAAsC,EAAE;AACtC,YAAA,OAAO,EAAE,2BAA2B;AACrC,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,6BAA6B,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE;AACnE,QAAA,gCAAgC,EAAE;AAChC,YAAA,OAAO,EAAE,4CAA4C;AACtD,SAAA;AACD,QAAA,gCAAgC,EAAE;AAChC,YAAA,OAAO,EAAE,iCAAiC;AAC3C,SAAA;AACD,QAAA,qBAAqB,EAAE;AACrB,YAAA,OAAO,EAAE,yCAAyC;AACnD,SAAA;AACD,QAAA,yBAAyB,EAAE;AACzB,YAAA,OAAO,EAAE,qDAAqD;AAC/D,SAAA;AACD,QAAA,yBAAyB,EAAE;AACzB,YAAA,OAAO,EAAE,qDAAqD;AAC/D,SAAA;AACD,QAAA,2CAA2C,EAAE;AAC3C,YAAA,OAAO,EACL,oFAAoF;AACvF,SAAA;AACD,QAAA,mCAAmC,EAAE;AACnC,YAAA,OAAO,EAAE,yCAAyC;AACnD,SAAA;AACD,QAAA,oCAAoC,EAAE;AACpC,YAAA,OAAO,EAAE,qDAAqD;AAC/D,SAAA;AACD,QAAA,oCAAoC,EAAE;AACpC,YAAA,OAAO,EAAE,qDAAqD;AAC/D,SAAA;AACD,QAAA,yCAAyC,EAAE;AACzC,YAAA,OAAO,EAAE,sBAAsB;AAChC,SAAA;AACD,QAAA,sBAAsB,EAAE;AACtB,YAAA,OAAO,EAAE,oDAAoD;AAC9D,SAAA;AACD,QAAA,0BAA0B,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE;AAC1E,QAAA,0BAA0B,EAAE;AAC1B,YAAA,OAAO,EAAE,2CAA2C;AACrD,SAAA;AACD,QAAA,sBAAsB,EAAE;AACtB,YAAA,OAAO,EACL,4EAA4E;AAC/E,SAAA;AACD,QAAA,yBAAyB,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACzD,QAAA,qBAAqB,EAAE;AACrB,YAAA,OAAO,EAAE,0CAA0C;AACpD,SAAA;AACD,QAAA,oBAAoB,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE;AAC1E,QAAA,yBAAyB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AAChD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,oBAAoB;AAC9B,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,yBAAyB;AACnC,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,sBAAsB;AAChC,SAAA;AACD,QAAA,qDAAqD,EAAE;AACrD,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,sCAAsC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;AACpE,QAAA,sCAAsC,EAAE;AACtC,YAAA,OAAO,EAAE,6BAA6B;AACvC,SAAA;AACD,QAAA,wCAAwC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;AACnE,QAAA,0CAA0C,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;AACpE,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,gDAAgD,EAAE;AAChD,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,wDAAwD;AAClE,SAAA;AACD,QAAA,iDAAiD,EAAE;AACjD,YAAA,OAAO,EAAE,2BAA2B;AACrC,SAAA;AACD,QAAA,4CAA4C,EAAE;AAC5C,YAAA,OAAO,EAAE,mBAAmB;AAC7B,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,qCAAqC;AAC/C,SAAA;AACD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,mBAAmB;AAC7B,SAAA;AACD,QAAA,wDAAwD,EAAE;AACxD,YAAA,OAAO,EAAE,mBAAmB;AAC7B,SAAA;AACD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,qCAAqC;AAC/C,SAAA;AACD,QAAA,4CAA4C,EAAE;AAC5C,YAAA,OAAO,EAAE,uBAAuB;AACjC,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,0BAA0B;AACpC,SAAA;AACD,QAAA,2CAA2C,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;AACnE,QAAA,4CAA4C,EAAE;AAC5C,YAAA,OAAO,EAAE,gCAAgC;AAC1C,SAAA;AACD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,gCAAgC;AAC1C,SAAA;AACD,QAAA,gDAAgD,EAAE;AAChD,YAAA,OAAO,EAAE,gDAAgD;AAC1D,SAAA;AACD,QAAA,0DAA0D,EAAE;AAC1D,YAAA,OAAO,EAAE,sDAAsD;AAChE,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,wCAAwC;AAClD,SAAA;AACD,QAAA,8DAA8D,EAAE;AAC9D,YAAA,OAAO,EAAE,8CAA8C;AACxD,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,uCAAuC;AACjD,SAAA;AACD,QAAA,8DAA8D,EAAE;AAC9D,YAAA,OAAO,EAAE,6CAA6C;AACvD,SAAA;AACD,QAAA,0CAA0C,EAAE;AAC1C,YAAA,OAAO,EAAE,uBAAuB;AACjC,SAAA;AACD,QAAA,8BAA8B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACrD,QAAA,sCAAsC,EAAE;AACtC,YAAA,OAAO,EAAE,wCAAwC;AAClD,SAAA;AACF,KAAA;CACF;AAED,sBAAsB,CAAC,YAAY,CAAC,SAAS,CAAC;AAE9C;;AAEG;MAIU,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAFxB,aAAa,CAAA,EAAA,CAAA,CAAA;AAEZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAFxB,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAEZ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,aAAa,CAAC;AACzB,iBAAA;;;MC7QY,mCAAmC,CAAA;AAC9C,IAAA,0BAA0B;IAEnB,SAAS,CACd,cAAkC,EAClC,mBAAuC,EAAA;;;QAIvC,IAAI,cAAc,KAAK,SAAS,IAAI,mBAAmB,KAAK,SAAS,EAAE;AACrE,YAAA,OAAO,EAAE;QACX;;AAGA,QAAA,MAAM,OAAO,GACX,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI;AAC5D,cAAE;cACA,EAAE;QAER,IACE,cAAc,KAAK,mBAAmB;YACtC,cAAc,GAAG,OAAO,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,0BAA0B,KAAK,SAAS,EAC7C;AACA,YAAA,IAAI,CAAC,0BAA0B,GAAG,cAAc;QAClD;aAAO;;AAEL,YAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,KAAK,CAC7C,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAC1C;;YAED,MAAM,2BAA2B,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;;YAExE,MAAM,mCAAmC,GAAG,IAAI,CAAC,IAAI,CACnD,cAAc,GAAG,OAAO,CACzB;;YAGD,IACE,2BAA2B,KAAK,4BAA4B;gBAC5D,mCAAmC,KAAK,4BAA4B,EACpE;AACA,gBAAA,IAAI,CAAC,0BAA0B;oBAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,OAAO;YAClD;QACF;AAEA,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAAE;IACzD;8GAhDW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iCAAA,EAAA,CAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAH/C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,iCAAiC;AACxC,iBAAA;;;MCUY,qCAAqC,CAAA;IAChD,qBAAqB,GAAG,CAAC;IACzB,gBAAgB,GAAG,CAAC;AAEpB,IAAA,eAAe;AAEf,IAAA,WAAA,CAAY,cAAiC,EAAA;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;IACvC;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,IACW,cAAc,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,qBAAqB;IACnC;IAEA,IACW,mBAAmB,CAAC,KAAa,EAAA;AAC1C,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;8GA5BW,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,sLCdlD,0uBAuBA,EAAA,MAAA,EAAA,CAAA,0fAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,mCAAA,EAAA,IAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDTa,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAPjD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,eAAA,EAG1B,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,0uBAAA,EAAA,MAAA,EAAA,CAAA,0fAAA,CAAA,EAAA;;sBAgBhB;;sBAUA;;;AE5BH;;;;;AAKG;MAYU,iCAAiC,CAAA;AAC5C;;;;AAIG;AACH,IAAA,IACW,4BAA4B,GAAA;QAGrC,OAAO,IAAI,CAAC,8BAA8B;IAC5C;IACA,IAAW,4BAA4B,CACrC,KAAwD,EAAA;AAExD,QAAA,IAAI,CAAC,8BAA8B,GAAG,KAAK;QAC3C,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA;;;;AAIG;IACH,IACW,wBAAwB,CAAC,KAAyB,EAAA;AAC3D,QAAA,IAAI,CAAC,kCAAkC,GAAG,KAAK,IAAI,CAAC;QACpD,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,8BAA8B;IAI9B,kCAAkC,GAAG,CAAC;AAE/B,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAE3B,QAAA,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QAExD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kCAAkC;QAErD,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,kCAAkC,EAAE;;YAE1D,OAAO,CAAC,aAAa,EAAE;YAEvB,OAAO;AACL,gBAAA,mBAAmB,EAAE;AACnB,oBAAA,OAAO,EAAE,KAAK;oBACd,KAAK;AACN,iBAAA;aACF;QACH;AAEA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,yBAAyB,CAAC,EAAc,EAAA;AAC7C,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAC5B;AAEA,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE;AACrC,YAAA,IAAI,CAAC,4BAA4B,CAAC,cAAc,GAAG,KAAK;QAC1D;IACF;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACrC,IAAI,CAAC,4BAA4B,CAAC,mBAAmB;gBACnD,IAAI,CAAC,kCAAkC;QAC3C;QAEA,IAAI,CAAC,gBAAgB,EAAE;IACzB;;AAGA,IAAA,gBAAgB,GAAG,MAAW,EAAE,CAAC;8GAlFtB,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EATjC;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,iCAAiC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGU,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAX7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAA,iCAAmC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAOE;;sBAkBA;;;MCxBU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,iBAflC,iCAAiC;AACjC,YAAA,qCAAqC,aAGrC,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,mCAAmC;AACnC,YAAA,uBAAuB,aAGvB,iCAAiC;YACjC,qCAAqC,CAAA,EAAA,CAAA,CAAA;AAG5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAXlC,YAAY;YACZ,WAAW;YACX,mBAAmB;YAEnB,uBAAuB,CAAA,EAAA,CAAA,CAAA;;2FAOd,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iCAAiC;wBACjC,qCAAqC;AACtC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,mCAAmC;wBACnC,uBAAuB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iCAAiC;wBACjC,qCAAqC;AACtC,qBAAA;AACF,iBAAA;;;ACxBD;;AAEG;MACU,uBAAuB,GAAG,IAAI,cAAc,CACvD,yBAAyB;;ACM3B;;;;;AAKG;MAmBU,qBAAqB,CAAA;AAehC,IAAA,IAAgD,aAAa,GAAA;QAC3D,OAAO,IAAI,CAAC,SAAS;IACvB;AAMA,IAAA,WAAA,GAAA;AAJmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,uBAAuB,EAAE;AAC9D,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E;QACH;IACF;8GA7BW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,IAAA,CAAA,+BAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAftB;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAXS,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAgBvB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB,CAAC,wBAAwB,CAAC,EAAA,QAAA,EACzB;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,cAAA,EAEe,CAAC,+BAA+B,CAAC,EAAA,eAAA,EAChC,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,uWAAA,CAAA,EAAA;;sBAO9C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAOxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAGxB,WAAW;uBAAC,sBAAsB;;;MC3CxB,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAlB,kBAAkB,EAAA,OAAA,EAAA,CAHnB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACrB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAGpB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA;;;ACOD;;AAEG;MAQU,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;AAoBE;;AAEG;QAEI,IAAA,CAAA,OAAO,GAAG,KAAK;AAEtB;;AAEG;QAEI,IAAA,CAAA,KAAK,GAAG,KAAK;QAGD,IAAA,CAAA,UAAU,GAAG,MAAM;QAGnB,IAAA,CAAA,QAAQ,GAAG,WAAW;QAGtB,IAAA,CAAA,YAAY,GAAG,KAAK;AACxC,IAAA;8GAjCY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAgBb,gBAAgB,CAAA,EAAA,KAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAMhB,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9CtC,mvHAyIA,EAAA,MAAA,EAAA,CAAA,0DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtHY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK1D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,iBAAiB,EAAA,OAAA,EAClB,CAAC,WAAW,EAAE,qBAAqB,EAAE,uBAAuB,CAAC,EAAA,eAAA,EAGrD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mvHAAA,EAAA,MAAA,EAAA,CAAA,0DAAA,CAAA,EAAA;;sBAM9C;;sBAMA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAMrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,WAAW;uBAAC,kBAAkB;;sBAG9B,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,oBAAoB;;;AElDnC;;AAEG;MAKU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,OAAA,EAAA,CAHpB,sBAAsB,EAAE,qBAAqB,aAC7C,sBAAsB,CAAA,EAAA,CAAA,CAAA;+GAErB,mBAAmB,EAAA,OAAA,EAAA,CAHpB,sBAAsB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAG5C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;oBACxD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;ACgBD,SAASC,kBAAgB,CAAC,KAAc,EAAA;AACtC,IAAA,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;AAClC;AAEA;;AAEG;MAuBU,yBAAyB,CAAA;AAtBtC,IAAA,WAAA,GAAA;AA4CE;;AAEG;QAEI,IAAA,CAAA,aAAa,GAAG,KAAK;AA+B5B;;AAEG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;QAyBhB,IAAA,CAAA,SAAS,GAAG,KAAK;QAGjB,IAAA,CAAA,SAAS,GAAG,KAAK;AAEf,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QAClC,IAAA,CAAA,YAAY,GAAG,oBAAoB;QACnC,IAAA,CAAA,gBAAgB,GAAG,4BAA4B;QAIzD,IAAA,CAAA,SAAS,GAAG,KAAK;AA8BlB,IAAA;AApGC;;AAEG;IACH,IACW,YAAY,CAAC,KAA+C,EAAA;AACrE,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;QAChE,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,cAAc;IAC5B;AAEA;;;AAGG;IACH,IACW,YAAY,CAAC,KAAmC,EAAA;AACzD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,iBAAA,EAAoB,KAAK,EAAE;IACjD;AAeA;;;AAGG;IACH,IACW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAgBS,IAAA,MAAM;AAMf,IAAA,cAAc;AACd,IAAA,SAAS;AAEF,IAAA,QAAQ,CAAC,SAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,KAAK,SAAS;AAE5B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpD,IAAI,kBAAkB,GAAG,KAAK;AAE9B,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;YACnC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;AAC1C,YAAA,IAAI,OAAO,EAAE,KAAK,EAAE;gBAClB,kBAAkB,GAAG,IAAI;YAC3B;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE;AACvB,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;IAEA,qBAAqB,GAAA;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;AACnD,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;IACtD;8GA/HW,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,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAyBhB,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAMhB,eAAe,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EA5D5BA,kBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAyFH,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAOhB,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EA7EzB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,yBAAyB;AACtC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrD,SAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAD,IAAA,CAAA,+BAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrDH,oxEAmFA,EAAA,MAAA,EAAA,CAAA,24CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5CI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAYL,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAtBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAGrB;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,uBAAuB;wBACvB,mBAAmB;wBACnB,WAAW;wBACX,cAAc;qBACf,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAA,yBAA2B;AACtC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;qBACrD,EAAA,cAAA,EACe,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,oxEAAA,EAAA,MAAA,EAAA,CAAA,24CAAA,CAAA,EAAA;;sBAQhD;;sBAOA;;sBAMA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAMxB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAMrC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAcpC,KAAK;uBAAC,EAAE,SAAS,EAAEJ,kBAAgB,EAAE;;sBASrC;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAerC;;sBAGA,WAAW;uBAAC,8BAA8B;;sBAG1C,WAAW;uBAAC,+BAA+B;;;AE9I9C;;AAEG;MAUU,kCAAkC,CAAA;AAT/C,IAAA,WAAA,GAAA;QAWS,IAAA,CAAA,WAAW,GAAG,KAAK;QAW1B,IAAA,CAAA,WAAW,GAAG,EAAE;AACjB,IAAA;IAVC,IACW,SAAS,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE;IACjC;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA,IAAA,WAAW;8GAbA,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,0JCd/C,sFAGA,EAAA,MAAA,EAAA,CAAA,8DAAA,EAAA,sEAAA,CAAA,EAAA,CAAA,CAAA;;2FDWa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAT9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,cAM7B,KAAK,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,8DAAA,EAAA,sEAAA,CAAA,EAAA;;sBAGhB;;sBAGA;;;AEhBH;;;;;AAKG;MAMU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,+ECbtC,4LAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDQa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAElB,KAAK,EAAA,QAAA,EAAA,4LAAA,EAAA;;;AEqBnB;;;AAGG;MAoBU,oBAAoB,CAAA;AAG/B;;;;;;AAMG;IACH,IACW,KAAK,CAAC,KAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QAEpB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,EAAE;AACpD,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACrB;AAEA;;;;;;AAMG;IACH,IACW,UAAU,CAAC,KAAyB,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,iCAAiC,EAAE;AACzD,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY;IAC1B;AAEA;;;AAGG;IACH,IACW,EAAE,CAAC,KAAyB,EAAA;QACrC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,aAAA,EAAgB,KAAK,QAAQ;QAC9C;aAAO;YACL,IAAI,CAAC,OAAO,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAC,UAAU,QAAQ;QACxD;IACF;AAEA;;;;AAIG;IACH,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC;IACF;AAEA;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AASA;;;AAGG;IACH,IACW,IAAI,CAAC,KAAyB,EAAA;QACvC,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACrB;aAAO;YACL,IAAI,CAAC,MAAM,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAC,UAAU,EAAE;QACjD;IACF;AAEA,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;AA+BA;;;;;;;;AAQG;IACH,IACW,YAAY,CAAC,KAAyB,EAAA;QAC/C,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,mCAAmC,EAAE;AAC3D,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,MAAM;IAC5D;AAEA,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,cAAc;IAC5B;AAEA;;;AAGG;IACH,IACW,OAAO,CAAC,KAA0B,EAAA;AAC3C,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK;AACvB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC;IACF;AAEA;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA;;;AAGG;IACH,IACW,aAAa,CAAC,KAA0B,EAAA;AACjD,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK;YAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACpD,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe;AAC/D,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;YACrC;QACF;IACF;AAEA,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe;IAC7B;AAiDA;;AAEG;AACH,IAAA,IACW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB;IAC/B;AAEA;;AAEG;AACH,IAAA,IACW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,kBAAkB;IAChC;AAEA;;;AAGG;AACH,IAAA,IACW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,uBAAuB;IACrC;IAEA,IACW,OAAO,CAAC,EAA0B,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;YAC5B,EAAE,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QACrD;IACF;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,IAAc,kBAAkB,GAAA;AAC9B,QAAA,OAAO,CAAC,EACN,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;YACnD,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAChD;IACH;AAKA,IAAA,cAAc;AACd,IAAA,iBAAiB;AACjB,IAAA,eAAe;AACf,IAAA,kBAAkB;AAClB,IAAA,oBAAoB;AACpB,IAAA,uBAAuB;AAEvB,IAAA,SAAS;AACT,IAAA,cAAc;AACd,IAAA,UAAU;AACV,IAAA,eAAe;AACf,IAAA,SAAS;AACT,IAAA,MAAM;AACN,IAAA,OAAO;AACP,IAAA,YAAY;AAEZ,IAAA,eAAe;AACf,IAAA,MAAM;AACN,IAAA,UAAU;AACV,IAAA,OAAO;AAIP,IAAA,WAAA,GAAA;AA3OA;;;AAGG;QAEI,IAAA,CAAA,QAAQ,GAAuB,CAAC;AAkCvC;;AAEG;AAGI,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAqB;AAyErD;;;;;;AAMG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;AASvB;;AAEG;QAEI,IAAA,CAAA,WAAW,GAAG,KAAK;AAS1B;;;;AAIG;QAGI,IAAA,CAAA,OAAO,GAAG,KAAK;QAwDZ,IAAA,CAAA,OAAO,GAAG,EAAE;QAStB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,cAAc,GAAG,MAAM;QACvB,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,eAAe,GAAG,KAAK;QAEvB,IAAA,CAAA,MAAM,GAAG,EAAE;AAIX,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACrC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAEZ,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;;;AAqF9C,QAAA,IAAA,CAAA,SAAS,GAAc,MAAK,EAAE,CAAC;;AAGtC,QAAA,IAAA,CAAA,6BAA6B,GAAyB,CAAC,KAAK,KAAI,EAAE,CAAC;AArFjE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAW;AAC5C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAW;AAC7C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAW;QAElD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;QAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;QAC7D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;AACvE,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU;IAC7B;IAEO,eAAe,GAAA;QACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;IACpD;AAEO,IAAA,QAAQ,CAAC,OAAiC,EAAA;AAC/C,QAAA,IAAI,CAAC,OAAO,KAAK,OAAO;;;;;QAMxB,OAAO,IAAI,CAAC,kBAAkB,IAAI,OAAO,CAAC,KAAK,KAAK;AAClD,cAAE,EAAE,QAAQ,EAAE,IAAI;cAChB,IAAI;IACV;AAEA;;AAEG;AACI,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK;IACxB;AAEA;;AAEG;AACI,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,6BAA6B,GAAG,EAAE;IACzC;AAEA;;AAEG;AACI,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA;;AAEG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA;;;AAGG;AACI,IAAA,kBAAkB,CAAC,KAAY,EAAA;;;;QAIpC,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC;YAChD,IAAI,CAAC,gBAAgB,EAAE;QACzB;IACF;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,SAAS,EAAE;IAClB;;AAQA,IAAA,6BAA6B;IAE7B,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7C;AAEA;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;IAC9B;8GA5ZW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAiEX,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EA2IhB,gBAAgB,uEAahB,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAehB,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAnPzB;YACT,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1E,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,oBAAoB;AACjC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrD,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAgR6B,UAAU,oGCpU1C,40GA8GA,EAAA,MAAA,EAAA,CAAA,41BAAA,EAAA,i3CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,kCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDvDa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,cAAA,EAMR,CAAC,+BAA+B,CAAC,EAAA,SAAA,EACtC;wBACT,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1E,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,oBAAsB;AACjC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrD,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,40GAAA,EAAA,MAAA,EAAA,CAAA,41BAAA,EAAA,i3CAAA,CAAA,EAAA;;sBAYhB;;sBAsBA;;sBAmBA;;sBAcA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAmBrC;;sBAOA;;sBAkBA;;sBAOA;;sBAMA;;sBAQA;;sBAYA;;sBAmBA;;sBAoBA;;sBAuBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAQA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,8BAA8B;;sBAQ1C;;sBAMA;;sBAQA;;sBASA;;sBAKA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;MEzR/B,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAxB1B,oBAAoB;YACpB,yBAAyB;AACzB,YAAA,kCAAkC,aAGlC,YAAY;YACZ,WAAW;YACX,yBAAyB;YACzB,kBAAkB;YAClB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,aAAa;AACb,YAAA,cAAc,aAGd,oBAAoB;YACpB,yBAAyB;YACzB,yBAAyB;YACzB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAnB1B,YAAY;YACZ,WAAW;YACX,yBAAyB;YACzB,kBAAkB;YAClB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,aAAa;AACb,YAAA,cAAc,EAMd,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAGT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1B7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,yBAAyB;wBACzB,kCAAkC;AACnC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,yBAAyB;wBACzB,kBAAkB;wBAClB,mBAAmB;wBACnB,uBAAuB;wBACvB,mBAAmB;wBACnB,aAAa;wBACb,WAAW;wBACX,aAAa;wBACb,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,yBAAyB;wBACzB,yBAAyB;wBACzB,kBAAkB;AACnB,qBAAA;AACF,iBAAA;;;AC1BD,SAAS,gBAAgB,CAAC,KAAc,EAAA;AACtC,IAAA,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;AAClC;AAEA;;AAEG;MAOU,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAoBE;;AAEG;QAEI,IAAA,CAAA,aAAa,GAAG,KAAK;AAE5B;;;AAGG;QAGI,IAAA,CAAA,OAAO,GAAG,KAAK;AAEtB;;;AAGG;QAEI,IAAA,CAAA,YAAY,GAA8B,CAAC;QAkCxC,IAAA,CAAA,YAAY,GAAG,oBAAoB;AAC9C,IAAA;AAjCC;;;AAGG;IACH,IACW,YAAY,CAAC,KAAgC,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,iBAAA,EAAoB,KAAK,EAAE;IACjD;8GA1CW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,iKAiBb,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAOhB,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EArC7B,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAhB,gBAAgB,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBzB,g1CAiDA,02BDtBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,8GAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE7D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,iBAAiB,EAAA,OAAA,EAGlB,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,g1CAAA,EAAA,MAAA,EAAA,CAAA,mzBAAA,CAAA,EAAA;;sBAMxE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAOxB;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,+BAA+B;;sBAO3C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAUrC;;sBAOA;;sBAQA;;;MErFU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAHpB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CACtB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAErB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHpB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;2FAGrB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;ACCD;;;;;;;AAOG;MAQU,+BAA+B,CAAA;AAI1C,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,iCAAiC,EAAE;AAClE,YAAA,uBAAuB,EAAE,CAAC;AAC1B,YAAA,yBAAyB,EACvB,sEAAsE;gBACtE,iDAAiD;AACpD,SAAA,CAAC;IACJ;8GAXW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB5C,6NAKA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDaY,WAAW,8GAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKzB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,WAAW,EAAE,aAAa,CAAC,EAAA,QAAA,EAC3B,2BAA2B,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA;;sBAKpC,SAAS;uBAAC,gBAAgB;;;AEpB7B;;AAEG;MAIU,eAAe,CAAA;AACjB,IAAA,iBAAiB;IACjB,cAAc,GAAG,OAAO;AAEjC,IAAA,WAAA,CAAY,gBAAwC,EAAA;AAClD,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;IAC3C;AAEO,IAAA,SAAS,CAAC,KAA8B,EAAA;QAC7C,IAAI,aAAa,GAAG,CAAC,EACnB,QAAQ,GAAG,CAAC,EACZ,QAAgB;QAElB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChC;QAEA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACzB,QAAQ,GAAG,4CAA4C;QACzD;AAAO,aAAA,IAAI,KAAK,GAAG,IAAI,EAAE;YACvB,QAAQ,GAAG,0CAA0C;QACvD;aAAO,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YACpC,QAAQ,GAAG,oCAAoC;YAC/C,QAAQ,GAAG,IAAI;QACjB;aAAO,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YACpC,QAAQ,GAAG,oCAAoC;YAC/C,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5B,aAAa,GAAG,CAAC;QACnB;aAAO;YACL,QAAQ,GAAG,oCAAoC;YAC/C,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5B,aAAa,GAAG,CAAC;QACnB;QAEA,MAAM,WAAW,GACf,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC;AAE7B,QAAA,MAAM,aAAa,GAAG,YAAY,CAChC,WAAW,EACX,IAAI,CAAC,cAAc,EACnB,MAAM,CACP;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjD;AAEA,IAAA,UAAU,CAAC,GAAW,EAAE,GAAG,IAAe,EAAA;;AAExC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAC9C,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,EAC/B,GAAG,EACH,GAAG,IAAI,CACR;IACH;8GA1DW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACpB,iBAAA;;;ACPD;;;AAGG;MAIU,4BAA4B,CAAA;IAChC,SAAS,CAAC,GAAG,GAAkC,EAAA;;AAEpD,QAAA,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAChD;8GAJW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,0BAA0B;AACjC,iBAAA;;;ACHD;;AAEG;MAEU,wBAAwB,CAAA;IAC5B,UAAU,CACf,KAAoB,EACpB,WAAmB,EACnB,WAAmB,EACnB,aAAsB,EACtB,UAA8B,EAAA;QAE9B,MAAM,WAAW,GAAkB,EAAE;AAErC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;YACzB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;AACpC,gBAAA,QAAQ,CAAC,SAAS,GAAG,aAAa;AAClC,gBAAA,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC5C,gBAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;iBAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;AAC3C,gBAAA,QAAQ,CAAC,SAAS,GAAG,aAAa;AAClC,gBAAA,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC5C,gBAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;AAAO,iBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE;AACnE,gBAAA,QAAQ,CAAC,SAAS,GAAG,UAAU;gBAC/B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC;AAC/D,gBAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;iBAAO,IAAI,UAAU,EAAE;AACrB,gBAAA,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;gBAEvC,IAAI,UAAU,EAAE;AACd,oBAAA,QAAQ,CAAC,SAAS,GAAG,UAAU;AAC/B,oBAAA,QAAQ,CAAC,UAAU,GAAG,UAAU;gBAClC;AACA,gBAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;iBAAO;AACL,gBAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,WAAW;IACpB;AAEA;;AAEG;AACI,IAAA,YAAY,CAAC,KAAe,EAAA;AACjC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACjD,MAAM,IAAI,GAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,IACE,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,EACnC;AACA,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,KAAK;IACd;IAEO,gBAAgB,CAAC,QAAgB,EAAE,aAAsB,EAAA;QAC9D,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,kBAAkB,GAAG,aAAa,CAAC,WAAW,EAAE;QACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;AAE/C,QAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClE;IAEA,gBAAgB,CAAC,SAAmB,EAAE,QAAgB,EAAA;QACpD,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACtC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAE/C,YAAA,IAAI,YAAY,KAAK,GAAG,EAAE;AACxB,gBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACnE,oBAAA,OAAO,IAAI;gBACb;YACF;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,qBAAqB,CAAC,QAA4B,EAAA;AAChD,QAAA,OAAO;AACL,cAAE,WAAW;aACZ,KAAK,CAAC,GAAG;AACT,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC1C,YAAA,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO;AAC/D,QAAA,CAAC;aACA,IAAI,CAAC,IAAI,CAAC;IACf;AAEA,IAAA,eAAe,CAAC,IAAY,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACxD;AAEA,IAAA,gBAAgB,CAAC,IAAY,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C;8GA1GW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACJD;;AAEG;MAEU,kBAAkB,CAAA;AACtB,IAAA,MAAM,CAAC,QAAqB,EAAA;AACjC,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;QAE1B,OAAO,CAAC,EACN,IAAI;AACJ,YAAA,IAAI,KAAK,SAAS;AAClB,YAAA,IAAI,KAAK,IAAI;YACb,IAAI,CAAC,IAAI,KAAK,SAAS;AACvB,YAAA,IAAI,CAAC,IAAI,KAAK,IAAI,CACnB;IACH;AAEO,IAAA,OAAO,CAAC,QAAqB,EAAA;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QACrD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;AAE7C,QAAA,IAAI,UAAU,IAAI,CAAC,EAAE;AACnB,YAAA,QAAQ,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1D,gBAAA,KAAK,KAAK;AACV,gBAAA,KAAK,KAAK;AACV,gBAAA,KAAK,MAAM;AACX,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,IAAI;AACb,gBAAA;oBACE;;QAEN;AAEA,QAAA,OAAO,KAAK;IACd;AAEO,IAAA,qBAAqB,CAAC,QAAqB,EAAA;AAChD,QAAA,IAAI,SAAS,GAAG,EAAE,EAChB,IAAY;;;QAId,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;YAC1B,IAAI,IAAI,EAAE;;AAER,gBAAA,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;;AAEtB,gBAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;YACtD;iBAAO;gBACL,SAAS,GAAG,EAAE;YAChB;QACF;AAEA,QAAA,OAAO,SAAS,CAAC,WAAW,EAAE;IAChC;AAEO,IAAA,gBAAgB,CAAC,QAAqB,EAAA;QAC3C,IAAI,QAAQ,GAAG,EAAE;;;QAGjB,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;YAC1B,IAAI,IAAI,EAAE;AACR,gBAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;YAC5B;iBAAO;gBACL,QAAQ,GAAG,EAAE;YACf;QACF;AAEA,QAAA,OAAO,QAAQ,CAAC,WAAW,EAAE;IAC/B;8GAnEW,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;;;ACyDlC,MAAMQ,uBAAqB,GAAG,MAAM;AACpC,MAAMC,uBAAqB,GAAG,CAAC;AAE/B;;AAEG;MAyBU,0BAA0B,CAAA;AAQ5B,IAAA,SAAS;AAET,IAAA,cAAc;AAiEvB;;;AAGG;IACH,IACW,WAAW,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,IAAID,uBAAqB;IACrD;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA;;;AAGG;IACH,IACW,WAAW,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,IAAIC,uBAAqB;IACrD;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa;IAC3B;IAgDA,IAAW,KAAK,CAAC,KAAqC,EAAA;;;;QAIpD,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI;QAEzD,IAAI,UAAU,EAAE;YACd,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;YACrD;iBAAO;AACL,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAExB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,2BAA2B,EAAE;QACpC;IACF;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACrB;AAoBA,IAAA,IAAc,UAAU,GAAA;QACtB,QACE,IAAI,CAAC,QAAQ;AACb,aAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IAEzE;AAEA,IAAA,iBAAiB;AAEjB,IAAA,cAAc;AAEd,IAAA,aAAa;AAEb,IAAA,aAAa;AAEb,IAAA,OAAO;AAEP,IAAA,eAAe;AACf,IAAA,sBAAsB;AACtB,IAAA,gBAAgB;AAChB,IAAA,SAAS;AAEA,IAAA,MAAM;AACN,IAAA,iBAAiB;AACjB,IAAA,aAAa;IAUtB,WAAA,CACE,cAAiC,EACjC,qBAA+C,EAC/C,eAAmC,EACf,SAAqB,EAC7B,QAA0B,EAAA;AA5N/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAgBtD;;;AAGG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;AA+BvB;;AAEG;QAEI,IAAA,CAAA,WAAW,GAAG,KAAK;AAmC1B;;;AAGG;QAGI,IAAA,CAAA,OAAO,GAAG,KAAK;AAUtB;;;AAGG;AAEI,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA2B;AAE/D;;;AAGG;AAEI,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAA0B;QAEtD,IAAA,CAAA,YAAY,GAAG,KAAK;QAEpB,IAAA,CAAA,iBAAiB,GAAG,KAAK;QAEzB,IAAA,CAAA,YAAY,GAAG,KAAK;AAE3B;;;;;;AAMG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;QA4BhB,IAAA,CAAA,QAAQ,GAAG,EAAE;QAEb,IAAA,CAAA,wBAAwB,GAAG,IAAI;QAE/B,IAAA,CAAA,iBAAiB,GAAG,EAAE;QAUtB,IAAA,CAAA,OAAO,GAAG,KAAK;AAWtB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;QAEpC,IAAA,CAAA,aAAa,GAAGD,uBAAqB;QAErC,IAAA,CAAA,aAAa,GAAGC,uBAAqB;AAS5B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACnD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAG7C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;;;AAwW5C,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,CAAM,KAAU;YAC3B;AACF,QAAA,CAAC;;QAED,IAAA,CAAA,UAAU,GAAG,MAAW;YACtB;AACF,QAAA,CAAC;AAjWC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB;AACnD,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AAEzB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC;AACZ,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,aAAa,KAAI;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI;gBAChE,IAAI,CAAC,2BAA2B,EAAE;AACpC,YAAA,CAAC,CAAC;QACN;IACF;IAEO,eAAe,GAAA;;;;;;;AAOpB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;AAC5C,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,YAAA,CAAC,CAAC;;;;;YAMF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,MAAK;AAC5C,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,YAAA,CAAC,CAAC;QACJ;IACF;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;YAGpC,IAAI,CAAC,eAAe,CAAC;AAClB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CACR,CAAC,kBAA8D,KAAI;gBACjE,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC;AACtD,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,YAAA,CAAC,CACF;QACL;IACF;IAEO,YAAY,GAAA;;;;;AAKjB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;YAC7B,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEO,YAAY,GAAA;QACjB,IAAI,CAAC,UAAU,EAAE;IACnB;IAEO,aAAa,GAAA;;AAElB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACpC;IACF;AAEO,IAAA,eAAe,CAAC,eAAsB,EAAA;;QAE3C,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,CACd,eAAe,CAAC,MAAuC,EAAE,KAAK,CAChE;QACH,CAAC,EAAE,GAAG,CAAC;IACT;AAEO,IAAA,aAAa,CAAC,cAAyB,EAAA;;AAE5C,QAAA,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC,MAAM;QAC9C,cAAc,CAAC,eAAe,EAAE;QAChC,cAAc,CAAC,cAAc,EAAE;IACjC;AAEO,IAAA,YAAY,CAAC,aAAwB,EAAA;AAC1C,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY;QAE3C,aAAa,CAAC,eAAe,EAAE;QAC/B,aAAa,CAAC,cAAc,EAAE;QAE9B,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;gBAClB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAExC,gBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,IACE,IAAI,CAAC,IAAI;AACT,wBAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,aAAa,CACnB,EACD;AACA,wBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;wBACzB;oBACF;gBACF;gBAEA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1C,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBAC1B;YACF;AAAO,iBAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;;;;AAIzB,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YAC1B;QACF;IACF;AAEO,IAAA,QAAQ,CAAC,SAAoB,EAAA;QAClC,SAAS,CAAC,eAAe,EAAE;QAC3B,SAAS,CAAC,cAAc,EAAE;AAE1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,IAAI,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE;YAC1D,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C;YACF;AAEA,YAAA,IACE,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EACtE;gBACA;YACF;YAEA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;QACjD;IACF;AAEO,IAAA,aAAa,CAAC,cAAyB,EAAA;QAC5C,IAAI,IAAI,CAAC,iBAAiB,KAAK,cAAc,CAAC,MAAM,EAAE;AACpD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B;IACF;IAEO,oBAAoB,GAAA;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI;QACtC,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;;QAGpC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,cAAc,CACjB,gDAAgD,EAChD,QAAQ,CACT;QACH;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEO,IAAA,gBAAgB,CAAC,EAAuB,EAAA;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AACO,IAAA,iBAAiB,CAAC,EAAa,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEO,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;IAEO,SAAS,GAAA;;AAEd,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,IAAI,CAAC,KAAK;AACjB,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,cAAc,CAAC,cAAsB,EAAE,GAAG,IAAW,EAAA;AACnD,QAAA,IAAI,CAAC;AACF,aAAA,SAAS,CAAC,cAAc,EAAE,GAAG,IAAI;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,uBAAuB,KAAI;AACrC,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,uBAAuB,CAAC;AAC1D,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,oBAAoB,CAAC,WAAyB,EAAA;AAC5C,QAAA,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC5B,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;QACtC;aAAO;AACL,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;;;YAG1B,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAC3B;YACA,IAAI,CAAC,mBAAmB,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAC9C,YAAA,IAAI,CAAC,aAAa,GAAG,WAAW,EAAE,SAAS;AAC3C,YAAA,IAAI,CAAC,cAAc,GAAG,WAAW,EAAE,UAAU;QAC/C;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,EAAE,WAAW;AACS,SAAA,CAAC;;AAG7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;QACvC;IACF;IAEA,MAAM,SAAS,CAAC,IAAiB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI;gBACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI;gBAE9C,IAAI,gBAAgB,EAAE;AACpB,oBAAA,IAAI,CAAC,cAAc,CACjB,iDAAiD,EACjD,gBAAgB,EAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CACf;gBACH;qBAAO;oBACL,IAAI,CAAC,cAAc,CACjB,8CAA8C,EAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CACf;gBACH;AAEA,gBAAA,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAE7D,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YACjC;AAAE,YAAA,MAAM;AACN,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YACjC;QACF;IACF;AAEA,IAAA,YAAY,CAAC,QAA0B,EAAA;QACrC,IAAI,CAAC,UAAU,EAAE;QAEjB,IAAI,QAAQ,EAAE;YACZ,MAAM,KAAK,GAAkB,EAAE;AAE/B,YAAA,IAAI,MAAM,IAAI,QAAQ,EAAE;AACtB,gBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACpD,KAAK,CAAC,IAAI,CAAC;AACT,wBAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACZ,qBAAA,CAAC;gBACnB;YACF;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAC3D,KAAK,EACL,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,UAAU,CAChB;AAED,YAAA,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;AACjC,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBACjC;qBAAO;AACL,oBAAA,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC3B;YACF;QACF;IACF;AAEA,IAAA,YAAY,CAAC,IAAkB,EAAA;QAC7B,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;AAC9C,kBAAE,IAAI,CAAC,IAAI,CAAC;AACZ,kBAAE,IAAI,CAAC,GAAG;AAEd,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAExB,YAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;AACxB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;YACxD;iBAAO;AACL,gBAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ;YACnC;QACF;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;QAC7B;IACF;IAEA,2BAA2B,GAAA;AACzB,QAAA,IAAI,CAAC,wBAAwB,GAAG,EAC9B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ,CACjD;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;;;AAIA,IAAA,SAAS;;AAIT,IAAA,UAAU;8GArkBC,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EA8BjB,gBAAgB,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAmChB,gBAAgB,iHAwChB,gBAAgB,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAuChB,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAzJzB;YACT,wBAAwB;AACxB,YAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrD,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EA4LgB,+BAA+B,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,+BAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpRlD,4oNAwOA,EAAA,MAAA,EAAA,CAAA,w6JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/JI,YAAY,6HAGZ,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,cAAc,sIACd,+BAA+B,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAT/B,4BAA4B,EAAA,IAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAC5B,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAmBN,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAxBtC,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,4BAA4B;wBAC5B,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;wBACtB,uBAAuB;wBACvB,mBAAmB;wBACnB,aAAa;wBACb,WAAW;wBACX,cAAc;wBACd,+BAA+B;qBAChC,EAAA,SAAA,EACU;wBACT,wBAAwB;AACxB,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrD,qBAAA,EAAA,cAAA,EACe,CAAC,+BAA+B,CAAC,EAAA,QAAA,EACvC,qBAAqB,EAAA,QAAA,EAAA,4oNAAA,EAAA,MAAA,EAAA,CAAA,w6JAAA,CAAA,EAAA;;0BAuO5B;;0BAAQ;;0BACR;;sBApNF;;sBAOA;;sBAOA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC;;sBAOA;;sBAQA;;sBAMA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAOA;;sBAaA;;sBAaA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,8BAA8B;;sBAQ1C;;sBAOA;;sBAOA;;sBAgBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAmCrC,SAAS;uBAAC,cAAc;;sBAGxB,eAAe;uBAAC,+BAA+B;;;MErQrC,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,OAAA,EAAA,CAFxB,0BAA0B,EAAE,+BAA+B,aAJnE,0BAA0B;YAC1B,+BAA+B;YAC/B,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAIT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,OAAA,EAAA,CAFxB,0BAA0B,EAAE,+BAA+B,EAFnE,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAIT,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,+BAA+B;wBAC/B,kBAAkB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,0BAA0B,EAAE,+BAA+B,CAAC;AACvE,iBAAA;;;ACPD;;AAEG;MAEU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;AAGE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE/C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AAuGvD,IAAA;AA1GC,IAAA,KAAK;AACL,IAAA,gBAAgB;AAIhB,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE;IACpC;AAEA,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE;IACxD;AAEA,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE;IACpC;AAEA,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA,IAAA,gBAAgB;AAET,IAAA,IAAI,CAAC,IAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAC7D;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;IAClC;AAEO,IAAA,QAAQ,CAAC,IAA6B,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,sLAAsL,CACvL;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC3B;AAEO,IAAA,WAAW,CAAC,QAA4B,EAAA;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC;IACtC;AAEO,IAAA,iBAAiB,CAAC,IAAa,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACpC;AAEO,IAAA,2BAA2B,CAAC,IAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,yGAAyG,CAC1G;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,CAAC;IAC9C;AAEA;;;;AAIG;AACI,IAAA,WAAW,CAAC,QAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC;AAEA;;;AAGG;AACI,IAAA,cAAc,CAAC,EAAe,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH;QACH;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;IACvC;AAEA;;;AAGG;AACI,IAAA,SAAS,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F;QACH;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC;IAChD;8GA1GW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACND;;AAEG;MAMU,2BAA2B,CAAA;IACtC,IAEW,YAAY,CAAC,KAAyB,EAAA;AAC/C,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC7B;AAEA,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IACnE;AAEA,IAAA,cAAc;IACd,QAAQ,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8GAZlD,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mIAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,QAAQ;;oBAEN,mIAAmI;AACtI,iBAAA;;sBAEE,WAAW;uBAAC,cAAc;;sBAC1B;;;ACZH;;AAEG;MAIU,uBAAuB,CAAA;IAC3B,SAAS,CACd,QAAiB,EACjB,YAAqB,EAAA;AAErB,QAAA,IAAI,QAAQ,IAAI,YAAY,EAAE;AAC5B,YAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,YAAY,EAAE;QACtC;QAEA,OAAO,QAAQ,IAAI,YAAY;IACjC;8GAVW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,qBAAqB;AAC5B,iBAAA;;;ACAD,MAAM,qBAAqB,GAAG,kBAAkB;AAEhD;;AAEG;MAEU,yBAAyB,CAAA;AACpC,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC;AAEpE;;AAEG;;IAEI,eAAe,CAAC,QAAoB,EAAE,EAAe,EAAA;QAC1D,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5C;AAEO,IAAA,YAAY,CAAC,KAAiB,EAAA;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;;QAEtE,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,EAAE;QACjB;IACF;AAEA;;AAEG;AACI,IAAA,oBAAoB,CAAC,KAAiB,EAAA;QAC3C,OAAO,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;IAC/D;AAEA;;AAEG;AACI,IAAA,gBAAgB,CAAC,EAAe,EAAA;QACrC,IAAI,EAAE,EAAE;AACN,YAAA,QACE,EAAE,KAAK,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;QAExE;AACA,QAAA,OAAO,KAAK;IACd;AAEO,IAAA,iBAAiB,CACtB,QAAoB,EACpB,UAAkB,EAClB,QAA4B,EAAA;AAE5B,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,aAA4B;QAErD,MAAM,cAAc,GAClB;aACG,YAAY,CAAC,qBAAqB;cACjC,KAAK,CAAC,GAAG;AACV,aAAA,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;QAEjC,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC;AAC1D,QAAA,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM;AAE3C,QAAA,IAAI,QAAQ,IAAI,eAAe,GAAG,CAAC,EAAE;AACnC,YAAA,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;QACjC;AAAO,aAAA,IAAI,CAAC,QAAQ,IAAI,eAAe,IAAI,CAAC,EAAE;AAC5C,YAAA,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3C;AAEA,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,aAAa,EAAE;AAC3C,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC;QAClD;IACF;AAEA;;AAEG;;IAEI,YAAY,CAAC,QAAoB,EAAE,KAAa,EAAA;QACrD,OAAO,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC;IACpD;IAEA,kBAAkB,CAAC,OAAoB,EAAE,cAAwB,EAAA;AAC/D,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,qBAAqB,CAAC;QAChE;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CACzB,OAAO,EACP,qBAAqB,EACrB,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CACzB;QACH;IACF;8GAnFW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;AC4BD;;AAEG;MAmBU,oBAAoB,CAAA;AAlBjC,IAAA,WAAA,GAAA;AAqBE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACjD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACnD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QA4GtB,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAMxB,IAAA,CAAA,cAAc,GAAG,KAAK;QAEtB,IAAA,CAAA,wBAAwB,GAAG,KAAK;AAI1B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACpC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACrC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,aAAa,CAAqB,CAAC,CAAC;QAKnE,IAAA,CAAA,QAAQ,GAAG,EAAE;QA0CV,IAAA,CAAA,0BAA0B,GAAG,CAAC;QAExC,IAAA,CAAA,SAAS,GAAG,KAAK;AAMjB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;AA0KrC,IAAA;AAlWC,IAAA,UAAU;AACV,IAAA,gBAAgB;AAChB,IAAA,eAAe;AACf,IAAA,MAAM;AACN,IAAA,WAAW;AACX,IAAA,SAAS;AA+BT;;;;;;;;AAQG;IACH,IACW,cAAc,CAAC,KAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,gBAAgB;AACnB,YAAA,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC;QAE1E,IAAI,CAAC,yBAAyB,EAAE;IAClC;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA;;;AAGG;IACH,IACW,OAAO,CAAC,KAAmB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,wBAAwB,GAAG,EAAE;IAChE;AAyBA;;;AAGG;IACH,IACW,QAAQ,CAAC,KAAyB,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AAEvB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChE;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AA4BA,IAAA,oBAAoB;AAqBpB,IAAA,IAAc,UAAU,GAAA;AACtB,QAAA,OAAO,CAAC,EACN,IAAI,CAAC,QAAQ;AACb,YAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ;AAClC,YAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CACvC;IACH;AAEA,IAAA,IAAc,iBAAiB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;QAChD;QAEA,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,IAAc,QAAQ,GAAA;AACpB,QAAA,QACE,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ;YACrC,IAAI,CAAC,oBAAoB;IAE7B;AAIA,IAAA,SAAS;AACT,IAAA,gBAAgB;AAChB,IAAA,UAAU;AAEV,IAAA,iBAAiB;AACjB,IAAA,2BAA2B;AAC3B,IAAA,cAAc;IAEP,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,gBAAgB,CAAC;AACnB,aAAA,IAAI,CAACC,WAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACtB,YAAA,IAAI,CAAC,oBAAoB,GAAG,QAAQ;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAChC,QAAA,CAAC,CAAC;IACN;IAEO,qBAAqB,GAAA;AAC1B,QAAA,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO;AAE5D,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;QACvE;QAEA,IAAI,CAAC,eAAe,EAAE;IACxB;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEA;;;AAGG;AACI,IAAA,eAAe,CAAC,EAAe,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IACnE;IAEO,kBAAkB,GAAA;AACvB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC5D,IAAI,CAAC,WAAW,CACjB;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAC5B;IACF;IAEO,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AACrE,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IAC7B;IAEO,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QACrD;IACF;AAEO,IAAA,QAAQ,CAAC,IAA6B,EAAA;AAC3C,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;AAC3C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe;AAC/C,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,mBAAmB;AACvD,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,oBAAoB;AACzD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB;AACrD,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,sBAAsB;AAC7D,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IAChC;AAEA;;;;;AAKG;AACI,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;IACnE;AAEO,IAAA,iBAAiB,CAAC,IAAa,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IAChC;AAEO,IAAA,eAAe,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IAChC;AAEO,IAAA,2BAA2B,CAAC,IAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IAChC;IAEA,qBAAqB,GAAA;AACnB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;IACtE;AAEA,IAAA,eAAe,CAAC,QAAiB,EAAA;;;;QAI/B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAChC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,iBAAiB,CAAC,OAA6C,EAAA;AAC7D,QAAA,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAA4B;;;;AAK1D,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACzD,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;AAEzC,QAAA,IAAI,oBAAoB,IAAI,YAAY,KAAK,MAAM,EAAE;AACnD,YAAA,OAAO,CAAC,YAAY,GAAG,MAAM;QAC/B;AAAO,aAAA,IAAI,CAAC,oBAAoB,IAAI,YAAY,KAAK,MAAM,EAAE;AAC3D,YAAA,OAAO,CAAC,YAAY,GAAG,IAAI;QAC7B;AAEA,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC;AAC5D,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC;QACzE;aAAO;YACL,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,mBAAmB,CAAC;QAC9D;QAEA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CACpC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CACnC;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,iBAAiB,EAAE;YAC5C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;AACpD,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YAE1D,IAAI,CAAC,yBAAyB,EAAE;AAEhC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ;QACxC;IACF;IAEA,yBAAyB,GAAA;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO;AAExC,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACpC,YAAA,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,2BAA2B,CAAC;AAC3D,YAAA,IAAI,CAAC,2BAA2B,GAAG,SAAS;QAC9C;QAEA,IAAI,OAAO,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YAChD,IAAI,CAAC,2BAA2B,GAAG,UAAU,CAAC,SAAS,CACrD,IAAI,CAAC,cAAc,CACpB;YAED,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3D;IACF;8GApWW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAdpB;YACT,sBAAsB;YACtB,yBAAyB;YACzB,sBAAsB;AACtB,YAAA;AACE,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,IAAI;AACf,aAAA;SACF,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiJa,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGpB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGf,OAAO,2EAGP,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACjC,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClNpB,4pNAiNA,EAAA,MAAA,EAAA,CAAA,otwBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qCAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAY,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDpJa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,SAAA,EAGd;wBACT,sBAAsB;wBACtB,yBAAyB;wBACzB,sBAAsB;AACtB,wBAAA;AACE,4BAAA,OAAO,EAAE,uBAAuB;AAChC,4BAAA,QAAQ,EAAE,IAAI;AACf,yBAAA;AACF,qBAAA,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,QAAA,EAAA,4pNAAA,EAAA,MAAA,EAAA,CAAA,otwBAAA,CAAA,EAAA;;sBAiBhB;;sBAaA;;sBAQA;;sBAYA;;sBAgBA;;sBAUA;;sBAQA;;sBAQA;;sBAOA;;sBAuCA,WAAW;uBAAC,OAAO;;sBAGnB,YAAY;uBAAC,oBAAoB;;sBAGjC,YAAY;uBAAC,eAAe;;sBAG5B,YAAY;uBAAC,OAAO;;sBAGpB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE;AACzC,wBAAA,IAAI,EAAE,UAAU;AACjB,qBAAA;;;MEjLU,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CAnBb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEjC,YAAY;YACZ,yBAAyB;YACzB,mBAAmB;YACnB,kBAAkB;YAClB,uBAAuB;YACvB,mBAAmB;YACnB,2BAA2B;YAC3B,uBAAuB;AACvB,YAAA,cAAc,aAGd,uBAAuB;YACvB,oBAAoB;YACpB,2BAA2B;YAC3B,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAjB1B,YAAY;YACZ,yBAAyB;YACzB,mBAAmB;YACnB,kBAAkB;YAClB,uBAAuB;YACvB,mBAAmB;AAGnB,YAAA,cAAc,EAMd,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAGT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,yBAAyB;wBACzB,mBAAmB;wBACnB,kBAAkB;wBAClB,uBAAuB;wBACvB,mBAAmB;wBACnB,2BAA2B;wBAC3B,uBAAuB;wBACvB,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,uBAAuB;wBACvB,oBAAoB;wBACpB,2BAA2B;wBAC3B,kBAAkB;AACnB,qBAAA;AACF,iBAAA;;;ACaD,MAAM,qBAAqB,GAAG,MAAM;AACpC,MAAM,qBAAqB,GAAG,CAAC;AAE/B;;;;;;;;;AASG;MAuBU,oBAAoB,CAAA;AA2C/B;;;AAGG;IACH,IACW,WAAW,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,qBAAqB;IACrD;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA;;;AAGG;IACH,IACW,WAAW,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,qBAAqB;IACrD;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa;IAC3B;AA8GA,IAAA,iBAAiB;AAEjB,IAAA,aAAa;AAEb,IAAA,aAAa;AAEb,IAAA,cAAc;AACd,IAAA,aAAa;AAGb,IAAA,eAAe;AAEN,IAAA,sBAAsB;AACtB,IAAA,cAAc;AACd,IAAA,iBAAiB;AACjB,IAAA,aAAa;AACb,IAAA,MAAM;AAQf,IAAA,WAAA,GAAA;AAxMA;;AAEG;AAEI,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAqB;AAE3D;;AAEG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ;AAE/C;;AAEG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAe;AAoDpD;;AAEG;QAEI,IAAA,CAAA,QAAQ,GAAwB,IAAI;AAyB3C;;AAEG;QAEI,IAAA,CAAA,OAAO,GAAwB,KAAK;AAE3C;;AAEG;QAEI,IAAA,CAAA,UAAU,GAAwB,KAAK;AAQ9C;;AAEG;QAEI,IAAA,CAAA,WAAW,GAAG,KAAK;AAS1B;;;;;;AAMG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;AAiBvB;;;AAGG;QAGI,IAAA,CAAA,OAAO,GAAG,KAAK;QAaf,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,YAAY,GAAG,KAAK;QAK3B,IAAA,CAAA,aAAa,GAAG,qBAAqB;QAErC,IAAA,CAAA,aAAa,GAAG,qBAAqB;QAMrC,IAAA,CAAA,eAAe,GAAkC,EAAE;AAE1C,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACzD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAC7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACnD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC9C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAE5B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QAElC,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAEjD,IAAA,CAAA,aAAa,GAAkB,EAAE;AAGzC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;IAC/B;AAEO,IAAA,UAAU,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,WAAW,GAAkB,EAAE;YACrC,MAAM,WAAW,GAAkB,EAAE;AAErC,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACrB,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AAC3C,oBAAA,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,EAAE;AACrB,wBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxB;yBAAO,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AACpD,wBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxB;gBACF;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AAC1D,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC5B;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AAEzB,gBAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,oBAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC3B,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACvB,oBAAA,CAAC,CAAC;gBACJ;AACA,gBAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;;;AAG1B,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,oBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;gBAChC;YACF;QACF;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B;IACF;AAEO,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;IACzB;AAEO,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACrC,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IAC1B;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;AACjC,YAAA,IAAI,CAAC,cAAc,IAAI;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACpC;IACF;AAEO,IAAA,eAAe,CAAC,eAAsB,EAAA;;QAE3C,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,CACd,eAAe,CAAC,MAAuC,EAAE,KAAK,CAChE;QACH,CAAC,EAAE,GAAG,CAAC;IACT;AAEO,IAAA,aAAa,CAAC,cAAyB,EAAA;;AAE5C,QAAA,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC,MAAM;QAC9C,cAAc,CAAC,eAAe,EAAE;QAChC,cAAc,CAAC,cAAc,EAAE;IACjC;AAEO,IAAA,YAAY,CAAC,aAAwB,EAAA;AAC1C,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY;QAE3C,aAAa,CAAC,eAAe,EAAE;QAC/B,aAAa,CAAC,cAAc,EAAE;QAE9B,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;gBAClB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAExC,gBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,IACE,IAAI,CAAC,IAAI;AACT,wBAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,aAAa,CACnB,EACD;AACA,wBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;wBACzB;oBACF;gBACF;gBAEA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1C,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBAC1B;AACF,YAAA,CAAC;AAA6C,iBAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;;;;AAIhE,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YAC1B;QACF;IACF;AAEO,IAAA,QAAQ,CAAC,SAAoB,EAAA;QAClC,SAAS,CAAC,eAAe,EAAE;QAC3B,SAAS,CAAC,cAAc,EAAE;AAE1B,QAAA,IAAI,CAAC,cAAc,IAAI;AAEvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,IAAI,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE;AAC1D,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAC3D,SAAS,CAAC,YAAY,CAAC,KAAK,CAC7B;AACD,YAAA,MAAM,oBAAoB,GACxB,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AAE3D,YAAA,IAAI,YAAY,IAAI,oBAAoB,EAAE;gBACxC;YACF;YAEA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;QACjD;IACF;AAEO,IAAA,aAAa,CAAC,cAAmB,EAAA;QACtC,IAAI,IAAI,CAAC,iBAAiB,KAAK,cAAc,CAAC,MAAM,EAAE;AACpD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B;IACF;AAEO,IAAA,YAAY,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB;IACF;AAEO,IAAA,OAAO,CAAC,KAAY,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAiB,CAAC;AACrD,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,QAAA,IAAI,CAAC,cAAc,IAAI;IACzB;AAEU,IAAA,UAAU,CAAC,IAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;QAC1C,IAAI,CAAC,cAAc,CACjB,8CAA8C,EAC9C,IAAI,CAAC,GAAG,CACT;IACH;IAEO,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,IAAI;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC3B;AAEA,IAAA,IAAc,UAAU,GAAA;QACtB,QACE,IAAI,CAAC,QAAQ;AACb,aAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IAEzE;AAEA,IAAA,cAAc,CAAC,cAAsB,EAAE,GAAG,IAAW,EAAA;AACnD,QAAA,IAAI,CAAC;AACF,aAAA,SAAS,CAAC,cAAc,EAAE,GAAG,IAAI;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,uBAAuB,KAAI;AACrC,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,uBAAuB,CAAC;AAC1D,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,oBAAoB,CAClB,UAAkB,EAClB,iBAAgC,EAChC,cAA6B,EAAA;QAE7B,IAAI,UAAU,KAAK,iBAAiB,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE;AACnE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,aAAa,EAAE,iBAAiB;AACZ,aAAA,CAAC;AAEvB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YACvC;QACF;IACF;AAEA,IAAA,cAAc,CACZ,IAAiB,EACjB,cAA6B,EAC7B,iBAAgC,EAChC,UAAkB,EAAA;AAElB,QAAA,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,aAAa,GAChB,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAC9D;QACD,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,EAAE,cAAc,CAAC;IAC1E;IAEA,MAAM,SAAS,CACb,QAA8B,EAC9B,IAAiB,EACjB,cAA6B,EAC7B,iBAAgC,EAChC,UAAkB,EAAA;AAElB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAE7D,YAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,QAAQ,CAAC,oBAAoB,CAC3B,UAAU,EACV,iBAAiB,EACjB,cAAc,CACf;YACD,IAAI,CAAC,cAAc,CACjB,8CAA8C,EAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CACf;AACD,YAAA,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C;AAAE,QAAA,MAAM;YACN,QAAQ,CAAC,cAAc,CACrB,IAAI,EACJ,cAAc,EACd,iBAAiB,EACjB,UAAU,CACX;QACH;IACF;AAEA,IAAA,YAAY,CAAC,QAA0C,EAAA;QACrD,IAAI,QAAQ,EAAE;YACZ,MAAM,cAAc,GAAkB,EAAE;YACxC,MAAM,iBAAiB,GAAkB,EAAE;AAC3C,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;YAElC,IAAI,KAAK,GAAkB,EAAE;AAE7B,YAAA,IAAI,MAAM,IAAI,QAAQ,EAAE;AACtB,gBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACpD,KAAK,CAAC,IAAI,CAAC;AACT,wBAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACZ,qBAAA,CAAC;gBACnB;YACF;iBAAO;gBACL,KAAK,GAAG,QAAQ;YAClB;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAC3D,KAAK,EACL,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,UAAU,CAChB;AAED,YAAA,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;AACjC,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,IAAI,CAAC,cAAc,CACjB,IAAI,EACJ,cAAc,EACd,iBAAiB,EACjB,UAAU,CACX;gBACH;qBAAO;AACL,oBAAA,KAAK,IAAI,CAAC,SAAS,CACjB,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,iBAAiB,EACjB,UAAU,CACX;gBACH;YACF;AAEA,YAAA,IAAI,CAAC,aAAa,GAAG,iBAAiB;QACxC;IACF;8GAxfW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,+eAuHX,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAiBhB,gBAAgB,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAsBhB,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAhLzB;YACT,wBAAwB;AACxB,YAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrD,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClEH,g4QAqQA,kxUDjMI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEX,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,uBAAuB,8BACvB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,WAAW,8GACX,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,mIAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EARd,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAWN,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,SAAA,EAGd;wBACT,wBAAwB;AACxB,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;qBACrD,EAAA,OAAA,EACQ;wBACP,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;wBACtB,uBAAuB;wBACvB,mBAAmB;wBACnB,aAAa;wBACb,WAAW;wBACX,iBAAiB;wBACjB,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,g4QAAA,EAAA,MAAA,EAAA,CAAA,2tUAAA,CAAA,EAAA;;sBAMA;;sBAMA;;sBAMA;;sBASA;;sBASA;;sBAMA;;sBAOA;;sBAaA;;sBAYA;;sBAQA;;sBAQA;;sBAOA;;sBAMA;;sBAMA;;sBAMA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAUA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC;;sBAOA;;sBAOA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,8BAA8B;;sBAQ1C;;sBAGA,SAAS;uBAAC,WAAW;;;ME9NX,oBAAoB,CAAA;AAC/B;;;;;;AAMG;IACH,IACW,QAAQ,CAAC,KAA4C,EAAA;AAC9D,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;YAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;YACnD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;YAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;QACjC;aAAO;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;QAC3B;QACA,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE;IAC7B;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AAoBA,IAAA,UAAU;AAEV,IAAA,OAAO;AACP,IAAA,gBAAgB;AAEP,IAAA,iBAAiB;AAEjB,IAAA,aAAa;IAEtB,WAAA,CAAY,OAAwB,EAAE,eAAmC,EAAA;AA3BzE;;;AAGG;AAEI,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA6B;QAE1D,IAAA,CAAA,QAAQ,GAAG,EAAE;QAIb,IAAA,CAAA,GAAG,GAAG,EAAE;QAIR,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,OAAO,GAAG,KAAK;AAOb,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAEnD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAGrD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;AACxC,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;IACzC;IAEO,SAAS,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAEhD,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,GAAuB;AAC3B,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAChE,IAAI,CAAC,QAAuB,CAC7B;AACD,gBAAA,IAAI,aAAqB;gBAEzB,QAAQ,cAAc;AACpB,oBAAA,KAAK,MAAM;wBACT,GAAG,GAAG,KAAK;wBACX;AACF,oBAAA,KAAK,KAAK;AACV,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,MAAM;wBACT,GAAG,GAAG,SAAS;wBACf;AACF,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,OAAO;wBACV,GAAG,GAAG,KAAK;wBACX;AACF,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,OAAO;wBACV,GAAG,GAAG,KAAK;wBACX;AACF,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,OAAO;wBACV,GAAG,GAAG,KAAK;wBACX;AACF,oBAAA,KAAK,MAAM;wBACT,GAAG,GAAG,MAAM;wBACZ;AACF,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,OAAO;wBACV,GAAG,GAAG,gBAAgB;wBACtB;AACF,oBAAA;wBACE;;gBAGJ,IAAI,CAAC,GAAG,EAAE;oBACR,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CACpD,IAAI,CAAC,QAAuB,CAC7B;AAED,oBAAA,QAAQ,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzD,wBAAA,KAAK,OAAO;4BACV,GAAG,GAAG,OAAO;4BACb;AACF,wBAAA,KAAK,OAAO;;;;4BAIV,GAAG,GAAG,OAAO;4BACb;AACF,wBAAA,KAAK,MAAM;4BACT,GAAG,GAAG,MAAM;4BACZ;AACF,wBAAA,KAAK,OAAO;4BACV,GAAG,GAAG,OAAO;4BACb;AACF,wBAAA;4BACE;;gBAEN;AACA,gBAAA,IAAI,CAAC,IAAI,GAAG,UAAU,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;YACjD;QACF;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS;QACvB;IACF;IAEO,UAAU,GAAA;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC;AACF,iBAAA,SAAS,CAAC,gDAAgD,EAAE,IAAI,CAAC,GAAG;AACpE,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,iBAAA,SAAS,CAAC,CAAC,cAAc,KAAI;AAC5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC;AACjD,YAAA,CAAC,CAAC;QACN;aAAO;AACL,YAAA,IAAI,CAAC;AACF,iBAAA,SAAS,CACR,gDAAgD,EAChD,IAAI,CAAC,QAAQ;AAEd,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,iBAAA,SAAS,CAAC,CAAC,cAAc,KAAI;AAC5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC;AACjD,YAAA,CAAC,CAAC;QACN;IACF;8GA5JW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,kJC7BjC,yoDAsDA,EAAA,MAAA,EAAA,CAAA,g8GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9B6B,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,mIAAvD,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArB,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKd,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,eAAe,EAAE,uBAAuB,EAAE,aAAa,CAAC,YACxD,eAAe,EAAA,QAAA,EAAA,yoDAAA,EAAA,MAAA,EAAA,CAAA,g8GAAA,CAAA,EAAA;;sBAYxB;;sBAwBA;;;MElDU,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,OAAA,EAAA,CAFlB,oBAAoB,EAAE,oBAAoB,aAD1C,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAG7D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,OAAA,EAAA,CAFlB,oBAAoB,EAAE,oBAAoB,EADE,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAG7D,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,CAAC;AACzE,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;AACtD,iBAAA;;;ACLD;;AAEG;MAKU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAFzB,uBAAuB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAD1C,uBAAuB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAGzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAFzB,uBAAuB,EAAE,iBAAiB,EAD1C,uBAAuB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;;2FAGzC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;AACrD,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;AACtD,iBAAA;;;ACPD;;;AAGG;MAEU,sBAAsB,CAAA;AACjC,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,YAAY;IAC1B;AAEA,IAAA,SAAS;AACT,IAAA,UAAU;AACV,IAAA,YAAY;AAEZ,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IACpD;AAEA;;;;AAIG;IACI,QAAQ,CAAC,EAAU,EAAE,cAAsB,EAAA;QAChD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,cAAc,EAAE;YACxE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC;YACtC,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;AAEA;;;AAGG;AACI,IAAA,UAAU,CAAC,EAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3D;8GAxCW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACgBD;;;AAGG;AACH,MAAM,gCAAgC,GAAa;AACjD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,IAAA,KAAK,EAAE,IAAI;CACZ;AAED;;;;AAIG;MAUU,iBAAiB,CAAA;AAM5B;;;AAGG;IACH,IACW,OAAO,CAAC,KAA0B,EAAA;AAC3C,QAAA,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK;AAE/B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,eAAe,EAAE;AACtC,YAAA,IAAI,CAAC,SAAS,GAAG,eAAe;AAChC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC;YAExC,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK;YACjC;QACF;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA;;;;AAIG;IACH,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;QACrC;IACF;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA;;;AAGG;IACH,IACW,EAAE,CAAC,KAAyB,EAAA;QACrC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,UAAA,EAAa,KAAK,QAAQ;QAC3C;aAAO;YACL,IAAI,CAAC,OAAO,GAAG,CAAA,UAAA,EAAa,IAAI,CAAC,UAAU,QAAQ;QACrD;AACA,QAAA,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;IAChE;AAEA;;;;;;;AAOG;IACH,IACW,KAAK,CAAC,KAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QAEpB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,yBAAyB,EAAE;AACjD,gBAAA,uBAAuB,EAAE,EAAE;AAC3B,gBAAA,yBAAyB,EAAE,oCAAoC;AAChE,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACrB;AAEA;;;;;;;AAOG;IACH,IACW,UAAU,CAAC,KAAyB,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,8BAA8B,EAAE;AACtD,gBAAA,uBAAuB,EAAE,EAAE;AAC3B,gBAAA,yBAAyB,EAAE,oCAAoC;AAChE,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY;IAC1B;AAEA;;;;;AAKG;IACH,IACW,IAAI,CAAC,KAAyB,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA;;;;;AAKG;IACH,IACW,QAAQ,CAAC,KAAyB,EAAA;AAC3C,QAAA,OAAO,CAAC,IAAI,CACV,uHAAuH,CACxH;QACD,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACzB;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC;QACrB;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AACA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;;IAGA,IAAW,aAAa,CAAC,KAAyB,EAAA;QAChD,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACzB;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC;QACrB;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA;;;;;AAKG;IACH,IACW,KAAK,CAAC,KAAU,EAAA;;AAEzB,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE;AAC7D,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC1C,IAAI,CAAC,kBAAkB,EAAE;YAC3B;AAEA,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACrB;AAyBA;;;;;;;;AAQG;AACH,IAAA,IACW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW;IACzB;IACA,IAAW,SAAS,CAAC,KAA+B,EAAA;QAClD,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,6BAA6B,EAAE;AACrD,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,MAAM;IACpC;IAgDA,IAAW,aAAa,CAAC,KAAU,EAAA;AACjC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC9B;IACF;AACA,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe;IAC7B;AAMA,IAAA,SAAS;AACT,IAAA,UAAU;AACV,IAAA,MAAM;AACN,IAAA,WAAW;AACX,IAAA,eAAe;AACf,IAAA,UAAU;AACV,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,YAAY;AAEZ,IAAA,eAAe;AACf,IAAA,UAAU;AACV,IAAA,gBAAgB;AAChB,IAAA,OAAO;AAEP,IAAA,WAAA,GAAA;AAhTA;;AAEG;AACI,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,OAAO,EAAQ;AAyOjC;;AAEG;QAEI,IAAA,CAAA,WAAW,GAAG,KAAK;AAiB1B;;AAEG;AAGI,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAkB;AAElD;;AAEG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;AAElD;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;QAW5C,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAEvB,IAAA,CAAA,OAAO,GAAG,EAAE;QAEtB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;QAElB,IAAA,CAAA,WAAW,GAAiB,MAAM;QAElC,IAAA,CAAA,UAAU,GAAG,CAAC;AAKd,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC3C,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE;QAC9C,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;;AAkE/B,QAAA,IAAA,CAAA,8BAA8B,GAAG,MAAW,EAAE,CAAC;;AAE/C,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,KAAU,KAAU,EAAE,CAAC;;AAE5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAW,EAAE,CAAC;AAnEjC,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU;IAC3B;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAClD,IAAI,CAAC,8BAA8B,EAAE;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEO,IAAA,UAAU,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa;AAEhD,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA;;;AAGG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEO,IAAA,qBAAqB,CAAC,UAAmB,EAAA;AAC9C,QAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU;AACpC,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEO,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;IAC7B;AAEO,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAC9B;AAEO,IAAA,aAAa,CAAC,KAAY,EAAA;QAC/B,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA,CAAC;YAEF,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QACpC;IACF;IAEO,kBAAkB,GAAA;QACvB,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IAClB;;AAGA,IAAA,8BAA8B;;AAE9B,IAAA,iBAAiB;;AAEjB,IAAA,kBAAkB;8GArXP,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAmCR,gBAAgB,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EA6MhB,gBAAgB,2JArPzB,CAAC,gCAAgC,CAAC,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,IAAA,CAAA,+BAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3C/C,iqEAsEA,EAAA,MAAA,EAAA,CAAA,g9GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDtBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,SAAA,EAGV,CAAC,gCAAgC,CAAC,EAAA,eAAA,EAC5B,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B,CAAC,+BAA+B,CAAC,cACrC,KAAK,EAAA,QAAA,EAAA,iqEAAA,EAAA,MAAA,EAAA,CAAA,g9GAAA,CAAA,EAAA;;sBAYhB;;sBAyBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAiBrC;;sBAkBA;;sBAwBA;;sBAsBA;;sBAgBA;;sBAiCA;;sBAyBA;;sBAOA;;sBAQA;;sBAYA;;sBAiBA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAQA;;sBAMA;;sBAOA;;sBAMA;;;AEnSH,IAAI,YAAY,GAAG,CAAC;AAEpB,SAAS,gBAAgB,CAAC,KAAc,EAAA;AACtC,IAAA,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;AAClC;AAEA;;;;;AAKG;MAYU,sBAAsB,CAAA;AACjC;;;;;;;AAOG;IACH,IACW,cAAc,CAAC,KAAyB,EAAA;AACjD,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAE7B,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,uCAAuC,EAAE;AAC/D,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA;;;;;;;AAOG;IACH,IACW,SAAS,CAAC,KAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QAExB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,kCAAkC,EAAE;AAC1D,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA;;;;AAIG;IACH,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,IAAI,CAAC,0BAA0B,EAAE;QACnC;IACF;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA;;AAEG;IACH,IACW,YAAY,CAAC,KAA4C,EAAA;AAClE,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;QAChE,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,cAAc;IAC5B;AAEA;;;AAGG;IACH,IACW,YAAY,CAAC,KAAgC,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,iBAAA,EAAoB,KAAK,EAAE;IACjD;AAEA;;;;;AAKG;IACH,IACW,IAAI,CAAC,KAAyB,EAAA;QACvC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACrB;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY;QACjC;QACA,IAAI,CAAC,uBAAuB,EAAE;IAChC;AACA,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;AAaA;;;AAGG;IACH,IACW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA;;;;AAIG;;IAEH,IACW,KAAK,CAAC,KAAU,EAAA;AACzB,QAAA,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,CAAC,aAAa;;QAG/C,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,4BAA4B,EAAE;QACrC;IACF;AAEA;;;;;;AAMG;IACH,IACW,QAAQ,CAAC,KAAyB,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,IAAI,CAAC,4BAA4B,EAAE;QACrC;IACF;AACA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AA8DA,IAAA,IAAc,UAAU,GAAA;QACtB,QACE,IAAI,CAAC,QAAQ;AACb,aAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IAEzE;AAIA,IAAA,aAAa;AAEb,IAAA,YAAY;AAEZ,IAAA,cAAc;AAEd,IAAA,UAAU;AAEV,IAAA,MAAM;AAEN,IAAA,UAAU;AAEV,IAAA,WAAW;AAEX,IAAA,gBAAgB;AAEhB,IAAA,cAAc;AAEd,IAAA,SAAS;AAET,IAAA,eAAe;AACf,IAAA,gBAAgB;AAEP,IAAA,OAAO;AACP,IAAA,UAAU;AAKnB,IAAA,WAAA,CACE,cAAiC,EACjC,eAAuC,EACnB,SAAoB,EAAA;AAlK1C;;;;;;;AAOG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;AA0DvB;;AAEG;QAEI,IAAA,CAAA,aAAa,GAAG,KAAK;QA6CrB,IAAA,CAAA,SAAS,GAAG,KAAK;QAGjB,IAAA,CAAA,SAAS,GAAG,KAAK;QASd,IAAA,CAAA,YAAY,GAAG,oBAAoB;AAI7C,QAAA,IAAA,CAAA,YAAY,GAAG,CAAA,gBAAA,EAAmB,YAAY,EAAE,EAAE;AAElD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;QAEpC,IAAA,CAAA,UAAU,GAAG,KAAK;QAElB,IAAA,CAAA,MAAM,GAAG,EAAE;QAUX,IAAA,CAAA,SAAS,GAAG,KAAK;AAKR,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;AAEhC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;;;AAkGhD,QAAA,IAAA,CAAA,SAAS,GAAyB,MAAK,EAAE,CAAC;;;AAI1C,QAAA,IAAA,CAAA,UAAU,GAAc,MAAK,EAAE,CAAC;QA9F9B,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,aAAa,GAAG,IAAI;QAChC;AACA,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY;QAE7B,IAAI,CAAC,gBAAgB,CAAC;AACnB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;YACjB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS;AAC1C,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,QAAA,CAAC,CAAC;IACN;IAEO,kBAAkB,GAAA;;QAEvB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,kBAAkB,EAAE;;AAGzB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;;gBAEtE,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,kBAAkB,EAAE;AAC3B,gBAAA,CAAC,CAAC;;gBAGF,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,CAAC,CAAC;QACJ;IACF;IAEO,kBAAkB,GAAA;;AAEvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,gBAAA,KAAK,CAAC;AACH,qBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,qBAAA,SAAS,CAAC,CAAC,MAAsB,KAAI;oBACpC,IAAI,CAAC,UAAU,EAAE;AACjB,oBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AAC3B,gBAAA,CAAC,CAAC;AACJ,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;oBAC7D,IAAI,CAAC,UAAU,EAAE;AACjB,oBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;IACF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEO,IAAA,UAAU,CAAC,KAAc,EAAA;AAC9B,QAAA,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,CAAC,aAAa;;QAG/C,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,IAAI,CAAC,4BAA4B,EAAE;QACrC;IACF;AAEA;;;AAGG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEO,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEO,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;;;AAIA,IAAA,SAAS;;;AAIT,IAAA,UAAU;IAEV,0BAA0B,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KACxB,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC3C;QACH;IACF;IAEA,uBAAuB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,gBAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACxB,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,4BAA4B,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,gBAAA,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ;AACrC,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,4BAA4B,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;QAEA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAC5B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,KAAK;AACpD,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,4BAA4B,EAAE;QACnC,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,4BAA4B,EAAE;QACnC,IAAI,CAAC,0BAA0B,EAAE;IACnC;IAEA,qBAAqB,GAAA;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;AACnD,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;IACtD;8GAzZW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAoDb,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAehB,eAAe,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAxF5B,gBAAgB,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAsIH,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAOhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAuDhB,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAtLzB;YACT,sBAAsB;AACtB,YAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrD,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EA6NgB,iBAAiB,uHC/QpC,08EAsFA,EAAA,MAAA,EAAA,CAAA,+kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAc,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDhCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,SAAA,EAGhB;wBACT,sBAAsB;AACtB,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrD,qBAAA,EAAA,cAAA,EACe,CAAC,+BAA+B,CAAC,EAAA,UAAA,EACrC,KAAK,EAAA,QAAA,EAAA,08EAAA,EAAA,MAAA,EAAA,CAAA,+kCAAA,CAAA,EAAA;;0BA6Qd;;0BAAQ;;sBAlQV;;sBAuBA;;sBAoBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAerC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAcpC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAWrC;;sBAqBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAgBrC;;sBAmBA;;sBAcA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAQA;;sBAOA;;sBAQA;;sBAYA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAGxD,WAAW;uBAAC,8BAA8B;;sBAG1C,WAAW;uBAAC,+BAA+B;;;AElR9C;;;;;AAKG;MAMU,sBAAsB,CAAA;;;;AAK1B,IAAA,OAAO,CAAC,KAAiB,EAAA;QAC9B,KAAK,CAAC,eAAe,EAAE;IACzB;AAEA,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,+BAA+B,EAAE;AAChE,YAAA,uBAAuB,EAAE,EAAE;AAC3B,YAAA,yBAAyB,EACvB,kGAAkG;AACrG,SAAA,CAAC;IACJ;8GAfW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,iICdnC,4LAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDSa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAEf,KAAK,EAAA,QAAA,EAAA,4LAAA,EAAA;;sBAMhB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MEuBtB,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAvBvB,iBAAiB;YACjB,sBAAsB;AACtB,YAAA,sBAAsB,aAGtB,YAAY;YACZ,WAAW;YACX,kBAAkB;YAClB,mBAAmB;YACnB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,uBAAuB;YACvB,aAAa;AACb,YAAA,cAAc,aAGd,kBAAkB;YAClB,iBAAiB;YACjB,sBAAsB;YACtB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAGb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAlBvB,YAAY;YACZ,WAAW;YACX,kBAAkB;YAClB,mBAAmB;YACnB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,uBAAuB;YACvB,aAAa;AACb,YAAA,cAAc,EAGd,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAMT,cAAc,EAAA,UAAA,EAAA,CAAA;kBAzB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;wBACjB,sBAAsB;wBACtB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,kBAAkB;wBAClB,mBAAmB;wBACnB,mBAAmB;wBACnB,aAAa;wBACb,WAAW;wBACX,uBAAuB;wBACvB,aAAa;wBACb,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,iBAAiB;wBACjB,sBAAsB;wBACtB,sBAAsB;AACvB,qBAAA;AACF,iBAAA;;;ACrCD;;;AAGG;MAEU,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;QAGS,IAAA,CAAA,QAAQ,GAAG,KAAK;AAad,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxE,IAAA;AAZC;;;AAGG;IACI,UAAU,GAAA;QACf,QACE,IAAI,CAAC,QAAQ;AACb,YAAA,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;IAEjE;AAES,IAAA,UAAU;8GAfR,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,mEAChB,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FADzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,SAAS;mBAAC,EAAE;;sBAEV,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;ACDxC,MAAM,mBAAmB,GAAG,gCAAgC;AAC5D,MAAM,mBAAmB,GAAG,gCAAgC;AAC5D,MAAM,mBAAmB,GAAG,gCAAgC;AAC5D,MAAM,mBAAmB,GAAG,gCAAgC;AAE5D,MAAM,wBAAwB,GAAG,GAAG;AACpC,MAAM,wBAAwB,GAAG,GAAG;AACpC,MAAM,wBAAwB,GAAG,GAAG;AACpC,MAAM,wBAAwB,GAAG,GAAG;AACpC,MAAM,wBAAwB,GAAG,IAAI;AAErC;;AAEG;MAEU,6BAA6B,CAAA;AACxC,IAAA,mBAAmB;AACnB,IAAA,SAAS;IAET,WAAA,CACE,kBAAyC,EACzC,eAAiC,EAAA;AAEjC,QAAA,IAAI,CAAC,mBAAmB,GAAG,kBAAkB;QAC7C,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC;IAClE;AAEA;;AAEG;AACI,IAAA,KAAK,CAAC,EAAc,EAAA;AACzB,QAAA,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IAC1B;AAEA;;;AAGG;AACI,IAAA,UAAU,CAAC,EAAc,EAAA;QAC9B,OAAO,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC;IACtD;AAEA;;;AAGG;AACI,IAAA,qBAAqB,CAAC,KAAyB,EAAA;QACpD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,mBAAmB,CAAC,EAAE;QAC/B;AAEA,QAAA,IAAI,KAAK,IAAI,wBAAwB,EAAE;YACrC,OAAO,mBAAmB,CAAC,EAAE;QAC/B;aAAO,IACL,KAAK,IAAI,wBAAwB;YACjC,KAAK,IAAI,wBAAwB,EACjC;YACA,OAAO,mBAAmB,CAAC,EAAE;QAC/B;aAAO,IACL,KAAK,IAAI,wBAAwB;YACjC,KAAK,IAAI,wBAAwB,EACjC;YACA,OAAO,mBAAmB,CAAC,EAAE;QAC/B;aAAO;YACL,OAAO,mBAAmB,CAAC,EAAE;QAC/B;IACF;AAEA;;AAEG;AACI,IAAA,cAAc,CAAC,OAAmB,EAAA;QACvC,OACE,OAAO,CAAC,aACT,EAAE,aAAa,EAAE,qBAAqB,EAAE,EAAE,KAAK;IAClD;AAEA;;AAEG;IACI,YAAY,CAAC,QAAoB,EAAE,OAAoB,EAAA;QAC5D,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;IACjD;AAEA;;AAEG;IACI,mBAAmB,CAAC,OAAmB,EAAE,QAAgB,EAAA;AAC9D,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,EAAE;AACrE,YAAA,gBAAgB,EAAE,IAAI;AACvB,SAAA,CAAC;AACF,QAAA,IAAI,KAAK,GAAG,YAAY,CAAC,MAAM;QAC/B,OAAO,KAAK,EAAE,EAAE;AACd,YAAA,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,QAAQ;QACzC;IACF;AAEA;;AAEG;IACI,kBAAkB,CACvB,OAAmB,EACnB,UAA+B,EAAA;AAE/B,QAAA,MAAM,QAAQ,GAAgB,OAAO,CAAC,aAAa;QAEnD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,mBAAmB,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,mBAAmB,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,mBAAmB,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AAEzD,QAAA,IAAI,QAAgB;QAEpB,QAAQ,UAAU;AAChB,YAAA,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBAC3B,QAAQ,GAAG,mBAAmB;gBAC9B;YACF;AACA,YAAA,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBAC3B,QAAQ,GAAG,mBAAmB;gBAC9B;YACF;AACA,YAAA,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBAC3B,QAAQ,GAAG,mBAAmB;gBAC9B;YACF;AACA,YAAA,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBAC3B,QAAQ,GAAG,mBAAmB;gBAC9B;YACF;;QAGF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7C;AAEA;;AAEG;IACI,WAAW,CAAC,OAAmB,EAAE,QAAgB,EAAA;AACtD,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa;AAEhC,QAAA,EAAE,CAAC,QAAQ,GAAG,QAAQ;IACxB;8GAhIW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA7B,6BAA6B,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC;;;ACpBD;;AAEG;MAMU,mCAAmC,CAAA;8GAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,0FCVhD,kBACA,EAAA,CAAA,CAAA;;2FDSa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,cAE7B,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA;;;AEWnB;;AAEG;MASU,wBAAwB,CAAA;AACnC;;;AAGG;IACH,IACW,OAAO,CAChB,KAA2D,EAAA;AAE3D,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAQ;QACzC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,6BAA6B,EAAE;YACpC,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAC1C,IAAI,CAAC,cAAc,EACnB,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CACf;QACH;AACA,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;IAQA,IAIW,cAAc,CAAC,KAA6B,EAAA;AACrD,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC7B,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAC1C,KAAK,EACL,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CACvB;;;;YAKD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACjE,YAAA,CAAC,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;IAEpC,SAAS,GAAG,KAAK;AAEjB,IAAA,SAAS;IAET,UAAU,GAAG,KAAK;AAElB,IAAA,gBAAgB;AAEhB,IAAA,eAAe;AACf,IAAA,2BAA2B;IAE3B,WAAA,CACE,cAAiC,EACjC,0BAAyD,EAAA;AAEzD,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,2BAA2B,GAAG,0BAA0B;IAC/D;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEO,IAAA,SAAS,CAAC,KAAoB,EAAA;;AAEnC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YACrB,IAAI,CAAC,cAAc,EAAE;YACrB,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE;QACrE;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;QAC7D;IACF;IAEA,6BAA6B,GAAA;;AAE3B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC;AACV,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,YAAA,CAAC,CAAC;QACN;IACF;IAEA,oBAAoB,GAAA;;AAElB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC;AACV,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACvB,YAAA,CAAC,CAAC;QACN;IACF;8GA9IW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAuB,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAgD3B,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMV,UAAU,6BCpFpB,0+BAkCA,EAAA,MAAA,EAAA,CAAA,ktOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDJa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,QAAA,EAAA,0+BAAA,EAAA,MAAA,EAAA,CAAA,ktOAAA,CAAA,EAAA;;sBAOhB;;sBA0CA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE;AACpB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,MAAM,EAAE,KAAK;AACd,qBAAA;;sBAGA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE;AACzB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,MAAM,EAAE,KAAK;AACd,qBAAA;;;AE7DH,MAAM,4BAA4B,GAAG,oBAAoB;AAEzD;;AAEG;MASU,4BAA4B,CAAA;AACvC;;;;AAIG;IACH,IACW,UAAU,CAAC,KAAoD,EAAA;QACxE,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;QAC9B;IACF;AAEA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY;IAC1B;IAOA,IAIW,mBAAmB,CAAC,KAA6B,EAAA;AAC1D,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;QAClC,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,qBAAqB,EAAE;QAC9B;IACF;AAEA,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,qBAAqB;IACnC;AAEA,IAAA,iBAAiB;AAEjB,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;IAEpC,YAAY,GAAsC,QAAQ;AAE1D,IAAA,qBAAqB;AAErB,IAAA,mBAAmB;AACnB,IAAA,oBAAoB;AACpB,IAAA,UAAU;AACV,IAAA,oBAAoB;AACpB,IAAA,OAAO;AACP,IAAA,SAAS;IAET,WAAA,CACE,kBAAyC,EACzC,mBAAkD,EAClD,SAAqB,EACrB,mBAA+C,EAC/C,MAAc,EACF,QAA0B,EAAA;AAEtC,QAAA,IAAI,CAAC,mBAAmB,GAAG,kBAAkB;AAC7C,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB;AAC/C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB;AAC/C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;IAC3B;IAEO,QAAQ,GAAA;;AAEb,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC;AACZ,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;iBACnC,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,CAAC,CAAC;QACN;IACF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;QAE9B,IAAI,CAAC,wBAAwB,EAAE;IACjC;IAGO,cAAc,GAAA;QACnB,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEA,qBAAqB,GAAA;;QAEnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACvD,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;;;;AAKjD,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;gBAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAK;oBAC7D,IAAI,CAAC,sBAAsB,EAAE;AAC/B,gBAAA,CAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE;AACjC,oBAAA,aAAa,EAAE,IAAI;AACnB,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,wBAAwB,GAAA;;AAEtB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;QACpC;IACF;IAEA,sBAAsB,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAC1D,IAAI,CAAC,UAAU,CAChB;AAED,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAC1C,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAC7D;QACH;QACA,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEA,sBAAsB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAClC,IAAI,CAAC,mBAAmB,EACxB,4BAA4B,CAC7B;YACD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CACpC,IAAI,CAAC,mBAAmB,EACxB,4BAA4B,CAC7B;QACH;IACF;8GArJW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAwB,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAxB,IAAA,CAAA,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,sNAmBtB,wBAAwB,EAAA,IAAA,EACjC,wBAAwB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAKxB,UAAU,2CC/DpB,kLAOA,EAAA,MAAA,EAAA,CAAA,ivQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD+Ba,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;+BACE,wBAAwB,EAAA,eAAA,EAGjB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,QAAA,EAAA,kLAAA,EAAA,MAAA,EAAA,CAAA,ivQAAA,CAAA,EAAA;;0BAgEd;;sBAxDF;;sBAaA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE;AACzC,wBAAA,IAAI,EAAE,wBAAwB;AAC/B,qBAAA;;sBAGA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE;AACtB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,MAAM,EAAE,IAAI;AACb,qBAAA;;sBA+DA,YAAY;uBAAC,eAAe;;;AE9H/B;;AAEG;MAMU,8BAA8B,CAAA;8GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,qFCV3C,kBACA,EAAA,CAAA,CAAA;;2FDSa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cAExB,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA;;;MEkBN,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAd9B,4BAA4B;YAC5B,wBAAwB;YACxB,mCAAmC;AACnC,YAAA,8BAA8B,CAAA,EAAA,OAAA,EAAA,CAEtB,YAAY,EAAE,cAAc,aAEpC,4BAA4B;YAC5B,wBAAwB;YACxB,mCAAmC;YACnC,8BAA8B,CAAA,EAAA,CAAA,CAAA;AAIrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,aAFrB,CAAC,6BAA6B,CAAC,EAAA,OAAA,EAAA,CAPhC,YAAY,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAS3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,4BAA4B;wBAC5B,wBAAwB;wBACxB,mCAAmC;wBACnC,8BAA8B;AAC/B,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;AACvC,oBAAA,OAAO,EAAE;wBACP,4BAA4B;wBAC5B,wBAAwB;wBACxB,mCAAmC;wBACnC,8BAA8B;AAC/B,qBAAA;oBACD,SAAS,EAAE,CAAC,6BAA6B,CAAC;AAC3C,iBAAA;;;ACtBD;;;;;AAKG;MAOU,6BAA6B,CAAA;AACxC,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,+BAA+B,EAAE;AAChE,YAAA,uBAAuB,EAAE,CAAC;AAC1B,YAAA,yBAAyB,EACvB,oGAAoG;AACvG,SAAA,CAAC;IACJ;8GAPW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,oFCf1C,uCACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDca,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,eAAA,EAElB,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,uCAAA,EAAA;;;AEmBnB,MAAM,wCAAwC,GAAQ;AACpD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,IAAA,KAAK,EAAE,IAAI;CACZ;AACD,MAAM,2BAA2B,GAAG;AAClC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,IAAA,KAAK,EAAE,IAAI;CACZ;MAaY,wBAAwB,CAAA;AAGnC;;;;;;;AAOG;IACH,IACW,SAAS,CAAC,KAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AAExB,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,oCAAoC,EAAE;AAC5D,gBAAA,uBAAuB,EAAE,CAAC;AAC1B,gBAAA,yBAAyB,EACvB,8EAA8E;AACjF,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA;;;AAGG;IACH,IACW,OAAO,CAAC,KAA0B,EAAA;AAC3C,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK;AACvB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;;YAIvB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxC,gBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC9B,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAC7B;QACF;IACF;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAiEA,IAAA,QAAQ;AACR,IAAA,cAAc;AACL,IAAA,OAAO;AAChB,IAAA,cAAc;AAEd,IAAA,WAAW;AACX,IAAA,SAAS;AAET,IAAA,eAAe;IAEf,WAAA,CAAY,cAAiC,EAAE,SAAuB,EAAA;AAzEtE;;;AAGG;QAEI,IAAA,CAAA,QAAQ,GAAwB,KAAK;AAiB5C;;;AAGG;QAEI,IAAA,CAAA,QAAQ,GAAuB,CAAC;AAQvC;;AAEG;QAEI,IAAA,CAAA,WAAW,GAAG,KAAK;AAU1B;;AAEG;AAEI,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAyB;QAExD,IAAA,CAAA,iBAAiB,GAAG,KAAK;QAGzB,IAAA,CAAA,wBAAwB,GAAG,KAAK;QAMvC,IAAA,CAAA,cAAc,GAAG,IAAI;AACZ,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;QAGpC,IAAA,CAAA,SAAS,GAAG,KAAK;;AAyEjB,QAAA,IAAA,CAAA,UAAU,GAAc,MAAK,EAAE,CAAC;;AAEhC,QAAA,IAAA,CAAA,SAAS,GAAyB,MAAK,EAAE,CAAC;AAtExC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE;IACvC;IAEO,kBAAkB,GAAA;;AAEvB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YAExD,IAAI,CAAC,eAAe,CAAC;AAClB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,kBAAkB,KAAI;gBAChC,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC;;;AAGtD,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,YAAA,CAAC,CAAC;QACN;;;QAIA,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACtC,QAAA,CAAC,CAAC;IACJ;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEO,IAAA,UAAU,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEO,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QACzB;AAEA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEO,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEO,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEO,IAAA,aAAa,CAAC,KAAU,EAAA;QAC7B,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEO,YAAY,GAAA;QACjB,IAAI,CAAC,UAAU,EAAE;IACnB;;AAGA,IAAA,UAAU;;AAEV,IAAA,SAAS;IAET,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,SAAS;AACxB,SAAA,CAAC;IACJ;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;IAC9B;8GA/MW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EA0Ff,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAjGzB;YACT,wCAAwC;YACxC,2BAA2B;SAC5B,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAoHgB,6BAA6B,6BCtKhD,g0DAiEA,EAAA,MAAA,EAAA,CAAA,g+RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDXa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAXpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,SAAA,EAGlB;wBACT,wCAAwC;wBACxC,2BAA2B;AAC5B,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,g0DAAA,EAAA,MAAA,EAAA,CAAA,g+RAAA,CAAA,EAAA;;sBAahB;;sBAqBA;;sBAwBA;;sBAQA;;sBAOA;;sBAOA;;sBAMA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC;;sBAMA;;sBAQA,eAAe;uBAAC,6BAA6B;;;MElJnC,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,CAVjB,6BAA6B,EAAE,wBAAwB,aAEpE,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,WAAW;YACX,aAAa,CAAA,EAAA,OAAA,EAAA,CAEL,6BAA6B,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAEtD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAR9B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,WAAW;YACX,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAIJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,6BAA6B,EAAE,wBAAwB,CAAC;AACvE,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,WAAW;wBACX,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,wBAAwB,CAAC;AACnE,iBAAA;;;ACnBD;;AAEG;;;;"}