@snabcentr/client-ui 0.18.0 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"snabcentr-client-ui.mjs","sources":["../../../projects/client-ui/auth/enums/auth-method.ts","../../../projects/client-ui/masks/sc-account-number-mask.ts","../../../projects/client-ui/masks/sc-bic-mask.ts","../../../projects/client-ui/masks/sc-correspondent-account-mask.ts","../../../projects/client-ui/masks/sc-inn-mask.ts","../../../projects/client-ui/masks/sc-kpp-mask.ts","../../../projects/client-ui/masks/sc-okpo-mask.ts","../../../projects/client-ui/masks/sc-phone-verification-code-mask.ts","../../../projects/client-ui/verification/verification-phone-check-form/sc-verification-phone-check-form.component.ts","../../../projects/client-ui/verification/verification-phone-check-form/sc-verification-phone-check-form.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form.component.html","../../../projects/client-ui/verification/sc-verification.module.ts","../../../projects/client-ui/auth/sc-auth.module.ts","../../../projects/client-ui/accordion/sc-accordion-content.directive.ts","../../../projects/client-ui/accordion/sc-accordion.component.ts","../../../projects/client-ui/accordion/sc-accordion.component.html","../../../projects/client-ui/accordion/sc-accordion.module.ts","../../../projects/client-ui/helpers/sc-px-converter.ts","../../../projects/client-ui/banner/sc-banner.component.ts","../../../projects/client-ui/banner/sc-banner.component.html","../../../projects/client-ui/banner/sc-banner.module.ts","../../../projects/client-ui/tokens/sc-linear-values-token.ts","../../../projects/client-ui/helpers/sc-units-helper.ts","../../../projects/client-ui/validators/scBicValidator.ts","../../../projects/client-ui/validators/scCorrespondentAccountValidator.ts","../../../projects/client-ui/validators/scPasswordConfirmMatchingValidator.ts","../../../projects/client-ui/validators/stepValidator.ts","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.ts","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.html","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.ts","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.html","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.ts","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.html","../../../projects/client-ui/catalog/categories-list/sc-categories-list.component.ts","../../../projects/client-ui/catalog/categories-list/sc-categories-list.component.html","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.ts","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.html","../../../projects/client-ui/catalog/category-card/sc-category-card.component.ts","../../../projects/client-ui/catalog/category-card/sc-category-card.component.html","../../../projects/client-ui/catalog/price-card/sc-price-card.component.ts","../../../projects/client-ui/catalog/price-card/sc-price-card.component.html","../../../projects/client-ui/catalog/price-history/sc-price-history.component.ts","../../../projects/client-ui/catalog/price-history/sc-price-history.component.html","../../../projects/client-ui/providers/productsPagination.ts","../../../projects/client-ui/catalog/price-list-pagination/sc-price-list-pagination.component.ts","../../../projects/client-ui/catalog/price-list-pagination/sc-price-list-pagination.component.html","../../../projects/client-ui/catalog/sc-catalog.module.ts","../../../projects/client-ui/cart/sc-cart.module.ts","../../../projects/client-ui/form-fields/suggestion-field/sc-suggestion-field.component.ts","../../../projects/client-ui/form-fields/suggestion-field/sc-suggestion-field.component.html","../../../projects/client-ui/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.ts","../../../projects/client-ui/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.html","../../../projects/client-ui/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.ts","../../../projects/client-ui/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.html","../../../projects/client-ui/contacts/new-contact-form/sc-new-contact-form.component.ts","../../../projects/client-ui/contacts/new-contact-form/sc-new-contact-form.component.html","../../../projects/client-ui/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.ts","../../../projects/client-ui/contragents/new-contragent-form/sc-new-contragent-form.component.ts","../../../projects/client-ui/contragents/new-contragent-form/sc-new-contragent-form.component.html","../../../projects/client-ui/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.ts","../../../projects/client-ui/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.html","../../../projects/client-ui/contacts/contacts-accordion/sc-contacts-accordion.component.ts","../../../projects/client-ui/contacts/contacts-accordion/sc-contacts-accordion.component.html","../../../projects/client-ui/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.ts","../../../projects/client-ui/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.html","../../../projects/client-ui/contragents/contragents-accordion/sc-contragents-accordion.component.ts","../../../projects/client-ui/contragents/contragents-accordion/sc-contragents-accordion.component.html","../../../projects/client-ui/form-fields/addresses-selection-field/sc-addresses-selection-field.component.ts","../../../projects/client-ui/form-fields/addresses-selection-field/sc-addresses-selection-field.component.html","../../../projects/client-ui/form-fields/form-fields.module.ts","../../../projects/client-ui/contacts/add-contact-dialog/sc-add-contact-dialog.component.ts","../../../projects/client-ui/contacts/add-contact-dialog/sc-add-contact-dialog.component.html","../../../projects/client-ui/contacts/sc-contacts.module.ts","../../../projects/client-ui/directives/carousel-item-hidden/sc-carousel-item-hidden.module.ts","../../../projects/client-ui/contragents/sc-contragents.module.ts","../../../projects/client-ui/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.ts","../../../projects/client-ui/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.html","../../../projects/client-ui/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.ts","../../../projects/client-ui/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.html","../../../projects/client-ui/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.ts","../../../projects/client-ui/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.html","../../../projects/client-ui/delivery-address/sc-delivery-address.module.ts","../../../projects/client-ui/files/services/tree-icon.service.ts","../../../projects/client-ui/files/services/tree-loader.service.ts","../../../projects/client-ui/files/directives/tree.directive.ts","../../../projects/client-ui/files/file-tree-item/file-tree-item.component.ts","../../../projects/client-ui/files/file-tree-item/file-tree-item.component.html","../../../projects/client-ui/files/directives/tree-top.directive.ts","../../../projects/client-ui/files/files-and-documents/files-and-documents.component.ts","../../../projects/client-ui/files/files-and-documents/files-and-documents.component.html","../../../projects/client-ui/files/files-and-documents.module.ts","../../../projects/client-ui/icons/sc-client-ui-icons-name.ts","../../../projects/client-ui/share-button/sc-share-button.component.ts","../../../projects/client-ui/share-button/sc-share-button.component.html","../../../projects/client-ui/news/news-card/sc-news-card.component.ts","../../../projects/client-ui/news/news-card/sc-news-card.component.html","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.ts","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.html","../../../projects/client-ui/share-button/sc-share-button.module.ts","../../../projects/client-ui/news/sc-news.module.ts","../../../projects/client-ui/order/order-item-mobile/order-item-mobile.component.ts","../../../projects/client-ui/order/order-item-mobile/order-item-mobile.component.html","../../../projects/client-ui/order/sc-payment-status/sc-payment-status.component.ts","../../../projects/client-ui/order/sc-payment-status/sc-payment-status.component.html","../../../projects/client-ui/order/sc-order.module.ts","../../../projects/client-ui/providers/scUserProviders.ts","../../../projects/client-ui/user/reset-user-password/sc-reset-user-password.component.ts","../../../projects/client-ui/user/reset-user-password/sc-reset-user-password.component.html","../../../projects/client-ui/user/update-user-info-dialog/sc-update-user-info-dialog.component.ts","../../../projects/client-ui/user/update-user-info-dialog/sc-update-user-info-dialog.component.html","../../../projects/client-ui/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.ts","../../../projects/client-ui/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.html","../../../projects/client-ui/user/sc-user.module.ts","../../../projects/client-ui/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.ts","../../../projects/client-ui/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.html","../../../projects/client-ui/profile/sc-profile.module.ts","../../../projects/client-ui/public-api.ts","../../../projects/client-ui/snabcentr-client-ui.ts"],"sourcesContent":["/**\n * Перечисление типов аутентификации.\n */\nexport enum AuthMethod {\n /**\n * Аутентификация по номеру телефона и коду подтверждения.\n */\n byPhone = 'by_phone',\n\n /**\n * Аутентификация по логину и паролю.\n */\n byEmail = 'by_email',\n}\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода номера счета.\n */\nexport const scAccountNumberMask = {\n mask: /^\\d{0,20}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода БИК.\n */\nexport const scBicMask = {\n mask: /^\\d{0,9}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода номера корреспондентского счета.\n */\nexport const scCorrespondentAccount = {\n mask: /^\\d{0,20}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода ИНН индивидуального предпринимателя.\n */\nexport const scEntrepreneurInnMask = {\n mask: /^\\d{0,12}$/\n} as MaskitoOptions;\n\n/**\n * Маска поля ввода ИНН юридического лица.\n */\nexport const scLegalInnMask = {\n mask: /^\\d{0,10}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода КПП.\n */\nexport const scKppMask = {\n mask: /^\\d{0,9}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода ОКПО индивидуального предпринимателя.\n */\nexport const scEntrepreneurOkpoMask = {\n mask: /^\\d{0,10}$/\n} as MaskitoOptions;\n\n/**\n * Маска поля ввода ОКПО юридического лица.\n */\nexport const scLegalOkpoMask = {\n mask: /^\\d{0,8}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода кода подтверждения телефона.\n */\nexport const scPhoneVerificationCodeMask: MaskitoOptions = {\n mask: /^\\d{0,6}$/\n} as MaskitoOptions;\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormControl, FormGroupDirective } from '@angular/forms';\nimport { MaskitoOptions } from '@maskito/core';\nimport { ScVerificationService } from '@snabcentr/client-core';\nimport { ApiErrorResponse } from '../../auth/interfaces/ApiErrorResponse';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share, tap, finalize, timer, scan, takeWhile, endWith, distinctUntilChanged } from 'rxjs';\nimport { tuiControlValue } from '@taiga-ui/cdk';\nimport { scPhoneVerificationCodeMask } from '../../masks';\n\n/**\n * Компонент формы проверки телефона и получения кода подтверждения.\n */\n@Component({\n selector: 'sc-verification-phone-check-form',\n templateUrl: './sc-verification-phone-check-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScVerificationPhoneCheckFormComponent implements OnInit {\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n private _showCodeFields: boolean = true;\n\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n @Input()\n public set showCodeFields(showCodeFields: boolean) {\n this._showCodeFields = showCodeFields;\n this.form.controls.verificationCode[showCodeFields ? 'enable' : 'disable']();\n }\n\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n public get showCodeFields(): boolean {\n return this._showCodeFields;\n }\n\n /**\n * Признак, что поле ввода телефона только для чтения.\n */\n @Input()\n public readOnly: boolean = false;\n\n /**\n * Признак, следует ли телефону быть в системе. От этого признака зависит в каких случаях выдавать ошибку при проверки занятости телефона.\n */\n @Input()\n public shouldBeBusy: boolean = true;\n\n /**\n * Признак, следует ли проверять подтверждён ли телефона в системе. При `true` будет вызывать ошибку при наличие телефона в системе без подтверждения.\n */\n @Input()\n public shouldBeConfirmed?: boolean = undefined;\n\n /**\n * Наличие кода подтверждения у пользователя.\n */\n @Input()\n public haveCode: boolean = false;\n\n /**\n * Событие для обратной привязки наличия кода подтверждения\n */\n @Output()\n public haveCodeChange = new EventEmitter<boolean>();\n\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public get form(): FormGroup<{\n phone: FormControl<string | null>;\n verificationCode: FormControl<string | null>;\n }> {\n return this.formGroupDirective?.form as FormGroup<{\n phone: FormControl<string | null>;\n verificationCode: FormControl<string | null>;\n }>;\n }\n\n /**\n * Поле ввода 'Номер телефона'.\n */\n public get phoneControl(): FormControl<string | null> {\n return this.form?.controls.phone;\n }\n\n /**\n * {@link Observable} запроса проверки номера телефона.\n */\n public phoneCheck$?: Observable<boolean | null>;\n\n /**\n * {@link Subject} события отправки кода подтверждения.\n */\n public readonly onSendCode: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных получения кода подтверждения.\n */\n public readonly loadingApproveCode$: Observable<boolean> = this.onSendCode.pipe(\n filter(() => this.phoneControl.valid),\n map(() => this.phoneControl.value as string),\n switchMap((value) =>\n this.verificationService.sendPhoneApproveCode(value).pipe(\n tap(() => this.reloadTimer$.next(60)),\n map(() => false),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n const regex = /(\\d{2}):\\d{2}/;\n const match = errorResponse.message.match(regex);\n\n if (match && match.length > 1) {\n const timeParts = match[0].split(':');\n const seconds = parseInt(timeParts[1], 10);\n\n this.reloadTimer$.next(seconds);\n } else {\n this.phoneControl.setErrors({ serverResponse: errorResponse?.errors?.['phone'] ?? [errorResponse.message] });\n }\n\n return of(false);\n }),\n finalize(() => this.setHaveCode(true)),\n startWith(true)\n )\n ),\n startWith(false),\n share()\n );\n\n /**\n * Маска поля ввода кода для подтверждения.\n */\n public readonly verificationCodeMask: MaskitoOptions = scPhoneVerificationCodeMask;\n\n /**\n * {@link Subject} события запуска/остановки таймера.\n */\n public readonly reloadTimer$: Subject<number> = new Subject<number>();\n\n /**\n * {@link Observable} Таймера.\n *\n * TODO: Вынести таймер в отдельную директиву TASK:[#9260].\n */\n public readonly timer$: Observable<string | null> = this.reloadTimer$.pipe(\n switchMap((sec) =>\n timer(0, 1000).pipe(\n scan((total) => --total, sec),\n takeWhile((total) => total >= 0),\n map((total) => {\n const minutes = Math.floor(total / 60);\n const seconds = total % 60;\n\n return `${Math.round(minutes).toString().padStart(2, '0')}:${Math.round(seconds).toString().padStart(2, '0')}`;\n }),\n endWith(null),\n startWith(null),\n distinctUntilChanged()\n )\n )\n );\n\n /**\n * Инициализирует экземпляр класса {@link ScVerificationPhoneCheckFormComponent}.\n *\n * @param verificationService Сервис верификации.\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n */\n public constructor(\n private readonly verificationService: ScVerificationService,\n @Inject(FormGroupDirective)\n private readonly formGroupDirective?: FormGroupDirective\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.phoneCheck$ = tuiControlValue<string | null>(this.phoneControl).pipe(\n tap(() => this.reloadTimer$.next(0)),\n switchMap((value) => {\n if (this.phoneControl.valid && !!value) {\n return this.verificationService.getPhoneCheck$(value).pipe(\n map((result) => {\n if (this.shouldBeBusy !== result.isBusy) {\n this.phoneControl.setErrors({\n serverResponse: [\n result.isBusy ? 'Пользователь с таким номером телефона уже существует' : 'Пользователя с таким номером телефона не существует'\n ]\n });\n this.phoneControl.markAsTouched();\n\n return false;\n }\n\n if (this.shouldBeConfirmed !== undefined && this.shouldBeConfirmed !== result.isConfirmed) {\n this.phoneControl.setErrors({\n serverResponse: [\n result.isConfirmed\n ? 'Телефон уже подтверждён'\n : 'Номер телефона не подтверждён или вход по нему невозможен. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.'\n ]\n });\n this.phoneControl.markAsTouched();\n\n return false;\n }\n\n return true;\n }),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n this.phoneControl.setErrors({ serverResponse: errorResponse?.errors?.['phone'] ?? [errorResponse.message] });\n return of(false);\n }),\n startWith(null)\n );\n }\n\n this.setHaveCode(false);\n\n return of(false);\n }),\n share()\n );\n\n this.setHaveCode(false);\n }\n\n /**\n * Устанавливает состояние наличия кода подтверждения у пользователя.\n *\n * @param haveCode Признак того есть ли код подтверждения или нет.\n */\n public setHaveCode(haveCode: boolean): void {\n this.haveCode = haveCode;\n this.haveCodeChange.emit(haveCode);\n }\n}\n","<form [formGroup]=\"form\" *tuiLet=\"(loadingApproveCode$ | async) as loadingApproveCode\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"Номер телефона\">\n <tui-input-phone formControlName=\"phone\" [readOnly]=\"readOnly\" [tuiTextfieldCustomContent]=\"checkingPhone\">\n Номер телефона\n <input tuiTextfield autocomplete=\"phone\" />\n </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <ng-container *ngIf=\"showCodeFields && form.enabled\">\n <label *ngIf=\"loadingApproveCode === false && haveCode\" tuiLabel=\"Код из СМС\">\n <tui-input formControlName=\"verificationCode\">\n Код из СМС\n <input tuiTextfield [maskito]=\"verificationCodeMask\" autocomplete=\"new-password\" />\n </tui-input>\n <tui-error formControlName=\"verificationCode\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <div *tuiLet=\"!!loadingApproveCode as loadingApproveCode\" class=\"flex gap-4 justify-center\">\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [showLoader]=\"loadingApproveCode\"\n icon=\"scIconLogIn\"\n >\n Получить код\n </button>\n <button *ngIf=\"!loadingApproveCode && !haveCode\" tuiLink [pseudo]=\"true\" [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\" (click)=\"setHaveCode(true)\">\n У меня есть код\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader *ngIf=\"haveCode\" [showLoader]=\"loadingApproveCode\">\n <button tuiLink [pseudo]=\"true\" [disabled]=\"loadingApproveCode || timer\" (click)=\"onSendCode.next()\">\n Повторно отправить код\n <ng-container *ngIf=\"timer\" class=\"!text-tui-base-08\">(через {{ timer }})</ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\" class=\"w-4 h-4\"> </tui-loader>\n</ng-template>\n","/* eslint-disable @typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IAuthToken, IPhoneLogin, ScAuthService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../interfaces/ApiErrorResponse';\n\n/**\n * Компонент аутентификации по номеру телефона и коду подтверждения.\n */\n@Component({\n selector: 'sc-sign-in-form-by-phone',\n templateUrl: './sc-sign-in-form-by-phone.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormByPhoneComponent implements OnInit {\n /**\n * Наличие кода подтверждения у пользователя.\n */\n public haveCode: boolean = false;\n\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public readonly form = new FormGroup({\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly request$: Observable<IAuthToken | null> = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is IPhoneLogin => this.form.valid),\n switchMap((value) =>\n this.authService.getSignIn$(value).pipe(\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[key] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({} as IAuthToken);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormByPhoneComponent}.\n *\n * @param authService Сервис аутентификации.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly authService: ScAuthService,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.signInShow,\n params: {\n type: 'phone',\n },\n });\n }\n}\n","<form [formGroup]=\"form\" *tuiLet=\"!!(loading$ | async) as loading\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4 items-center mb-4\">\n <sc-verification-phone-check-form [(haveCode)]=\"haveCode\" [shouldBeBusy]=\"true\" [shouldBeConfirmed]=\"true\" class=\"w-full\"></sc-verification-phone-check-form>\n <button *ngIf=\"haveCode\" tuiButton type=\"submit\" [showLoader]=\"loading\" [disabled]=\"form.invalid || loading\" icon=\"scIconLogIn\">Войти</button>\n</form>\n","/* eslint-disable @typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IAuthToken, ILogin, ScAuthService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../interfaces/ApiErrorResponse';\n\n/**\n * Компонент аутентификации по адресу электронной почты и паролю.\n */\n@Component({\n selector: 'sc-sign-in-form-by-email',\n templateUrl: './sc-sign-in-form-by-email.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormByEmailComponent implements OnInit {\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public readonly formByEmail: FormGroup = new FormGroup({\n login: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n password: new FormControl<string | null>(null, Validators.required),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly emailRequest$: Observable<IAuthToken | null> = this.onSubmit.pipe(\n filter(() => this.formByEmail.valid),\n map(() => this.formByEmail.value as ILogin),\n switchMap((value) =>\n this.authService.getSignIn$(value).pipe(\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.formByEmail.get(key)?.setErrors({ serverResponse: errorResponse.errors[key] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.formByEmail.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({} as IAuthToken);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loadingEmailAuth$: Observable<boolean> = this.emailRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * Сигнал нажатия на кнопку \"Забыли пароль\".\n */\n @Output()\n public readonly forgotPassword: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormByEmailComponent}.\n *\n * @param authService Сервис аутентификации.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly authService: ScAuthService,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.signInShow,\n params: {\n type: 'email',\n },\n });\n }\n}\n","<form [formGroup]=\"formByEmail\" (ngSubmit)=\"onSubmit.next()\">\n <div class=\"flex flex-col gap-4 mb-8\">\n <label tuiLabel=\"Адрес электронной почты\">\n <tui-input formControlName=\"login\">\n Адрес электронной почты\n <input tuiTextfield autocomplete=\"email\" />\n </tui-input>\n <tui-error formControlName=\"login\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Пароль\">\n <tui-input-password formControlName=\"password\">\n Пароль\n <input tuiTextfield autocomplete=\"current-password\" />\n </tui-input-password>\n <tui-error formControlName=\"password\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"flex flex-col gap-4 items-center mb-4\">\n <a tuiLink [pseudo]=\"true\" (click)=\"forgotPassword.emit()\" class=\"text-base\">Забыли пароль?</a>\n <button tuiButton type=\"submit\" [showLoader]=\"!!(loadingEmailAuth$ | async)\" [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\" icon=\"scIconLogIn\">\n Войти\n </button>\n </div>\n</form>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ScAuthService } from '@snabcentr/client-core';\nimport { filter, Observable } from 'rxjs';\n\nimport { AuthMethod } from '../enums/auth-method';\n\n/**\n * Компонент аутентификации пользователя.\n */\n@Component({\n selector: 'sc-sign-in-form',\n templateUrl: './sc-sign-in-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormComponent {\n /**\n * Выбранный способ аутентификации.\n */\n @Input()\n public authMethod: AuthMethod = AuthMethod.byEmail;\n\n /**\n * Перечисление способов аутентификации.\n */\n public method: typeof AuthMethod = AuthMethod;\n\n /**\n * Сигнал нажатия на кнопку \"Забыли пароль\".\n */\n @Output()\n public readonly forgotPassword: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал нажатия на кнопку \"Зарегистрироваться\".\n */\n @Output()\n public readonly signUp: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал события аутентификации.\n */\n @Output()\n public readonly successAuth: Observable<boolean> = this.authService.getAuthChange().pipe(filter((state) => state));\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormComponent}.\n *\n * @param authService Сервис аутентификации.\n */\n public constructor(private readonly authService: ScAuthService) {}\n\n /**\n * Осуществляет переключение способов аутентификации.\n *\n * @param authMethod Выбранный способ аутентификации.\n */\n public switchAuth(authMethod: AuthMethod): void {\n this.authMethod = authMethod;\n }\n\n /**\n * Обрабатывает нажатие на кнопку \"Забыли пароль\" и выдает сигнал об этом.\n */\n public onForgotPassword(): void {\n this.forgotPassword.emit();\n }\n}\n","<div class=\"flex justify-center mb-4\">\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_phone' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n По телефону\n </button>\n\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_email' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n По e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email *ngIf=\"authMethod === 'by_email'\" (forgotPassword)=\"onForgotPassword()\"></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col gap-4 items-center\">\n <span class=\"font-medium text-tui-text-02\">Еще не зарегистрированы?</span>\n <button tuiButton tuiMode=\"onLight\" (click)=\"signUp.emit()\" type=\"button\" icon=\"scIconAddProfile\" appearance=\"secondary\">Зарегистрироваться</button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ScVerificationPhoneCheckFormComponent } from './verification-phone-check-form/sc-verification-phone-check-form.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoModule } from '@maskito/angular';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule } from '@taiga-ui/core';\nimport { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule } from '@taiga-ui/kit';\n\n/**\n * Модуль отправки кодов подтверждения (номера телефона, адреса эл. почты и т.д.).\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLinkModule,\n TuiButtonModule,\n TuiLabelModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiLetModule,\n TuiLoaderModule,\n TuiInputPhoneModule,\n MaskitoModule\n ],\n exports: [ScVerificationPhoneCheckFormComponent],\n declarations: [ScVerificationPhoneCheckFormComponent]\n})\nexport class ScVerificationModule {}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoModule } from '@maskito/angular';\nimport { NgModule } from '@angular/core';\nimport { ScSignInFormComponent } from '.';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule } from '@taiga-ui/core';\nimport { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule } from '@taiga-ui/kit';\nimport { ScSignInFormByPhoneComponent } from './sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component';\nimport { ScSignInFormByEmailComponent } from './sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component';\nimport { ScVerificationModule } from '../verification';\n\n/**\n * Модуль аутентификации.\n */\n@NgModule({\n declarations: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLinkModule,\n TuiButtonModule,\n TuiLabelModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiLetModule,\n TuiLoaderModule,\n TuiInputPhoneModule,\n MaskitoModule,\n ScVerificationModule\n ],\n exports: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent]\n})\nexport class ScAuthModule {}\n","import { Directive } from '@angular/core';\nimport { PolymorpheusTemplate } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Директива содержимого компонента, позволяющего отображать и скрывать содержимое в разделах.\n */\n@Directive({\n selector: 'ng-template[scAccordionContent]'\n})\nexport class ScAccordionContentDirective extends PolymorpheusTemplate<Record<string, unknown>> {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\nimport { TuiSizeS } from '@taiga-ui/core';\nimport { TuiAccordionItemComponent } from '@taiga-ui/kit';\n\n/**\n * Компонент, позволяющий отображать и скрывать содержимое в разделах.\n */\n@Component({\n selector: 'sc-accordion',\n templateUrl: './sc-accordion.component.html',\n styleUrls: ['./sc-accordion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScAccordionComponent {\n /**\n * Состояние отображения кнопки добавления.\n */\n @Input()\n @HostBinding('class._has-add-button')\n public showAddButton = true;\n\n /**\n * Состояние отображения кнопки удаления.\n */\n @Input()\n @HostBinding('class._has-delete-button')\n public showDeleteButton: boolean = false;\n\n /**\n * Состояние отображения стрелки.\n */\n @Input()\n @HostBinding('class._has-arrow')\n public showArrow: boolean = true;\n\n /**\n * Состояние открытия содержимого компонента.\n */\n @Input()\n public open: boolean = false;\n\n /**\n * Размер элементов {@link TuiAccordionItemComponent}.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 's';\n\n /**\n * Дочерний элемент контента.\n */\n @ContentChild(ScAccordionContentDirective)\n protected readonly content?: ScAccordionContentDirective;\n\n /**\n * Ссылка на шаблон превью-просмотра в разметке.\n */\n @ViewChild(TuiAccordionItemComponent)\n public readonly accordion?: TuiAccordionItemComponent;\n\n /**\n * Событие нажатия на кнопку добавления.\n */\n @Output()\n public addButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления.\n */\n @Output()\n public deleteButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Закрывает акордион.\n */\n public close(): void {\n this.accordion?.close();\n }\n}\n","<tui-accordion [rounded]=\"false\">\n <tui-accordion-item #accordion [size]=\"size\" [borders]=\"null\" [showArrow]=\"showArrow\" [open]=\"open\">\n <div class=\"flex grow justify-between\">\n <div class=\"font-bold self-center\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showAddButton || showDeleteButton\" class=\"flex\">\n <ng-container *ngIf=\"showDeleteButton\">\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconTrash2Large\" appearance=\"flat\" (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"></button>\n </ng-container>\n <ng-container *ngIf=\"showAddButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconPlusLarge\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n ></button>\n </ng-container>\n </div>\n </div>\n <ng-template tuiAccordionItemContent>\n <tui-elastic-container *ngIf=\"content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </tui-elastic-container>\n </ng-template>\n </tui-accordion-item>\n</tui-accordion>\n","import { NgModule } from '@angular/core';\nimport { TuiButtonModule, TuiModeModule } from '@taiga-ui/core';\nimport { TuiAccordionModule, TuiElasticContainerModule } from '@taiga-ui/kit';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\nimport { ScAccordionComponent } from './sc-accordion.component';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScAccordionComponent, ScAccordionContentDirective],\n imports: [CommonModule, PolymorpheusModule, TuiButtonModule, TuiAccordionModule, TuiModeModule, TuiElasticContainerModule],\n exports: [ScAccordionComponent, ScAccordionContentDirective]\n})\nexport class ScAccordionModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Класс-помощник для конвертации пикселей.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ScPxConverter {\n private rootFontSize = 16;\n\n /**\n * Конвертирует пиксели в rem.\n *\n * @param px Значение которое необходимо конвертировать.\n */\n public pxToRem(px: number): number {\n return px / this.rootFontSize;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { IntersectionObserverService } from '@ng-web-apis/intersection-observer';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ScBanner, ScBannerService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { tuiFadeIn } from '@taiga-ui/core';\nimport { filter, interval, map, Observable, shareReplay, Subject, switchMap, takeUntil, tap } from 'rxjs';\n\nimport { ScPxConverter } from '../helpers';\n\n/**\n * Баннер с прокруткой переданных {@link TemplateRef} элементов, и баннеров локации.\n */\n@Component({\n selector: 'sc-banner',\n templateUrl: './sc-banner.component.html',\n styleUrls: ['./sc-banner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [IntersectionObserverService],\n animations: [tuiFadeIn],\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScBannerComponent implements AfterViewInit {\n /**\n * Признак, что необходимо показывать кнопки навигации.\n */\n @Input()\n public navigateButton: boolean = true;\n\n /**\n * Интервал показа слайдов в миллисекундах.\n */\n @Input()\n public playerInterval: number = 5000;\n\n /**\n * Признак, что прокрутка выключена.\n */\n @Input()\n public disabled: boolean = false;\n\n /**\n * Местоположение баннера.\n */\n @Input()\n public bannerLocation?: string;\n\n /**\n * Признак, что компонент должен растягиваться.\n */\n @Input()\n public resizable: boolean = true;\n\n /**\n * Событие загрузки баннеров с количеством полученных баннеров.\n */\n @Output()\n public loadBannersEvent: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на изображение баннера.\n */\n @Output()\n public clickBannerEvent: EventEmitter<ScBanner> = new EventEmitter<ScBanner>();\n\n /**\n * Список ссылок на элемент представлений шаблонов.\n */\n @ContentChildren('banner')\n public bannersListRef: QueryList<TemplateRef<any>>;\n\n /**\n * Ссылка на {@link HTMLVideoElement} элемента отображения видео.\n */\n @ViewChild('videoPlayer')\n private videoRef: ElementRef<HTMLVideoElement>;\n\n /**\n * Идентификатор текущего баннера.\n */\n public currentBannerId: number = 0;\n\n /**\n * {@link Subject} изменения состояния таймера.\n */\n public readonly toggleTimer$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * Признак, что необходимо показывать кнопки старта видео баннера.\n */\n public showPlayBtn: boolean = false;\n\n /**\n * {@link Observable} обновления списка баннеров.\n */\n public readonly banners$: Observable<ScBanner[]> = this.bannerService.banners$.pipe(\n map((banners) => banners.filter((banner) => banner.location === this.bannerLocation).reverse()),\n tap((banners) => {\n if (banners.length > 0) {\n if (this.resizable) {\n this.width = '100%';\n } else {\n this.height = `${this.pxConverter.pxToRem(banners[0].height)}rem`;\n this.width = `${this.pxConverter.pxToRem(banners[0].width)}rem`;\n }\n\n this.aspectRatio = `${banners[0].width} / ${banners[0].height}`;\n this.banners = banners;\n this.toggleTimer$.next(true);\n }\n\n this.loadBannersEvent.emit(banners.length);\n }),\n shareReplay(1)\n );\n\n /**\n * Список баннеров.\n */\n public banners?: ScBanner[] = [];\n\n /**\n * Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.\n */\n @HostBinding('class.!hidden')\n private get isHidden(): boolean {\n return !this.banners || this.bannersListRef.length + this.banners.length === 0;\n }\n\n /**\n * Свойство, от которого зависит высота `:host` компонента.\n */\n @HostBinding('style.height')\n public height: string = 'auto';\n\n /**\n * Свойство, от которого зависит ширина `:host` компонента.\n */\n @HostBinding('style.width')\n public width: string = '';\n\n /**\n * Свойство, от которого зависит соотношение `:host` компонента.\n */\n @HostBinding('style.aspect-ratio')\n public aspectRatio: string = '';\n\n /**\n * Обработчик события mouseenter.\n */\n @HostListener('mouseenter')\n private mouseEnterHandler: () => void = () => {\n this.toggleTimer$.next(false);\n };\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler: () => void = () => {\n this.toggleTimer$.next(true);\n };\n\n /**\n * Инициализирует экземпляр класса {@link ScBannerComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n * @param bannerService Сервис для работы с баннерами.\n * @param entries$\n * @param element Элемент баннера.\n * @param pxConverter Экземпляр класса-помощника для конвертации пикселей.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly bannerService: ScBannerService,\n @Inject(IntersectionObserverService) private readonly entries$: IntersectionObserverService,\n @Inject(ElementRef) private readonly element: ElementRef<Element>,\n private pxConverter: ScPxConverter,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {}\n\n /** @inheritDoc */\n public ngAfterViewInit(): void {\n this.toggleTimer$\n .pipe(\n filter((toggle) => toggle),\n switchMap(() => interval(this.playerInterval).pipe(takeUntil(this.toggleTimer$))),\n filter(() => !this.disabled && (this.banners?.[this.currentBannerId]?.mediaType === 'image' || this.showPlayBtn)),\n untilDestroyed(this)\n )\n .subscribe(() => {\n this.onNextBanner();\n });\n\n // Отслеживание пересечения компонента с экраном пользователя.\n // Если баннера не находится в поле видимости пользователя, то он перестаёт переключаться, а видео останавливается.\n this.entries$.pipe(map((entries) => entries.find((item) => item.target === this.element.nativeElement))).subscribe((entry) => {\n this.toggleTimer$.next(!!entry?.isIntersecting);\n });\n }\n\n /**\n * Переключает на предыдущий баннер.\n */\n public onPreviousBanner(): void {\n const previous: number = this.currentBannerId - 1;\n this.currentBannerId = previous < 0 ? this.bannersListRef.length + (this.banners?.length ?? 0) - 1 : previous;\n\n this.cdr.markForCheck();\n }\n\n /**\n * Переключает на следующий баннер.\n */\n public onNextBanner(): void {\n const next: number = this.currentBannerId + 1;\n this.currentBannerId = next === this.bannersListRef.length + (this.banners?.length ?? 0) ? 0 : next;\n\n this.cdr.markForCheck();\n }\n\n /**\n * Переключает на следующий баннер.\n */\n public onEndedVideo(): void {\n this.onNextBanner();\n this.toggleTimer$.next(true);\n this.showPlayBtn = true;\n }\n\n /**\n * Обработчик нажатия на баннер, генерирующий событие {@link clickBannerImgEvent}.\n *\n * @param banner Баннер, по ссылке которого совершён переход.\n */\n public onClick(banner: ScBanner): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.bannerClick,\n params: { banner_id: banner.id },\n });\n\n if (banner.url) {\n this.clickBannerEvent.emit(banner);\n }\n }\n}\n","<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel class=\"bg-white w-full h-full shadow-sc-2 rounded-xl overflow-hidden\" [(index)]=\"currentBannerId\">\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n target=\"_blank\"\n [title]=\"banner.title\"\n class=\"relative\"\n >\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'video'\">\n <video\n #videoPlayer\n (suspend)=\"showPlayBtn = true\"\n (play)=\"showPlayBtn = false\"\n [src]=\"banner.mediaFile\"\n (ended)=\"onEndedVideo()\"\n (mouseover)=\"videoPlayer.pause()\"\n (mouseout)=\"videoPlayer.play()\"\n class=\"object-cover h-full\"\n muted\n autoplay\n ></video>\n <button\n *ngIf=\"showPlayBtn\"\n tuiIconButton\n [@tuiFadeIn]=\"200\"\n matRipple\n (click)=\"$event.preventDefault(); videoPlayer.play()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute left-8 bottom-4\"\n >\n <i class=\"icon-refresh text-black\"></i>\n </button>\n </ng-container>\n\n <img *ngSwitchCase=\"'image'\" [src]=\"banner.mediaFile\" alt=\"Баннер\" class=\"object-cover h-full\" />\n </ng-container>\n </a>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div *tuiItem [style.height]=\"height\" [style.width]=\"width\" [style.aspect-ratio]=\"aspectRatio\" class=\"overflow-hidden\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n</ng-container>\n<div *ngIf=\"navigateButton && !disabled && this.banners && (this.bannersListRef.length + this.banners.length) > 1\" tuiMode=\"onLight\" class=\"flex items-center\">\n <button tuiIconButton icon=\"tuiIconChevronLeftLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onPreviousBanner()\" class=\"!absolute left-2\"></button>\n <button tuiIconButton icon=\"tuiIconChevronRightLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onNextBanner()\" class=\"!absolute right-2\"></button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { IntersectionObserverModule } from '@ng-web-apis/intersection-observer';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiButtonModule, TuiLoaderModule, TuiModeModule } from '@taiga-ui/core';\nimport { TuiCarouselModule } from '@taiga-ui/kit';\n\nimport { ScBannerComponent } from './sc-banner.component';\n\n/**\n * Модуль баннеров.\n */\n@NgModule({\n declarations: [ScBannerComponent],\n imports: [CommonModule, RouterModule, TuiButtonModule, TuiCarouselModule, TuiModeModule, TuiLoaderModule, IntersectionObserverModule, TuiLetModule],\n exports: [ScBannerComponent],\n})\nexport class ScBannerModule {}\n","import { tuiCreateToken } from '@taiga-ui/cdk';\n\n/**\n * Единицы измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES: string[] = ['пог.м.', 'м.', 'м2'];\n\n/**\n * Токен единиц измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES_TOKEN = tuiCreateToken(SC_LINEAR_VALUES);\n","import { Inject, Injectable } from '@angular/core';\nimport { ScProduct } from '@snabcentr/client-core';\nimport { SC_LINEAR_VALUES_TOKEN } from '../tokens';\n\n/**\n * Класс хэлпер для работы со значениями единиц измерения товара.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class UnitsHelper {\n /**\n * Инициирует экземпляр класса {@link UnitsHelper}.\n *\n * @param linearValues Единицы измерения линейной величины.\n */\n public constructor(@Inject(SC_LINEAR_VALUES_TOKEN) public readonly linearValues: string[]) {}\n\n /**\n * Возвращает признак возможности продажи товара на метраж.\n *\n * @param linearValues Товар для которого нужно проверить возможность продажи на метраж.\n */\n public productIsMeasurable(product: ScProduct): boolean {\n return this.linearValues.includes(product.unit);\n }\n\n /**\n * Возвращает кратность количества для товара.\n *\n * @param linearValues Товар для которого нужно вернуть кратность количества.\n */\n public productMultiplicity(product: ScProduct): number {\n return product && product.minCount && !this.linearValues.includes(product.unit) ? product.minCount : 1;\n }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет БИК.\n */\nexport const scBicValidator: ValidatorFn = ({ value }: AbstractControl<string | null>): ValidationErrors | null => {\n return !value || /^0[1,4]\\d{7}$/.test(value) ? null : { bic: true };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет корреспондентский счет.\n */\nexport const scCorrespondentAccountValidator: ValidatorFn = ({ value }: AbstractControl<string | null>): ValidationErrors | null => {\n return !value || /^[3,4]01\\d{17}$|^03\\d{18}$/.test(value) ? null : { correspondentAccount: true };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет повторный ввод пароля на эквивалентность паролю.\n *\n * @param passwordKey Ключ поля ввода пароля.\n * @param passwordKey Ключ поля повторного ввода пароля.\n */\nexport function scPasswordConfirmMatchingValidator(passwordKey: string, passwordConfirmKey: string): ValidatorFn | null {\n return (control: AbstractControl): ValidationErrors | null => {\n const passwordInput: AbstractControl<string | null> | null = control.get(passwordKey);\n const passwordConfirmInput: AbstractControl<string | null> | null = control.get(passwordConfirmKey);\n\n if (!passwordInput || !passwordConfirmInput || passwordInput.invalid || passwordConfirmInput.invalid || !passwordInput.value || !passwordConfirmInput.value) {\n return null;\n }\n\n return passwordInput?.value !== passwordConfirmInput?.value ? { passwordNotEquivalent: true } : null;\n };\n}\n","import { AbstractControl, ValidatorFn, ValidationErrors } from '@angular/forms';\n\n/**\n * Проверяет кратность значения.\n *\n * @param step Шаг кратности.\n * @param precision Точность, количество чисел после запятой.\n */\nexport function stepValidator(step: number, precision: number = 3): ValidatorFn {\n return ({ value }: AbstractControl<number | null>): ValidationErrors | null => {\n if (!step) {\n return null;\n }\n\n if (value) {\n return Number((value / step).toFixed(precision)) % 1 !== 0 ? { error: `Число не кратно ${step}` } : null;\n }\n\n return null;\n };\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { FormControl, NgControl } from '@angular/forms';\nimport { stepValidator } from '../../validators';\nimport { TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent } from '@taiga-ui/kit';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { TuiLoaderComponent, TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\nimport { AbstractTuiNullableControl, AbstractTuiValueTransformer } from '@taiga-ui/cdk';\n\n/**\n * Компонент поля ввода количества.\n */\n@Component({\n selector: 'sc-input-quantity',\n templateUrl: './sc-input-quantity.component.html',\n styleUrls: ['./sc-input-quantity.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScInputQuantityComponent extends AbstractTuiNullableControl<number> implements OnInit {\n /**\n * Компонент поля ввода.\n */\n @ViewChild(TuiInputNumberComponent)\n private readonly numberInput: TuiInputNumberComponent;\n\n /**\n * Шаг увеличения количества. Отвечает за проверку кратности ввода.\n */\n @Input()\n public step: number = 1;\n\n /**\n * Признак, что необходимо отобразить {@link TuiLoaderComponent} над компонентом.\n */\n @Input()\n public showLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить кнопку очистки поля ввода.\n */\n @Input()\n public showCross: boolean = true;\n\n /**\n * Формат внешнего вида компонента.\n */\n @Input()\n @HostBinding('attr.data-appearance')\n public appearance: 'primary' | 'secondary' = 'primary';\n\n /**\n * Признак, что компонент деактивирован.\n */\n @Input()\n @HostBinding('attr.data-disabled')\n public isDisabled: boolean = false;\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие нажатия на кнопку \"Очистить\".\n */\n @Output()\n public clickClearEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Возвращает элемент, который может быть сфокусирован.\n */\n public get nativeFocusableElement(): HTMLInputElement | null {\n return this.numberInput.nativeFocusableElement;\n }\n\n /**\n * Инициализирует экземпляр класса {@link ScInputQuantityComponent}.\n *\n * @param ngControl Объект поля ввода для настройки валидации.\n * @param cdr Объект для работы с обнаружением изменений.\n * @param transformer Преобразователь значений элемента формы.\n */\n public constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n ngControl: NgControl | null,\n @Inject(ChangeDetectorRef)\n cdr: ChangeDetectorRef,\n @Optional()\n @Inject(TUI_NUMBER_VALUE_TRANSFORMER)\n transformer: AbstractTuiValueTransformer<number | null>\n ) {\n super(ngControl, cdr, transformer);\n }\n\n public get focused(): boolean {\n return !!this.numberInput?.focused;\n }\n\n public get formControl(): FormControl<any> | null {\n return this.control as FormControl<any> | null;\n }\n\n /** @inheritDoc */\n public override ngOnInit(): void {\n if (this.control) {\n this.control.setValidators(stepValidator(this.step));\n }\n }\n\n /**\n * Обработчик события нажатия стрелок клавиатуры.\n *\n * @param step Шаг изменения количества.\n */\n @HostListener('keydown.arrowDown', ['-step'])\n @HostListener('keydown.arrowUp', ['step'])\n public onArrow(step: number | null): void {\n if (!step) {\n return;\n }\n\n if (step > 0) {\n this.incident();\n } else {\n this.decrement();\n }\n }\n\n /**\n * Увеличивает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то увеличит до ближайшего кратного значения.\n */\n public incident(): void {\n this.numberInput.onArrow(this.step - ((this.numberInput.value || 0) % this.step));\n this.numberInput.nativeFocusableElement?.blur();\n }\n\n /**\n * Уменьшает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то уменьшит до ближайшего кратного значения.\n */\n public decrement(): void {\n this.numberInput.onArrow(-((this.numberInput.value || 0) % this.step) || -this.step);\n this.numberInput.nativeFocusableElement?.blur();\n }\n\n /**\n * Очищает поля ввода.\n */\n public clear(): void {\n this.control?.patchValue(null);\n this.clickClearEvent.emit();\n }\n}\n","<tui-loader *ngIf=\"formControl\" class=\"w-full\" [overlay]=\"true\" [showLoader]=\"showLoader\" [size]=\"size\">\n <div class=\"flex items-center text-center gap-1\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput.canDecrement\"\n [focusable]=\"false\"\n [size]=\"size\"\n (click.prevent)=\"decrement()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconMinusLarge\"></tui-svg>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async )?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n (focusin)=\"$any($event.target).select()\"\n oncontextmenu=\"return false;\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"incident()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconPlusLarge\"></tui-svg>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"clear()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconCloseLarge\"></tui-svg>\n </button>\n </div>\n</tui-loader>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { ScIWarehouseStockCount, ScProduct, ScIWarehouse, ScWarehouseService } from '@snabcentr/client-core';\nimport { Observable, map, switchMap } from 'rxjs';\n\n/**\n * Компонент информации о наличии товара на складе.\n */\n@Component({\n selector: 'sc-price-warehouse-stock',\n templateUrl: './sc-price-warehouse-stock.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['sc-price-warehouse-stock.component.scss']\n})\nexport class ScPriceWarehouseStockComponent implements OnInit {\n /**\n * Строка классов для свойств статусов.\n */\n @Input() public classList: string;\n\n /**\n * Информация о товаре/услуге.\n */\n @Input() public product: ScProduct;\n\n /**\n * Признак, что необходимо отобразить подсказку по складам.\n */\n @Input() public withStockHint: boolean = true;\n\n /**\n * Признак, что необходимо отобразить список остатков по складам при выбранном основном складе.\n */\n @Input() public fromMain: boolean = true;\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public selectedWarehouse$: Observable<ScIWarehouse | null>;\n\n /**\n * {@link Observable} изменения списка складов.\n */\n public warehousesList$?: Observable<{ sc: ScIWarehouseStockCount; w: ScIWarehouse | undefined }[] | undefined>;\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceWarehouseStockComponent}.\n *\n * @param warehouseService Сервис для работы со складами.\n */\n public constructor(private readonly warehouseService: ScWarehouseService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.selectedWarehouse$ = this.fromMain ? this.warehouseService.getCatalogWarehouseChange$() : this.warehouseService.getWarehouseSelectChange$();\n\n this.warehousesList$ = this.selectedWarehouse$.pipe(\n switchMap((warehouse) =>\n this.warehouseService.getWarehouses$().pipe(\n map((warehouses: ScIWarehouse[]) => this.product.stockCount?.map((sc) => ({ w: warehouses.find((w) => w.id === sc.warehouseId), sc: sc }))),\n map((items) => items?.sort((item) => (item.w?.id === warehouse?.id ? -1 : 1)))\n )\n )\n );\n }\n}\n","<ng-container *ngIf=\"product\">\n <ng-container>\n <div *ngIf=\"selectedWarehouse$ | async as warehouseSelect\" class=\"flex items-center gap-1\">\n <span *ngIf=\"product.getNotStockMessage(warehouseSelect) as message\" class=\"text-xs min-w-2/5 text-tui-error-fill\" [ngClass]=\"classList\"> {{ message }} </span>\n <span *ngIf=\"product.isWarehouseStockExist(warehouseSelect.id)\" class=\"text-xs min-w-2/5 text-tui-success-fill\" [ngClass]=\"classList\">\n В наличии<ng-container *ngIf=\"product.getWarehouseStockCount(warehouseSelect.id) as count\"\n >:\n <span class=\"whitespace-nowrap\">{{ count }} {{ product.quantityUnit }}</span>\n </ng-container>\n </span>\n <span *ngIf=\"product.onOrder\" class=\"text-xs min-w-2/5 text-sc-yellow\" [ngClass]=\"classList\">Под заказ</span>\n\n <tui-svg\n *ngIf=\"withStockHint && (warehousesList$ | async)?.length\"\n src=\"tuiIconInfoLarge\"\n [tuiHint]=\"stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!text-xs !h-3\"\n ></tui-svg>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template #stockHint>\n <table *ngIf=\"selectedWarehouse$ | async as warehouseSelect\" class=\"text-xs table-auto\" [ngClass]=\"classList\">\n <tbody>\n <tr *ngFor=\"let item of warehousesList$ | async\" class=\"border-b\">\n <ng-container>\n <td class=\"px-1\">{{ item.w?.name }}:</td>\n <td class=\"px-1\">{{ item.sc.count ? item.sc.count + ' ' + product.quantityUnit : 'В наличии' }}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct } from '@snabcentr/client-core';\nimport { Observable, skip } from 'rxjs';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки элемента корзины.\n */\n@Component({\n selector: 'sc-cart-item-mobile',\n templateUrl: './sc-cart-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScCartItemMobileComponent implements OnInit {\n /**\n * Элемент корзины.\n */\n private _cartItem?: ScCartItem;\n\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(0, { updateOn: 'blur' });\n\n /**\n * Элемент корзины.\n */\n @Input()\n public set cartItem(data: ScCartItem | undefined) {\n this._cartItem = data;\n\n if (data) {\n this.quantityControl.patchValue(data.quantity);\n }\n }\n\n /**\n * Элемент корзины.\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges.pipe(skip(1));\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickDeleteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickSettingsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Продукт элемента корзины.\n */\n public get product(): ScProduct | undefined {\n return this.cartItem?.product;\n }\n\n /**\n * Инициирует экземпляр класса {@link ScCartItemMobileComponent}.\n *\n * @param unitsHelper Экземпляр класса-помощника для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.quantityValueChanges = this.quantityControl.valueChanges;\n }\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef || '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImagePreview(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<ng-container *ngIf=\"cartItem && product; else skeleton\">\n <!-- TODO: Необходима реализация функционала.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button> -->\n <div class=\"flex bg-white border border-tui-base-04 shadow-sc-2 rounded-xl min-w-[18rem] gap-2 p-2\">\n <div class=\"flex w-40 items-center\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n </div>\n <div class=\"flex flex-col sm:flex-row sm:gap-5 items-center gap-2 justify-between w-full\">\n <div class=\"flex flex-col self-start max-w-full gap-1\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n\n <div class=\"flex flex-wrap gap-y-1 gap-x-2 w-full text-xs text-tui-base-05\">\n <p *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n <p>Артикул: {{ product.code }}</p>\n </div>\n\n <div class=\"flex flex-wrap items-center gap-y-1 gap-x-2 w-full\">\n <p *ngIf=\"!product.priceInRub\" class=\"font-bold\">{{ product.costString }}</p>\n <p class=\"font-bold text-xs text-tui-base-05\">{{ product.costRubString }}</p>\n <span *ngIf=\"product.discount\" class=\"flex items-center\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"!text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n </div>\n\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n <div *ngIf=\"cartItem.height || cartItem.length || cartItem.width\" class=\"flex gap-1 items-center\">\n <button\n tuiIconButton\n icon=\"tuiIconSettings\"\n (click)=\"clickSettingsEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-wrap gap-x-2 font-thin text-xs text-tui-base-04\">\n <p *ngIf=\"cartItem.marker\">Маркировка: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">Ширина: {{ cartItem.width }} м.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>Высота: {{ cartItem.height }} м.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">Длина: {{ cartItem.length }} м.</p>\n </ng-template>\n </div>\n </div>\n\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex flex-col self-start gap-1 sm:mr-9 sm:self-center\">\n <div class=\"flex gap-2\">\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-28\"\n ></sc-input-quantity>\n <button tuiIconButton icon=\"tuiIconTrash2\" shape=\"rounded\" size=\"xs\" (click)=\"clickDeleteEvent.emit()\"></button>\n </div>\n <p class=\"font-bold text-tui-text-01 text-sm\">Итого: {{ cartItem.costRub | tuiFormatNumber }} {{ 'RUB' | tuiCurrency }}</p>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl\"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Output, inject } from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { SC_URLS, ScCategory, ScFavoriteService, ScIUrls } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE, tuiPure } from '@taiga-ui/cdk';\nimport { filter, tap } from 'rxjs';\n\n/**\n * Компонент списка категорий.\n */\n@Component({\n selector: 'sc-categories-list',\n templateUrl: './sc-categories-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScCategoriesListComponent<T extends object> implements OnInit {\n /**\n * Список категорий.\n */\n @Input()\n public categories: T[] | undefined | null;\n\n /**\n * Признак того, отображается этот компонент на мобильном устройстве или нет.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Событие нажатия на категорию.\n */\n @Output()\n public clickCategoryEvent: EventEmitter<T> = new EventEmitter<T>();\n\n /**\n * Инициализирует экземпляр класса {@link ScCategoriesListComponent}.\n *\n * @param urls объект информации о базовом списке ссылок приложения.\n * @param favoriteService Сервис для работы с корзиной.\n * @param cdr Объект для работы с обнаружением изменений.\n */\n public constructor(\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n private readonly favoriteService: ScFavoriteService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.favoriteService.categories$\n .pipe(\n filter(() => !!this.categories && Boolean(this.categories.length) && 'id' in this.categories[0]),\n tap((categories) => {\n (this.categories as ScCategory[])?.forEach(category => {\n category.isFavorite = categories.findIndex(item => category.id === item.id) !== -1;\n });\n }),\n untilDestroyed(this)\n )\n .subscribe(() => this.cdr.markForCheck());\n }\n\n /**\n * Возвращает путь до изображения на сервере.\n *\n * @param imgPath путь, где хранится изображение.\n */\n public getCategoryImage(imgPath: string): string {\n return this.urls.imgServerUrl + '/' + imgPath;\n }\n\n /**\n * Проверяет наличие хотя бы одного изображения.\n *\n * @param categories Список категорий.\n */\n @tuiPure\n public checkImagesExists(categories: any[]): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return categories.some((item) => item.properties?.image);\n }\n}\n","<div class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\">\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-primary duration-150\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img *ngIf=\"item.properties?.image as image\" [src]=\"getCategoryImage(image)\" [alt]=\"item.name\" class=\"w-8 h-8 object-cover rounded bg-tui-base-03\" />\n <tui-svg *ngIf=\"!item.properties?.image && checkImagesExists(categories)\" src=\"tuiIconCameraOffLarge\" class=\"bg-tui-base-03 !w-8 !h-8 rounded text-tui-base-05\"></tui-svg>\n <div *tuiLet=\"\" class=\"flex grow truncate\">\n <p class=\"text-base font-bold truncate\">{{ item.name }}</p>\n <tui-svg *ngIf=\"item.isFavorite\" src=\"scIconFavoriteFill\" class=\"text-tui-primary !text-sm mr-auto\"></tui-svg>\n </div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150\"></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-base-05 duration-150\"\n >\n <div class=\"w-8 h-8 tui-skeleton\"></div>\n <div class=\"h-4 grow tui-skeleton\"></div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150 tui-skeleton\"></tui-svg>\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Компонент кнопки избранных товаров и категорий.\n */\n@Component({\n selector: 'sc-favorite-btn',\n templateUrl: './sc-favorite-btn.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScFavoriteBtnComponent {\n /**\n * Событие нажатия на кнопку.\n */\n @Output()\n public clickEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Признак наличия товара или категории в избранных.\n */\n @Input()\n public isFavorite: boolean = false;\n\n /**\n * Признак, что необходимо отобразить загрузку на кнопке.\n */\n @Input()\n public showLoader: boolean = false;\n\n /**\n * Признак, что кнопка деактивирована.\n */\n @Input()\n public disabled: boolean = false;\n}\n","<button tuiIconButton (click)=\"clickEvent.emit()\" [disabled]=\"disabled\" [showLoader]=\"showLoader\" appearance=\"flat\" size=\"s\">\n <tui-svg class=\"text-tui-primary\" [src]=\"isFavorite ? 'scIconFavoriteFill' : 'scIconFavorite'\"></tui-svg>\n</button>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n Renderer2,\n ViewChild\n} from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScAuthService, ScCategory, ScIUrls } from '@snabcentr/client-core';\nimport { TuiSizeS } from '@taiga-ui/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Карточка категории.\n */\n@Component({\n selector: 'sc-category-card',\n templateUrl: './sc-category-card.component.html',\n styleUrls: ['./sc-category-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScCategoryCardComponent {\n /**\n * Информация о категории.\n */\n @Input()\n public category?: ScCategory;\n\n /**\n * Ссылка на {@link HTMLElement} блока названия.\n */\n @ViewChild('name')\n private name: ElementRef<HTMLElement>;\n\n /**\n * Размер карточки категории.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n /**\n * Признак, что карточка является скелетоном.\n */\n @Input()\n public isSkeleton: boolean = false;\n\n /**\n * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.\n */\n public favoriteShowLoader: boolean = false;\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = this.authService.getAuthChange();\n\n /**\n * Признак что категория имеет поведение наведения и скрытия названия.\n */\n @Input()\n public isHovered: boolean = false;\n\n /**\n * Событие нажатия на карточку категории.\n */\n @Output()\n public clickOnCardEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Событие нажатия на кнопку избранной категории.\n */\n @Output()\n public clickOnFavoriteEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Инициализирует экземпляр класса {@link CategoryCardComponent}.\n *\n * @param urls Список ссылок на разделы backend'a.\n * @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n private renderer: Renderer2,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string,\n private readonly authService: ScAuthService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n /**\n * Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию (\"product_not_found\").\n *\n * @param category Информация о категории.\n */\n public getCategoryImgURL(category: ScCategory): string {\n return category.properties?.image ? this.urls.imgServerUrl + '/' + category.properties?.image : this.pathImageNotFound;\n }\n\n /**\n * Обработчик события mousemove.\n */\n @HostListener('mousemove')\n private moveEnterHandler(): void {\n if (this.isHovered) {\n this.name.nativeElement.style.maxHeight = `${this.name.nativeElement.scrollHeight / 16}rem`;\n }\n }\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler(): void {\n if (this.isHovered) {\n this.renderer.setStyle(this.name.nativeElement, 'maxHeight', null);\n }\n }\n\n /**\n * Устанавливает компонент в очередь на обновление.\n */\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n","/* eslint-disable no-underscore-dangle */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Inject, inject, Input, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport {\n SC_PATH_IMAGE_NOT_FOUND,\n SC_URLS,\n ScAuthService,\n ScCartItem,\n ScImageHelper,\n ScIUrls,\n ScIWarehouse,\n ScProduct,\n ScWarehouseService,\n SEARCH_TERM,\n SEARCH_TERM_PROVIDERS,\n} from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\nimport { TuiSizeS, TuiSizeXS } from '@taiga-ui/core';\nimport { Observable } from 'rxjs';\n\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки товара.\n */\n@Component({\n selector: 'sc-price-card',\n templateUrl: './sc-price-card.component.html',\n styleUrls: ['./sc-price-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SEARCH_TERM_PROVIDERS],\n})\nexport class ScPriceCardComponent {\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * Позиция товара в корзине\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public set cartItem(value: ScCartItem | undefined) {\n this._cartItem = value;\n\n this.quantityControl.patchValue(this._cartItem?.quantity ?? null, { emitEvent: false });\n this.quantityShowLoader = false;\n }\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Признак, что необходимо отобразить лоадер для поля ввода количества товара.\n */\n public quantityShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.\n */\n public favoriteShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить поле ввода количества товара.\n */\n @Input()\n public showQuantityControl: boolean = false;\n\n /**\n * Объект товара.\n *\n * TODO: Сделать товар наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public product?: ScProduct;\n\n /**\n * Событие нажатия на кнопку \"В избранное\".\n */\n @Output()\n public clickFavoriteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"В корзину\".\n */\n @Output()\n public clickAddToCartEvent: EventEmitter<ScProduct> = new EventEmitter<ScProduct>();\n\n /**\n * Событие нажатия на кнопку очистки количества товара.\n */\n @Output()\n public clickClearEvent: EventEmitter<ScCartItem> = new EventEmitter<ScCartItem>();\n\n /**\n * Событие нажатия на карточку товара.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public warehouseSelect$: Observable<ScIWarehouse | null> = this.warehouseService.getWarehouseSelectChange$();\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(null, { updateOn: 'blur' });\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges;\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = this.authService.getAuthChange();\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS | TuiSizeXS = 'm';\n\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n private _cartItem?: ScCartItem | undefined;\n\n /**\n * Инициирует экземпляр класса {@link ScPriceCardComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param authService Сервис аутентификации пользователей.\n * @param warehouseService Сервис для работы со складами.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n * @param search$ Провайдер поиска терма.\n * @param cdr Объект для работы с обнаружением изменений.\n * @param imageHelper Хелпер для работы с изображениями товара.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n private readonly authService: ScAuthService,\n private readonly warehouseService: ScWarehouseService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string,\n @Inject(SEARCH_TERM) public readonly search$: Observable<string>,\n private readonly cdr: ChangeDetectorRef,\n private readonly imageHelper: ScImageHelper\n ) {}\n\n /**\n * Конвертация размера для компонента sc-input-quantity.\n * TODO: Решить проблему с функционалом size для разных платформ.\n */\n public get getQuantitySize(): TuiSizeS {\n return this.size === 'xs' ? 's' : this.size;\n }\n\n /**\n * Признак, что нужно показать скелетон.\n */\n public get skeletonVisible(): boolean {\n return !this.product;\n }\n\n /**\n * Возвращает ссылку на preview-изображение карточки товара.\n */\n public getCardImagePreview(): string {\n return this.product ? this.imageHelper.getImagePreview(this.product) : this.pathImageNotFound;\n }\n\n /**\n * Устанавливает компонент в очередь на обновление.\n */\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","<!-- TODO: реализовать данный компонент и для десктопа и для мобильного приложения. Исправить все глобальные тайговские стили, привести их в порядок согласно с дизайном. -->\n<div\n *ngIf=\"product; else skeleton\"\n class=\"relative grid h-[19rem] w-auto min-w-40 rounded-xl p-2 text-xs shadow-md\"\n>\n <div class=\"overflow-hidden\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImagePreview()\"\n [alt]=\"product.name\"\n class=\"max-h-full w-full rounded-xl object-cover\"\n />\n </div>\n <sc-favorite-btn\n *ngIf=\"authStatus$ | async\"\n class=\"absolute left-0 top-0\"\n (clickEvent)=\"clickFavoriteEvent.emit()\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"product.isFavorite\"\n [disabled]=\"!!product.primaryCategory?.isFavorite\"\n ></sc-favorite-btn>\n <tui-svg\n *ngIf=\"product.isPreviouslyOrdered\"\n src=\"scIconStar\"\n class=\"absolute right-0 top-0 text-red-700\"\n ></tui-svg>\n\n <a\n class=\"m-0 p-0\"\n tuiLink\n iconAlign=\"left\"\n (click)=\"clickCardEvent.emit()\"\n >\n <p\n class=\"line-clamp-3 text-sm font-bold\"\n style=\"word-break: break-word\"\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n >\n {{ product.name }}\n </p>\n </a>\n <p\n *ngIf=\"product?.pack\"\n class=\"text-tui-text-02\"\n >\n Норма упаковки: {{ product.pack }}\n </p>\n\n <p\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n class=\"text-tui-text-02\"\n >\n Артикул: {{ product.code }}\n </p>\n <p\n *ngIf=\"(authStatus$ | async) && product?.costDate\"\n class=\"text-tui-text-02\"\n >\n Дата: {{ product.costDate }}\n </p>\n <div\n *ngIf=\"warehouseSelect$ | async as warehouseSelect\"\n class=\"flex flex-col\"\n >\n <span\n *ngIf=\"product.discount && !isMobile\"\n class=\"flex items-center text-tui-text-02\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <tui-svg\n src=\"tuiIconInfoLarge\"\n [tuiHint]=\"discountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!h-4 !text-xs text-black\"\n ></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span\n [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\"\n class=\"cost font-bold\"\n >{{ product.costRubString }}</span\n >\n <span\n *ngIf=\"!product.priceInRub\"\n class=\"hidden text-xs font-bold text-tui-text-02 group-hover:block\"\n >{{ product.costString }}</span\n >\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n <div\n *ngIf=\"!showQuantityControl\"\n class=\"mt-1 flex max-w-full items-center justify-stretch gap-2\"\n >\n <button\n tuiButton\n (click)=\"clickAddToCartEvent.emit(product)\"\n [showLoader]=\"quantityShowLoader\"\n [size]=\"size\"\n class=\"grow\"\n >\n <tui-svg\n src=\"scIconCart\"\n class=\"!h-4 !text-xs\"\n >\n </tui-svg>\n В корзину\n </button>\n <div\n *ngIf=\"cartItem\"\n class=\"flex justify-center\"\n >\n <tui-svg\n src=\"tuiIconCheck\"\n class=\"!h-5 !w-5 rounded-md bg-tui-primary text-black\"\n ></tui-svg>\n </div>\n </div>\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [size]=\"getQuantitySize\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n class=\"mt-2 w-full\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n ></sc-input-quantity>\n</div>\n\n<ng-template #skeleton>\n <div class=\"card-wrapper flex flex-col overflow-hidden rounded-xl bg-white shadow-sc-1\">\n <!-- Изображение товара -->\n <div class=\"h-3/5 w-full rounded-t bg-tui-base-02\"></div>\n <!-- Краткая информация о товаре -->\n <div class=\"flex grow flex-col gap-2.5 rounded-b bg-white p-5\">\n <div class=\"h-4 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded bg-tui-base-02\"></div>\n <div class=\"h-4 w-full rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","/* eslint-disable class-methods-use-this,lodash/prefer-lodash-method */\nimport { ChangeDetectionStrategy, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { ScCatalogService, ScProduct } from '@snabcentr/client-core';\nimport { TuiDay, TuiDayRange, TuiMonth, tuiPure, TuiStringHandler } from '@taiga-ui/cdk';\nimport { TUI_MONTHS, TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { filter, map, Observable, shareReplay } from 'rxjs';\n\n/**\n * График истории цен товара или услуги.\n */\n@Component({\n selector: 'sc-price-history',\n templateUrl: './sc-price-history.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceHistoryComponent implements OnInit {\n /**\n * {@link Observable} временного промежутка истории цен.\n */\n public range$: Observable<TuiDayRange>;\n\n /**\n * Товар или услуга, для которого необходимо отобразить историю цен.\n */\n @Input() public product: ScProduct;\n\n /**\n * {@link Observable} истории цен.\n */\n public history$?: Observable<ReadonlyArray<[TuiDay, number]>>;\n\n /**\n * Максимальная цена товара.\n */\n public priceInfo$?: Observable<{\n min: number;\n max: number;\n }>;\n\n /**\n * {@link Observable} функция для преобразования значения number в строку в подсказке по оси X.\n */\n public readonly xStringify$: Observable<TuiStringHandler<TuiDay>> = this.months$.pipe(\n map(\n (months) =>\n ({ month, day }) =>\n // eslint-disable-next-line security/detect-object-injection\n `${months[month]}, ${day}`\n )\n );\n\n /**\n * Функция для преобразования значения number в строку в подсказке по оси Y.\n *\n * @param value Значение оси Y.\n */\n public readonly yStringify: TuiStringHandler<number> = (value) => `${value.toLocaleString('ru-RU')} ₽`;\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceHistoryComponent}.\n *\n * @param catalogService Сервис для работы с каталогом.\n * @param months$ Перечисление месяцев.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly catalogService: ScCatalogService,\n @Inject(TUI_MONTHS) private readonly months$: Observable<readonly string[]>,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n private readonly context?: TuiDialogContext<void, { product: ScProduct }>\n ) {\n if (context) {\n this.product = context.data.product;\n }\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.history$ = this.catalogService.getPriceHistory$(this.product).pipe(\n map((history) =>\n Object.keys(history)\n .map((item): [TuiDay, number] => [TuiDay.normalizeParse(item, 'DMY'), history[String(item)].cost])\n .sort((a, b) => (a[0] > b[0] ? 1 : -1))\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n filter((history) => history.length > 1)\n );\n\n this.priceInfo$ = this.history$.pipe(\n map((history) => history.map((item) => item[1])),\n map((values) => ({\n min: Math.min(...values),\n max: Math.max(...values),\n }))\n );\n\n this.range$ = this.history$.pipe(\n map((value: ReadonlyArray<[TuiDay, number]>) => ({ from: value.at(0)?.[0], to: value.at(-1)?.[0] })),\n filter((range): range is { from: TuiDay; to: TuiDay } => !!range.from && !!range.to),\n map((range) => {\n return new TuiDayRange(range.from, range.to);\n })\n );\n }\n\n /**\n * Вычисляет подписи даты к оси X.\n *\n * @param param0 {@link TuiDayRange} Временной промежуток истории цен.\n * @param param0.from {@link TuiDay} Дата начала истории цен.\n * @param param0.to {@link TuiDay} Дата конца истории цен.\n */\n @tuiPure\n public computeLabels$({ from, to }: TuiDayRange): Observable<readonly string[]> {\n return this.months$.pipe(map((months) => Array.from({ length: TuiMonth.lengthBetween(from, to) + 1 }, (_, index) => months[from.append({ month: index }).month])));\n }\n\n /**\n * Вычисляет данные для отображения на графике.\n *\n * @param param0 {@link TuiDayRange} Временной промежуток истории цен.\n * @param param0.from {@link TuiDay} Дата начала истории цен.\n * @param param0.to {@link TuiDay} Дата конца истории цен.\n * @param history История цен.\n */\n @tuiPure\n public computeValue({ from, to }: TuiDayRange, history: ReadonlyArray<[TuiDay, number]>): ReadonlyArray<[TuiDay, number]> {\n return (\n Array.from({ length: TuiDay.lengthBetween(from, to) + 1 })\n .fill(0)\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce<ReadonlyArray<[TuiDay, number]>>((array, _, index) => {\n const data = from.append({ day: index });\n return [\n ...array,\n [\n data,\n (history.find((valueHistory, indexHistory, arrayHistory) => data.daySame(valueHistory[0]) || data.dayBefore(arrayHistory[indexHistory + 1][0])) ??\n history[0])[1],\n ],\n ];\n }, [])\n );\n }\n}\n","<div class=\"flex flex-col items-center\">\n <ng-container *ngIf=\"priceInfo$ | async as priceInfo; else isNotExist\">\n <div class=\"w-174 mb-1 text-end text-lg font-bold\">от {{ priceInfo.min.toLocaleString() }} ₽ до {{ priceInfo.max.toLocaleString() }} ₽</div>\n\n <ng-container *ngIf=\"history$ | async as history\">\n <div\n *ngIf=\"range$ | async as range\"\n class=\"relative h-56 w-full p-5 text-tui-primary\"\n >\n <tui-axes\n *ngIf=\"computeLabels$(range) | async as labels\"\n class=\"h-full\"\n [axisXLabels]=\"labels\"\n [horizontalLines]=\"4\"\n [verticalLines]=\"labels.length\"\n >\n <tui-line-days-chart\n class=\"chart\"\n [height]=\"priceInfo.max\"\n [smoothingFactor]=\"10\"\n [y]=\"priceInfo.min - (priceInfo.min * 1) / 4\"\n [value]=\"computeValue(range, history)\"\n [xStringify]=\"xStringify$ | async\"\n [yStringify]=\"yStringify\"\n [hintContent]=\"hint\"\n ></tui-line-days-chart>\n </tui-axes>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #isNotExist>\n <p class=\"text-base font-bold\">Цена на товар не изменялась</p>\n </ng-template>\n <ng-template\n #hint\n let-data\n >\n <div class=\"font-bold\">{{ data[1].toLocaleString() }} ₽</div>\n <div>{{ data[0] }}</div>\n </ng-template>\n</div>\n","import { EventEmitter, InjectionToken, Provider } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { ScAuthService, ScCartService, ScCatalogService, ScICategoryProductPaginationParams, ScIPaginate, ScProduct } from '@snabcentr/client-core';\nimport { TuiDestroyService, tuiCreateToken, tuiIsPresent } from '@taiga-ui/cdk';\nimport { Observable, Subject, debounceTime, filter, map, merge, scan, share, startWith, switchMap, takeUntil } from 'rxjs';\n\n/**\n * Значения пагинации списка товаров категории по умолчанию.\n */\nexport const SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS: ScICategoryProductPaginationParams = {\n perPage: 20,\n page: 0\n};\n\n/**\n * Токен значений пагинации списка товаров в категории по умолчанию.\n */\nexport const SC_PRODUCT_PAGINATION_OPTIONS: InjectionToken<ScICategoryProductPaginationParams> = tuiCreateToken(SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS);\n\n/**\n * {@link Subject} параметров пагинации списка товаров в категории.\n */\nexport const paginationParams$: Subject<ScICategoryProductPaginationParams> = new Subject<ScICategoryProductPaginationParams>();\n\n/**\n * Токен {@link Subject} параметров пагинации списка товаров в категории для получения их из вне.\n */\nexport const SC_PRODUCT_PAGINATION_PARAMS: InjectionToken<Subject<ScICategoryProductPaginationParams>> = tuiCreateToken(paginationParams$);\n\n/**\n * Фабрика создания потока данных о товарах категории с пагинацией, включая данные о количестве этих товаров в корзине.\n *\n * @param paramMap Данные о параметрах запроса.\n * @param catalogService Сервис для работы с каталогом.\n * @param cartService Сервис для работы с корзиной.\n * @param authService Сервис для работы с аутентификации пользователей.\n * @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.\n */\nfunction productsPaginationChangeFactory(\n { paramMap }: ActivatedRoute,\n catalogService: ScCatalogService,\n cartService: ScCartService,\n authService: ScAuthService,\n destroy$: Observable<void>\n): Observable<ScIPaginate<ScProduct> | null> {\n return paramMap.pipe(\n map((params) => params.get('categoryId')),\n filter(tuiIsPresent),\n switchMap((categoryId) =>\n paginationParams$.pipe(\n debounceTime(20),\n switchMap((paginationParams) => authService.getAuthChange().pipe(switchMap(() => catalogService.getCategoryProducts$(Number(categoryId), paginationParams)))),\n filter(tuiIsPresent),\n scan((acc: ScIPaginate<ScProduct> | null, value: ScIPaginate<ScProduct> | null) => {\n if (acc && value && value.meta.currentPage > 1) value.data.unshift(...acc.data);\n\n return value;\n }, null),\n switchMap((productsPaginate) =>\n cartService.getCartChange$().pipe(\n map((cart) => {\n productsPaginate?.data.forEach((product) => (product.cartItem = cart.items.find((cartItem) => cartItem.product.id === product.id)));\n\n return productsPaginate;\n })\n )\n ),\n startWith(null)\n )\n ),\n share(),\n takeUntil(destroy$)\n );\n}\n\n/**\n * Токен потока данных о товарах категории, включая данные о количестве этих товаров в корзине.\n */\nexport const SC_PRODUCT_PAGINATION_CHANGE_INFO = new InjectionToken<Observable<ScIPaginate<ScProduct> | null>>('SC_PRODUCT_PAGINATION_CHANGE_INFO');\n\n/**\n * {@link EventEmitter} событие нажатия на кнопку \"Показать следующие позиции категории\".\n */\nexport const nextPageClickEvent: EventEmitter<void> = new EventEmitter<void>();\n\n/**\n * Токен {@link EventEmitter} событие нажатия на кнопку \"Показать следующие позиции категории\".\n */\nexport const SC_NEXT_PAGE_PAGINATION_CLICK: InjectionToken<EventEmitter<void>> = tuiCreateToken(nextPageClickEvent);\n\n/**\n * Фабрика создания потока данных о состоянии загрузки запроса списка товаров с пагинацией пагинации.\n */\nfunction loadingPaginationFactory(productsData$: Observable<ScIPaginate<ScProduct> | null>, destroy$: Observable<void>) {\n return merge(paginationParams$.pipe(map(() => true)), productsData$.pipe(map((data) => data === null))).pipe(share(), takeUntil(destroy$));\n}\n\n/**\n * Токен потока данных о состоянии загрузки товаров пагинации.\n */\nexport const SC_LOADING_PAGINATION_CHANGE_INFO: InjectionToken<Observable<boolean>> = new InjectionToken<Observable<number>>('SC_LOADING_PAGINATION_CHANGE_INFO');\n\n/**\n * Фабрика создания потока данных прокрутки страницы с сигналами о необходимости пагинации товара.\n */\nfunction nextPagePaginationChangeFactory(\n { events }: Router,\n nextPagePaginationClick: EventEmitter<void>,\n productsData$: Observable<ScIPaginate<ScProduct> | null>,\n destroy$: Observable<void>\n): Observable<number> {\n return nextPagePaginationClick\n .pipe(\n scan((acc) => ++acc, 1),\n startWith(1)\n )\n .pipe(\n takeUntil(\n merge(\n events.pipe(filter((e) => e instanceof NavigationEnd)),\n productsData$.pipe(filter((paginate) => paginate !== null && paginate.meta.currentPage >= paginate.meta.lastPage)),\n destroy$\n )\n )\n );\n}\n\n/**\n * Токен потока данных прокрутки страницы с сигналами о необходимости пагинации товара.\n */\nexport const SC_NEXT_PAGE_PAGINATION_CHANGE_INFO: InjectionToken<Observable<number>> = new InjectionToken<Observable<number>>('SC_NEXT_PAGE_PAGINATION_CHANGE_INFO');\n\n/**\n * Провайдеры потока данных о товарах категории, включая данные о количестве этих товаров в корзине.\n */\nexport const SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS: Provider[] = [\n TuiDestroyService,\n {\n provide: SC_PRODUCT_PAGINATION_CHANGE_INFO,\n deps: [ActivatedRoute, ScCatalogService, ScCartService, ScAuthService, TuiDestroyService],\n useFactory: productsPaginationChangeFactory\n },\n {\n provide: SC_NEXT_PAGE_PAGINATION_CHANGE_INFO,\n deps: [Router, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],\n useFactory: nextPagePaginationChangeFactory\n },\n {\n provide: SC_LOADING_PAGINATION_CHANGE_INFO,\n deps: [SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],\n useFactory: loadingPaginationFactory\n }\n];\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input } from '@angular/core';\nimport { SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_OPTIONS } from '../../providers/productsPagination';\nimport { ScICategoryProductPaginationParams, ScIPaginationMeta } from '@snabcentr/client-core';\n\n/**\n * Компонент элементов управления пагинацией списка товаров.\n */\n@Component({\n selector: 'sc-price-list-pagination',\n templateUrl: './sc-price-list-pagination.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS]\n})\nexport class ScPriceListPaginationComponent {\n /**\n * Данные пагинации.\n */\n @Input()\n public meta?: ScIPaginationMeta;\n\n /**\n * Состояние загрузки пагинации.\n */\n @Input()\n public loadingPagination: boolean;\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceListPaginationComponent}.\n *\n * @param nextPageClickEvent Событие нажатия на кнопку \"Показать следующие N позиций\".\n * @param options Значения пагинации списка товаров категории по умолчанию.\n */\n public constructor(\n @Inject(SC_NEXT_PAGE_PAGINATION_CLICK) public readonly nextPageClickEvent: EventEmitter<void>,\n @Inject(SC_PRODUCT_PAGINATION_OPTIONS) public readonly options: ScICategoryProductPaginationParams\n ) {}\n}\n","<button *ngIf=\"meta?.currentPage !== meta?.lastPage\" tuiButton (click)=\"nextPageClickEvent.emit()\" [disabled]=\"loadingPagination\" appearance=\"secondary\" size=\"l\" class=\"w-full\">\n Показать ещё {{ options.perPage }} товаров\n</button>\n<!-- В будущем можно добавить пагинацию по номерам страницы. -->\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { TuiAxesModule, TuiLineDaysChartModule } from '@taiga-ui/addon-charts';\nimport { TuiLetModule, TuiRepeatTimesModule } from '@taiga-ui/cdk';\nimport { TuiButtonModule, TuiHintModule, TuiLabelModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule, TuiTextfieldControllerModule } from '@taiga-ui/core';\nimport { TuiElasticContainerModule, TuiFieldErrorPipeModule, TuiHighlightModule, TuiInputNumberModule, TuiIslandModule } from '@taiga-ui/kit';\n\nimport { ScCategoriesListComponent } from './categories-list/sc-categories-list.component';\nimport { ScCategoryCardComponent } from './category-card/sc-category-card.component';\nimport { ScInputQuantityComponent } from './input-quantity/sc-input-quantity.component';\nimport { ScPriceCardComponent } from './price-card/sc-price-card.component';\nimport { ScPriceHistoryComponent } from './price-history/sc-price-history.component';\nimport { ScPriceListPaginationComponent } from './price-list-pagination/sc-price-list-pagination.component';\nimport { ScPriceWarehouseStockComponent } from './price-warehouse-stock/sc-price-warehouse-stock.component';\nimport { ScFavoriteBtnComponent as ScFavoriteButtonComponent } from './sc-favorite-btn/sc-favorite-btn.component';\n\n/**\n * Модуль каталога.\n */\n@NgModule({\n declarations: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteButtonComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent,\n ],\n exports: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteButtonComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n TuiButtonModule,\n TuiSvgModule,\n TuiIslandModule,\n TuiInputNumberModule,\n TuiLabelModule,\n TuiTextfieldControllerModule,\n FormsModule,\n ReactiveFormsModule,\n TuiHintModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiLoaderModule,\n TuiLinkModule,\n TuiElasticContainerModule,\n TuiLetModule,\n TuiRepeatTimesModule,\n TuiHighlightModule,\n TuiLineDaysChartModule,\n TuiAxesModule,\n ],\n})\nexport class ScCatalogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScCartItemMobileComponent } from './cart-item-mobile/sc-cart-item-mobile.component';\nimport { TuiButtonModule, TuiFormatNumberPipeModule, TuiHintModule, TuiLinkModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiCurrencyPipeModule } from '@taiga-ui/addon-commerce';\nimport { TuiPreviewModule } from '@taiga-ui/addon-preview';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Модуль корзины.\n */\n@NgModule({\n declarations: [ScCartItemMobileComponent],\n exports: [ScCartItemMobileComponent],\n imports: [\n CommonModule,\n TuiLinkModule,\n ScCatalogModule,\n TuiButtonModule,\n TuiCurrencyPipeModule,\n TuiFormatNumberPipeModule,\n TuiModeModule,\n TuiSvgModule,\n TuiHintModule,\n FormsModule,\n ReactiveFormsModule,\n TuiPreviewModule,\n PolymorpheusModule\n ]\n})\nexport class ScCartModule {}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject, Input, OnInit, SkipSelf } from '@angular/core';\nimport { FormGroup, NgControl } from '@angular/forms';\nimport { ScISuggestionType, ScSuggestion, ScSuggestionService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsFalsy, tuiIsPresent, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { catchError, debounceTime, filter, map, Observable, of, share, startWith, switchMap, throwError } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth';\n\n/**\n * Компонент подсказок для поля ввода.\n */\n@Component({\n selector: 'sc-suggestion-field',\n templateUrl: './sc-suggestion-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSuggestionFieldComponent implements OnInit {\n /**\n * Тип подсказок.\n */\n @Input()\n public type: ScISuggestionType = ScISuggestionType.fio;\n\n /**\n * {@link Observable} подсказок.\n */\n public suggestions$?: Observable<ScSuggestion[] | null>;\n\n /**\n * {@link Observable} состояние запроса подсказок.\n */\n public loading$?: Observable<boolean>;\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Инициализирует экземпляр класса {@link ScSuggestionFieldComponent}.\n *\n * @param control Контрол поля ввода.\n * @param suggestionService Сервис работы с API подсказок.\n */\n public constructor(\n @SkipSelf()\n @Inject(NgControl)\n public readonly control: NgControl,\n private readonly suggestionService: ScSuggestionService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n const request$ = tuiControlValue<string | null>(this.control).pipe(\n debounceTime(300),\n filter(tuiIsPresent),\n map((term) => term.trim()),\n filter((term) => term.length >= 3),\n switchMap((term: string) => this.suggestionService.getData<ScSuggestion>(term, this.type).pipe(startWith(null))),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const errorResponse = error.error as ApiErrorResponse;\n\n if (this.control.control) {\n tuiMarkControlAsTouchedAndValidate(this.control.control);\n\n this.control.control.setErrors({\n serverResponse: [errorResponse.message || 'Ошибка сервера: пожалуйста, перезагрузите страницу и/или выполните запрос позже.'],\n });\n }\n }\n\n return throwError(() => of([]));\n }),\n share()\n );\n\n this.suggestions$ = request$.pipe(filter(tuiIsPresent), startWith(null));\n this.loading$ = request$.pipe(map(tuiIsFalsy));\n }\n\n /**\n * Заполнение полей основе выбранной подсказки.\n *\n * @param suggestion Объект подсказки.\n */\n public onSelected(suggestion: ScSuggestion): void {\n switch (this.type) {\n case ScISuggestionType.fio:\n if ('fio' in suggestion) {\n this.control.control?.patchValue(suggestion.fio);\n }\n break;\n case ScISuggestionType.address:\n if ('addressString' in suggestion) {\n this.control.control?.patchValue(suggestion.addressString);\n }\n break;\n case ScISuggestionType.bank:\n if ('inn' in suggestion && 'bic' in suggestion) {\n (this.control.control?.parent as FormGroup).patchValue({\n bankName: suggestion.name,\n bic: suggestion.bic,\n correspondentAccount: suggestion.correspondentAccount,\n });\n }\n break;\n case ScISuggestionType.organization:\n if ('inn' in suggestion && !('bic' in suggestion)) {\n (this.control.control?.parent as FormGroup).patchValue({\n name: suggestion.name,\n inn: suggestion.inn,\n kpp: suggestion.kpp,\n okpo: suggestion.okpo,\n directorName: suggestion.directorName,\n directorPosition: suggestion.directorPosition,\n legalAddress: suggestion.legalAddress,\n postalAddress: suggestion.postalAddress,\n actualAddress: suggestion.actualAddress,\n });\n }\n break;\n case ScISuggestionType.email:\n if ('email' in suggestion) {\n this.control.control?.patchValue(suggestion.email);\n }\n break;\n default:\n break;\n }\n }\n}\n","<tui-loader\n size=\"m\"\n [overlay]=\"true\"\n [showLoader]=\"!!(loading$ | async)\"\n>\n <tui-data-list *tuiLet=\"suggestions$ | async as options\">\n <button\n *ngFor=\"let option of options\"\n tuiOption\n (click)=\"onSelected(option)\"\n class=\"flex-col !items-start\"\n >\n <ng-container *tuiLet=\"$any(option) as option\">\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"suggestionType.fio\">\n <span class=\"text-tui-link\">{{ option.fio }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.organization\">\n <span class=\"text-tui-link\">\n {{ option.name }}\n <span class=\"ml-2 text-tui-text-02\">инн: {{ option.inn }}</span>\n </span>\n <span class=\"text-tui-text-02\">{{ option?.legalAddress }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.bank\">\n <span class=\"text-tui-link\">{{ option.name }}</span>\n <span class=\"text-tui-text-02\">{{ option.bic }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.email\">\n <span class=\"text-tui-link\">{{ option.email }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.address\">\n <span class=\"text-tui-link\">{{ option.addressString }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </button>\n </tui-data-list>\n</tui-loader>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { ScICurrency, ScISuggestionType, ScReferencesService } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\nimport { scAccountNumberMask, scBicMask, scCorrespondentAccount } from '../../masks';\nimport { MaskitoOptions } from '@maskito/core';\n\n/**\n * Компонент формы банковских реквизитов.\n */\n@Component({\n selector: 'sc-new-contragent-bank-account-form',\n templateUrl: './sc-new-contragent-bank-account-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScNewContragentBankAccountsFormComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Маска поля ввода БИК.\n */\n public readonly bicMask: MaskitoOptions = scBicMask;\n\n /**\n * Маска поля ввода номера счета.\n */\n public readonly accountNumberMask: MaskitoOptions = scAccountNumberMask;\n\n /**\n * Маска поля ввода номера корреспондентского счета.\n */\n public readonly correspondentAccount: MaskitoOptions = scCorrespondentAccount;\n\n /**\n * {@link Observable} списка валют.\n */\n public readonly currencies$: Observable<ScICurrency[]> = this.referencesService.currencies$;\n\n /**\n * Группа с полем банковских реквизитов.\n */\n @Input()\n public form: FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }>;\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentBankAccountsFormComponent}.\n *\n * @param referencesService Сервис справочников.\n */\n public constructor(private readonly referencesService: ScReferencesService) {}\n\n /**\n * Возвращает {@link Observable} валюты по идентификатору.\n *\n * @param currencyId Идентификатор валюты.\n */\n public getCurrencyById$(currencyId: number): Observable<ScICurrency | undefined> {\n return this.referencesService.getCurrencyById$(currencyId);\n }\n}\n","<div [formGroup]=\"form\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"Наименование банка\">\n <tui-input formControlName=\"bankName\">\n Наименование банка\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bankName\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"БИК\">\n <tui-input formControlName=\"bic\">\n БИК\n <input tuiTextfield [maskito]=\"bicMask\" autocomplete=\"bic\" />\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bic\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Номер счета\">\n <tui-input formControlName=\"accountNumber\">\n Номер счета\n <input tuiTextfield [maskito]=\"accountNumberMask\" autocomplete=\"accountNumber\" />\n </tui-input>\n <tui-error formControlName=\"accountNumber\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Корреспондентский счет\">\n <tui-input formControlName=\"correspondentAccount\">\n Корреспондентский счет\n <input tuiTextfield [maskito]=\"correspondentAccount\" autocomplete=\"correspondentAccount\" />\n </tui-input>\n <tui-error formControlName=\"correspondentAccount\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Валюта расчётов\">\n <tui-select formControlName=\"currencyId\" [valueContent]=\"currencyContent\">\n Валюта расчётов\n <tui-data-list *tuiDataList>\n <button *ngFor=\"let item of currencies$ | async; let index = index\" tuiOption [value]=\"item.id\">{{ item.name }} ({{ item.symbol }})</button>\n </tui-data-list>\n </tui-select>\n <ng-template #currencyContent let-data>\n <div>{{ (getCurrencyById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error formControlName=\"currencyId\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ScContragentService, ScIBankAccountOnDataCreate, ScIBankAccount } from '@snabcentr/client-core';\nimport { Observable, Subject, catchError, filter, map, of, share, startWith, switchMap, tap } from 'rxjs';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\n\n/**\n * Компонент формы создания нового банковского счета контрагента.\n */\n@Component({\n selector: 'sc-add-contragent-bank-account-dialog',\n templateUrl: './sc-add-contragent-bank-account-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScAddContragentBankAccountsDialogComponent {\n /**\n * Группа с полем банковских реквизитов.\n */\n public form: FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }> = new FormGroup({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required)\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса создания банковского счёта контрагента.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is ScIBankAccountOnDataCreate => this.form.valid),\n switchMap((value) => {\n return this.contragentService.createContragentBankAccount$(this.context.data.contragentId, value).pipe(\n tap((bankAccount) => this.context?.completeWith(bankAccount)),\n catchError((error: HttpErrorResponse) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContragentBankAccountsFormComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly contragentService: ScContragentService,\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<ScIBankAccount, { contragentId: number }>\n ) {}\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\n <sc-new-contragent-bank-account-form [form]=\"form\"></sc-new-contragent-bank-account-form>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">Отмена</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">Сохранить</button>\n </div>\n</form>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { ScISuggestionType } from '@snabcentr/client-core';\n\n/**\n * Компонент формы контактного лица.\n */\n@Component({\n selector: 'sc-new-contact-form',\n templateUrl: './sc-new-contact-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScNewContactFormComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Группа с полями контактного лица.\n */\n @Input()\n public form: FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }>;\n}\n","<div [formGroup]=\"form\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"Ф.И.О.\">\n <tui-input formControlName=\"name\">\n Ф.И.О.\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.fio\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Телефон\">\n <tui-input-phone formControlName=\"phone\"> Телефон </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Адрес электронной почты\">\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <label tuiLabel=\"Должность контактного лица\">\n <tui-input formControlName=\"position\"> Должность контактного лица </tui-input>\n <tui-error formControlName=\"position\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","import { Directive, HostBinding, Inject, Input } from '@angular/core';\nimport { TuiCarouselComponent } from '@taiga-ui/kit';\n\n/**\n * Директива для скрытия элементов карусели тайги.\n */\n@Directive({\n selector: '[tuiItem], [scCarouselItemHidden]'\n})\nexport class ScCarouselItemHiddenDirective {\n /**\n * Индекс элемента в карусели.\n */\n @Input()\n public index: number;\n\n /**\n * Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.\n */\n @HostBinding('class.!hidden')\n private get isHidden() {\n return this.index !== this.carouselComponent.index;\n }\n\n /**\n * Инициализирует экземпляр класса {@link CarouselItemHiddenDirective}.\n *\n * @param carouselComponent Компонент карусели, взятый из DI.\n */\n public constructor(\n @Inject(TuiCarouselComponent)\n private readonly carouselComponent: TuiCarouselComponent\n ) {}\n}\n","import { Component, ChangeDetectionStrategy, OnInit, OnDestroy, SkipSelf, Inject } from '@angular/core';\nimport { FormGroup, FormControl, Validators, FormArray, FormGroupDirective } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ScOpfList, ScISuggestionType, ScReferencesService, ScLocationsService, ScISalesDirection, ScIReferencesTypes, ScICountry } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsPresent } from '@taiga-ui/cdk';\nimport { scLegalInnMask, scEntrepreneurInnMask, scLegalOkpoMask, scEntrepreneurOkpoMask, scKppMask } from '../../masks';\nimport { Observable, tap, filter, map } from 'rxjs';\n\n/**\n * Форма создания нового контрагента.\n */\n@Component({\n selector: 'sc-new-contragent-form',\n templateUrl: './sc-new-contragent-form.component.html',\n styleUrls: ['./sc-new-contragent-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScNewContragentFormComponent implements OnInit, OnDestroy {\n /**\n * Группа полей информации о контрагенте индивидуальном предпринимателе.\n */\n private readonly entrepreneurGroup = new FormGroup({\n inn: new FormControl<string | null>(null, Validators.required),\n okpo: new FormControl<string | null>(null, Validators.required),\n directorName: new FormControl<string | null>(null, Validators.required),\n directorPosition: new FormControl<string | null>(null, Validators.required),\n directorActsOn: new FormControl<string | null>(null, Validators.required),\n legalAddress: new FormControl<string | null>(null, Validators.required),\n postalAddress: new FormControl<string | null>(null, Validators.required),\n actualAddress: new FormControl<string | null>(null, Validators.required),\n bankAccounts: new FormArray<any>([], [Validators.minLength(1), Validators.required])\n });\n\n /**\n * Группа полей информации о контрагенте юридическом лице.\n */\n private readonly legalGroup = new FormGroup({\n kpp: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9)])\n });\n\n /**\n * Группа полей информации о контрагенте юридическом лице нерезиденте.\n */\n private readonly nonResidentLegalGroup = new FormGroup({\n registrationCountryId: new FormControl<number | null>(null, Validators.required),\n registrationNumber: new FormControl<string | null>(null, Validators.required),\n taxNumber: new FormControl<string | null>(null, Validators.required)\n });\n\n /**\n * Форма для создания нового контрагента физического лица.\n */\n public readonly form = new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n opf: new FormControl<keyof typeof ScOpfList>('individual', Validators.required),\n salesDirectionId: new FormControl<number | null>(null, Validators.required),\n contacts: new FormArray<any>([], [Validators.minLength(1), Validators.required])\n });\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * {@link Observable} выбора ОПФ.\n */\n public readonly selectOpf$: Observable<keyof typeof ScOpfList> = tuiControlValue<keyof typeof ScOpfList>(this.form.controls.opf).pipe(\n tap((opf) => {\n Object.keys({ ...this.entrepreneurGroup.controls, ...this.legalGroup.controls, ...this.nonResidentLegalGroup.controls }).forEach((key) => {\n (this.form as FormGroup).removeControl<typeof key>(key);\n });\n\n const addControls = (formGroup: FormGroup) => {\n Object.keys({ ...formGroup.controls }).forEach((key) => {\n (this.form as FormGroup).addControl<typeof key>(key, formGroup.get(key));\n });\n };\n\n if (ScOpfList[opf] > ScOpfList.individual) {\n addControls(this.entrepreneurGroup);\n this.entrepreneurGroup.controls.inn.setValidators([Validators.required, Validators.minLength(12)]);\n this.entrepreneurGroup.controls.okpo.setValidators([Validators.required, Validators.minLength(10)]);\n }\n\n if (ScOpfList[opf] > ScOpfList.entrepreneur) {\n addControls(this.legalGroup);\n this.entrepreneurGroup.controls.inn.setValidators([Validators.required, Validators.minLength(10)]);\n this.entrepreneurGroup.controls.okpo.setValidators([Validators.required, Validators.minLength(8)]);\n }\n\n if (ScOpfList[opf] > ScOpfList.legal) {\n addControls(this.nonResidentLegalGroup);\n }\n })\n );\n\n /**\n * Маска поля ввода ИНН.\n */\n public readonly innMask = (opf: keyof typeof ScOpfList) => (ScOpfList[opf] > ScOpfList.entrepreneur ? scLegalInnMask : scEntrepreneurInnMask);\n\n /**\n * Маска поля ввода ОКПО.\n */\n public readonly okpoMask = (opf: keyof typeof ScOpfList) => (ScOpfList[opf] > ScOpfList.entrepreneur ? scLegalOkpoMask : scEntrepreneurOkpoMask);\n\n /**\n * Маска поля ввода КПП.\n */\n public readonly kppMask = scKppMask;\n\n /**\n * Перечисление организационно-правовых форм.\n */\n public readonly opfListEnum: typeof ScOpfList = ScOpfList;\n\n /**\n * Родительская `FormGroup`.\n */\n public get parentForm(): FormGroup<any> | undefined {\n return this.formGroupDirective?.form;\n }\n\n /**\n * Инициализирует экземпляр класса {@link ScNewContragentFormComponent}.\n *\n * @param referencesService Сервис справочников.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n */\n public constructor(\n private readonly referencesService: ScReferencesService,\n private readonly locationsService: ScLocationsService,\n @SkipSelf()\n @Inject(FormGroupDirective)\n private readonly formGroupDirective: FormGroupDirective | null\n ) {\n this.referencesService.directions$\n .pipe(\n untilDestroyed(this),\n filter(tuiIsPresent),\n filter((directions) => !!directions.length)\n )\n .subscribe((directions) => this.form.patchValue({ salesDirectionId: directions[0].id }));\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.parentForm?.setControl('contragent', this.form);\n }\n\n /** @inheritDoc */\n public ngOnDestroy(): void {\n this.parentForm?.removeControl('contragent');\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n */\n public getDirectionById$(directionId: number): Observable<ScISalesDirection | undefined> {\n return this.referencesService.getDirectionById$(directionId);\n }\n\n /**\n * Возвращает {@link Observable} список организационно-правовых форм..\n */\n public getOpf$(): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList>[]> {\n return this.referencesService.opf$;\n }\n\n /**\n * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.\n *\n * @param slug Символьное обозначение (slug).\n */\n public getOpfBySlug$(slug: keyof typeof ScOpfList): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList> | undefined> {\n return this.referencesService.getOpfBySlug$(slug);\n }\n\n /**\n * Возвращает {@link Observable} списка стран\n */\n public getCountries$(): Observable<ScICountry[]> {\n return this.locationsService.getCountries$();\n }\n\n /**\n * Возвращает {@link Observable} страны по идентификатору.\n *\n * @param countryId — Идентификатор страны.\n */\n public getCountriesById$(countryId: number): Observable<ScICountry | undefined> {\n return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));\n }\n}\n","<div [formGroup]=\"form\" *ngIf=\"selectOpf$ | async as selectOpf\" class=\"flex flex-col gap-3 pb-1\">\n <p class=\"font-bold text-lg\">Общая информация контрагента</p>\n <label tuiLabel=\"Тип контрагента (организационно-правовая форма)\">\n <tui-select formControlName=\"opf\" [valueContent]=\"opfContent\">\n Тип контрагента (организационно-правовая форма)\n <tui-data-list *tuiDataList>\n <button *ngFor=\"let item of getOpf$() | async; let index = index\" tuiOption [value]=\"item.slug\">\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template #opfContent let-data>\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error formControlName=\"opf\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label [tuiLabel]=\"opfListEnum[selectOpf] > opfListEnum.individual ? 'Название организации' : 'Ф.И.О.'\">\n <tui-input formControlName=\"name\">\n <ng-template #fio>\n Ф.И.О.\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.fio\"></sc-suggestion-field>\n </ng-template>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.individual; else fio\">\n Название организации\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.individual\">\n <label tuiLabel=\"ИНН организации или ИП\">\n <tui-input formControlName=\"inn\">\n ИНН организации или ИП\n <input tuiTextfield [maskito]=\"innMask(selectOpf)\" autocomplete=\"inn\" />\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"inn\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Код ОКПО\">\n <tui-input formControlName=\"okpo\">\n Код ОКПО\n <input tuiTextfield [maskito]=\"okpoMask(selectOpf)\" autocomplete=\"okpo\" />\n </tui-input>\n <tui-error formControlName=\"okpo\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Ф.И.О. руководителя\">\n <tui-input formControlName=\"directorName\">\n Ф.И.О. руководителя\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.fio\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"directorName\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Должность руководителя\">\n <tui-input formControlName=\"directorPosition\"> Должность руководителя </tui-input>\n <tui-error formControlName=\"directorPosition\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Основания полномочий руководителя\">\n <tui-input formControlName=\"directorActsOn\"> Основания полномочий руководителя </tui-input>\n <tui-error formControlName=\"directorActsOn\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Юридический адрес\">\n <tui-input formControlName=\"legalAddress\">\n Юридический адрес\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.address\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"legalAddress\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Почтовый адрес\">\n <tui-input formControlName=\"postalAddress\">\n Почтовый адрес\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.address\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"postalAddress\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Фактический адрес\">\n <tui-input formControlName=\"actualAddress\">\n Фактический адрес\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.address\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"actualAddress\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.entrepreneur\">\n <label tuiLabel=\"КПП организации\">\n <tui-input formControlName=\"kpp\">\n КПП организации\n <input tuiTextfield [maskito]=\"kppMask\" autocomplete=\"kpp\" />\n </tui-input>\n <tui-error formControlName=\"kpp\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.legal\">\n <label tuiLabel=\" Страна регистрации юридического лица\">\n <tui-select formControlName=\"registrationCountryId\" [valueContent]=\"CountryContent\">\n Страна регистрации юридического лица\n <tui-data-list *tuiDataList>\n <button *ngFor=\"let item of getCountries$() | async; let index = index\" tuiOption [value]=\"item.id\">\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template #CountryContent let-data>\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error formControlName=\"registrationCountryId\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Регистрационный номер юридического лица\">\n <tui-input formControlName=\"registrationNumber\"> Регистрационный номер юридического лица </tui-input>\n <tui-error formControlName=\"registrationNumber\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Налоговый номер юридического лица\">\n <tui-input formControlName=\"taxNumber\"> Налоговый номер юридического лица </tui-input>\n <tui-error formControlName=\"taxNumber\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </ng-container>\n </ng-container>\n</div>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, ChangeDetectionStrategy, Optional, Inject } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport {\n ScOpfList,\n ScReferencesService,\n ScContragentService,\n ScConvertersService,\n ScLocationsService,\n ScContragentOnDataCreate,\n ScISalesDirection,\n ScIReferencesTypes,\n ScICurrency,\n ScICountry,\n ScIBankAccount,\n ScContragent\n} from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { Observable, map, Subject, catchError, filter, of, share, startWith, switchMap, tap } from 'rxjs';\nimport { ApiErrorResponse } from '../../auth';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\n\n/**\n * Компотен добавления контрагента.\n */\n@Component({\n selector: 'sc-add-contragent-dialog',\n templateUrl: './sc-add-contragent-dialog.component.html',\n styleUrls: ['./sc-add-contragent-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScAddContragentDialogComponent {\n /**\n * Перечисление организационно-правовых форм.\n */\n public readonly opfListEnum: typeof ScOpfList = ScOpfList;\n\n /**\n * Расположение баннера.\n */\n public stepIndex = 0;\n\n /**\n * Родительская `FormGroup`.\n */\n public form = new FormGroup({\n contragent: new FormGroup<any>({})\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса добавления контрагента.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value.contragent as ScContragentOnDataCreate),\n filter((value): value is ScContragentOnDataCreate => this.form.valid),\n switchMap((value) => {\n return this.contragentService.createContragent$(this.convertersService.removeNullRecursive(value)).pipe(\n tap((contragent) => this.context?.completeWith(contragent)),\n catchError((error: HttpErrorResponse) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.controls.contragent.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Текущий выбранный ОПФ.\n */\n public get selectOpf(): ScOpfList {\n return this.opfListEnum[this.form.controls.contragent.controls['opf'].value as keyof typeof ScOpfList];\n }\n\n /**\n * Список групп полей банковских реквизитов.\n */\n public get bankAccounts(): FormArray<ReturnType<ScAddContragentDialogComponent['createBankAccountGroup']>> {\n return this.form.controls.contragent.get('bankAccounts') as FormArray<ReturnType<ScAddContragentDialogComponent['createBankAccountGroup']>>;\n }\n\n /**\n * Список групп полей контактных лиц.\n */\n public get contacts(): FormArray<ReturnType<ScAddContragentDialogComponent['createContactGroup']>> {\n return this.form.controls.contragent.get('contacts') as FormArray<ReturnType<ScAddContragentDialogComponent['createContactGroup']>>;\n }\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContragentDialogComponent}.\n *\n * @param referencesService Сервис справочников.\n * @param contragentService Сервис работы с контрагентами.\n * @param convertersService Сервис конвертации данных.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly referencesService: ScReferencesService,\n private readonly contragentService: ScContragentService,\n private readonly convertersService: ScConvertersService,\n private readonly locationsService: ScLocationsService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n private readonly context: TuiDialogContext<ScContragent, void>\n ) {}\n\n /**\n * Выполняет навигацию по форме создания контрагента.\n *\n * @param delta Значение, на которое необходимо выполнить навигацию.\n */\n public navigate(delta: number): void {\n this.stepIndex = (this.stepIndex + delta) % 3;\n }\n\n /**\n * Проверяет, может ли пользователь перейти к следующему шагу создания контрагента.\n *\n * @returns Выводит значение `boolean` на основании {@link stepIndex}.\n */\n public canNextStep(): boolean {\n switch (this.stepIndex) {\n case 0:\n for (const key in this.form.controls.contragent.controls) {\n if (Object.prototype.hasOwnProperty.call(this.form.controls.contragent.controls, key) && !Array.isArray(this.form.controls.contragent.controls[key].value)) {\n if (this.form.controls.contragent.controls[key].invalid) {\n return false;\n }\n }\n }\n\n return true;\n case 1:\n return this.form.controls.contragent.controls['contacts'].valid;\n case 2:\n return this.form.controls.contragent.controls['bankAccounts'].valid;\n default:\n return true;\n }\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n */\n public getSalesDirections$(): Observable<ScISalesDirection[]> {\n return this.referencesService.directions$;\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n */\n public getDirectionById$(directionId: number): Observable<ScISalesDirection | undefined> {\n return this.referencesService.getDirectionById$(directionId);\n }\n\n /**\n * Возвращает {@link Observable} список организационно-правовых форм.\n */\n public getOpf$(): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList>[]> {\n return this.referencesService.opf$;\n }\n\n /**\n * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.\n *\n * @param slug Символьное обозначение (slug).\n */\n public getOpfBySlug$(slug: keyof typeof ScOpfList): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList> | undefined> {\n return this.referencesService.getOpfBySlug$(slug);\n }\n\n /**\n * Возвращает {@link Observable} списка валют.\n */\n public getCurrencies$(): Observable<ScICurrency[]> {\n return this.referencesService.currencies$;\n }\n\n /**\n * Возвращает {@link Observable} валюты, соответствующий идентификатору на входе.\n *\n * @param currencyId — Идентификатор валюты.\n */\n public getCurrencyById$(currencyId: number): Observable<ScICurrency | undefined> {\n return this.referencesService.getCurrencyById$(currencyId);\n }\n\n /**\n * Возвращает {@link Observable} списка стран.\n */\n public getCountries$(): Observable<ScICountry[]> {\n return this.locationsService.getCountries$();\n }\n\n /**\n * Возвращает {@link Observable} страны, соответствующий идентификатору на входе.\n *\n * @param countryId — Идентификатор страны.\n */\n public getCountriesById$(countryId: number): Observable<ScICountry | undefined> {\n return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));\n }\n\n /**\n * Создаёт группу полей банковских реквизитов.\n */\n private createBankAccountGroup(): FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }> {\n return new FormGroup({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required)\n });\n }\n\n /**\n * Добавляет Банковские реквизиты.\n */\n public addBankAccountGroup(): void {\n this.bankAccounts.push(this.createBankAccountGroup());\n }\n\n /**\n * Удаляет банковские реквизиты.\n *\n * @param index Индекс банковских реквизитов.\n */\n public removeBankAccountGroup(index: number): void {\n this.bankAccounts.removeAt(index);\n }\n\n /**\n * Создаёт группу полей контактного лица.\n */\n public createContactGroup(): FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }> {\n return new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null)\n });\n }\n\n /**\n * Добавляет контактное лицо контрагента.\n */\n public addContactGroup(): void {\n this.contacts.push(this.createContactGroup());\n }\n\n /**\n * Удаляет контактное лицо контрагента.\n *\n * @param index Индекс контактного лица.\n */\n public removeContactGroup(index: number): void {\n this.contacts.removeAt(index);\n }\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <tui-elastic-container>\n <tui-carousel [(index)]=\"stepIndex\" [draggable]=\"false\">\n <sc-new-contragent-form *tuiItem scCarouselItemHidden [index]=\"0\"></sc-new-contragent-form>\n\n <div *tuiItem scCarouselItemHidden [index]=\"1\">\n <div *ngIf=\"contacts\" class=\"flex flex-col gap-5 pb-1\">\n <p class=\"font-bold text-lg\">Контакты</p>\n <div *ngFor=\"let contact of contacts.controls; let index = index, let count = count, let last = last\" class=\"flex flex-col gap-3\">\n <div class=\"flex justify-between items-center h-10\">\n <p class=\"font-bold\">Контакт №{{ index + 1 }}:</p>\n <button *ngIf=\"count - 1\" tuiIconButton appearance=\"secondary\" (click)=\"removeContactGroup(index)\" icon=\"tuiIconTrash2Large\"></button>\n </div>\n <sc-new-contact-form [form]=\"contact\"></sc-new-contact-form>\n <hr *ngIf=\"!last\" class=\"w-full h-px bg-tui-base-04\" />\n </div>\n <button tuiButton icon=\"tuiIconPlusLarge\" [appearance]=\"'secondary'\" (click)=\"addContactGroup()\" type=\"button\">Добавить контакт</button>\n </div>\n </div>\n\n <div *tuiItem scCarouselItemHidden [index]=\"2\">\n <div *ngIf=\"bankAccounts\" class=\"flex flex-col gap-5 pb-1\">\n <p class=\"font-bold text-lg\">Банковские реквизиты</p>\n <div *ngFor=\"let bankAccount of bankAccounts.controls; let index = index, let count = count, let last = last\" class=\"flex flex-col gap-3\">\n <div class=\"flex justify-between items-center h-12\">\n <p class=\"font-bold\">Банковские реквизиты №{{ index + 1 }}:</p>\n <button *ngIf=\"count - 1\" tuiIconButton appearance=\"secondary\" (click)=\"removeBankAccountGroup(index)\" icon=\"tuiIconTrash2Large\"></button>\n </div>\n <sc-new-contragent-bank-account-form [form]=\"bankAccount\"></sc-new-contragent-bank-account-form>\n <hr *ngIf=\"!last\" class=\"w-full h-px bg-tui-base-04\" />\n </div>\n <button tuiButton icon=\"tuiIconPlusLarge\" [appearance]=\"'secondary'\" (click)=\"addBankAccountGroup()\" type=\"button\">Добавить банковские реквизиты</button>\n </div>\n </div>\n </tui-carousel>\n </tui-elastic-container>\n <div class=\"flex gap-2 justify-center\">\n <button *ngIf=\"stepIndex > 0\" tuiButton appearance=\"secondary\" type=\"button\" (click)=\"stepIndex = (stepIndex - 1) % 3;\">Назад</button>\n <button\n *ngIf=\"stepIndex === 2 || stepIndex === 1 && !form.controls.contragent.controls['bankAccounts']; else nextIndexBtn\"\n tuiButton\n [disabled]=\"form.invalid\"\n [showLoader]=\"!!(loading$ | async)\"\n type=\"submit\"\n class=\"self-center\"\n >\n Создать\n </button>\n <ng-template #nextIndexBtn>\n <button tuiButton [disabled]=\"!canNextStep()\" type=\"button\" (click)=\"stepIndex = (stepIndex + 1) % 3;\">Далее</button>\n </ng-template>\n </div>\n</form>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input } from '@angular/core';\nimport { ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контактного лица в списке.\n */\n@Component({\n selector: 'sc-contacts-accordion',\n templateUrl: './sc-contacts-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContactsAccordionComponent {\n /**\n * Контактные лица.\n */\n @Input()\n public contacts$: Observable<ScIContact[] | null>;\n\n /**\n * Событие нажатия на кнопку добавления контактного лица.\n */\n @Output()\n public addContactClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица.\n */\n @Output()\n public deleteButtonClick: EventEmitter<ScIContact> = new EventEmitter<ScIContact>();\n}\n","<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n Контакты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contacts$ | async as contacts\" [overlay]=\"true\" [showLoader]=\"contacts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div *ngFor=\"let contact of contacts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\n {{ contact.name }}\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhoneLarge\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone }}\"\n >{{ contact.phone | tuiFormatPhone }}</a\n >\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMailLarge\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ contact.email }}\"> {{ contact.email }} </a>\n </div>\n <!-- Функционал удаления временно не доступен пользователю. -->\n <!-- <div class=\"flex flex-col md:flex-row gap-1\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit(contact)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">Контакты не указаны.</div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, OnInit } from '@angular/core';\nimport { ScContragent, ScContragentService, ScIBankAccount, ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контрагента пользователя.\n */\n@Component({\n selector: 'sc-contragents-accordion-item',\n templateUrl: './sc-contragents-accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContragentsAccordionItemComponent implements OnInit {\n /**\n * Контрагент пользователя.\n */\n @Input()\n public contragent: ScContragent;\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Список банковских счетов контрагента.\n */\n public bankAccounts$?: Observable<ScIBankAccount[] | null>;\n\n /**\n * Список банковских счетов контрагента.\n */\n public contacts$?: Observable<ScIContact[] | null>;\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentsAccordionItemComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n */\n public constructor(private readonly contragentService: ScContragentService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.bankAccounts$ = this.contragentService.getContragentBankAccounts$(this.contragent.id);\n this.contacts$ = this.contragentService.getContragentContacts$(this.contragent.id);\n }\n\n /**\n * Обработчик нажатия на кнопку удаления контактного лица у контрагента.\n *\n * @param contact Контактное лицо.\n * @param contragent Контрагент.\n */\n public onDeleteContragentContactClick(contact: ScIContact, contragent: ScContragent): void {\n this.deleteContragentContactClick.emit({ contact: contact, contragent: contragent });\n }\n}\n","<sc-accordion [showAddButton]=\"false\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">ИНН: {{ inn }}</span>\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">ИНН: {{ inn }}</span>\n <span *ngIf=\"$any(contragent).kpp as kpp\">КПП: {{ kpp }}</span>\n </div>\n <!-- Функционал удаления и редактирования временно не доступен пользователю. -->\n <!-- <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit(contragent.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentClick.emit(contragent)\"\n ></button> -->\n </div>\n\n <sc-accordion (addButtonClick)=\"addContragentBankAccountClick.emit(contragent)\">\n Банковские реквизиты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"bankAccounts$ | async as bankAccounts\" [overlay]=\"true\" [showLoader]=\"bankAccounts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div *ngFor=\"let bankAccount of bankAccounts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\n <span>Банк: {{ bankAccount.bankName }}</span>\n <span>БИК: {{ bankAccount.bic }}</span>\n <span>Р/счёт: {{ bankAccount.accountNumber }}</span>\n <span>Кор/счёт: {{ bankAccount.correspondentAccount }}</span>\n <span>Валюта: {{ bankAccount.currency.name }}</span>\n </div>\n <!-- <div class=\"flex flex-col md:flex-row gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editBankAccountsContragentClick.emit(bankAccount.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentBankAccountClick.emit(bankAccount)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n У контрагента <span class=\"font-bold\">{{ contragent.name }}</span> не указаны банковские реквизиты.\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion\n *ngIf=\"contacts$\"\n [contacts$]=\"contacts$\"\n (addContactClick)=\"addContragentContactClick.emit(contragent)\"\n (deleteButtonClick)=\"onDeleteContragentContactClick($event, contragent)\"\n ></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScContragent, ScContragentService, ScIBankAccount, ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контрагента пользователя.\n */\n@Component({\n selector: 'sc-contragents-accordion',\n templateUrl: './sc-contragents-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContragentsAccordionComponent {\n /**\n * {@link Observable} данных о контрагентах пользователя.\n */\n public contragents$: Observable<ScContragent[] | null> = this.contragentService.contragents$;\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public addContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentsAccordionComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n */\n public constructor(private readonly contragentService: ScContragentService) {}\n}\n","<sc-accordion (addButtonClick)=\"addContragentClick.emit()\">\n Контрагенты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contragents$ | async as contragents\" [overlay]=\"true\" [showLoader]=\"contragents === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contragents || contragents.length; else contragentsNotExist\">\n <sc-contragents-accordion-item\n *ngFor=\"let contragent of contragents\"\n [contragent]=\"contragent\"\n (deleteContragentClick)=\"deleteContragentClick.emit($event)\"\n (addContragentBankAccountClick)=\"addContragentBankAccountClick.emit($event)\"\n (deleteContragentBankAccountClick)=\"deleteContragentBankAccountClick.emit($event)\"\n (addContragentContactClick)=\"addContragentContactClick.emit($event)\"\n (deleteContragentContactClick)=\"deleteContragentContactClick.emit($event)\"\n ></sc-contragents-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">Контрагенты не указаны.</div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { ChangeDetectionStrategy, Component, Inject, OnInit, SkipSelf } from '@angular/core';\nimport { FormControl, FormGroupDirective, Validators } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ScICity, ScICountry, ScIRegion, ScLocationsService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsPresent, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { Observable, combineLatest, debounceTime, filter, of, share, startWith, switchMap } from 'rxjs';\n\n/**\n * Компонент поля ввода страны/региона/города.\n */\n@Component({\n selector: 'sc-addresses-selection-field',\n templateUrl: './sc-addresses-selection-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScAddressesSelectionFieldComponent implements OnInit {\n /**\n * FormControl для поля страны.\n */\n public countryControl: FormControl<ScICountry | null> = new FormControl<ScICountry | null>(\n {\n id: 3159,\n name: 'Россия'\n },\n Validators.required\n );\n\n /**\n * FormControl для поля региона.\n */\n public regionControl: FormControl<ScIRegion | null> = new FormControl<ScIRegion | null>(null, Validators.required);\n\n /**\n * FormControl для поля города.\n */\n public cityControl: FormControl<ScICity | null> = new FormControl<ScICountry | null>(null, Validators.required);\n\n /**\n * {@link Observable} изменения списка стран.\n */\n public countries$: Observable<ScICountry[] | null> = this.locationsService.getCountries$().pipe(share(), startWith(null));\n\n /**\n * {@link Observable} изменения списка регионов.\n */\n public regions$: Observable<ScIRegion[] | null> = tuiControlValue<ScIRegion | null>(this.countryControl).pipe(\n filter(tuiIsPresent),\n switchMap((country: ScICountry) => this.locationsService.getRegions$(country.id).pipe(startWith(null))),\n share()\n );\n\n /**\n * {@link Observable} изменения списка городов.\n */\n public cities$: Observable<ScICity[] | null> = combineLatest({\n country: tuiControlValue<ScIRegion | null>(this.countryControl),\n region: tuiControlValue<ScICity | null>(this.regionControl)\n }).pipe(\n debounceTime(0),\n switchMap(({ country, region }: { country: ScIRegion | null; region: ScICity | null }) =>\n country && region ? this.locationsService.getCities$(country.id, region.id).pipe(startWith(null)) : of([])\n ),\n share()\n );\n\n /**\n * `FormControl` поля идентификатора города.\n */\n public get cityIdControl(): FormControl<string | null> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.formGroupDirective.form.get('cityId')! as FormControl<string | null>;\n }\n\n /**\n * Инициализирует экземпляр класса {@link ScAddressesSelectionFieldComponent}.\n *\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n */\n public constructor(\n @SkipSelf() @Inject(FormGroupDirective) private readonly formGroupDirective: FormGroupDirective,\n private readonly locationsService: ScLocationsService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n if (this.cityIdControl.valid) {\n this.locationsService\n .getUserCity$(Number(this.cityIdControl?.value))\n .pipe(untilDestroyed(this))\n .subscribe((city: ScICity) => {\n this.countryControl.patchValue(city?.region?.country ?? null);\n this.regionControl.patchValue(city?.region ?? null);\n this.cityControl.patchValue(city);\n });\n }\n\n this.countryControl.valueChanges.pipe(untilDestroyed(this)).subscribe((country) => {\n this.regionControl.reset(null);\n this.cityControl.reset(null);\n country ? this.regionControl.enable() : this.regionControl.disable();\n this.cityControl.disable();\n });\n\n this.regionControl.valueChanges.pipe(untilDestroyed(this)).subscribe((region) => {\n this.cityControl.reset(null);\n this.cityIdControl.reset(null);\n region ? this.cityControl.enable() : this.cityControl.disable();\n });\n }\n\n /**\n * Заполнение полей банковских реквизитов на основе выбранной подсказки.\n *\n * @param suggestion Объект подсказки по банку.\n */\n public onSelectedCity(city: ScICity | null): void {\n if (this.cityIdControl) {\n this.cityIdControl.setValue(city?.id.toString() ?? null);\n tuiMarkControlAsTouchedAndValidate(this.cityIdControl);\n }\n }\n\n /**\n * Функция преобразования объекта сортировки в значение, отображаемое в поле ввода.\n *\n * @param item Выбранный объект выпадающего списка.\n */\n public readonly stringify = (item: { name: string }): string => `${item.name}`;\n}\n","<div class=\"flex flex-col sm:flex-row gap-4 items-start\">\n <!-- TODO: Открыть поле выбора страны при добавлении возможности выбора страны для клиента. -->\n <!-- <label tuiLabel=\"Страна\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"countries$ | async as countries\" [formControl]=\"countryControl\" [stringify]=\"stringify\">\n Страна\n <input tuiTextfield autocomplete=\"new-password\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"countries | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"countryControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label> -->\n <!-- TODO: [TASK:9383]: Доработать компонент выбора города, как на портале -->\n <label tuiLabel=\"Регион\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"regions$ | async as regions\" [formControl]=\"regionControl\" [stringify]=\"stringify\">\n Регион\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"regions | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"regionControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Город\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"cities$ | async as cities\" [formControl]=\"cityControl\" [stringify]=\"stringify\" (ngModelChange)=\"onSelectedCity($event)\">\n Город\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"cities | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"cityIdControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n <tui-error *ngIf=\"cityIdControl.untouched\" [formControl]=\"cityControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLabelModule, TuiErrorModule, TuiDataListModule, TuiLoaderModule, TuiButtonModule } from '@taiga-ui/core';\nimport {\n TuiInputModule,\n TuiFieldErrorPipeModule,\n TuiComboBoxModule,\n TuiDataListWrapperModule,\n TuiFilterByInputPipeModule,\n TuiStringifyContentPipeModule,\n TuiInputPhoneModule\n} from '@taiga-ui/kit';\nimport { MaskitoModule } from '@maskito/angular';\nimport { ScAddressesSelectionFieldComponent } from './addresses-selection-field/sc-addresses-selection-field.component';\nimport { ScSuggestionFieldComponent } from './suggestion-field/sc-suggestion-field.component';\n\n/**\n * Модуль полей ввода.\n */\n@NgModule({\n declarations: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLabelModule,\n TuiLetModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiDataListModule,\n TuiLoaderModule,\n TuiComboBoxModule,\n TuiDataListWrapperModule,\n TuiFilterByInputPipeModule,\n TuiStringifyContentPipeModule,\n TuiInputPhoneModule,\n TuiButtonModule,\n MaskitoModule\n ],\n exports: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent]\n})\nexport class ScFormFieldsModule {}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport {\n ScContragentService,\n ScIBankAccountOnDataCreate,\n ScIBankAccount,\n ScIContactOnDataCreate,\n ScContactsService,\n ScIContactWithRelations,\n ScConvertersService,\n ScIContactBase\n} from '@snabcentr/client-core';\nimport { Observable, Subject, catchError, filter, map, of, share, startWith, switchMap, tap } from 'rxjs';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\n\n/**\n * Компонент формы создания нового контактного лица.\n */\n@Component({\n selector: 'sc-add-contact-dialog',\n templateUrl: './sc-add-contact-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScAddContactDialogComponent {\n /**\n * Группа с полями контактного лица.\n */\n public form: FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }> = new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required)\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса добавления контактного лица.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is ScIContactOnDataCreate => this.form.valid),\n map((value) => this.convertersService.removeNull<ScIContactOnDataCreate>({ ...value, ...this.context.data })),\n switchMap((data) => {\n return this.contactsService.createContact$(data).pipe(\n tap((contact) => this.context?.completeWith(contact)),\n catchError((error: HttpErrorResponse) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContactDialogComponent}.\n *\n * @param contactsService Сервис для работы с контактными лицами.\n * @param convertersService Сервис конвертации данных.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly contactsService: ScContactsService,\n public readonly convertersService: ScConvertersService,\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<ScIContactWithRelations, Omit<ScIContactOnDataCreate, keyof ScIContactBase>>\n ) {}\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\n <sc-new-contact-form [form]=\"form\"></sc-new-contact-form>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">Отмена</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">Сохранить</button>\n </div>\n</form>\n","import { NgModule } from '@angular/core';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport {\n TuiButtonModule,\n TuiDataListModule,\n TuiErrorModule,\n TuiFormatPhonePipeModule,\n TuiLabelModule,\n TuiLinkModule,\n TuiLoaderModule,\n TuiModeModule,\n TuiNotificationModule\n} from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScContactsAccordionComponent } from './contacts-accordion/sc-contacts-accordion.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { MaskitoModule } from '@maskito/angular';\nimport { TuiDataListWrapperModule, TuiFieldErrorPipeModule, TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/kit';\nimport { ScNewContactFormComponent } from './new-contact-form/sc-new-contact-form.component';\nimport { ScAddContactDialogComponent } from './add-contact-dialog/sc-add-contact-dialog.component';\n\n/**\n * Модуль контактных лиц.\n */\n@NgModule({\n declarations: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ScAccordionModule,\n TuiButtonModule,\n TuiModeModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiNotificationModule,\n TuiLinkModule,\n TuiFormatPhonePipeModule,\n ScFormFieldsModule,\n MaskitoModule,\n TuiFieldErrorPipeModule,\n TuiSelectModule,\n TuiDataListModule,\n TuiDataListWrapperModule,\n TuiLabelModule,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiErrorModule\n ],\n exports: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent]\n})\nexport class ScContactsModule {}\n","import { NgModule } from '@angular/core';\nimport { TuiCarouselModule } from '@taiga-ui/kit';\nimport { ScCarouselItemHiddenDirective } from './sc-carousel-item-hidden.directive';\n\n/**\n * Модуль директивы для скрытия элементов карусели тайги.\n */\n@NgModule({\n imports: [TuiCarouselModule],\n declarations: [ScCarouselItemHiddenDirective],\n exports: [ScCarouselItemHiddenDirective]\n})\nexport class ScCarouselItemHiddenModule {}\n","import { NgModule } from '@angular/core';\nimport { ScContragentsAccordionComponent } from './contragents-accordion/sc-contragents-accordion.component';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport { TuiButtonModule, TuiDataListModule, TuiErrorModule, TuiLabelModule, TuiLoaderModule, TuiModeModule, TuiNotificationModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScContragentsAccordionItemComponent } from './contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScNewContragentBankAccountsFormComponent } from './new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component';\nimport { ScAddContragentBankAccountsDialogComponent } from './add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScAddContragentDialogComponent } from './add-contragent-dialog/sc-add-contragent-dialog.component';\nimport { ScNewContragentFormComponent } from './new-contragent-form/sc-new-contragent-form.component';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { TuiCarouselModule, TuiDataListWrapperModule, TuiElasticContainerModule, TuiFieldErrorPipeModule, TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/kit';\nimport { MaskitoModule } from '@maskito/angular';\nimport { ScCarouselItemHiddenModule } from '../directives';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScContragentsAccordionComponent, ScContragentsAccordionItemComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent, ScAddContragentDialogComponent, ScNewContragentFormComponent],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n ScAccordionModule,\n TuiButtonModule,\n TuiModeModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiNotificationModule,\n ScContactsModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiSelectModule,\n TuiDataListModule,\n TuiDataListWrapperModule,\n TuiLabelModule,\n TuiInputModule,\n TuiInputPhoneModule,\n MaskitoModule,\n ScFormFieldsModule,\n TuiElasticContainerModule,\n TuiCarouselModule,\n ScCarouselItemHiddenModule\n ],\n exports: [ScContragentsAccordionComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent, ScAddContragentDialogComponent, ScNewContragentFormComponent]\n})\nexport class ScContragentsModule {}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScConvertersService, ScDeliveryAddressService, ScIDeliveryAddressOnDataCreate, ScISuggestionType, ScIDeliveryAddress } from '@snabcentr/client-core';\nimport { tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { ApiErrorResponse } from 'projects/client-ui/auth';\nimport { Observable, Subject, catchError, filter, map, of, share, startWith, switchMap, tap } from 'rxjs';\n\n/**\n * Компонент добавления адреса доставки.\n *\n * TODO: TASK[8813] Добавить карту, и поведение выбора адреса доставки через карту. При этом вынести форму в отдельный компонент AddDeliveryAddressForm или submit логику в директиву.\n */\n@Component({\n selector: 'sc-add-delivery-address-dialog',\n templateUrl: './sc-add-delivery-address-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScAddDeliveryAddressDialogComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit$: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных добавления адрес доставки.\n */\n private readonly request$: Observable<ScIDeliveryAddress | null | undefined> = this.onSubmit$.pipe(\n tap(() => tuiMarkControlAsTouchedAndValidate(this.form)),\n filter(() => this.form.valid),\n map(() => this.form.value as ScIDeliveryAddressOnDataCreate),\n switchMap((value) =>\n this.deliveryAddressService.createDeliveryAddress$(this.convertersService.removeNullRecursive<ScIDeliveryAddressOnDataCreate>(value)).pipe(\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of(undefined);\n }),\n tap(() => this.context.completeWith()),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map((data) => data === null));\n\n /**\n * Форма для создания адреса доставки.\n */\n public readonly form = new FormGroup({\n address: new FormControl<string | null>(null, Validators.required),\n contact: new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null)\n })\n });\n\n /**\n * Инициализирует экземпляр класса {@link ScAddDeliveryAddressDialogComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n * @param convertersService Сервис конвертации данных.\n */\n public constructor(\n private readonly deliveryAddressService: ScDeliveryAddressService,\n @Inject(POLYMORPHEUS_CONTEXT) private readonly context: TuiDialogContext<void, void>,\n private readonly convertersService: ScConvertersService\n ) {}\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit$.next()\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"Адрес доставки\">\n <tui-input formControlName=\"address\">\n Адрес доставки\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.address\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"address\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <div formGroupName=\"contact\" class=\"flex flex-col gap-2 grow\">\n <p class=\"font-bold w-full\">Контактное лицо:</p>\n <label tuiLabel=\"Ф.И.О.\">\n <tui-input formControlName=\"name\">\n Ф.И.О.\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.fio\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Телефон\">\n <tui-input-phone formControlName=\"phone\"> Телефон </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Адрес электронной почты\">\n <tui-input formControlName=\"email\">\n <input tuiTextfield type=\"email\" />\n Адрес электронной почты\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Должность\">\n <tui-input formControlName=\"position\"> Должность </tui-input>\n <tui-error formControlName=\"position\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </div>\n <button tuiButton matRipple [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" class=\"self-center\">Добавить</button>\n</form>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, OnInit } from '@angular/core';\nimport { ScDeliveryAddressService, ScIContact, ScIDeliveryAddress } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент адреса доставки.\n */\n@Component({\n selector: 'sc-delivery-address-accordion-item',\n templateUrl: './sc-delivery-address-accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScDeliveryAddressAccordionItemComponent implements OnInit {\n /**\n * Адрес доставки.\n */\n @Input()\n public deliveryAddress: ScIDeliveryAddress;\n\n /**\n * Список банковских счетов контрагента.\n */\n public contacts$?: Observable<ScIContact[] | null>;\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица адресу доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScDeliveryAddressAccordionItemComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n */\n public constructor(private readonly deliveryAddressService: ScDeliveryAddressService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.contacts$ = this.deliveryAddressService.getDeliveryAddressContacts$(this.deliveryAddress.id);\n }\n\n /**\n * Обработчик нажатия на кнопку удаления контактного лица у адреса доставки.\n *\n * @param contact Контактное лицо.\n * @param address Адрес доставки клиента.\n */\n public onDeleteContragentContactClick(contact: ScIContact, address: ScIDeliveryAddress): void {\n this.deleteDeliveryAddressContactClick.emit({ contact: contact, address: address });\n }\n}\n","<sc-accordion [showAddButton]=\"false\">\n {{ deliveryAddress.address }}\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n <span> Адрес: {{ deliveryAddress.address }} </span>\n <span *ngIf=\"deliveryAddress.comment\"> Комментарий: {{ deliveryAddress.comment }} </span>\n </div>\n <!-- Функционал удаления временно не доступен пользователю. -->\n <!-- <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteDeliveryAddressClick.emit(deliveryAddress)\"\n ></button> -->\n </div>\n\n <sc-contacts-accordion\n *ngIf=\"contacts$\"\n [contacts$]=\"contacts$\"\n (addContactClick)=\"addDeliveryAddressContactClick.next(deliveryAddress)\"\n (deleteButtonClick)=\"onDeleteContragentContactClick($event, deliveryAddress)\"\n ></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScDeliveryAddressService, ScIContact, ScIDeliveryAddress } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент адресов доставки.\n */\n@Component({\n selector: 'sc-delivery-address-accordion',\n templateUrl: './sc-delivery-address-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScDeliveryAddressAccordionComponent {\n /**\n * {@link Observable} данных адресов доставки.\n */\n public deliveryAddress$: Observable<ScIDeliveryAddress[] | null> = this.deliveryAddressService.deliveryAddresses$;\n\n /**\n * Событие нажатия на кнопку добавления адреса доставки клиента.\n */\n @Output()\n public addDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки клиента.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица для адреса доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScDeliveryAddressAccordionComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n */\n public constructor(private readonly deliveryAddressService: ScDeliveryAddressService) {}\n}\n","<sc-accordion (addButtonClick)=\"addDeliveryAddressClick.emit()\">\n Адреса доставки\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"deliveryAddress$ | async as deliveryAddress\" [overlay]=\"true\" [showLoader]=\"deliveryAddress === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!deliveryAddress || deliveryAddress.length; else contragentsNotExist\">\n <sc-delivery-address-accordion-item\n *ngFor=\"let address of deliveryAddress\"\n [deliveryAddress]=\"address\"\n (deleteDeliveryAddressClick)=\"deleteDeliveryAddressClick.emit($event)\"\n (addDeliveryAddressContactClick)=\"addDeliveryAddressContactClick.emit($event)\"\n (deleteDeliveryAddressContactClick)=\"deleteDeliveryAddressContactClick.emit($event)\"\n ></sc-delivery-address-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">Адреса доставки не указаны.</div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { NgModule } from '@angular/core';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport { TuiButtonModule, TuiErrorModule, TuiLabelModule, TuiLoaderModule, TuiModeModule, TuiNotificationModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScDeliveryAddressAccordionItemComponent } from './delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScDeliveryAddressAccordionComponent } from './delivery-address-accordion/sc-delivery-address-accordion.component';\nimport { ScAddDeliveryAddressDialogComponent } from './add-delivery-address-dialog/sc-add-delivery-address-dialog.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiFieldErrorPipeModule, TuiInputModule, TuiInputPhoneModule } from '@taiga-ui/kit';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\n\n/**\n * Модуль для отображение адресов доставки разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScAddDeliveryAddressDialogComponent],\n imports: [\n CommonModule,\n ScAccordionModule,\n TuiButtonModule,\n TuiModeModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiNotificationModule,\n ScContactsModule,\n FormsModule,\n ReactiveFormsModule,\n TuiLabelModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiInputModule,\n TuiInputPhoneModule,\n ScFormFieldsModule\n ],\n exports: [ScDeliveryAddressAccordionComponent, ScAddDeliveryAddressDialogComponent]\n})\nexport class ScDeliveryAddressModule {}\n","import { Injectable } from '@angular/core';\nimport { ScDocumentInfo, ScIconTypesEnum } from '@snabcentr/client-core';\n\n/**\n * Сервис работающий с значками элементов дерева.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class TreeIconService {\n /**\n * Назначает значок элементу дерева в зависимости от типа файла.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает название значка в виде строки.\n */\n public getIconName(info: ScDocumentInfo): string {\n switch (info.icon) {\n case ScIconTypesEnum.iconImage:\n return 'tuiIconImageLarge';\n case ScIconTypesEnum.iconPdfFile:\n return 'scIconPdfFile';\n case ScIconTypesEnum.iconWordFile:\n return 'scIconWordFile';\n case ScIconTypesEnum.iconExcelFile:\n return 'scIconExcelFile';\n case ScIconTypesEnum.iconFolder:\n return 'scIconFolder';\n default:\n return 'scIconFile';\n }\n }\n\n /**\n * Проверяет на признак наличия дочерних элементов.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает true при наличии дочерних элементов и false при их отсутствии.\n */\n public hasChildren(info: ScDocumentInfo): boolean {\n return info.type === 'dir';\n }\n}\n","import { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { Injectable } from '@angular/core';\nimport { TuiTreeLoader } from '@taiga-ui/kit';\nimport { Observable, map } from 'rxjs';\nimport { TreeIconService } from './tree-icon.service';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Сервис для асинхронного раскрытия вложенности.\n */\n@Injectable()\nexport class TreeLoaderService implements TuiTreeLoader<TreeNode> {\n /**\n * Инициализирует экземпляр класса {@link TreeLoaderService}\n *\n * @param filesService Сервис для получения файлов директории.\n * @param iconService Сервис для определения и назначения значка элементу дерева.\n */\n public constructor(private readonly filesService: ScFilesService, private readonly iconService: TreeIconService) {}\n\n /**\n * Загружает дочерние элементы дерева.\n *\n * @param item Элемент дерева.\n * @returns Массив дочерних элементов.\n */\n public loadChildren(item: TreeNode): Observable<TreeNode[]> {\n return item.id ? this.initData(item.id) : this.initData(undefined);\n }\n\n /**\n * Проверяет указанный элемент дерева на наличие дочерних элементов и возвращает массив дочерних элементов, если они есть, либо пустой массив.\n *\n * @param node Элемент дерева.\n * @returns Возвращает массив типа TreeNode[].\n */\n public hasChildren(node: TreeNode): boolean {\n return node.hasChildren && !!node.id;\n }\n\n /**\n * Загружает и заполняет массив дочерних элементов.\n *\n * @param id Идентификатор директории, чьи дочернии элементы загружаются.\n * @returns Возвращает массив дочерних элементов.\n */\n private initData(id: number | undefined): Observable<TreeNode[]> {\n return this.filesService.getFiles(id).pipe(\n map((data: ScDocumentInfo[]) =>\n data.map((item) => ({\n text: item.name,\n icon: this.iconService.getIconName(item),\n hasChildren: this.iconService.hasChildren(item),\n createdAt: item.createdAt,\n id: item.id,\n link: item.link\n }))\n )\n );\n }\n}\n","import { Directive } from '@angular/core';\nimport { TuiHandler } from '@taiga-ui/cdk';\nimport { TuiTreeService } from '@taiga-ui/kit';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Директива отвечающая за обработку действий над элементами дерева.\n */\n@Directive({\n selector: '[scTree]',\n exportAs: 'scTree',\n providers: [TuiTreeService]\n})\nexport class TreeDirective {\n /**\n * Карта данных дерева.\n */\n public map = new Map<TreeNode, boolean>();\n\n /**\n * Инициализирует экземпляр класса {@link TreeDirective}.\n *\n * @param service Сервис для работы с деревом.\n */\n public constructor(public readonly service: TuiTreeService<TreeNode>) {}\n\n /**\n * Проверяет указанный элемент дерева на наличие дочерних элементов и возвращает массив дочерних элементов, если они есть, либо пустой массив.\n *\n * @param node Элемент дерева.\n * @returns Возвращает массив типа TreeNode[].\n */\n public childrenHandler: TuiHandler<TreeNode, readonly TreeNode[]> = (node) => (node.hasChildren ? this.service.getChildren(node) : []);\n\n /**\n * Обрабатывает нажатие на указанный элемент дерева.\n *\n * @param node Элемент дерева.\n */\n public onToggled(node: TreeNode): void {\n this.service.loadChildren(node);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { TuiTreeItemContentComponent } from '@taiga-ui/kit';\n\n/**\n * Компонент для удаления стандартного значка элемента дерева.\n */\n@Component({\n selector: 'sc-file-tree-item',\n templateUrl: './file-tree-item.component.html',\n styleUrls: ['./file-tree-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(click)': 'onClick()'\n }\n})\nexport class FileTreeItemComponent extends TuiTreeItemContentComponent {}\n","<ng-container [ngTemplateOutlet]=\"context.template\"></ng-container>\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { Directive, Input, forwardRef } from '@angular/core';\nimport { TUI_TREE_CONTENT, TUI_TREE_START } from '@taiga-ui/kit';\nimport { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus';\nimport { FileTreeItemComponent } from '../file-tree-item/file-tree-item.component';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Директива отвечающая за корневые элементы дерева.\n */\n@Directive({\n selector: '[scTopNodeText]',\n providers: [\n {\n provide: TUI_TREE_START,\n useExisting: forwardRef(() => TreeTopDirective)\n },\n {\n provide: TUI_TREE_CONTENT,\n useValue: new PolymorpheusComponent(FileTreeItemComponent)\n }\n ]\n})\nexport class TreeTopDirective implements TreeNode {\n /**\n * Отображаемое имя корневого элемента дерева.\n */\n @Input('scTopNodeText')\n public text = '';\n\n /**\n * Значок корневого элемента дерева.\n */\n @Input('scTopNodeIcon')\n public icon: string;\n\n /**\n * Ссылка корневого элемента дерева.\n */\n @Input('scTopNodeLink')\n public link?: string;\n\n /**\n * Признак наличия дочерних элементов.\n */\n @Input('scTopNodeChilds')\n public hasChildren: boolean;\n\n /**\n * Идентификатор корневого элемента дерева.\n */\n @Input('scTopNodeParent')\n public id?: number;\n\n /**\n * Дата создания корневого элемента дерева.\n */\n @Input('scTopNodeDate')\n public createdAt?: string;\n}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { TUI_TREE_LOADER, TUI_TREE_LOADING } from '@taiga-ui/kit';\nimport { map, Observable } from 'rxjs';\n\nimport { TreeNode } from '../interfaces/tree-node';\nimport { TreeIconService } from '../services/tree-icon.service';\nimport { TreeLoaderService } from '../services/tree-loader.service';\n\n/**\n * Компонент файлов и документов.\n */\n@Component({\n selector: 'sc-files-and-documents',\n templateUrl: './files-and-documents.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_TREE_LOADER,\n useClass: TreeLoaderService,\n },\n ],\n})\nexport class FilesAndDocumentsComponent {\n /**\n * Данные визуализации и их начальное получение.\n */\n public data$: Observable<TreeNode[]> = this.filesService.getFiles().pipe(\n map((data: ScDocumentInfo[]) =>\n data.map((item) => ({\n text: item.name,\n icon: this.iconService.getIconName(item),\n hasChildren: this.iconService.hasChildren(item),\n createdAt: item.createdAt,\n id: item.id,\n link: item.link,\n }))\n )\n );\n\n /**\n * Инициализирует экземпляр класса {@link FilesAndDocumentsComponent}.\n *\n * @param loading Объект отвечающий за значок загрузки, в момент раскрытия элемента дерева.\n * @param iconService Сервис для определения и назначения значка элементу дерева.\n * @param filesService Сервис для загрузки файлов.\n */\n public constructor(\n @Inject(TUI_TREE_LOADING) public readonly loading: unknown,\n public readonly iconService: TreeIconService,\n private readonly filesService: ScFilesService\n ) {}\n}\n","<ng-container *ngIf=\"data$ | async as data; else skeleton\">\n <tui-tree\n *ngFor=\"let node of data\"\n #tree=\"scTree\"\n scTree\n [scTopNodeText]=\"node.text\"\n [scTopNodeIcon]=\"node.icon\"\n [scTopNodeLink]=\"node.link\"\n [scTopNodeChilds]=\"node.hasChildren\"\n [scTopNodeParent]=\"node.id\"\n [scTopNodeDate]=\"node.createdAt\"\n [childrenHandler]=\"tree.childrenHandler\"\n [content]=\"content\"\n [map]=\"tree.map\"\n [tuiTreeController]=\"false\"\n [value]=\"tree.service.data$ | async\"\n (toggled)=\"tree.onToggled($event)\"\n class=\"overflow-hidden\"\n ></tui-tree>\n</ng-container>\n\n<ng-template\n #content\n let-item\n>\n <tui-loader\n *ngIf=\"item === loading; else text\"\n class=\"my-4 w-8\"\n ></tui-loader>\n <ng-template #text>\n <tui-svg\n [src]=\"item.icon\"\n class=\"tui-space_right-2\"\n ></tui-svg>\n <a\n tuiLink\n [pseudo]=\"true\"\n *ngIf=\"item.link\"\n href=\"{{ item.link }}\"\n class=\"grow\"\n >{{ item.text }}</a\n >\n <p\n *ngIf=\"!item.link\"\n class=\"grow\"\n >\n {{ item.text }}\n </p>\n <p>{{ item.createdAt }}</p>\n </ng-template>\n</ng-template>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col gap-2\">\n <div\n *ngFor=\"let _ of [].constructor(7)\"\n class=\"flex items-center gap-2\"\n >\n <div class=\"tui-skeleton size-6\"></div>\n <div class=\"tui-skeleton h-4 w-40\"></div>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiLinkModule, TuiLoaderModule, TuiSvgModule } from '@taiga-ui/core';\nimport { TuiTreeModule } from '@taiga-ui/kit';\n\nimport { TreeTopDirective } from './directives';\nimport { TreeDirective } from './directives/tree.directive';\nimport { FileTreeItemComponent } from './file-tree-item/file-tree-item.component';\nimport { FilesAndDocumentsComponent } from './files-and-documents/files-and-documents.component';\n\n/**\n * Модуль файлов и документов.\n */\n@NgModule({\n imports: [CommonModule, TuiTreeModule, TuiSvgModule, TuiLoaderModule, TuiLinkModule],\n declarations: [FilesAndDocumentsComponent, TreeDirective, TreeTopDirective, FileTreeItemComponent],\n exports: [FilesAndDocumentsComponent],\n})\nexport class FilesAndDocumentsModule {}\n","/**\n * Список иконок.\n */\nexport const scClientUiIconsName = [\n 'scIconWordFile',\n 'scIconWindowsill',\n 'scIconWarning',\n 'scIconSandwichPanels',\n 'scIconWallet',\n 'scIconViewTree',\n 'scIconViewInline',\n 'scIconTop',\n 'scIconTemplates',\n 'scIconTasks',\n 'scIconSuitcase',\n 'scIconStar',\n 'scIconSocialWhatsapp',\n 'scIconSocialVk',\n 'scIconSocialViber',\n 'scIconSocialTelegram',\n 'scIconSocialQR',\n 'scIconSocialInstagram',\n 'scIconSocialFacebook',\n 'scIconSocialEmail',\n 'scIconSocialCopy',\n 'scIconSmile',\n 'scIconSiding',\n 'scIconShare',\n 'scIconSend',\n 'scIconSearch',\n 'scIconSave',\n 'scIconSandwich',\n 'scIconRocket',\n 'scIconRequisites',\n 'scIconRepeat',\n 'scIconReclamation',\n 'scIconQRCodeScan',\n 'scIconPromoMaterials',\n 'scIconProfile',\n 'scIconPrice',\n 'scIconPlasticProfile',\n 'scIconPercentage',\n 'scIconPdfFile',\n 'scIconPalette',\n 'scIconOffer',\n 'scIconNews',\n 'scIconMosquitoNet',\n 'scIconMoney',\n 'scIconMail',\n 'scIconLogIn',\n 'scIconLockOpen',\n 'scIconLock',\n 'scIconList',\n 'scIconHome',\n 'scIconHistory',\n 'scIconHeartFill',\n 'scIconHeart',\n 'scIconGraph',\n 'scIconFolderOpen',\n 'scIconFolder',\n 'scIconFoam',\n 'scIconFoamBalloon',\n 'scIconFilter',\n 'scIconFile',\n 'scIconFavoriteFill',\n 'scIconFavorite',\n 'scIconFastener',\n 'scIconExcelFile',\n 'scIconError',\n 'scIconEdit',\n 'scIconDeleteProfile',\n 'scIconContacts',\n 'scIconConfigurator',\n 'scIconClock',\n 'scIconClients',\n 'scIconCatalogBack',\n 'scIconCart',\n 'scIconCanopy',\n 'scIconCalendar',\n 'scIconBook',\n 'scIconBell',\n 'scIconBag',\n 'scIconAttention',\n 'scIconArrowReturn',\n 'scIconArrowLargeStart',\n 'scIconArrowLargeEnd',\n 'scIconArrowForward',\n 'scIconApplication',\n 'scIconAddProfile'\n];\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\n\n/**\n * Компонент кнопки \"Поделиться\".\n */\n@Component({\n selector: 'sc-share-button',\n templateUrl: './sc-share-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScShareButtonComponent {\n /**\n * Формат внешнего вида кнопки.\n */\n @Input()\n public appearance: 'primary' | 'secondary' | 'outline' | 'flat' = 'secondary';\n\n /**\n * Размер кнопки.\n */\n @Input()\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие клика по кнопке \"Поделиться\".\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n}\n","<button tuiIconButton icon=\"scIconShare\" [appearance]=\"appearance\" [size]=\"size\" (click)=\"$event.stopPropagation(); clickShareEvent.emit()\"></button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\nimport { ScNewsTile } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\n\n/**\n * Компонент карточки новости.\n */\n@Component({\n selector: 'sc-news-card',\n templateUrl: './sc-news-card.component.html',\n styleUrls: ['./sc-news-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardComponent {\n /**\n * Информация о новости.\n */\n @Input()\n public news: ScNewsTile;\n\n /**\n * Событие клика по карточке новости.\n */\n @Output()\n public clickCardEvent: EventEmitter<ScNewsTile> = new EventEmitter<ScNewsTile>();\n\n /**\n * Событие клика по кнопке \"Поделиться\" карточки новости.\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n @HostBinding('class.is_mobile')\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n}\n","<div\n (click)=\"clickCardEvent.emit(news)\"\n class=\"relative flex h-full cursor-pointer flex-col gap-2 overflow-hidden rounded-xl bg-white px-2 pb-4 pt-2 shadow-sc-2\"\n>\n <div\n [style.background-image]=\"'url(' + news.image + ')'\"\n class=\"w-full grow rounded-xl bg-tui-base-02 bg-cover bg-center bg-no-repeat\"\n ></div>\n <div class=\"flex w-full flex-col justify-between gap-2 overflow-hidden bg-white align-baseline\">\n <div class=\"flex items-center justify-between\">\n <p class=\"text-sm font-medium text-tui-text-02\">{{ news.createdAt }}</p>\n <sc-share-button\n (clickShareEvent)=\"clickShareEvent.emit()\"\n appearance=\"flat\"\n ></sc-share-button>\n </div>\n <div class=\"line-clamp-3 font-extrabold\">{{ news.subject }}</div>\n </div>\n</div>\n\n<!-- <div\n[style.background-image]=\"'url(' + news.image + ')'\"\nclass=\"h-50 w-full bg-tui-base-02 bg-cover bg-center bg-no-repeat\"\n></div> -->\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\n\n/**\n * Компонент скелетона карточки новости.\n */\n@Component({\n selector: 'sc-news-card-skeleton',\n templateUrl: './sc-news-card-skeleton.component.html',\n styleUrls: ['./sc-news-card-skeleton.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardSkeletonComponent {\n /**\n * Признак, что необходимо отобразить скелетон изображения новости.\n */\n @Input() public hasImg: boolean = true;\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n @HostBinding('class.is_mobile')\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n}\n","<div class=\"relative flex h-full cursor-pointer flex-col gap-2 overflow-hidden rounded-xl bg-white px-2 pb-4 pt-2 shadow-sc-2\">\n <div\n *ngIf=\"hasImg; else textBlock\"\n class=\"w-full grow rounded-xl bg-tui-base-02\"\n ></div>\n <ng-template #textBlock>\n <div class=\"py-4.5 flex w-full flex-col gap-2 px-6\">\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-3/4 rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-3/4 rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n </div>\n </ng-template>\n\n <div class=\"w-3/4\">\n <ng-container *ngTemplateOutlet=\"textBlock\"></ng-container>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScShareButtonComponent } from './sc-share-button.component';\nimport { TuiButtonModule } from '@taiga-ui/core';\n\n/**\n * Модуль работы кнопки \"Поделиться\".\n */\n@NgModule({\n declarations: [ScShareButtonComponent],\n imports: [CommonModule, TuiButtonModule],\n exports: [ScShareButtonComponent]\n})\nexport class ScShareButtonModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { ScShareButtonModule } from '../share-button';\nimport { ScNewsCardComponent } from './news-card/sc-news-card.component';\nimport { ScNewsCardSkeletonComponent } from './news-card-skeleton/sc-news-card-skeleton.component';\n\n/**\n * Модуль работы с новостями.\n */\n@NgModule({\n declarations: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n imports: [CommonModule, RouterModule, ScShareButtonModule],\n exports: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n})\nexport class ScNewsModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct } from '@snabcentr/client-core';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки элемента заказа.\n */\n@Component({\n selector: 'sc-order-item-mobile',\n templateUrl: './order-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScOrderItemMobileComponent {\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * Элемент заказа.\n */\n @Input()\n public orderItem?: ScCartItem;\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на дополнительные действия.\n */\n @Output()\n public clickActionsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Продукт элемента заказа.\n */\n public get product(): ScProduct | undefined {\n return this.orderItem?.product;\n }\n\n /**\n * Инициирует экземпляр класса {@link ScOrderItemMobileComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef || '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImage(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<div class=\"relative p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"orderItem && product; else skeleton\">\n <button\n tuiIconButton\n (click)=\"clickActionsEvent.emit()\"\n size=\"m\"\n icon=\"scIconVerticalThreeDots\"\n appearance=\"float\"\n tuiMode=\"onLight\"\n class=\"!hidden !absolute right-0 top-0\"\n ></button>\n <div class=\"flex gap-2 grow\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 grow\">\n <div class=\"basis-min-content flex flex-col grow\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs flex flex-col gap-y-0.5\">\n <div class=\"flex flex-wrap gap-y-0.5\">\n <p class=\"w-40\">Артикул: {{ product.code }}</p>\n <p class=\"w-40\" *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n </div>\n <a tuiLink *ngIf=\"orderItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n </div>\n </div>\n <div class=\"flex flex-wrap content-center\">\n <div class=\"flex flex-col w-40 gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\" [fromMain]=\"false\"></sc-price-warehouse-stock>\n </div>\n\n <div class=\"w-40 text-xs text-tui-text-02\">\n <ng-container *ngIf=\"orderItem.height; else length\">\n <p>Высота: {{ orderItem.height }} м.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"orderItem.length\">Длина: {{ orderItem.length }} м.</p>\n </ng-template>\n <p *ngIf=\"orderItem.width\">Ширина: {{ orderItem.width }} м.</p>\n <p class=\"text-tui-base-09 text-sm\">\n Сумма: <span class=\"font-bold whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Компонент статуса оплаты заказа.\n */\n@Component({\n selector: 'sc-payment-status',\n templateUrl: './sc-payment-status.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScPaymentStatusComponent {\n /**\n * Признак того, успешна ли прошла оплата, или нет.\n */\n @Input()\n public status: 'success' | 'error' | null;\n\n /**\n * Номер оплаченного заказа.\n */\n @Input()\n public orderId: string | null;\n\n /**\n * Событие нажатия на кнопку \"Вернуться к списку заказов\".\n */\n @Output()\n public backToOrdersClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"На главную\".\n */\n @Output()\n public backToOrderClick: EventEmitter<void> = new EventEmitter<void>();\n}\n","<ng-container *ngIf=\"status && orderId; else failed\">\n <ng-container [ngSwitch]=\"status\">\n <tui-block-status *ngSwitchCase=\"'success'\">\n <tui-svg src=\"tuiIconCheckCircleLarge\" tuiSlot=\"top\" class=\"scale-[3] !h-20 !text-green-500\"></tui-svg>\n <h4>Спасибо!</h4>\n <br />\n <div class=\"font-bold\">Ваш заказ успешно оплачен. Мы свяжемся с вами в ближайшее время.</div>\n <br />\n <div class=\"font-bold\">\n Номер вашего заказа: <a tuiLink [pseudo]=\"true\" (click)=\"backToOrderClick.emit()\">{{orderId}}</a>\n </div>\n\n <button tuiButton (click)=\"backToOrdersClick.emit()\">Вернуться к заказам</button>\n </tui-block-status>\n <tui-block-status *ngSwitchCase=\"'error'\">\n <tui-svg src=\"tuiIconXCircleLarge\" class=\"scale-[3] !h-20 !text-red-500\" tuiSlot=\"top\"></tui-svg>\n <h4>Оплата не прошла!</h4>\n <br />\n <div class=\"font-bold\">При обработке платежа произошла ошибка.</div>\n <button tuiButton tuiItem (click)=\"backToOrderClick.emit()\">Вернуться к заказу</button>\n </tui-block-status>\n </ng-container>\n</ng-container>\n\n<ng-template #failed>\n <tui-block-status>\n <tui-svg src=\"tuiIconInfoLarge\" class=\"scale-[3] !h-20 !text-yellow-500\" tuiSlot=\"top\"></tui-svg>\n <h4>Что-то пошло не так!</h4>\n <button tuiButton tuiItem (click)=\"backToOrdersClick.emit()\">Вернуться к заказам</button>\n </tui-block-status>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { ScOrderItemMobileComponent } from './order-item-mobile/order-item-mobile.component';\nimport { CommonModule } from '@angular/common';\nimport { TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\nimport { ScPaymentStatusComponent } from './sc-payment-status/sc-payment-status.component';\nimport { TuiBlockStatusModule } from '@taiga-ui/layout';\n\n/**\n * Модуль заказов.\n */\n@NgModule({\n declarations: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n exports: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n imports: [CommonModule, TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule, TuiBlockStatusModule, ScCatalogModule]\n})\nexport class ScOrderModule {}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { ScUser, ScUserService } from '@snabcentr/client-core';\nimport { TuiDestroyService } from '@taiga-ui/cdk';\nimport { Observable, takeUntil } from 'rxjs';\n\n/**\n * Токен потока данных о текущем пользователе.\n */\nexport const SC_USER_INFO = new InjectionToken<Observable<ScUser | undefined>>('A stream with current user information');\n\n/**\n * Фабрика создания потока данных о текущем пользователе.\n *\n * @param userService Сервис информации о пользователе.\n * @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.\n */\nexport function scUserFactory(userService: ScUserService, destroy$: Observable<void>): Observable<ScUser | undefined> {\n //TODO: TASK[#7615] Отслеживать выполнение запроса изменения информации о пользователе после доработки snabcentr-core-lib.\n return userService.getUserChange$().pipe(takeUntil(destroy$));\n}\n\n/**\n * Провайдер потока данных о текущем пользователе.\n */\nexport const SC_USER_PROVIDERS: Provider[] = [\n TuiDestroyService,\n {\n provide: SC_USER_INFO,\n deps: [ScUserService, TuiDestroyService],\n useFactory: scUserFactory\n }\n];\n","import { ChangeDetectionStrategy, Component, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ScIChangePassword, ScUserService } from '@snabcentr/client-core';\nimport { ALWAYS_TRUE_HANDLER, tuiIsFalsy, tuiIsPresent } from '@taiga-ui/cdk';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share, tap } from 'rxjs';\nimport { ApiErrorResponse } from '../../auth';\nimport { scPasswordConfirmMatchingValidator } from '../../validators';\n\n/**\n * Компонент смены пароля пользователя.\n */\n@Component({\n selector: 'sc-reset-user-password',\n templateUrl: './sc-reset-user-password.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScResetUserPasswordComponent {\n /**\n * Форма для изменения пароля пользователя.\n */\n public form = new FormGroup(\n {\n currentPassword: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n password: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n passwordConfirm: new FormControl(null, [Validators.required, Validators.minLength(8)])\n },\n { validators: scPasswordConfirmMatchingValidator('password', 'passwordConfirm') }\n );\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIChangePassword),\n switchMap((value) =>\n this.userService.updateUserInfo$(value).pipe(\n map(() => ({ success: true })),\n tap(() => this.form.reset()),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({ success: false });\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Сигнал события события смены пароля.\n */\n @Output()\n public readonly successResetPassword = this.request$.pipe(\n filter(tuiIsPresent),\n filter(({ success }) => success)\n );\n\n /**\n * Инициализирует экземпляр класса {@link ScResetUserPasswordComponent}.\n *\n * @param userService Сервис информации о пользователе.\n */\n public constructor(private readonly userService: ScUserService) {}\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col lg:flex-row gap-4 p-1\">\n <div class=\"grid gap-2 lg:grid-cols-3 lg:grid-rows-1 lg:gap-4 lg:flex-grow items-start\">\n <label tuiLabel=\"Старый пароль\">\n <tui-input-password formControlName=\"currentPassword\">\n Старый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"currentPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Придумайте новый пароль\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"password\">\n Придумайте новый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"password\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Повторите новый пароль\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"passwordConfirm\">\n Повторите новый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"passwordConfirm\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error *ngIf=\"form.invalid\" class=\"lg:!hidden\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"flex flex-col lg:h-11 lg:mt-5 justify-center\">\n <button *tuiLet=\"!!(loading$ | async) as loading\" tuiButton [showLoader]=\"loading\" type=\"submit\" [disabled]=\"form.invalid || loading\" icon=\"scIconSave\" class=\"font-medium\">\n Сохранить\n </button>\n </div>\n</form>\n<tui-error class=\"!hidden lg:!block\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Optional, Output } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ScIPhoneOnDataApprove, ScISuggestionType, ScIUserOnDataUpdate, ScUser, ScUserService } from '@snabcentr/client-core';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers';\nimport { Observable, Subject, catchError, filter, map, of, skip, startWith, switchMap, tap } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Диалоговое окно изменения данных пользователя.\n */\n@Component({\n selector: 'sc-update-user-info-dialog',\n templateUrl: './sc-update-user-info-dialog.component.html',\n providers: [SC_USER_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScUpdateUserInfoDialogComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Группа полей ввода формы общих данных пользователя для их редактирования.\n */\n public readonly form = new FormGroup({\n name: new FormControl<string | null>(null, [Validators.required, Validators.minLength(3)]),\n email: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n cityId: new FormControl<number | null>(null, Validators.required),\n getNews: new FormControl<boolean>(false)\n });\n\n /**\n * Сигнал нажатия на кнопку \"Отмена\".\n */\n @Output()\n public readonly cancelButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал события успешного обновления данных пользователя.\n */\n @Output()\n public readonly successUpdateDate: Observable<ScUser> = this.user$.pipe(skip(1));\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса обновления данных пользователя.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIUserOnDataUpdate | ScIPhoneOnDataApprove),\n switchMap((value) =>\n this.userService.updateUserInfo$(value).pipe(\n switchMap(() => this.userService.updateUserChange$()),\n tap((user) => this.context?.completeWith(user)),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n return of({} as ScUser);\n }),\n startWith(null)\n )\n )\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScUpdateUserInfoDialogComponent}.\n *\n * @param user$ Поток информации о текущем пользователе.\n * @param userService Сервис информации о пользователе.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly userService: ScUserService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context?: TuiDialogContext<ScUser, ScUpdateUserInfoDialogComponent>\n ) {\n this.user$.subscribe((user) =>\n this.form.patchValue(\n {\n name: user.name,\n email: user.contacts.email.value,\n phone: user.contacts.phone.value,\n cityId: user.city,\n getNews: user.getNews\n },\n { emitEvent: false }\n )\n );\n }\n}\n","<form [formGroup]=\"form\" *ngIf=\"user$ | async as user\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <label [tuiLabel]=\"user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.'\">\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-verification-phone-check-form\n *tuiLet=\"user.contacts.phone.value === form.value.phone as phoneIsChange\"\n [showCodeFields]=\"!phoneIsChange\"\n [shouldBeBusy]=\"phoneIsChange\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label tuiLabel=\"Адрес электронной почты\" class=\"w-full\">\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-addresses-selection-field></sc-addresses-selection-field>\n <tui-checkbox-labeled formControlName=\"getNews\" class=\"w-full\"> Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте. </tui-checkbox-labeled>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">Отмена</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">Сохранить</button>\n </div>\n</form>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ApiErrorResponse } from '../../auth/interfaces/ApiErrorResponse';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share, tap } from 'rxjs';\nimport { ScApprovedData, ScIPhoneOnDataApprove, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers/scUserProviders';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\n\n/**\n * Диалоговое окно подтверждения номера телефона.\n */\n@Component({\n selector: 'sc-user-phone-approve-dialog',\n templateUrl: './sc-user-phone-approve-dialog.component.html',\n providers: [SC_USER_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScUserPhoneApproveDialogComponent {\n /**\n * Наличие кода подтверждения у пользователя.\n */\n public haveCode: boolean = false;\n\n /**\n * Группа полей ввода для подтверждения номера телефона.\n */\n public readonly form = new FormGroup({\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)])\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса подтверждения номера телефона.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIPhoneOnDataApprove),\n switchMap((value) =>\n this.verificationService.approvePhone(value).pipe(\n switchMap(() => this.userService.updateUserChange$()),\n tap((user) => this.context?.completeWith(user.contacts.phone)),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n return of({} as ScUser);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния запроса подтверждения номера телефона..\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScUserPhoneApproveDialogComponent}.\n *\n * @param verificationService Сервис верификации.\n * @param user$ Поток информации о текущем пользователе.\n * @param userService Сервис информации о пользователе.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly verificationService: ScVerificationService,\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly userService: ScUserService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context?: TuiDialogContext<ScApprovedData, ScUserPhoneApproveDialogComponent>\n ) {\n this.user$.pipe(untilDestroyed(this)).subscribe((user) => {\n this.form.patchValue({\n phone: user.contacts.phone.value\n });\n });\n }\n}\n","<ng-container *ngIf=\"user$ | async as user\">\n <form [formGroup]=\"form\" *tuiLet=\"!!(loading$ | async) as loadingApproveCode\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\n <sc-verification-phone-check-form\n [(haveCode)]=\"haveCode\"\n [shouldBeConfirmed]=\"false\"\n [showCodeFields]=\"!user.contacts.phone.isApproved\"\n [readOnly]=\"true\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <div *ngIf=\"user.contacts.phone.isApproved || haveCode\" class=\"flex gap-4 justify-center\">\n <button *ngIf=\"user.contacts.phone.isApproved && context\" tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" appearance=\"secondary\">Закрыть</button>\n <button *ngIf=\"haveCode\" tuiButton type=\"submit\" [showLoader]=\"loadingApproveCode\" [disabled]=\"form.invalid || loadingApproveCode\" icon=\"scIconLogIn\">\n Подтвердить\n </button>\n </div>\n </form>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiCheckboxLabeledModule, TuiCheckboxModule, TuiFieldErrorPipeModule, TuiInputModule, TuiInputPasswordModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/kit';\nimport { TuiButtonModule, TuiDataListModule, TuiErrorModule, TuiLabelModule, TuiLoaderModule, TuiModeModule, TuiTextfieldControllerModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScResetUserPasswordComponent } from './reset-user-password/sc-reset-user-password.component';\nimport { ScUpdateUserInfoDialogComponent } from './update-user-info-dialog/sc-update-user-info-dialog.component';\nimport { ScVerificationModule } from '../verification';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScUserPhoneApproveDialogComponent } from './user-phone-approve-dialog/sc-user-phone-approve-dialog.component';\n\n/**\n * Модуль компонентов пользователя.\n */\n@NgModule({\n declarations: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiFieldErrorPipeModule,\n TuiInputPasswordModule,\n TuiButtonModule,\n TuiErrorModule,\n TuiLabelModule,\n TuiTextfieldControllerModule,\n TuiLetModule,\n ScVerificationModule,\n ScFormFieldsModule,\n TuiLoaderModule,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiCheckboxModule,\n TuiCheckboxLabeledModule,\n TuiDataListModule,\n TuiSelectModule,\n TuiModeModule\n ],\n exports: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent]\n})\nexport class ScUserModule {}\n","import { Component, ChangeDetectionStrategy, Inject, Output, EventEmitter } from '@angular/core';\nimport { ScContragent, ScIBankAccount, ScICity, ScIContact, ScIDeliveryAddress, ScLocationsService, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { Observable, Subject, filter, map, share, skip, startWith, switchMap, tap } from 'rxjs';\nimport { SC_USER_PROVIDERS, SC_USER_INFO } from '../../providers';\nimport { FormControl } from '@angular/forms';\nimport { ALWAYS_TRUE_HANDLER, tuiIsFalsy, tuiIsPresent, tuiPure } from '@taiga-ui/cdk';\nimport { tuiFadeIn } from '@taiga-ui/core';\n\n/**\n * Компонент контента профиля пользователя в виде раскрывающихся смысловых блоков.\n */\n@Component({\n selector: 'sc-profile-accordions-content',\n templateUrl: './sc-profile-accordions-content.component.html',\n providers: [SC_USER_PROVIDERS],\n animations: [tuiFadeIn],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScProfileAccordionsContentComponent {\n /**\n * {@link FormControl} переключателя 'Я хочу получать рассылку'.\n */\n public getNewsControl: FormControl<boolean> = new FormControl<boolean>(false, { nonNullable: true });\n\n /**\n * {@link Observable} запроса изменения признака пользователя 'Я хочу получать рассылку'.\n */\n private readonly getNewsRequest$ = this.getNewsControl.valueChanges.pipe(\n skip(1),\n switchMap((value) =>\n this.userService.updateUserInfo$({ getNews: value }).pipe(\n switchMap(() =>\n this.userService.updateUserChange$().pipe(\n tap((user) => this.getNewsControl.patchValue(user.getNews, { emitEvent: false })),\n startWith(null)\n )\n ),\n startWith(null)\n )\n ),\n\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных изменения признака пользователя 'Я хочу получать рассылку'.\n */\n public readonly getNewsLoading$: Observable<boolean> = this.getNewsRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * {@link Subject} события отправки сообщения для подтверждения адреса электронной почты.\n */\n public readonly onSendApproveEmail: Subject<string> = new Subject<string>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly sendApproveEmailRequest$: Observable<boolean | null> = this.onSendApproveEmail.pipe(\n switchMap((value) => this.verificationService.sendEmailApproveCode(value).pipe(map(ALWAYS_TRUE_HANDLER), startWith(null))),\n startWith(false),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных отправки сообщения для подтверждения адреса электронной почты.\n */\n public readonly approveEmailLoading$: Observable<boolean> = this.sendApproveEmailRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * {@link Observable} изменения состояния признака, отправлено ли сообщение для подтверждения адреса электронной почты.\n */\n public readonly isSendApproveEmail$: Observable<boolean> = this.sendApproveEmailRequest$.pipe(filter(tuiIsPresent));\n\n /**\n * {@link Observable} изменения списка контактных лиц пользователя.\n */\n public readonly userContacts$ = this.userService.getUserContacts$();\n\n /**\n * Событие нажатия на кнопку редактирование профиля пользователя.\n */\n @Output()\n public editProfileClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку подтверждения телефона.\n */\n @Output()\n public approvePhoneClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку добавления контрагента.\n */\n @Output()\n public addContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Событие нажатия на кнопку добавления адреса доставки клиента.\n */\n @Output()\n public addDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки у клиента.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица для адреса доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица клиенту.\n */\n @Output()\n public addUserContactClick: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у клиента.\n */\n @Output()\n public deleteUserContactClick: EventEmitter<ScIContact> = new EventEmitter<ScIContact>();\n\n /**\n * Инициализирует экземпляр класса {@link ScProfileComponent}.\n *\n * @param user$ Поток информации о текущем пользователе.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n * @param userService Сервис информации о пользователе.\n * @param verificationService Сервис верификации.\n */\n public constructor(\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly locationsService: ScLocationsService,\n private readonly userService: ScUserService,\n private readonly verificationService: ScVerificationService\n ) {}\n\n /**\n * Создает запрос получения информации о городе текущего пользователя по идентификатору города.\n *\n * @param cityId Идентификатор записи города.\n */\n @tuiPure // TODO: TASK[#7615] Удалить поле рефакторинга сервиса работы с пользователем.\n public getUserCity$(cityId: number): Observable<ScICity> {\n return this.locationsService.getUserCity$(cityId);\n }\n}\n","<div *tuiLet=\"user$ | async as user\" class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n Общие данные\n <ng-template scAccordionContent>\n <tui-loader [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n <span class=\"font-medium\">{{ user.name }}</span>\n <div *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\" class=\"flex items-center gap-1\">\n <tui-svg src=\"tuiIconMapPin\"></tui-svg>\n <div class=\"flex flex-wrap\">\n <span>г. {{ city.name }}, </span>\n <span *ngIf=\"city.region\">{{ city.region.name }}</span>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhone\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value}}\"\n >{{ user.contacts.phone.value | tuiFormatPhone }}</a\n >\n <span *ngIf=\"!user.contacts.phone.isApproved\" class=\"text-tui-text-03\">\n (Телефон не подтвержден. <button tuiLink [pseudo]=\"true\" (click)=\"approvePhoneClick.emit()\">Подтвердить</button>)\n </span>\n </div>\n <div *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\" class=\"flex flex-wrap gap-x-2\">\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMail\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ user.contacts.email.value }}\">\n {{ user.contacts.email.value }}\n </a>\n <span *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\" class=\"text-tui-text-03 inline-flex flex-wrap gap-1\">\n E-mail не подтвержден.\n <tui-loader [showLoader]=\"!!(approveEmailLoading$ | async)\" [overlay]=\"true\">\n <button tuiLink [pseudo]=\"true\" (click)=\"onSendApproveEmail.next(user.contacts.email.value)\">Подтвердить</button>\n </tui-loader>\n </span>\n <span *ngIf=\"isSendApproveEmail\" class=\"text-tui-success-fill\" @tuiFadeIn>\n Письмо для подтверждения успешно отправлено. Перейдите по ссылке в письме и обновите эту страницу.\n </span>\n </div>\n <tui-loader [showLoader]=\"!!(getNewsLoading$ | async)\" [overlay]=\"true\">\n <tui-checkbox-labeled size=\"m\" class=\"w-full\" [formControl]=\"getNewsControl\" [ngModel]=\"user.getNews\">\n Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте.\n </tui-checkbox-labeled>\n </tui-loader>\n </div>\n\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"editProfileClick.emit()\"></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion\n (addContragentClick)=\"addContragentClick.emit()\"\n (deleteContragentClick)=\"deleteContragentClick.emit($event)\"\n (addContragentBankAccountClick)=\"addContragentBankAccountClick.emit($event)\"\n (deleteContragentBankAccountClick)=\"deleteContragentBankAccountClick.emit($event)\"\n (addContragentContactClick)=\"addContragentContactClick.emit($event)\"\n (deleteContragentContactClick)=\"deleteContragentContactClick.emit($event)\"\n ></sc-contragents-accordion>\n <sc-delivery-address-accordion\n (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"\n (deleteDeliveryAddressClick)=\"deleteDeliveryAddressClick.emit($event)\"\n (addDeliveryAddressContactClick)=\"addDeliveryAddressContactClick.emit($event)\"\n (deleteDeliveryAddressContactClick)=\"deleteDeliveryAddressContactClick.emit($event)\"\n ></sc-delivery-address-accordion>\n <sc-contacts-accordion *ngIf=\"user\" [contacts$]=\"userContacts$\" (addContactClick)=\"addUserContactClick.emit(user.id)\" (deleteButtonClick)=\"deleteUserContactClick.emit($event)\"></sc-contacts-accordion>\n <sc-accordion #passwordAccordion [showArrow]=\"false\" [showAddButton]=\"false\">\n Изменить пароль\n <ng-template scAccordionContent>\n <sc-reset-user-password (successResetPassword)=\"passwordAccordion.close()\"></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TuiButtonModule, TuiFormatPhonePipeModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { CommonModule } from '@angular/common';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScProfileAccordionsContentComponent } from './sc-profile-accordions-content/sc-profile-accordions-content.component';\nimport { ScAccordionModule } from '../accordion';\nimport { ScContragentsModule } from '../contragents';\nimport { ScDeliveryAddressModule } from '../delivery-address';\nimport { ScUserModule } from '../user';\nimport { TuiCheckboxLabeledModule } from '@taiga-ui/kit';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScContactsModule } from '../contacts';\n\n/**\n * Модуль профиля пользователя.\n */\n@NgModule({\n declarations: [ScProfileAccordionsContentComponent],\n imports: [\n CommonModule,\n ScUserModule,\n ScAccordionModule,\n ScContragentsModule,\n ScDeliveryAddressModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiLinkModule,\n TuiModeModule,\n TuiFormatPhonePipeModule,\n TuiCheckboxLabeledModule,\n TuiSvgModule,\n FormsModule,\n ReactiveFormsModule,\n TuiLoaderModule,\n TuiButtonModule,\n ScContactsModule\n ],\n exports: [ScProfileAccordionsContentComponent]\n})\nexport class ScProfileModule {}\n","/*\n * Public API Surface of ui\n */\n\nexport * from './auth';\nexport * from './accordion';\nexport * from './banner';\nexport * from './cart';\nexport * from './catalog';\nexport * from './contragents';\nexport * from './contacts';\nexport * from './delivery-address';\nexport * from './directives';\nexport * from './files';\nexport * from './form-fields';\nexport * from './icons';\nexport * from './loader';\nexport * from './news';\nexport * from './order';\nexport * from './providers';\nexport * from './share-button';\nexport * from './user';\nexport * from './validators';\nexport * from './verification';\nexport * from './profile';\nexport * from './tokens';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5","i7","i6.ScVerificationPhoneCheckFormComponent","i2","i3","i4.ScSignInFormByPhoneComponent","i5.ScSignInFormByEmailComponent","i1","i4","i2.ScPxConverter","i1.UnitsHelper","i4.ScInputQuantityComponent","i5.ScPriceWarehouseStockComponent","i6","i8","i3.ScFavoriteBtnComponent","i7.ScFavoriteBtnComponent","i8.ScInputQuantityComponent","i9.ScPriceWarehouseStockComponent","ScFavoriteButtonComponent","i7.ScSuggestionFieldComponent","i4.ScNewContragentBankAccountsFormComponent","i2.ScSuggestionFieldComponent","i5.ScNewContactFormComponent","i8.ScCarouselItemHiddenDirective","i9.ScNewContragentBankAccountsFormComponent","i10.ScNewContragentFormComponent","i2.ScAccordionComponent","i3.ScAccordionContentDirective","i3.ScAccordionComponent","i4.ScAccordionContentDirective","i7.ScContactsAccordionComponent","i7.ScContragentsAccordionItemComponent","i4.ScNewContactFormComponent","i5.ScSuggestionFieldComponent","i5.ScContactsAccordionComponent","i7.ScDeliveryAddressAccordionItemComponent","i2.TreeIconService","i1.TreeIconService","i6.TreeDirective","i7.TreeTopDirective","i1.ScShareButtonComponent","i4.ScPriceWarehouseStockComponent","i7.ScAddressesSelectionFieldComponent","i8.ScSuggestionFieldComponent","i9","i3.ScResetUserPasswordComponent","i4.ScAccordionComponent","i5.ScAccordionContentDirective","i6.ScContragentsAccordionComponent","i7.ScDeliveryAddressAccordionComponent","i10","i11","i12.ScContactsAccordionComponent"],"mappings":"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"}
1
+ {"version":3,"file":"snabcentr-client-ui.mjs","sources":["../../../projects/client-ui/auth/enums/auth-method.ts","../../../projects/client-ui/masks/sc-account-number-mask.ts","../../../projects/client-ui/masks/sc-bic-mask.ts","../../../projects/client-ui/masks/sc-correspondent-account-mask.ts","../../../projects/client-ui/masks/sc-inn-mask.ts","../../../projects/client-ui/masks/sc-kpp-mask.ts","../../../projects/client-ui/masks/sc-okpo-mask.ts","../../../projects/client-ui/masks/sc-phone-verification-code-mask.ts","../../../projects/client-ui/verification/verification-phone-check-form/sc-verification-phone-check-form.component.ts","../../../projects/client-ui/verification/verification-phone-check-form/sc-verification-phone-check-form.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.html","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form.component.ts","../../../projects/client-ui/auth/sc-sign-in-form/sc-sign-in-form.component.html","../../../projects/client-ui/verification/sc-verification.module.ts","../../../projects/client-ui/auth/sc-auth.module.ts","../../../projects/client-ui/accordion/sc-accordion-content.directive.ts","../../../projects/client-ui/accordion/sc-accordion.component.ts","../../../projects/client-ui/accordion/sc-accordion.component.html","../../../projects/client-ui/accordion/sc-accordion.module.ts","../../../projects/client-ui/helpers/sc-px-converter.ts","../../../projects/client-ui/banner/sc-banner.component.ts","../../../projects/client-ui/banner/sc-banner.component.html","../../../projects/client-ui/banner/sc-banner.module.ts","../../../projects/client-ui/tokens/sc-linear-values-token.ts","../../../projects/client-ui/helpers/sc-units-helper.ts","../../../projects/client-ui/validators/scBicValidator.ts","../../../projects/client-ui/validators/scCorrespondentAccountValidator.ts","../../../projects/client-ui/validators/scPasswordConfirmMatchingValidator.ts","../../../projects/client-ui/validators/stepValidator.ts","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.ts","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.html","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.ts","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.html","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.ts","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.html","../../../projects/client-ui/catalog/categories-list/sc-categories-list.component.ts","../../../projects/client-ui/catalog/categories-list/sc-categories-list.component.html","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.ts","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.html","../../../projects/client-ui/catalog/category-card/sc-category-card.component.ts","../../../projects/client-ui/catalog/category-card/sc-category-card.component.html","../../../projects/client-ui/catalog/price-card/sc-price-card.component.ts","../../../projects/client-ui/catalog/price-card/sc-price-card.component.html","../../../projects/client-ui/catalog/price-history/sc-price-history.component.ts","../../../projects/client-ui/catalog/price-history/sc-price-history.component.html","../../../projects/client-ui/providers/productsPagination.ts","../../../projects/client-ui/catalog/price-list-pagination/sc-price-list-pagination.component.ts","../../../projects/client-ui/catalog/price-list-pagination/sc-price-list-pagination.component.html","../../../projects/client-ui/catalog/sc-catalog.module.ts","../../../projects/client-ui/cart/sc-cart.module.ts","../../../projects/client-ui/form-fields/suggestion-field/sc-suggestion-field.component.ts","../../../projects/client-ui/form-fields/suggestion-field/sc-suggestion-field.component.html","../../../projects/client-ui/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.ts","../../../projects/client-ui/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.html","../../../projects/client-ui/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.ts","../../../projects/client-ui/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.html","../../../projects/client-ui/contacts/new-contact-form/sc-new-contact-form.component.ts","../../../projects/client-ui/contacts/new-contact-form/sc-new-contact-form.component.html","../../../projects/client-ui/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.ts","../../../projects/client-ui/contragents/new-contragent-form/sc-new-contragent-form.component.ts","../../../projects/client-ui/contragents/new-contragent-form/sc-new-contragent-form.component.html","../../../projects/client-ui/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.ts","../../../projects/client-ui/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.html","../../../projects/client-ui/contacts/contacts-accordion/sc-contacts-accordion.component.ts","../../../projects/client-ui/contacts/contacts-accordion/sc-contacts-accordion.component.html","../../../projects/client-ui/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.ts","../../../projects/client-ui/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.html","../../../projects/client-ui/contragents/contragents-accordion/sc-contragents-accordion.component.ts","../../../projects/client-ui/contragents/contragents-accordion/sc-contragents-accordion.component.html","../../../projects/client-ui/form-fields/addresses-selection-field/sc-addresses-selection-field.component.ts","../../../projects/client-ui/form-fields/addresses-selection-field/sc-addresses-selection-field.component.html","../../../projects/client-ui/form-fields/form-fields.module.ts","../../../projects/client-ui/contacts/add-contact-dialog/sc-add-contact-dialog.component.ts","../../../projects/client-ui/contacts/add-contact-dialog/sc-add-contact-dialog.component.html","../../../projects/client-ui/contacts/sc-contacts.module.ts","../../../projects/client-ui/directives/carousel-item-hidden/sc-carousel-item-hidden.module.ts","../../../projects/client-ui/contragents/sc-contragents.module.ts","../../../projects/client-ui/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.ts","../../../projects/client-ui/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.html","../../../projects/client-ui/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.ts","../../../projects/client-ui/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.html","../../../projects/client-ui/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.ts","../../../projects/client-ui/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.html","../../../projects/client-ui/delivery-address/sc-delivery-address.module.ts","../../../projects/client-ui/files/services/tree-icon.service.ts","../../../projects/client-ui/files/services/tree-loader.service.ts","../../../projects/client-ui/files/directives/tree.directive.ts","../../../projects/client-ui/files/file-tree-item/file-tree-item.component.ts","../../../projects/client-ui/files/file-tree-item/file-tree-item.component.html","../../../projects/client-ui/files/directives/tree-top.directive.ts","../../../projects/client-ui/files/files-and-documents/files-and-documents.component.ts","../../../projects/client-ui/files/files-and-documents/files-and-documents.component.html","../../../projects/client-ui/files/files-and-documents.module.ts","../../../projects/client-ui/icons/sc-client-ui-icons-name.ts","../../../projects/client-ui/share-button/sc-share-button.component.ts","../../../projects/client-ui/share-button/sc-share-button.component.html","../../../projects/client-ui/news/news-card/sc-news-card.component.ts","../../../projects/client-ui/news/news-card/sc-news-card.component.html","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.ts","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.html","../../../projects/client-ui/share-button/sc-share-button.module.ts","../../../projects/client-ui/news/sc-news.module.ts","../../../projects/client-ui/order/order-item-mobile/order-item-mobile.component.ts","../../../projects/client-ui/order/order-item-mobile/order-item-mobile.component.html","../../../projects/client-ui/order/sc-payment-status/sc-payment-status.component.ts","../../../projects/client-ui/order/sc-payment-status/sc-payment-status.component.html","../../../projects/client-ui/order/sc-order.module.ts","../../../projects/client-ui/providers/scUserProviders.ts","../../../projects/client-ui/user/reset-user-password/sc-reset-user-password.component.ts","../../../projects/client-ui/user/reset-user-password/sc-reset-user-password.component.html","../../../projects/client-ui/user/update-user-info-dialog/sc-update-user-info-dialog.component.ts","../../../projects/client-ui/user/update-user-info-dialog/sc-update-user-info-dialog.component.html","../../../projects/client-ui/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.ts","../../../projects/client-ui/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.html","../../../projects/client-ui/user/sc-user.module.ts","../../../projects/client-ui/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.ts","../../../projects/client-ui/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.html","../../../projects/client-ui/profile/sc-profile.module.ts","../../../projects/client-ui/public-api.ts","../../../projects/client-ui/snabcentr-client-ui.ts"],"sourcesContent":["/**\n * Перечисление типов аутентификации.\n */\nexport enum AuthMethod {\n /**\n * Аутентификация по номеру телефона и коду подтверждения.\n */\n byPhone = 'by_phone',\n\n /**\n * Аутентификация по логину и паролю.\n */\n byEmail = 'by_email',\n}\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода номера счета.\n */\nexport const scAccountNumberMask = {\n mask: /^\\d{0,20}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода БИК.\n */\nexport const scBicMask = {\n mask: /^\\d{0,9}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода номера корреспондентского счета.\n */\nexport const scCorrespondentAccount = {\n mask: /^\\d{0,20}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода ИНН индивидуального предпринимателя.\n */\nexport const scEntrepreneurInnMask = {\n mask: /^\\d{0,12}$/\n} as MaskitoOptions;\n\n/**\n * Маска поля ввода ИНН юридического лица.\n */\nexport const scLegalInnMask = {\n mask: /^\\d{0,10}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода КПП.\n */\nexport const scKppMask = {\n mask: /^\\d{0,9}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода ОКПО индивидуального предпринимателя.\n */\nexport const scEntrepreneurOkpoMask = {\n mask: /^\\d{0,10}$/\n} as MaskitoOptions;\n\n/**\n * Маска поля ввода ОКПО юридического лица.\n */\nexport const scLegalOkpoMask = {\n mask: /^\\d{0,8}$/\n} as MaskitoOptions;\n","import { MaskitoOptions } from '@maskito/core';\n\n/**\n * Маска поля ввода кода подтверждения телефона.\n */\nexport const scPhoneVerificationCodeMask: MaskitoOptions = {\n mask: /^\\d{0,6}$/\n} as MaskitoOptions;\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormControl, FormGroupDirective } from '@angular/forms';\nimport { MaskitoOptions } from '@maskito/core';\nimport { ScVerificationService } from '@snabcentr/client-core';\nimport { ApiErrorResponse } from '../../auth/interfaces/ApiErrorResponse';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share, tap, finalize, timer, scan, takeWhile, endWith, distinctUntilChanged } from 'rxjs';\nimport { tuiControlValue } from '@taiga-ui/cdk';\nimport { scPhoneVerificationCodeMask } from '../../masks';\n\n/**\n * Компонент формы проверки телефона и получения кода подтверждения.\n */\n@Component({\n selector: 'sc-verification-phone-check-form',\n templateUrl: './sc-verification-phone-check-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScVerificationPhoneCheckFormComponent implements OnInit {\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n private _showCodeFields: boolean = true;\n\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n @Input()\n public set showCodeFields(showCodeFields: boolean) {\n this._showCodeFields = showCodeFields;\n this.form.controls.verificationCode[showCodeFields ? 'enable' : 'disable']();\n }\n\n /**\n * Признак, следует ли отображать функционал кода подтверждения.\n */\n public get showCodeFields(): boolean {\n return this._showCodeFields;\n }\n\n /**\n * Признак, что поле ввода телефона только для чтения.\n */\n @Input()\n public readOnly: boolean = false;\n\n /**\n * Признак, следует ли телефону быть в системе. От этого признака зависит в каких случаях выдавать ошибку при проверки занятости телефона.\n */\n @Input()\n public shouldBeBusy: boolean = true;\n\n /**\n * Признак, следует ли проверять подтверждён ли телефона в системе. При `true` будет вызывать ошибку при наличие телефона в системе без подтверждения.\n */\n @Input()\n public shouldBeConfirmed?: boolean = undefined;\n\n /**\n * Наличие кода подтверждения у пользователя.\n */\n @Input()\n public haveCode: boolean = false;\n\n /**\n * Событие для обратной привязки наличия кода подтверждения\n */\n @Output()\n public haveCodeChange = new EventEmitter<boolean>();\n\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public get form(): FormGroup<{\n phone: FormControl<string | null>;\n verificationCode: FormControl<string | null>;\n }> {\n return this.formGroupDirective?.form as FormGroup<{\n phone: FormControl<string | null>;\n verificationCode: FormControl<string | null>;\n }>;\n }\n\n /**\n * Поле ввода 'Номер телефона'.\n */\n public get phoneControl(): FormControl<string | null> {\n return this.form?.controls.phone;\n }\n\n /**\n * {@link Observable} запроса проверки номера телефона.\n */\n public phoneCheck$?: Observable<boolean | null>;\n\n /**\n * {@link Subject} события отправки кода подтверждения.\n */\n public readonly onSendCode: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных получения кода подтверждения.\n */\n public readonly loadingApproveCode$: Observable<boolean> = this.onSendCode.pipe(\n filter(() => this.phoneControl.valid),\n map(() => this.phoneControl.value as string),\n switchMap((value) =>\n this.verificationService.sendPhoneApproveCode(value).pipe(\n tap(() => this.reloadTimer$.next(60)),\n map(() => false),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n const regex = /(\\d{2}):\\d{2}/;\n const match = errorResponse.message.match(regex);\n\n if (match && match.length > 1) {\n const timeParts = match[0].split(':');\n const seconds = parseInt(timeParts[1], 10);\n\n this.reloadTimer$.next(seconds);\n } else {\n this.phoneControl.setErrors({ serverResponse: errorResponse?.errors?.['phone'] ?? [errorResponse.message] });\n }\n\n return of(false);\n }),\n finalize(() => this.setHaveCode(true)),\n startWith(true)\n )\n ),\n startWith(false),\n share()\n );\n\n /**\n * Маска поля ввода кода для подтверждения.\n */\n public readonly verificationCodeMask: MaskitoOptions = scPhoneVerificationCodeMask;\n\n /**\n * {@link Subject} события запуска/остановки таймера.\n */\n public readonly reloadTimer$: Subject<number> = new Subject<number>();\n\n /**\n * {@link Observable} Таймера.\n *\n * TODO: Вынести таймер в отдельную директиву TASK:[#9260].\n */\n public readonly timer$: Observable<string | null> = this.reloadTimer$.pipe(\n switchMap((sec) =>\n timer(0, 1000).pipe(\n scan((total) => --total, sec),\n takeWhile((total) => total >= 0),\n map((total) => {\n const minutes = Math.floor(total / 60);\n const seconds = total % 60;\n\n return `${Math.round(minutes).toString().padStart(2, '0')}:${Math.round(seconds).toString().padStart(2, '0')}`;\n }),\n endWith(null),\n startWith(null),\n distinctUntilChanged()\n )\n )\n );\n\n /**\n * Инициализирует экземпляр класса {@link ScVerificationPhoneCheckFormComponent}.\n *\n * @param verificationService Сервис верификации.\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n */\n public constructor(\n private readonly verificationService: ScVerificationService,\n @Inject(FormGroupDirective)\n private readonly formGroupDirective?: FormGroupDirective\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.phoneCheck$ = tuiControlValue<string | null>(this.phoneControl).pipe(\n tap(() => this.reloadTimer$.next(0)),\n switchMap((value) => {\n if (this.phoneControl.valid && !!value) {\n return this.verificationService.getPhoneCheck$(value).pipe(\n map((result) => {\n if (this.shouldBeBusy !== result.isBusy) {\n this.phoneControl.setErrors({\n serverResponse: [\n result.isBusy ? 'Пользователь с таким номером телефона уже существует' : 'Пользователя с таким номером телефона не существует'\n ]\n });\n this.phoneControl.markAsTouched();\n\n return false;\n }\n\n if (this.shouldBeConfirmed !== undefined && this.shouldBeConfirmed !== result.isConfirmed) {\n this.phoneControl.setErrors({\n serverResponse: [\n result.isConfirmed\n ? 'Телефон уже подтверждён'\n : 'Номер телефона не подтверждён или вход по нему невозможен. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.'\n ]\n });\n this.phoneControl.markAsTouched();\n\n return false;\n }\n\n return true;\n }),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n this.phoneControl.setErrors({ serverResponse: errorResponse?.errors?.['phone'] ?? [errorResponse.message] });\n return of(false);\n }),\n startWith(null)\n );\n }\n\n this.setHaveCode(false);\n\n return of(false);\n }),\n share()\n );\n\n this.setHaveCode(false);\n }\n\n /**\n * Устанавливает состояние наличия кода подтверждения у пользователя.\n *\n * @param haveCode Признак того есть ли код подтверждения или нет.\n */\n public setHaveCode(haveCode: boolean): void {\n this.haveCode = haveCode;\n this.haveCodeChange.emit(haveCode);\n }\n}\n","<form [formGroup]=\"form\" *tuiLet=\"(loadingApproveCode$ | async) as loadingApproveCode\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"Номер телефона\">\n <tui-input-phone formControlName=\"phone\" [readOnly]=\"readOnly\" [tuiTextfieldCustomContent]=\"checkingPhone\">\n Номер телефона\n <input tuiTextfield autocomplete=\"phone\" />\n </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <ng-container *ngIf=\"showCodeFields && form.enabled\">\n <label *ngIf=\"loadingApproveCode === false && haveCode\" tuiLabel=\"Код из СМС\">\n <tui-input formControlName=\"verificationCode\">\n Код из СМС\n <input tuiTextfield [maskito]=\"verificationCodeMask\" autocomplete=\"new-password\" />\n </tui-input>\n <tui-error formControlName=\"verificationCode\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <div *tuiLet=\"!!loadingApproveCode as loadingApproveCode\" class=\"flex gap-4 justify-center\">\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [showLoader]=\"loadingApproveCode\"\n icon=\"scIconLogIn\"\n >\n Получить код\n </button>\n <button *ngIf=\"!loadingApproveCode && !haveCode\" tuiLink [pseudo]=\"true\" [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\" (click)=\"setHaveCode(true)\">\n У меня есть код\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader *ngIf=\"haveCode\" [showLoader]=\"loadingApproveCode\">\n <button tuiLink [pseudo]=\"true\" [disabled]=\"loadingApproveCode || timer\" (click)=\"onSendCode.next()\">\n Повторно отправить код\n <ng-container *ngIf=\"timer\" class=\"!text-tui-base-08\">(через {{ timer }})</ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\" class=\"w-4 h-4\"> </tui-loader>\n</ng-template>\n","/* eslint-disable @typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IAuthToken, IPhoneLogin, ScAuthService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../interfaces/ApiErrorResponse';\n\n/**\n * Компонент аутентификации по номеру телефона и коду подтверждения.\n */\n@Component({\n selector: 'sc-sign-in-form-by-phone',\n templateUrl: './sc-sign-in-form-by-phone.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormByPhoneComponent {\n /**\n * Наличие кода подтверждения у пользователя.\n */\n public haveCode: boolean = false;\n\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public readonly form = new FormGroup({\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly request$: Observable<IAuthToken | null> = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is IPhoneLogin => this.form.valid),\n switchMap((value) =>\n this.authService.getSignIn$(value).pipe(\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[key] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({} as IAuthToken);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormByPhoneComponent}.\n *\n * @param authService Сервис аутентификации.\n */\n public constructor(private readonly authService: ScAuthService) {}\n}\n","<form [formGroup]=\"form\" *tuiLet=\"!!(loading$ | async) as loading\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4 items-center mb-4\">\n <sc-verification-phone-check-form [(haveCode)]=\"haveCode\" [shouldBeBusy]=\"true\" [shouldBeConfirmed]=\"true\" class=\"w-full\"></sc-verification-phone-check-form>\n <button *ngIf=\"haveCode\" tuiButton type=\"submit\" [showLoader]=\"loading\" [disabled]=\"form.invalid || loading\" icon=\"scIconLogIn\">Войти</button>\n</form>\n","/* eslint-disable @typescript-eslint/unbound-method */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { IAuthToken, ILogin, ScAuthService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { catchError, filter, map, Observable, of, share, startWith, Subject, switchMap } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../interfaces/ApiErrorResponse';\n\n/**\n * Компонент аутентификации по адресу электронной почты и паролю.\n */\n@Component({\n selector: 'sc-sign-in-form-by-email',\n templateUrl: './sc-sign-in-form-by-email.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormByEmailComponent {\n /**\n * Группа полей ввода для формы «Вход на сайт».\n */\n public readonly formByEmail: FormGroup = new FormGroup({\n login: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n password: new FormControl<string | null>(null, Validators.required),\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly emailRequest$: Observable<IAuthToken | null> = this.onSubmit.pipe(\n filter(() => this.formByEmail.valid),\n map(() => this.formByEmail.value as ILogin),\n switchMap((value) =>\n this.authService.getSignIn$(value).pipe(\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.formByEmail.get(key)?.setErrors({ serverResponse: errorResponse.errors[key] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.formByEmail.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({} as IAuthToken);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loadingEmailAuth$: Observable<boolean> = this.emailRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * Сигнал нажатия на кнопку \"Забыли пароль\".\n */\n @Output() public readonly forgotPassword: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormByEmailComponent}.\n *\n * @param authService Сервис аутентификации.\n */\n public constructor(private readonly authService: ScAuthService) {}\n}\n","<form [formGroup]=\"formByEmail\" (ngSubmit)=\"onSubmit.next()\">\n <div class=\"flex flex-col gap-4 mb-8\">\n <label tuiLabel=\"Адрес электронной почты\">\n <tui-input formControlName=\"login\">\n Адрес электронной почты\n <input tuiTextfield autocomplete=\"email\" />\n </tui-input>\n <tui-error formControlName=\"login\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Пароль\">\n <tui-input-password formControlName=\"password\">\n Пароль\n <input tuiTextfield autocomplete=\"current-password\" />\n </tui-input-password>\n <tui-error formControlName=\"password\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"flex flex-col gap-4 items-center mb-4\">\n <a tuiLink [pseudo]=\"true\" (click)=\"forgotPassword.emit()\" class=\"text-base\">Забыли пароль?</a>\n <button tuiButton type=\"submit\" [showLoader]=\"!!(loadingEmailAuth$ | async)\" [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\" icon=\"scIconLogIn\">\n Войти\n </button>\n </div>\n</form>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ScAuthService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { filter, Observable } from 'rxjs';\n\nimport { AuthMethod } from '../enums/auth-method';\n\n/**\n * Компонент аутентификации пользователя.\n */\n@Component({\n selector: 'sc-sign-in-form',\n templateUrl: './sc-sign-in-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSignInFormComponent implements OnInit {\n /**\n * Выбранный способ аутентификации.\n */\n @Input() public authMethod: AuthMethod = AuthMethod.byEmail;\n\n /**\n * Перечисление способов аутентификации.\n */\n public method: typeof AuthMethod = AuthMethod;\n\n /**\n * Сигнал нажатия на кнопку \"Забыли пароль\".\n */\n @Output() public readonly forgotPassword: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал нажатия на кнопку \"Зарегистрироваться\".\n */\n @Output() public readonly signUp: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал события аутентификации.\n */\n @Output() public readonly successAuth: Observable<boolean> = this.authService.getAuthChange().pipe(filter((state) => state));\n\n /**\n * Инициализирует экземпляр класса {@link ScSignInFormComponent}.\n *\n * @param authService Сервис аутентификации.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly authService: ScAuthService,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.signInShow,\n params: {\n type: this.authMethod,\n },\n });\n }\n\n /**\n * Осуществляет переключение способов аутентификации.\n *\n * @param authMethod Выбранный способ аутентификации.\n */\n public switchAuth(authMethod: AuthMethod): void {\n this.authMethod = authMethod;\n\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.signInShow,\n params: {\n type: authMethod,\n },\n });\n }\n\n /**\n * Обрабатывает нажатие на кнопку \"Забыли пароль\" и выдает сигнал об этом.\n */\n public onForgotPassword(): void {\n this.forgotPassword.emit();\n }\n}\n","<div class=\"mb-4 flex justify-center\">\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_phone' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n По телефону\n </button>\n\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_email' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n По e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email\n *ngIf=\"authMethod === 'by_email'\"\n (forgotPassword)=\"onForgotPassword()\"\n></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col items-center gap-4\">\n <span class=\"font-medium text-tui-text-02\">Еще не зарегистрированы?</span>\n <button\n tuiButton\n tuiMode=\"onLight\"\n (click)=\"signUp.emit()\"\n type=\"button\"\n icon=\"scIconAddProfile\"\n appearance=\"secondary\"\n >\n Зарегистрироваться\n </button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ScVerificationPhoneCheckFormComponent } from './verification-phone-check-form/sc-verification-phone-check-form.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoModule } from '@maskito/angular';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule } from '@taiga-ui/core';\nimport { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule } from '@taiga-ui/kit';\n\n/**\n * Модуль отправки кодов подтверждения (номера телефона, адреса эл. почты и т.д.).\n */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLinkModule,\n TuiButtonModule,\n TuiLabelModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiLetModule,\n TuiLoaderModule,\n TuiInputPhoneModule,\n MaskitoModule\n ],\n exports: [ScVerificationPhoneCheckFormComponent],\n declarations: [ScVerificationPhoneCheckFormComponent]\n})\nexport class ScVerificationModule {}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaskitoModule } from '@maskito/angular';\nimport { NgModule } from '@angular/core';\nimport { ScSignInFormComponent } from '.';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule } from '@taiga-ui/core';\nimport { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule } from '@taiga-ui/kit';\nimport { ScSignInFormByPhoneComponent } from './sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component';\nimport { ScSignInFormByEmailComponent } from './sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component';\nimport { ScVerificationModule } from '../verification';\n\n/**\n * Модуль аутентификации.\n */\n@NgModule({\n declarations: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputPasswordModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLinkModule,\n TuiButtonModule,\n TuiLabelModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiLetModule,\n TuiLoaderModule,\n TuiInputPhoneModule,\n MaskitoModule,\n ScVerificationModule\n ],\n exports: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent]\n})\nexport class ScAuthModule {}\n","import { Directive } from '@angular/core';\nimport { PolymorpheusTemplate } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Директива содержимого компонента, позволяющего отображать и скрывать содержимое в разделах.\n */\n@Directive({\n selector: 'ng-template[scAccordionContent]'\n})\nexport class ScAccordionContentDirective extends PolymorpheusTemplate<Record<string, unknown>> {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\nimport { TuiSizeS } from '@taiga-ui/core';\nimport { TuiAccordionItemComponent } from '@taiga-ui/kit';\n\n/**\n * Компонент, позволяющий отображать и скрывать содержимое в разделах.\n */\n@Component({\n selector: 'sc-accordion',\n templateUrl: './sc-accordion.component.html',\n styleUrls: ['./sc-accordion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScAccordionComponent {\n /**\n * Состояние отображения кнопки добавления.\n */\n @Input()\n @HostBinding('class._has-add-button')\n public showAddButton = true;\n\n /**\n * Состояние отображения кнопки удаления.\n */\n @Input()\n @HostBinding('class._has-delete-button')\n public showDeleteButton: boolean = false;\n\n /**\n * Состояние отображения стрелки.\n */\n @Input()\n @HostBinding('class._has-arrow')\n public showArrow: boolean = true;\n\n /**\n * Состояние открытия содержимого компонента.\n */\n @Input()\n public open: boolean = false;\n\n /**\n * Размер элементов {@link TuiAccordionItemComponent}.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 's';\n\n /**\n * Дочерний элемент контента.\n */\n @ContentChild(ScAccordionContentDirective)\n protected readonly content?: ScAccordionContentDirective;\n\n /**\n * Ссылка на шаблон превью-просмотра в разметке.\n */\n @ViewChild(TuiAccordionItemComponent)\n public readonly accordion?: TuiAccordionItemComponent;\n\n /**\n * Событие нажатия на кнопку добавления.\n */\n @Output()\n public addButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления.\n */\n @Output()\n public deleteButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Закрывает акордион.\n */\n public close(): void {\n this.accordion?.close();\n }\n}\n","<tui-accordion [rounded]=\"false\">\n <tui-accordion-item #accordion [size]=\"size\" [borders]=\"null\" [showArrow]=\"showArrow\" [open]=\"open\">\n <div class=\"flex grow justify-between\">\n <div class=\"font-bold self-center\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showAddButton || showDeleteButton\" class=\"flex\">\n <ng-container *ngIf=\"showDeleteButton\">\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconTrash2Large\" appearance=\"flat\" (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"></button>\n </ng-container>\n <ng-container *ngIf=\"showAddButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconPlusLarge\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n ></button>\n </ng-container>\n </div>\n </div>\n <ng-template tuiAccordionItemContent>\n <tui-elastic-container *ngIf=\"content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </tui-elastic-container>\n </ng-template>\n </tui-accordion-item>\n</tui-accordion>\n","import { NgModule } from '@angular/core';\nimport { TuiButtonModule, TuiModeModule } from '@taiga-ui/core';\nimport { TuiAccordionModule, TuiElasticContainerModule } from '@taiga-ui/kit';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\nimport { ScAccordionContentDirective } from './sc-accordion-content.directive';\nimport { ScAccordionComponent } from './sc-accordion.component';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScAccordionComponent, ScAccordionContentDirective],\n imports: [CommonModule, PolymorpheusModule, TuiButtonModule, TuiAccordionModule, TuiModeModule, TuiElasticContainerModule],\n exports: [ScAccordionComponent, ScAccordionContentDirective]\n})\nexport class ScAccordionModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Класс-помощник для конвертации пикселей.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ScPxConverter {\n private rootFontSize = 16;\n\n /**\n * Конвертирует пиксели в rem.\n *\n * @param px Значение которое необходимо конвертировать.\n */\n public pxToRem(px: number): number {\n return px / this.rootFontSize;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { IntersectionObserverService } from '@ng-web-apis/intersection-observer';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ScBanner, ScBannerService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';\nimport { tuiFadeIn } from '@taiga-ui/core';\nimport { filter, interval, map, Observable, shareReplay, Subject, switchMap, takeUntil, tap } from 'rxjs';\n\nimport { ScPxConverter } from '../helpers';\n\n/**\n * Баннер с прокруткой переданных {@link TemplateRef} элементов, и баннеров локации.\n */\n@Component({\n selector: 'sc-banner',\n templateUrl: './sc-banner.component.html',\n styleUrls: ['./sc-banner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [IntersectionObserverService],\n animations: [tuiFadeIn],\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScBannerComponent implements AfterViewInit {\n /**\n * Признак, что необходимо показывать кнопки навигации.\n */\n @Input()\n public navigateButton: boolean = true;\n\n /**\n * Интервал показа слайдов в миллисекундах.\n */\n @Input()\n public playerInterval: number = 5000;\n\n /**\n * Признак, что прокрутка выключена.\n */\n @Input()\n public disabled: boolean = false;\n\n /**\n * Местоположение баннера.\n */\n @Input()\n public bannerLocation?: string;\n\n /**\n * Признак, что компонент должен растягиваться.\n */\n @Input()\n public resizable: boolean = true;\n\n /**\n * Событие загрузки баннеров с количеством полученных баннеров.\n */\n @Output()\n public loadBannersEvent: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на изображение баннера.\n */\n @Output()\n public clickBannerEvent: EventEmitter<ScBanner> = new EventEmitter<ScBanner>();\n\n /**\n * Список ссылок на элемент представлений шаблонов.\n */\n @ContentChildren('banner')\n public bannersListRef: QueryList<TemplateRef<any>>;\n\n /**\n * Ссылка на {@link HTMLVideoElement} элемента отображения видео.\n */\n @ViewChild('videoPlayer')\n private videoRef: ElementRef<HTMLVideoElement>;\n\n /**\n * Идентификатор текущего баннера.\n */\n public currentBannerId: number = 0;\n\n /**\n * {@link Subject} изменения состояния таймера.\n */\n public readonly toggleTimer$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * Признак, что необходимо показывать кнопки старта видео баннера.\n */\n public showPlayBtn: boolean = false;\n\n /**\n * {@link Observable} обновления списка баннеров.\n */\n public readonly banners$: Observable<ScBanner[]> = this.bannerService.banners$.pipe(\n map((banners) => banners.filter((banner) => banner.location === this.bannerLocation).reverse()),\n tap((banners) => {\n if (banners.length > 0) {\n if (this.resizable) {\n this.width = '100%';\n } else {\n this.height = `${this.pxConverter.pxToRem(banners[0].height)}rem`;\n this.width = `${this.pxConverter.pxToRem(banners[0].width)}rem`;\n }\n\n this.aspectRatio = `${banners[0].width} / ${banners[0].height}`;\n this.banners = banners;\n this.toggleTimer$.next(true);\n }\n\n this.loadBannersEvent.emit(banners.length);\n }),\n shareReplay(1)\n );\n\n /**\n * Список баннеров.\n */\n public banners?: ScBanner[] = [];\n\n /**\n * Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.\n */\n @HostBinding('class.!hidden')\n private get isHidden(): boolean {\n return !this.banners || this.bannersListRef.length + this.banners.length === 0;\n }\n\n /**\n * Свойство, от которого зависит высота `:host` компонента.\n */\n @HostBinding('style.height')\n public height: string = 'auto';\n\n /**\n * Свойство, от которого зависит ширина `:host` компонента.\n */\n @HostBinding('style.width')\n public width: string = '';\n\n /**\n * Свойство, от которого зависит соотношение `:host` компонента.\n */\n @HostBinding('style.aspect-ratio')\n public aspectRatio: string = '';\n\n /**\n * Обработчик события mouseenter.\n */\n @HostListener('mouseenter')\n private mouseEnterHandler: () => void = () => {\n this.toggleTimer$.next(false);\n };\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler: () => void = () => {\n this.toggleTimer$.next(true);\n };\n\n /**\n * Инициализирует экземпляр класса {@link ScBannerComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n * @param bannerService Сервис для работы с баннерами.\n * @param entries$\n * @param element Элемент баннера.\n * @param pxConverter Экземпляр класса-помощника для конвертации пикселей.\n * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.\n */\n public constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly bannerService: ScBannerService,\n @Inject(IntersectionObserverService) private readonly entries$: IntersectionObserverService,\n @Inject(ElementRef) private readonly element: ElementRef<Element>,\n private pxConverter: ScPxConverter,\n private readonly userMetrikaService: ScUserMetrikaService\n ) {}\n\n /** @inheritDoc */\n public ngAfterViewInit(): void {\n this.toggleTimer$\n .pipe(\n filter((toggle) => toggle),\n switchMap(() => interval(this.playerInterval).pipe(takeUntil(this.toggleTimer$))),\n filter(() => !this.disabled && (this.banners?.[this.currentBannerId]?.mediaType === 'image' || this.showPlayBtn)),\n untilDestroyed(this)\n )\n .subscribe(() => {\n this.onNextBanner();\n });\n\n // Отслеживание пересечения компонента с экраном пользователя.\n // Если баннера не находится в поле видимости пользователя, то он перестаёт переключаться, а видео останавливается.\n this.entries$.pipe(map((entries) => entries.find((item) => item.target === this.element.nativeElement))).subscribe((entry) => {\n this.toggleTimer$.next(!!entry?.isIntersecting);\n });\n }\n\n /**\n * Переключает на предыдущий баннер.\n */\n public onPreviousBanner(): void {\n const previous: number = this.currentBannerId - 1;\n this.currentBannerId = previous < 0 ? this.bannersListRef.length + (this.banners?.length ?? 0) - 1 : previous;\n\n this.cdr.markForCheck();\n }\n\n /**\n * Переключает на следующий баннер.\n */\n public onNextBanner(): void {\n const next: number = this.currentBannerId + 1;\n this.currentBannerId = next === this.bannersListRef.length + (this.banners?.length ?? 0) ? 0 : next;\n\n this.cdr.markForCheck();\n }\n\n /**\n * Переключает на следующий баннер.\n */\n public onEndedVideo(): void {\n this.onNextBanner();\n this.toggleTimer$.next(true);\n this.showPlayBtn = true;\n }\n\n /**\n * Обработчик нажатия на баннер, генерирующий событие {@link clickBannerImgEvent}.\n *\n * @param banner Баннер, по ссылке которого совершён переход.\n */\n public onClick(banner: ScBanner): void {\n this.userMetrikaService.emitUserMetrikaEvent({\n target: ScUserMetrikaGoalsEnum.bannerClick,\n params: {\n banner_id: banner.id,\n },\n });\n\n if (banner.url) {\n this.clickBannerEvent.emit(banner);\n }\n }\n}\n","<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel class=\"bg-white w-full h-full shadow-sc-2 rounded-xl overflow-hidden\" [(index)]=\"currentBannerId\">\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n target=\"_blank\"\n [title]=\"banner.title\"\n class=\"relative\"\n >\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'video'\">\n <video\n #videoPlayer\n (suspend)=\"showPlayBtn = true\"\n (play)=\"showPlayBtn = false\"\n [src]=\"banner.mediaFile\"\n (ended)=\"onEndedVideo()\"\n (mouseover)=\"videoPlayer.pause()\"\n (mouseout)=\"videoPlayer.play()\"\n class=\"object-cover h-full\"\n muted\n autoplay\n ></video>\n <button\n *ngIf=\"showPlayBtn\"\n tuiIconButton\n [@tuiFadeIn]=\"200\"\n matRipple\n (click)=\"$event.preventDefault(); videoPlayer.play()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute left-8 bottom-4\"\n >\n <i class=\"icon-refresh text-black\"></i>\n </button>\n </ng-container>\n\n <img *ngSwitchCase=\"'image'\" [src]=\"banner.mediaFile\" alt=\"Баннер\" class=\"object-cover h-full\" />\n </ng-container>\n </a>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div *tuiItem [style.height]=\"height\" [style.width]=\"width\" [style.aspect-ratio]=\"aspectRatio\" class=\"overflow-hidden\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n</ng-container>\n<div *ngIf=\"navigateButton && !disabled && this.banners && (this.bannersListRef.length + this.banners.length) > 1\" tuiMode=\"onLight\" class=\"flex items-center\">\n <button tuiIconButton icon=\"tuiIconChevronLeftLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onPreviousBanner()\" class=\"!absolute left-2\"></button>\n <button tuiIconButton icon=\"tuiIconChevronRightLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onNextBanner()\" class=\"!absolute right-2\"></button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { IntersectionObserverModule } from '@ng-web-apis/intersection-observer';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiButtonModule, TuiLoaderModule, TuiModeModule } from '@taiga-ui/core';\nimport { TuiCarouselModule } from '@taiga-ui/kit';\n\nimport { ScBannerComponent } from './sc-banner.component';\n\n/**\n * Модуль баннеров.\n */\n@NgModule({\n declarations: [ScBannerComponent],\n imports: [CommonModule, RouterModule, TuiButtonModule, TuiCarouselModule, TuiModeModule, TuiLoaderModule, IntersectionObserverModule, TuiLetModule],\n exports: [ScBannerComponent],\n})\nexport class ScBannerModule {}\n","import { tuiCreateToken } from '@taiga-ui/cdk';\n\n/**\n * Единицы измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES: string[] = ['пог.м.', 'м.', 'м2'];\n\n/**\n * Токен единиц измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES_TOKEN = tuiCreateToken(SC_LINEAR_VALUES);\n","import { Inject, Injectable } from '@angular/core';\nimport { ScProduct } from '@snabcentr/client-core';\nimport { SC_LINEAR_VALUES_TOKEN } from '../tokens';\n\n/**\n * Класс хэлпер для работы со значениями единиц измерения товара.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class UnitsHelper {\n /**\n * Инициирует экземпляр класса {@link UnitsHelper}.\n *\n * @param linearValues Единицы измерения линейной величины.\n */\n public constructor(@Inject(SC_LINEAR_VALUES_TOKEN) public readonly linearValues: string[]) {}\n\n /**\n * Возвращает признак возможности продажи товара на метраж.\n *\n * @param linearValues Товар для которого нужно проверить возможность продажи на метраж.\n */\n public productIsMeasurable(product: ScProduct): boolean {\n return this.linearValues.includes(product.unit);\n }\n\n /**\n * Возвращает кратность количества для товара.\n *\n * @param linearValues Товар для которого нужно вернуть кратность количества.\n */\n public productMultiplicity(product: ScProduct): number {\n return product && product.minCount && !this.linearValues.includes(product.unit) ? product.minCount : 1;\n }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет БИК.\n */\nexport const scBicValidator: ValidatorFn = ({ value }: AbstractControl<string | null>): ValidationErrors | null => {\n return !value || /^0[1,4]\\d{7}$/.test(value) ? null : { bic: true };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет корреспондентский счет.\n */\nexport const scCorrespondentAccountValidator: ValidatorFn = ({ value }: AbstractControl<string | null>): ValidationErrors | null => {\n return !value || /^[3,4]01\\d{17}$|^03\\d{18}$/.test(value) ? null : { correspondentAccount: true };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Проверяет повторный ввод пароля на эквивалентность паролю.\n *\n * @param passwordKey Ключ поля ввода пароля.\n * @param passwordKey Ключ поля повторного ввода пароля.\n */\nexport function scPasswordConfirmMatchingValidator(passwordKey: string, passwordConfirmKey: string): ValidatorFn | null {\n return (control: AbstractControl): ValidationErrors | null => {\n const passwordInput: AbstractControl<string | null> | null = control.get(passwordKey);\n const passwordConfirmInput: AbstractControl<string | null> | null = control.get(passwordConfirmKey);\n\n if (!passwordInput || !passwordConfirmInput || passwordInput.invalid || passwordConfirmInput.invalid || !passwordInput.value || !passwordConfirmInput.value) {\n return null;\n }\n\n return passwordInput?.value !== passwordConfirmInput?.value ? { passwordNotEquivalent: true } : null;\n };\n}\n","import { AbstractControl, ValidatorFn, ValidationErrors } from '@angular/forms';\n\n/**\n * Проверяет кратность значения.\n *\n * @param step Шаг кратности.\n * @param precision Точность, количество чисел после запятой.\n */\nexport function stepValidator(step: number, precision: number = 3): ValidatorFn {\n return ({ value }: AbstractControl<number | null>): ValidationErrors | null => {\n if (!step) {\n return null;\n }\n\n if (value) {\n return Number((value / step).toFixed(precision)) % 1 !== 0 ? { error: `Число не кратно ${step}` } : null;\n }\n\n return null;\n };\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { FormControl, NgControl } from '@angular/forms';\nimport { stepValidator } from '../../validators';\nimport { TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent } from '@taiga-ui/kit';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { TuiLoaderComponent, TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\nimport { AbstractTuiNullableControl, AbstractTuiValueTransformer } from '@taiga-ui/cdk';\n\n/**\n * Компонент поля ввода количества.\n */\n@Component({\n selector: 'sc-input-quantity',\n templateUrl: './sc-input-quantity.component.html',\n styleUrls: ['./sc-input-quantity.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScInputQuantityComponent extends AbstractTuiNullableControl<number> implements OnInit {\n /**\n * Компонент поля ввода.\n */\n @ViewChild(TuiInputNumberComponent)\n private readonly numberInput: TuiInputNumberComponent;\n\n /**\n * Шаг увеличения количества. Отвечает за проверку кратности ввода.\n */\n @Input()\n public step: number = 1;\n\n /**\n * Признак, что необходимо отобразить {@link TuiLoaderComponent} над компонентом.\n */\n @Input()\n public showLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить кнопку очистки поля ввода.\n */\n @Input()\n public showCross: boolean = true;\n\n /**\n * Формат внешнего вида компонента.\n */\n @Input()\n @HostBinding('attr.data-appearance')\n public appearance: 'primary' | 'secondary' = 'primary';\n\n /**\n * Признак, что компонент деактивирован.\n */\n @Input()\n @HostBinding('attr.data-disabled')\n public isDisabled: boolean = false;\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие нажатия на кнопку \"Очистить\".\n */\n @Output()\n public clickClearEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Возвращает элемент, который может быть сфокусирован.\n */\n public get nativeFocusableElement(): HTMLInputElement | null {\n return this.numberInput.nativeFocusableElement;\n }\n\n /**\n * Инициализирует экземпляр класса {@link ScInputQuantityComponent}.\n *\n * @param ngControl Объект поля ввода для настройки валидации.\n * @param cdr Объект для работы с обнаружением изменений.\n * @param transformer Преобразователь значений элемента формы.\n */\n public constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n ngControl: NgControl | null,\n @Inject(ChangeDetectorRef)\n cdr: ChangeDetectorRef,\n @Optional()\n @Inject(TUI_NUMBER_VALUE_TRANSFORMER)\n transformer: AbstractTuiValueTransformer<number | null>\n ) {\n super(ngControl, cdr, transformer);\n }\n\n public get focused(): boolean {\n return !!this.numberInput?.focused;\n }\n\n public get formControl(): FormControl<any> | null {\n return this.control as FormControl<any> | null;\n }\n\n /** @inheritDoc */\n public override ngOnInit(): void {\n if (this.control) {\n this.control.setValidators(stepValidator(this.step));\n }\n }\n\n /**\n * Обработчик события нажатия стрелок клавиатуры.\n *\n * @param step Шаг изменения количества.\n */\n @HostListener('keydown.arrowDown', ['-step'])\n @HostListener('keydown.arrowUp', ['step'])\n public onArrow(step: number | null): void {\n if (!step) {\n return;\n }\n\n if (step > 0) {\n this.incident();\n } else {\n this.decrement();\n }\n }\n\n /**\n * Увеличивает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то увеличит до ближайшего кратного значения.\n */\n public incident(): void {\n this.numberInput.onArrow(this.step - ((this.numberInput.value || 0) % this.step));\n this.numberInput.nativeFocusableElement?.blur();\n }\n\n /**\n * Уменьшает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то уменьшит до ближайшего кратного значения.\n */\n public decrement(): void {\n this.numberInput.onArrow(-((this.numberInput.value || 0) % this.step) || -this.step);\n this.numberInput.nativeFocusableElement?.blur();\n }\n\n /**\n * Очищает поля ввода.\n */\n public clear(): void {\n this.control?.patchValue(null);\n this.clickClearEvent.emit();\n }\n}\n","<tui-loader *ngIf=\"formControl\" class=\"w-full\" [overlay]=\"true\" [showLoader]=\"showLoader\" [size]=\"size\">\n <div class=\"flex items-center text-center gap-1\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput.canDecrement\"\n [focusable]=\"false\"\n [size]=\"size\"\n (click.prevent)=\"decrement()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconMinusLarge\"></tui-svg>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async )?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n (focusin)=\"$any($event.target).select()\"\n oncontextmenu=\"return false;\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"incident()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconPlusLarge\"></tui-svg>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"clear()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconCloseLarge\"></tui-svg>\n </button>\n </div>\n</tui-loader>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { ScIWarehouseStockCount, ScProduct, ScIWarehouse, ScWarehouseService } from '@snabcentr/client-core';\nimport { Observable, map, switchMap } from 'rxjs';\n\n/**\n * Компонент информации о наличии товара на складе.\n */\n@Component({\n selector: 'sc-price-warehouse-stock',\n templateUrl: './sc-price-warehouse-stock.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['sc-price-warehouse-stock.component.scss']\n})\nexport class ScPriceWarehouseStockComponent implements OnInit {\n /**\n * Строка классов для свойств статусов.\n */\n @Input() public classList: string;\n\n /**\n * Информация о товаре/услуге.\n */\n @Input() public product: ScProduct;\n\n /**\n * Признак, что необходимо отобразить подсказку по складам.\n */\n @Input() public withStockHint: boolean = true;\n\n /**\n * Признак, что необходимо отобразить список остатков по складам при выбранном основном складе.\n */\n @Input() public fromMain: boolean = true;\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public selectedWarehouse$: Observable<ScIWarehouse | null>;\n\n /**\n * {@link Observable} изменения списка складов.\n */\n public warehousesList$?: Observable<{ sc: ScIWarehouseStockCount; w: ScIWarehouse | undefined }[] | undefined>;\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceWarehouseStockComponent}.\n *\n * @param warehouseService Сервис для работы со складами.\n */\n public constructor(private readonly warehouseService: ScWarehouseService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.selectedWarehouse$ = this.fromMain ? this.warehouseService.getCatalogWarehouseChange$() : this.warehouseService.getWarehouseSelectChange$();\n\n this.warehousesList$ = this.selectedWarehouse$.pipe(\n switchMap((warehouse) =>\n this.warehouseService.getWarehouses$().pipe(\n map((warehouses: ScIWarehouse[]) => this.product.stockCount?.map((sc) => ({ w: warehouses.find((w) => w.id === sc.warehouseId), sc: sc }))),\n map((items) => items?.sort((item) => (item.w?.id === warehouse?.id ? -1 : 1)))\n )\n )\n );\n }\n}\n","<ng-container *ngIf=\"product\">\n <ng-container>\n <div *ngIf=\"selectedWarehouse$ | async as warehouseSelect\" class=\"flex items-center gap-1\">\n <span *ngIf=\"product.getNotStockMessage(warehouseSelect) as message\" class=\"text-xs min-w-2/5 text-tui-error-fill\" [ngClass]=\"classList\"> {{ message }} </span>\n <span *ngIf=\"product.isWarehouseStockExist(warehouseSelect.id)\" class=\"text-xs min-w-2/5 text-tui-success-fill\" [ngClass]=\"classList\">\n В наличии<ng-container *ngIf=\"product.getWarehouseStockCount(warehouseSelect.id) as count\"\n >:\n <span class=\"whitespace-nowrap\">{{ count }} {{ product.quantityUnit }}</span>\n </ng-container>\n </span>\n <span *ngIf=\"product.onOrder\" class=\"text-xs min-w-2/5 text-sc-yellow\" [ngClass]=\"classList\">Под заказ</span>\n\n <tui-svg\n *ngIf=\"withStockHint && (warehousesList$ | async)?.length\"\n src=\"tuiIconInfoLarge\"\n [tuiHint]=\"stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!text-xs !h-3\"\n ></tui-svg>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template #stockHint>\n <table *ngIf=\"selectedWarehouse$ | async as warehouseSelect\" class=\"text-xs table-auto\" [ngClass]=\"classList\">\n <tbody>\n <tr *ngFor=\"let item of warehousesList$ | async\" class=\"border-b\">\n <ng-container>\n <td class=\"px-1\">{{ item.w?.name }}:</td>\n <td class=\"px-1\">{{ item.sc.count ? item.sc.count + ' ' + product.quantityUnit : 'В наличии' }}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct } from '@snabcentr/client-core';\nimport { Observable, skip } from 'rxjs';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки элемента корзины.\n */\n@Component({\n selector: 'sc-cart-item-mobile',\n templateUrl: './sc-cart-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScCartItemMobileComponent implements OnInit {\n /**\n * Элемент корзины.\n */\n private _cartItem?: ScCartItem;\n\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(0, { updateOn: 'blur' });\n\n /**\n * Элемент корзины.\n */\n @Input()\n public set cartItem(data: ScCartItem | undefined) {\n this._cartItem = data;\n\n if (data) {\n this.quantityControl.patchValue(data.quantity);\n }\n }\n\n /**\n * Элемент корзины.\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges.pipe(skip(1));\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickDeleteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickSettingsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Продукт элемента корзины.\n */\n public get product(): ScProduct | undefined {\n return this.cartItem?.product;\n }\n\n /**\n * Инициирует экземпляр класса {@link ScCartItemMobileComponent}.\n *\n * @param unitsHelper Экземпляр класса-помощника для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.quantityValueChanges = this.quantityControl.valueChanges;\n }\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef || '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImagePreview(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<ng-container *ngIf=\"cartItem && product; else skeleton\">\n <!-- TODO: Необходима реализация функционала.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button> -->\n <div class=\"flex bg-white border border-tui-base-04 shadow-sc-2 rounded-xl min-w-[18rem] gap-2 p-2\">\n <div class=\"flex w-40 items-center\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n </div>\n <div class=\"flex flex-col sm:flex-row sm:gap-5 items-center gap-2 justify-between w-full\">\n <div class=\"flex flex-col self-start max-w-full gap-1\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n\n <div class=\"flex flex-wrap gap-y-1 gap-x-2 w-full text-xs text-tui-base-05\">\n <p *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n <p>Артикул: {{ product.code }}</p>\n </div>\n\n <div class=\"flex flex-wrap items-center gap-y-1 gap-x-2 w-full\">\n <p *ngIf=\"!product.priceInRub\" class=\"font-bold\">{{ product.costString }}</p>\n <p class=\"font-bold text-xs text-tui-base-05\">{{ product.costRubString }}</p>\n <span *ngIf=\"product.discount\" class=\"flex items-center\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"!text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n </div>\n\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n <div *ngIf=\"cartItem.height || cartItem.length || cartItem.width\" class=\"flex gap-1 items-center\">\n <button\n tuiIconButton\n icon=\"tuiIconSettings\"\n (click)=\"clickSettingsEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-wrap gap-x-2 font-thin text-xs text-tui-base-04\">\n <p *ngIf=\"cartItem.marker\">Маркировка: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">Ширина: {{ cartItem.width }} м.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>Высота: {{ cartItem.height }} м.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">Длина: {{ cartItem.length }} м.</p>\n </ng-template>\n </div>\n </div>\n\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex flex-col self-start gap-1 sm:mr-9 sm:self-center\">\n <div class=\"flex gap-2\">\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-28\"\n ></sc-input-quantity>\n <button tuiIconButton icon=\"tuiIconTrash2\" shape=\"rounded\" size=\"xs\" (click)=\"clickDeleteEvent.emit()\"></button>\n </div>\n <p class=\"font-bold text-tui-text-01 text-sm\">Итого: {{ cartItem.costRub | tuiFormatNumber }} {{ 'RUB' | tuiCurrency }}</p>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl\"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Output, inject } from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { SC_URLS, ScCategory, ScFavoriteService, ScIUrls } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE, tuiPure } from '@taiga-ui/cdk';\nimport { filter, tap } from 'rxjs';\n\n/**\n * Компонент списка категорий.\n */\n@Component({\n selector: 'sc-categories-list',\n templateUrl: './sc-categories-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScCategoriesListComponent<T extends object> implements OnInit {\n /**\n * Список категорий.\n */\n @Input()\n public categories: T[] | undefined | null;\n\n /**\n * Признак того, отображается этот компонент на мобильном устройстве или нет.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Событие нажатия на категорию.\n */\n @Output()\n public clickCategoryEvent: EventEmitter<T> = new EventEmitter<T>();\n\n /**\n * Инициализирует экземпляр класса {@link ScCategoriesListComponent}.\n *\n * @param urls объект информации о базовом списке ссылок приложения.\n * @param favoriteService Сервис для работы с корзиной.\n * @param cdr Объект для работы с обнаружением изменений.\n */\n public constructor(\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n private readonly favoriteService: ScFavoriteService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.favoriteService.categories$\n .pipe(\n filter(() => !!this.categories && Boolean(this.categories.length) && 'id' in this.categories[0]),\n tap((categories) => {\n (this.categories as ScCategory[])?.forEach(category => {\n category.isFavorite = categories.findIndex(item => category.id === item.id) !== -1;\n });\n }),\n untilDestroyed(this)\n )\n .subscribe(() => this.cdr.markForCheck());\n }\n\n /**\n * Возвращает путь до изображения на сервере.\n *\n * @param imgPath путь, где хранится изображение.\n */\n public getCategoryImage(imgPath: string): string {\n return this.urls.imgServerUrl + '/' + imgPath;\n }\n\n /**\n * Проверяет наличие хотя бы одного изображения.\n *\n * @param categories Список категорий.\n */\n @tuiPure\n public checkImagesExists(categories: any[]): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return categories.some((item) => item.properties?.image);\n }\n}\n","<div class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\">\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-primary duration-150\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img *ngIf=\"item.properties?.image as image\" [src]=\"getCategoryImage(image)\" [alt]=\"item.name\" class=\"w-8 h-8 object-cover rounded bg-tui-base-03\" />\n <tui-svg *ngIf=\"!item.properties?.image && checkImagesExists(categories)\" src=\"tuiIconCameraOffLarge\" class=\"bg-tui-base-03 !w-8 !h-8 rounded text-tui-base-05\"></tui-svg>\n <div *tuiLet=\"\" class=\"flex grow truncate\">\n <p class=\"text-base font-bold truncate\">{{ item.name }}</p>\n <tui-svg *ngIf=\"item.isFavorite\" src=\"scIconFavoriteFill\" class=\"text-tui-primary !text-sm mr-auto\"></tui-svg>\n </div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150\"></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-base-05 duration-150\"\n >\n <div class=\"w-8 h-8 tui-skeleton\"></div>\n <div class=\"h-4 grow tui-skeleton\"></div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150 tui-skeleton\"></tui-svg>\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Компонент кнопки избранных товаров и категорий.\n */\n@Component({\n selector: 'sc-favorite-btn',\n templateUrl: './sc-favorite-btn.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScFavoriteBtnComponent {\n /**\n * Событие нажатия на кнопку.\n */\n @Output()\n public clickEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Признак наличия товара или категории в избранных.\n */\n @Input()\n public isFavorite: boolean = false;\n\n /**\n * Признак, что необходимо отобразить загрузку на кнопке.\n */\n @Input()\n public showLoader: boolean = false;\n\n /**\n * Признак, что кнопка деактивирована.\n */\n @Input()\n public disabled: boolean = false;\n}\n","<button tuiIconButton (click)=\"clickEvent.emit()\" [disabled]=\"disabled\" [showLoader]=\"showLoader\" appearance=\"flat\" size=\"s\">\n <tui-svg class=\"text-tui-primary\" [src]=\"isFavorite ? 'scIconFavoriteFill' : 'scIconFavorite'\"></tui-svg>\n</button>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n Renderer2,\n ViewChild\n} from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScAuthService, ScCategory, ScIUrls } from '@snabcentr/client-core';\nimport { TuiSizeS } from '@taiga-ui/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Карточка категории.\n */\n@Component({\n selector: 'sc-category-card',\n templateUrl: './sc-category-card.component.html',\n styleUrls: ['./sc-category-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScCategoryCardComponent {\n /**\n * Информация о категории.\n */\n @Input()\n public category?: ScCategory;\n\n /**\n * Ссылка на {@link HTMLElement} блока названия.\n */\n @ViewChild('name')\n private name: ElementRef<HTMLElement>;\n\n /**\n * Размер карточки категории.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n /**\n * Признак, что карточка является скелетоном.\n */\n @Input()\n public isSkeleton: boolean = false;\n\n /**\n * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.\n */\n public favoriteShowLoader: boolean = false;\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = this.authService.getAuthChange();\n\n /**\n * Признак что категория имеет поведение наведения и скрытия названия.\n */\n @Input()\n public isHovered: boolean = false;\n\n /**\n * Событие нажатия на карточку категории.\n */\n @Output()\n public clickOnCardEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Событие нажатия на кнопку избранной категории.\n */\n @Output()\n public clickOnFavoriteEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Инициализирует экземпляр класса {@link CategoryCardComponent}.\n *\n * @param urls Список ссылок на разделы backend'a.\n * @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n private renderer: Renderer2,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string,\n private readonly authService: ScAuthService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n /**\n * Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию (\"product_not_found\").\n *\n * @param category Информация о категории.\n */\n public getCategoryImgURL(category: ScCategory): string {\n return category.properties?.image ? this.urls.imgServerUrl + '/' + category.properties?.image : this.pathImageNotFound;\n }\n\n /**\n * Обработчик события mousemove.\n */\n @HostListener('mousemove')\n private moveEnterHandler(): void {\n if (this.isHovered) {\n this.name.nativeElement.style.maxHeight = `${this.name.nativeElement.scrollHeight / 16}rem`;\n }\n }\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler(): void {\n if (this.isHovered) {\n this.renderer.setStyle(this.name.nativeElement, 'maxHeight', null);\n }\n }\n\n /**\n * Устанавливает компонент в очередь на обновление.\n */\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n","/* eslint-disable no-underscore-dangle */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Inject, inject, Input, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport {\n SC_PATH_IMAGE_NOT_FOUND,\n SC_URLS,\n ScAuthService,\n ScCartItem,\n ScImageHelper,\n ScIUrls,\n ScIWarehouse,\n ScProduct,\n ScWarehouseService,\n SEARCH_TERM,\n SEARCH_TERM_PROVIDERS,\n} from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\nimport { TuiSizeS, TuiSizeXS } from '@taiga-ui/core';\nimport { Observable } from 'rxjs';\n\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки товара.\n */\n@Component({\n selector: 'sc-price-card',\n templateUrl: './sc-price-card.component.html',\n styleUrls: ['./sc-price-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SEARCH_TERM_PROVIDERS],\n})\nexport class ScPriceCardComponent {\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * Позиция товара в корзине\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public set cartItem(value: ScCartItem | undefined) {\n this._cartItem = value;\n\n this.quantityControl.patchValue(this._cartItem?.quantity ?? null, { emitEvent: false });\n this.quantityShowLoader = false;\n }\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n\n /**\n * Признак, что необходимо отобразить лоадер для поля ввода количества товара.\n */\n public quantityShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.\n */\n public favoriteShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить поле ввода количества товара.\n */\n @Input()\n public showQuantityControl: boolean = false;\n\n /**\n * Объект товара.\n *\n * TODO: Сделать товар наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public product?: ScProduct;\n\n /**\n * Событие нажатия на кнопку \"В избранное\".\n */\n @Output()\n public clickFavoriteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"В корзину\".\n */\n @Output()\n public clickAddToCartEvent: EventEmitter<ScProduct> = new EventEmitter<ScProduct>();\n\n /**\n * Событие нажатия на кнопку очистки количества товара.\n */\n @Output()\n public clickClearEvent: EventEmitter<ScCartItem> = new EventEmitter<ScCartItem>();\n\n /**\n * Событие нажатия на карточку товара.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public warehouseSelect$: Observable<ScIWarehouse | null> = this.warehouseService.getWarehouseSelectChange$();\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(null, { updateOn: 'blur' });\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges;\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = this.authService.getAuthChange();\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS | TuiSizeXS = 'm';\n\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n private _cartItem?: ScCartItem | undefined;\n\n /**\n * Инициирует экземпляр класса {@link ScPriceCardComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param authService Сервис аутентификации пользователей.\n * @param warehouseService Сервис для работы со складами.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n * @param search$ Провайдер поиска терма.\n * @param cdr Объект для работы с обнаружением изменений.\n * @param imageHelper Хелпер для работы с изображениями товара.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n private readonly authService: ScAuthService,\n private readonly warehouseService: ScWarehouseService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string,\n @Inject(SEARCH_TERM) public readonly search$: Observable<string>,\n private readonly cdr: ChangeDetectorRef,\n private readonly imageHelper: ScImageHelper\n ) {}\n\n /**\n * Конвертация размера для компонента sc-input-quantity.\n * TODO: Решить проблему с функционалом size для разных платформ.\n */\n public get getQuantitySize(): TuiSizeS {\n return this.size === 'xs' ? 's' : this.size;\n }\n\n /**\n * Признак, что нужно показать скелетон.\n */\n public get skeletonVisible(): boolean {\n return !this.product;\n }\n\n /**\n * Возвращает ссылку на preview-изображение карточки товара.\n */\n public getCardImagePreview(): string {\n return this.product ? this.imageHelper.getImagePreview(this.product) : this.pathImageNotFound;\n }\n\n /**\n * Устанавливает компонент в очередь на обновление.\n */\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","<!-- TODO: реализовать данный компонент и для десктопа и для мобильного приложения. Исправить все глобальные тайговские стили, привести их в порядок согласно с дизайном. -->\n<div\n *ngIf=\"product; else skeleton\"\n class=\"relative grid h-[19rem] w-auto min-w-40 rounded-xl p-2 text-xs shadow-md\"\n>\n <div class=\"overflow-hidden\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImagePreview()\"\n [alt]=\"product.name\"\n class=\"max-h-full w-full rounded-xl object-cover\"\n />\n </div>\n <sc-favorite-btn\n *ngIf=\"authStatus$ | async\"\n class=\"absolute left-0 top-0\"\n (clickEvent)=\"clickFavoriteEvent.emit()\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"product.isFavorite\"\n [disabled]=\"!!product.primaryCategory?.isFavorite\"\n ></sc-favorite-btn>\n <tui-svg\n *ngIf=\"product.isPreviouslyOrdered\"\n src=\"scIconStar\"\n class=\"absolute right-0 top-0 text-red-700\"\n ></tui-svg>\n\n <a\n class=\"m-0 p-0\"\n tuiLink\n iconAlign=\"left\"\n (click)=\"clickCardEvent.emit()\"\n >\n <p\n class=\"line-clamp-3 text-sm font-bold\"\n style=\"word-break: break-word\"\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n >\n {{ product.name }}\n </p>\n </a>\n <p\n *ngIf=\"product?.pack\"\n class=\"text-tui-text-02\"\n >\n Норма упаковки: {{ product.pack }}\n </p>\n\n <p\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n class=\"text-tui-text-02\"\n >\n Артикул: {{ product.code }}\n </p>\n <p\n *ngIf=\"(authStatus$ | async) && product?.costDate\"\n class=\"text-tui-text-02\"\n >\n Дата: {{ product.costDate }}\n </p>\n <div\n *ngIf=\"warehouseSelect$ | async as warehouseSelect\"\n class=\"flex flex-col\"\n >\n <span\n *ngIf=\"product.discount && !isMobile\"\n class=\"flex items-center text-tui-text-02\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <tui-svg\n src=\"tuiIconInfoLarge\"\n [tuiHint]=\"discountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!h-4 !text-xs text-black\"\n ></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span\n [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\"\n class=\"cost font-bold\"\n >{{ product.costRubString }}</span\n >\n <span\n *ngIf=\"!product.priceInRub\"\n class=\"hidden text-xs font-bold text-tui-text-02 group-hover:block\"\n >{{ product.costString }}</span\n >\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n <div\n *ngIf=\"!showQuantityControl\"\n class=\"mt-1 flex max-w-full items-center justify-stretch gap-2\"\n >\n <button\n tuiButton\n (click)=\"clickAddToCartEvent.emit(product)\"\n [showLoader]=\"quantityShowLoader\"\n [size]=\"size\"\n class=\"grow\"\n >\n <tui-svg\n src=\"scIconCart\"\n class=\"!h-4 !text-xs\"\n >\n </tui-svg>\n В корзину\n </button>\n <div\n *ngIf=\"cartItem\"\n class=\"flex justify-center\"\n >\n <tui-svg\n src=\"tuiIconCheck\"\n class=\"!h-5 !w-5 rounded-md bg-tui-primary text-black\"\n ></tui-svg>\n </div>\n </div>\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [size]=\"getQuantitySize\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n class=\"mt-2 w-full\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n ></sc-input-quantity>\n</div>\n\n<ng-template #skeleton>\n <div class=\"card-wrapper flex flex-col overflow-hidden rounded-xl bg-white shadow-sc-1\">\n <!-- Изображение товара -->\n <div class=\"h-3/5 w-full rounded-t bg-tui-base-02\"></div>\n <!-- Краткая информация о товаре -->\n <div class=\"flex grow flex-col gap-2.5 rounded-b bg-white p-5\">\n <div class=\"h-4 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded bg-tui-base-02\"></div>\n <div class=\"h-4 w-full rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","/* eslint-disable class-methods-use-this,lodash/prefer-lodash-method */\nimport { ChangeDetectionStrategy, Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { ScCatalogService, ScProduct } from '@snabcentr/client-core';\nimport { TuiDay, TuiDayRange, TuiMonth, tuiPure, TuiStringHandler } from '@taiga-ui/cdk';\nimport { TUI_MONTHS, TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { filter, map, Observable, shareReplay } from 'rxjs';\n\n/**\n * График истории цен товара или услуги.\n */\n@Component({\n selector: 'sc-price-history',\n templateUrl: './sc-price-history.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceHistoryComponent implements OnInit {\n /**\n * {@link Observable} временного промежутка истории цен.\n */\n public range$: Observable<TuiDayRange>;\n\n /**\n * Товар или услуга, для которого необходимо отобразить историю цен.\n */\n @Input() public product: ScProduct;\n\n /**\n * {@link Observable} истории цен.\n */\n public history$?: Observable<ReadonlyArray<[TuiDay, number]>>;\n\n /**\n * Максимальная цена товара.\n */\n public priceInfo$?: Observable<{\n min: number;\n max: number;\n }>;\n\n /**\n * {@link Observable} функция для преобразования значения number в строку в подсказке по оси X.\n */\n public readonly xStringify$: Observable<TuiStringHandler<TuiDay>> = this.months$.pipe(\n map(\n (months) =>\n ({ month, day }) =>\n // eslint-disable-next-line security/detect-object-injection\n `${months[month]}, ${day}`\n )\n );\n\n /**\n * Функция для преобразования значения number в строку в подсказке по оси Y.\n *\n * @param value Значение оси Y.\n */\n public readonly yStringify: TuiStringHandler<number> = (value) => `${value.toLocaleString('ru-RU')} ₽`;\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceHistoryComponent}.\n *\n * @param catalogService Сервис для работы с каталогом.\n * @param months$ Перечисление месяцев.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly catalogService: ScCatalogService,\n @Inject(TUI_MONTHS) private readonly months$: Observable<readonly string[]>,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n private readonly context?: TuiDialogContext<void, { product: ScProduct }>\n ) {\n if (context) {\n this.product = context.data.product;\n }\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.history$ = this.catalogService.getPriceHistory$(this.product).pipe(\n map((history) =>\n Object.keys(history)\n .map((item): [TuiDay, number] => [TuiDay.normalizeParse(item, 'DMY'), history[String(item)].cost])\n .sort((a, b) => (a[0] > b[0] ? 1 : -1))\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n filter((history) => history.length > 1)\n );\n\n this.priceInfo$ = this.history$.pipe(\n map((history) => history.map((item) => item[1])),\n map((values) => ({\n min: Math.min(...values),\n max: Math.max(...values),\n }))\n );\n\n this.range$ = this.history$.pipe(\n map((value: ReadonlyArray<[TuiDay, number]>) => ({ from: value.at(0)?.[0], to: value.at(-1)?.[0] })),\n filter((range): range is { from: TuiDay; to: TuiDay } => !!range.from && !!range.to),\n map((range) => {\n return new TuiDayRange(range.from, range.to);\n })\n );\n }\n\n /**\n * Вычисляет подписи даты к оси X.\n *\n * @param param0 {@link TuiDayRange} Временной промежуток истории цен.\n * @param param0.from {@link TuiDay} Дата начала истории цен.\n * @param param0.to {@link TuiDay} Дата конца истории цен.\n */\n @tuiPure\n public computeLabels$({ from, to }: TuiDayRange): Observable<readonly string[]> {\n return this.months$.pipe(map((months) => Array.from({ length: TuiMonth.lengthBetween(from, to) + 1 }, (_, index) => months[from.append({ month: index }).month])));\n }\n\n /**\n * Вычисляет данные для отображения на графике.\n *\n * @param param0 {@link TuiDayRange} Временной промежуток истории цен.\n * @param param0.from {@link TuiDay} Дата начала истории цен.\n * @param param0.to {@link TuiDay} Дата конца истории цен.\n * @param history История цен.\n */\n @tuiPure\n public computeValue({ from, to }: TuiDayRange, history: ReadonlyArray<[TuiDay, number]>): ReadonlyArray<[TuiDay, number]> {\n return (\n Array.from({ length: TuiDay.lengthBetween(from, to) + 1 })\n .fill(0)\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce<ReadonlyArray<[TuiDay, number]>>((array, _, index) => {\n const data = from.append({ day: index });\n return [\n ...array,\n [\n data,\n (history.find((valueHistory, indexHistory, arrayHistory) => data.daySame(valueHistory[0]) || data.dayBefore(arrayHistory[indexHistory + 1][0])) ??\n history[0])[1],\n ],\n ];\n }, [])\n );\n }\n}\n","<div class=\"flex flex-col items-center\">\n <ng-container *ngIf=\"priceInfo$ | async as priceInfo; else isNotExist\">\n <div class=\"w-174 mb-1 text-end text-lg font-bold\">от {{ priceInfo.min.toLocaleString() }} ₽ до {{ priceInfo.max.toLocaleString() }} ₽</div>\n\n <ng-container *ngIf=\"history$ | async as history\">\n <div\n *ngIf=\"range$ | async as range\"\n class=\"relative h-56 w-full p-5 text-tui-primary\"\n >\n <tui-axes\n *ngIf=\"computeLabels$(range) | async as labels\"\n class=\"h-full\"\n [axisXLabels]=\"labels\"\n [horizontalLines]=\"4\"\n [verticalLines]=\"labels.length\"\n >\n <tui-line-days-chart\n class=\"chart\"\n [height]=\"priceInfo.max\"\n [smoothingFactor]=\"10\"\n [y]=\"priceInfo.min - (priceInfo.min * 1) / 4\"\n [value]=\"computeValue(range, history)\"\n [xStringify]=\"xStringify$ | async\"\n [yStringify]=\"yStringify\"\n [hintContent]=\"hint\"\n ></tui-line-days-chart>\n </tui-axes>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #isNotExist>\n <p class=\"text-base font-bold\">Цена на товар не изменялась</p>\n </ng-template>\n <ng-template\n #hint\n let-data\n >\n <div class=\"font-bold\">{{ data[1].toLocaleString() }} ₽</div>\n <div>{{ data[0] }}</div>\n </ng-template>\n</div>\n","import { EventEmitter, InjectionToken, Provider } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { ScAuthService, ScCartService, ScCatalogService, ScICategoryProductPaginationParams, ScIPaginate, ScProduct } from '@snabcentr/client-core';\nimport { TuiDestroyService, tuiCreateToken, tuiIsPresent } from '@taiga-ui/cdk';\nimport { Observable, Subject, debounceTime, filter, map, merge, scan, share, startWith, switchMap, takeUntil } from 'rxjs';\n\n/**\n * Значения пагинации списка товаров категории по умолчанию.\n */\nexport const SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS: ScICategoryProductPaginationParams = {\n perPage: 20,\n page: 0\n};\n\n/**\n * Токен значений пагинации списка товаров в категории по умолчанию.\n */\nexport const SC_PRODUCT_PAGINATION_OPTIONS: InjectionToken<ScICategoryProductPaginationParams> = tuiCreateToken(SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS);\n\n/**\n * {@link Subject} параметров пагинации списка товаров в категории.\n */\nexport const paginationParams$: Subject<ScICategoryProductPaginationParams> = new Subject<ScICategoryProductPaginationParams>();\n\n/**\n * Токен {@link Subject} параметров пагинации списка товаров в категории для получения их из вне.\n */\nexport const SC_PRODUCT_PAGINATION_PARAMS: InjectionToken<Subject<ScICategoryProductPaginationParams>> = tuiCreateToken(paginationParams$);\n\n/**\n * Фабрика создания потока данных о товарах категории с пагинацией, включая данные о количестве этих товаров в корзине.\n *\n * @param paramMap Данные о параметрах запроса.\n * @param catalogService Сервис для работы с каталогом.\n * @param cartService Сервис для работы с корзиной.\n * @param authService Сервис для работы с аутентификации пользователей.\n * @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.\n */\nfunction productsPaginationChangeFactory(\n { paramMap }: ActivatedRoute,\n catalogService: ScCatalogService,\n cartService: ScCartService,\n authService: ScAuthService,\n destroy$: Observable<void>\n): Observable<ScIPaginate<ScProduct> | null> {\n return paramMap.pipe(\n map((params) => params.get('categoryId')),\n filter(tuiIsPresent),\n switchMap((categoryId) =>\n paginationParams$.pipe(\n debounceTime(20),\n switchMap((paginationParams) => authService.getAuthChange().pipe(switchMap(() => catalogService.getCategoryProducts$(Number(categoryId), paginationParams)))),\n filter(tuiIsPresent),\n scan((acc: ScIPaginate<ScProduct> | null, value: ScIPaginate<ScProduct> | null) => {\n if (acc && value && value.meta.currentPage > 1) value.data.unshift(...acc.data);\n\n return value;\n }, null),\n switchMap((productsPaginate) =>\n cartService.getCartChange$().pipe(\n map((cart) => {\n productsPaginate?.data.forEach((product) => (product.cartItem = cart.items.find((cartItem) => cartItem.product.id === product.id)));\n\n return productsPaginate;\n })\n )\n ),\n startWith(null)\n )\n ),\n share(),\n takeUntil(destroy$)\n );\n}\n\n/**\n * Токен потока данных о товарах категории, включая данные о количестве этих товаров в корзине.\n */\nexport const SC_PRODUCT_PAGINATION_CHANGE_INFO = new InjectionToken<Observable<ScIPaginate<ScProduct> | null>>('SC_PRODUCT_PAGINATION_CHANGE_INFO');\n\n/**\n * {@link EventEmitter} событие нажатия на кнопку \"Показать следующие позиции категории\".\n */\nexport const nextPageClickEvent: EventEmitter<void> = new EventEmitter<void>();\n\n/**\n * Токен {@link EventEmitter} событие нажатия на кнопку \"Показать следующие позиции категории\".\n */\nexport const SC_NEXT_PAGE_PAGINATION_CLICK: InjectionToken<EventEmitter<void>> = tuiCreateToken(nextPageClickEvent);\n\n/**\n * Фабрика создания потока данных о состоянии загрузки запроса списка товаров с пагинацией пагинации.\n */\nfunction loadingPaginationFactory(productsData$: Observable<ScIPaginate<ScProduct> | null>, destroy$: Observable<void>) {\n return merge(paginationParams$.pipe(map(() => true)), productsData$.pipe(map((data) => data === null))).pipe(share(), takeUntil(destroy$));\n}\n\n/**\n * Токен потока данных о состоянии загрузки товаров пагинации.\n */\nexport const SC_LOADING_PAGINATION_CHANGE_INFO: InjectionToken<Observable<boolean>> = new InjectionToken<Observable<number>>('SC_LOADING_PAGINATION_CHANGE_INFO');\n\n/**\n * Фабрика создания потока данных прокрутки страницы с сигналами о необходимости пагинации товара.\n */\nfunction nextPagePaginationChangeFactory(\n { events }: Router,\n nextPagePaginationClick: EventEmitter<void>,\n productsData$: Observable<ScIPaginate<ScProduct> | null>,\n destroy$: Observable<void>\n): Observable<number> {\n return nextPagePaginationClick\n .pipe(\n scan((acc) => ++acc, 1),\n startWith(1)\n )\n .pipe(\n takeUntil(\n merge(\n events.pipe(filter((e) => e instanceof NavigationEnd)),\n productsData$.pipe(filter((paginate) => paginate !== null && paginate.meta.currentPage >= paginate.meta.lastPage)),\n destroy$\n )\n )\n );\n}\n\n/**\n * Токен потока данных прокрутки страницы с сигналами о необходимости пагинации товара.\n */\nexport const SC_NEXT_PAGE_PAGINATION_CHANGE_INFO: InjectionToken<Observable<number>> = new InjectionToken<Observable<number>>('SC_NEXT_PAGE_PAGINATION_CHANGE_INFO');\n\n/**\n * Провайдеры потока данных о товарах категории, включая данные о количестве этих товаров в корзине.\n */\nexport const SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS: Provider[] = [\n TuiDestroyService,\n {\n provide: SC_PRODUCT_PAGINATION_CHANGE_INFO,\n deps: [ActivatedRoute, ScCatalogService, ScCartService, ScAuthService, TuiDestroyService],\n useFactory: productsPaginationChangeFactory\n },\n {\n provide: SC_NEXT_PAGE_PAGINATION_CHANGE_INFO,\n deps: [Router, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],\n useFactory: nextPagePaginationChangeFactory\n },\n {\n provide: SC_LOADING_PAGINATION_CHANGE_INFO,\n deps: [SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],\n useFactory: loadingPaginationFactory\n }\n];\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input } from '@angular/core';\nimport { SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_OPTIONS } from '../../providers/productsPagination';\nimport { ScICategoryProductPaginationParams, ScIPaginationMeta } from '@snabcentr/client-core';\n\n/**\n * Компонент элементов управления пагинацией списка товаров.\n */\n@Component({\n selector: 'sc-price-list-pagination',\n templateUrl: './sc-price-list-pagination.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS]\n})\nexport class ScPriceListPaginationComponent {\n /**\n * Данные пагинации.\n */\n @Input()\n public meta?: ScIPaginationMeta;\n\n /**\n * Состояние загрузки пагинации.\n */\n @Input()\n public loadingPagination: boolean;\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceListPaginationComponent}.\n *\n * @param nextPageClickEvent Событие нажатия на кнопку \"Показать следующие N позиций\".\n * @param options Значения пагинации списка товаров категории по умолчанию.\n */\n public constructor(\n @Inject(SC_NEXT_PAGE_PAGINATION_CLICK) public readonly nextPageClickEvent: EventEmitter<void>,\n @Inject(SC_PRODUCT_PAGINATION_OPTIONS) public readonly options: ScICategoryProductPaginationParams\n ) {}\n}\n","<button *ngIf=\"meta?.currentPage !== meta?.lastPage\" tuiButton (click)=\"nextPageClickEvent.emit()\" [disabled]=\"loadingPagination\" appearance=\"secondary\" size=\"l\" class=\"w-full\">\n Показать ещё {{ options.perPage }} товаров\n</button>\n<!-- В будущем можно добавить пагинацию по номерам страницы. -->\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { TuiAxesModule, TuiLineDaysChartModule } from '@taiga-ui/addon-charts';\nimport { TuiLetModule, TuiRepeatTimesModule } from '@taiga-ui/cdk';\nimport { TuiButtonModule, TuiHintModule, TuiLabelModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule, TuiTextfieldControllerModule } from '@taiga-ui/core';\nimport { TuiElasticContainerModule, TuiFieldErrorPipeModule, TuiHighlightModule, TuiInputNumberModule, TuiIslandModule } from '@taiga-ui/kit';\n\nimport { ScCategoriesListComponent } from './categories-list/sc-categories-list.component';\nimport { ScCategoryCardComponent } from './category-card/sc-category-card.component';\nimport { ScInputQuantityComponent } from './input-quantity/sc-input-quantity.component';\nimport { ScPriceCardComponent } from './price-card/sc-price-card.component';\nimport { ScPriceHistoryComponent } from './price-history/sc-price-history.component';\nimport { ScPriceListPaginationComponent } from './price-list-pagination/sc-price-list-pagination.component';\nimport { ScPriceWarehouseStockComponent } from './price-warehouse-stock/sc-price-warehouse-stock.component';\nimport { ScFavoriteBtnComponent as ScFavoriteButtonComponent } from './sc-favorite-btn/sc-favorite-btn.component';\n\n/**\n * Модуль каталога.\n */\n@NgModule({\n declarations: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteButtonComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent,\n ],\n exports: [\n ScPriceListPaginationComponent,\n ScCategoryCardComponent,\n ScFavoriteButtonComponent,\n ScInputQuantityComponent,\n ScPriceCardComponent,\n ScPriceWarehouseStockComponent,\n ScPriceHistoryComponent,\n ScCategoriesListComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n TuiButtonModule,\n TuiSvgModule,\n TuiIslandModule,\n TuiInputNumberModule,\n TuiLabelModule,\n TuiTextfieldControllerModule,\n FormsModule,\n ReactiveFormsModule,\n TuiHintModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiLoaderModule,\n TuiLinkModule,\n TuiElasticContainerModule,\n TuiLetModule,\n TuiRepeatTimesModule,\n TuiHighlightModule,\n TuiLineDaysChartModule,\n TuiAxesModule,\n ],\n})\nexport class ScCatalogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScCartItemMobileComponent } from './cart-item-mobile/sc-cart-item-mobile.component';\nimport { TuiButtonModule, TuiFormatNumberPipeModule, TuiHintModule, TuiLinkModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiCurrencyPipeModule } from '@taiga-ui/addon-commerce';\nimport { TuiPreviewModule } from '@taiga-ui/addon-preview';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Модуль корзины.\n */\n@NgModule({\n declarations: [ScCartItemMobileComponent],\n exports: [ScCartItemMobileComponent],\n imports: [\n CommonModule,\n TuiLinkModule,\n ScCatalogModule,\n TuiButtonModule,\n TuiCurrencyPipeModule,\n TuiFormatNumberPipeModule,\n TuiModeModule,\n TuiSvgModule,\n TuiHintModule,\n FormsModule,\n ReactiveFormsModule,\n TuiPreviewModule,\n PolymorpheusModule\n ]\n})\nexport class ScCartModule {}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject, Input, OnInit, SkipSelf } from '@angular/core';\nimport { FormGroup, NgControl } from '@angular/forms';\nimport { ScISuggestionType, ScSuggestion, ScSuggestionService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsFalsy, tuiIsPresent, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { catchError, debounceTime, filter, map, Observable, of, share, startWith, switchMap, throwError } from 'rxjs';\n\nimport { ApiErrorResponse } from '../../auth';\n\n/**\n * Компонент подсказок для поля ввода.\n */\n@Component({\n selector: 'sc-suggestion-field',\n templateUrl: './sc-suggestion-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScSuggestionFieldComponent implements OnInit {\n /**\n * Тип подсказок.\n */\n @Input()\n public type: ScISuggestionType = ScISuggestionType.fio;\n\n /**\n * {@link Observable} подсказок.\n */\n public suggestions$?: Observable<ScSuggestion[] | null>;\n\n /**\n * {@link Observable} состояние запроса подсказок.\n */\n public loading$?: Observable<boolean>;\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Инициализирует экземпляр класса {@link ScSuggestionFieldComponent}.\n *\n * @param control Контрол поля ввода.\n * @param suggestionService Сервис работы с API подсказок.\n */\n public constructor(\n @SkipSelf()\n @Inject(NgControl)\n public readonly control: NgControl,\n private readonly suggestionService: ScSuggestionService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n const request$ = tuiControlValue<string | null>(this.control).pipe(\n debounceTime(300),\n filter(tuiIsPresent),\n map((term) => term.trim()),\n filter((term) => term.length >= 3),\n switchMap((term: string) => this.suggestionService.getData<ScSuggestion>(term, this.type).pipe(startWith(null))),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n const errorResponse = error.error as ApiErrorResponse;\n\n if (this.control.control) {\n tuiMarkControlAsTouchedAndValidate(this.control.control);\n\n this.control.control.setErrors({\n serverResponse: [errorResponse.message || 'Ошибка сервера: пожалуйста, перезагрузите страницу и/или выполните запрос позже.'],\n });\n }\n }\n\n return throwError(() => of([]));\n }),\n share()\n );\n\n this.suggestions$ = request$.pipe(filter(tuiIsPresent), startWith(null));\n this.loading$ = request$.pipe(map(tuiIsFalsy));\n }\n\n /**\n * Заполнение полей основе выбранной подсказки.\n *\n * @param suggestion Объект подсказки.\n */\n public onSelected(suggestion: ScSuggestion): void {\n switch (this.type) {\n case ScISuggestionType.fio:\n if ('fio' in suggestion) {\n this.control.control?.patchValue(suggestion.fio);\n }\n break;\n case ScISuggestionType.address:\n if ('addressString' in suggestion) {\n this.control.control?.patchValue(suggestion.addressString);\n }\n break;\n case ScISuggestionType.bank:\n if ('inn' in suggestion && 'bic' in suggestion) {\n (this.control.control?.parent as FormGroup).patchValue({\n bankName: suggestion.name,\n bic: suggestion.bic,\n correspondentAccount: suggestion.correspondentAccount,\n });\n }\n break;\n case ScISuggestionType.organization:\n if ('inn' in suggestion && !('bic' in suggestion)) {\n (this.control.control?.parent as FormGroup).patchValue({\n name: suggestion.name,\n inn: suggestion.inn,\n kpp: suggestion.kpp,\n okpo: suggestion.okpo,\n directorName: suggestion.directorName,\n directorPosition: suggestion.directorPosition,\n legalAddress: suggestion.legalAddress,\n postalAddress: suggestion.postalAddress,\n actualAddress: suggestion.actualAddress,\n });\n }\n break;\n case ScISuggestionType.email:\n if ('email' in suggestion) {\n this.control.control?.patchValue(suggestion.email);\n }\n break;\n default:\n break;\n }\n }\n}\n","<tui-loader\n size=\"m\"\n [overlay]=\"true\"\n [showLoader]=\"!!(loading$ | async)\"\n>\n <tui-data-list *tuiLet=\"suggestions$ | async as options\">\n <button\n *ngFor=\"let option of options\"\n tuiOption\n (click)=\"onSelected(option)\"\n class=\"flex-col !items-start\"\n >\n <ng-container *tuiLet=\"$any(option) as option\">\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"suggestionType.fio\">\n <span class=\"text-tui-link\">{{ option.fio }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.organization\">\n <span class=\"text-tui-link\">\n {{ option.name }}\n <span class=\"ml-2 text-tui-text-02\">инн: {{ option.inn }}</span>\n </span>\n <span class=\"text-tui-text-02\">{{ option?.legalAddress }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.bank\">\n <span class=\"text-tui-link\">{{ option.name }}</span>\n <span class=\"text-tui-text-02\">{{ option.bic }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.email\">\n <span class=\"text-tui-link\">{{ option.email }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.address\">\n <span class=\"text-tui-link\">{{ option.addressString }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </button>\n </tui-data-list>\n</tui-loader>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { ScICurrency, ScISuggestionType, ScReferencesService } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\nimport { scAccountNumberMask, scBicMask, scCorrespondentAccount } from '../../masks';\nimport { MaskitoOptions } from '@maskito/core';\n\n/**\n * Компонент формы банковских реквизитов.\n */\n@Component({\n selector: 'sc-new-contragent-bank-account-form',\n templateUrl: './sc-new-contragent-bank-account-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScNewContragentBankAccountsFormComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Маска поля ввода БИК.\n */\n public readonly bicMask: MaskitoOptions = scBicMask;\n\n /**\n * Маска поля ввода номера счета.\n */\n public readonly accountNumberMask: MaskitoOptions = scAccountNumberMask;\n\n /**\n * Маска поля ввода номера корреспондентского счета.\n */\n public readonly correspondentAccount: MaskitoOptions = scCorrespondentAccount;\n\n /**\n * {@link Observable} списка валют.\n */\n public readonly currencies$: Observable<ScICurrency[]> = this.referencesService.currencies$;\n\n /**\n * Группа с полем банковских реквизитов.\n */\n @Input()\n public form: FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }>;\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentBankAccountsFormComponent}.\n *\n * @param referencesService Сервис справочников.\n */\n public constructor(private readonly referencesService: ScReferencesService) {}\n\n /**\n * Возвращает {@link Observable} валюты по идентификатору.\n *\n * @param currencyId Идентификатор валюты.\n */\n public getCurrencyById$(currencyId: number): Observable<ScICurrency | undefined> {\n return this.referencesService.getCurrencyById$(currencyId);\n }\n}\n","<div [formGroup]=\"form\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"Наименование банка\">\n <tui-input formControlName=\"bankName\">\n Наименование банка\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bankName\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"БИК\">\n <tui-input formControlName=\"bic\">\n БИК\n <input tuiTextfield [maskito]=\"bicMask\" autocomplete=\"bic\" />\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bic\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Номер счета\">\n <tui-input formControlName=\"accountNumber\">\n Номер счета\n <input tuiTextfield [maskito]=\"accountNumberMask\" autocomplete=\"accountNumber\" />\n </tui-input>\n <tui-error formControlName=\"accountNumber\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Корреспондентский счет\">\n <tui-input formControlName=\"correspondentAccount\">\n Корреспондентский счет\n <input tuiTextfield [maskito]=\"correspondentAccount\" autocomplete=\"correspondentAccount\" />\n </tui-input>\n <tui-error formControlName=\"correspondentAccount\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Валюта расчётов\">\n <tui-select formControlName=\"currencyId\" [valueContent]=\"currencyContent\">\n Валюта расчётов\n <tui-data-list *tuiDataList>\n <button *ngFor=\"let item of currencies$ | async; let index = index\" tuiOption [value]=\"item.id\">{{ item.name }} ({{ item.symbol }})</button>\n </tui-data-list>\n </tui-select>\n <ng-template #currencyContent let-data>\n <div>{{ (getCurrencyById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error formControlName=\"currencyId\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ScContragentService, ScIBankAccountOnDataCreate, ScIBankAccount } from '@snabcentr/client-core';\nimport { Observable, Subject, catchError, filter, map, of, share, startWith, switchMap, tap } from 'rxjs';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\n\n/**\n * Компонент формы создания нового банковского счета контрагента.\n */\n@Component({\n selector: 'sc-add-contragent-bank-account-dialog',\n templateUrl: './sc-add-contragent-bank-account-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScAddContragentBankAccountsDialogComponent {\n /**\n * Группа с полем банковских реквизитов.\n */\n public form: FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }> = new FormGroup({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required)\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса создания банковского счёта контрагента.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is ScIBankAccountOnDataCreate => this.form.valid),\n switchMap((value) => {\n return this.contragentService.createContragentBankAccount$(this.context.data.contragentId, value).pipe(\n tap((bankAccount) => this.context?.completeWith(bankAccount)),\n catchError((error: HttpErrorResponse) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContragentBankAccountsFormComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly contragentService: ScContragentService,\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<ScIBankAccount, { contragentId: number }>\n ) {}\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\n <sc-new-contragent-bank-account-form [form]=\"form\"></sc-new-contragent-bank-account-form>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">Отмена</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">Сохранить</button>\n </div>\n</form>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { ScISuggestionType } from '@snabcentr/client-core';\n\n/**\n * Компонент формы контактного лица.\n */\n@Component({\n selector: 'sc-new-contact-form',\n templateUrl: './sc-new-contact-form.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScNewContactFormComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Группа с полями контактного лица.\n */\n @Input()\n public form: FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }>;\n}\n","<div [formGroup]=\"form\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"Ф.И.О.\">\n <tui-input formControlName=\"name\">\n Ф.И.О.\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.fio\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Телефон\">\n <tui-input-phone formControlName=\"phone\"> Телефон </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Адрес электронной почты\">\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <label tuiLabel=\"Должность контактного лица\">\n <tui-input formControlName=\"position\"> Должность контактного лица </tui-input>\n <tui-error formControlName=\"position\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","import { Directive, HostBinding, Inject, Input } from '@angular/core';\nimport { TuiCarouselComponent } from '@taiga-ui/kit';\n\n/**\n * Директива для скрытия элементов карусели тайги.\n */\n@Directive({\n selector: '[tuiItem], [scCarouselItemHidden]'\n})\nexport class ScCarouselItemHiddenDirective {\n /**\n * Индекс элемента в карусели.\n */\n @Input()\n public index: number;\n\n /**\n * Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.\n */\n @HostBinding('class.!hidden')\n private get isHidden() {\n return this.index !== this.carouselComponent.index;\n }\n\n /**\n * Инициализирует экземпляр класса {@link CarouselItemHiddenDirective}.\n *\n * @param carouselComponent Компонент карусели, взятый из DI.\n */\n public constructor(\n @Inject(TuiCarouselComponent)\n private readonly carouselComponent: TuiCarouselComponent\n ) {}\n}\n","import { Component, ChangeDetectionStrategy, OnInit, OnDestroy, SkipSelf, Inject } from '@angular/core';\nimport { FormGroup, FormControl, Validators, FormArray, FormGroupDirective } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ScOpfList, ScISuggestionType, ScReferencesService, ScLocationsService, ScISalesDirection, ScIReferencesTypes, ScICountry } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsPresent } from '@taiga-ui/cdk';\nimport { scLegalInnMask, scEntrepreneurInnMask, scLegalOkpoMask, scEntrepreneurOkpoMask, scKppMask } from '../../masks';\nimport { Observable, tap, filter, map } from 'rxjs';\n\n/**\n * Форма создания нового контрагента.\n */\n@Component({\n selector: 'sc-new-contragent-form',\n templateUrl: './sc-new-contragent-form.component.html',\n styleUrls: ['./sc-new-contragent-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScNewContragentFormComponent implements OnInit, OnDestroy {\n /**\n * Группа полей информации о контрагенте индивидуальном предпринимателе.\n */\n private readonly entrepreneurGroup = new FormGroup({\n inn: new FormControl<string | null>(null, Validators.required),\n okpo: new FormControl<string | null>(null, Validators.required),\n directorName: new FormControl<string | null>(null, Validators.required),\n directorPosition: new FormControl<string | null>(null, Validators.required),\n directorActsOn: new FormControl<string | null>(null, Validators.required),\n legalAddress: new FormControl<string | null>(null, Validators.required),\n postalAddress: new FormControl<string | null>(null, Validators.required),\n actualAddress: new FormControl<string | null>(null, Validators.required),\n bankAccounts: new FormArray<any>([], [Validators.minLength(1), Validators.required])\n });\n\n /**\n * Группа полей информации о контрагенте юридическом лице.\n */\n private readonly legalGroup = new FormGroup({\n kpp: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9)])\n });\n\n /**\n * Группа полей информации о контрагенте юридическом лице нерезиденте.\n */\n private readonly nonResidentLegalGroup = new FormGroup({\n registrationCountryId: new FormControl<number | null>(null, Validators.required),\n registrationNumber: new FormControl<string | null>(null, Validators.required),\n taxNumber: new FormControl<string | null>(null, Validators.required)\n });\n\n /**\n * Форма для создания нового контрагента физического лица.\n */\n public readonly form = new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n opf: new FormControl<keyof typeof ScOpfList>('individual', Validators.required),\n salesDirectionId: new FormControl<number | null>(null, Validators.required),\n contacts: new FormArray<any>([], [Validators.minLength(1), Validators.required])\n });\n\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * {@link Observable} выбора ОПФ.\n */\n public readonly selectOpf$: Observable<keyof typeof ScOpfList> = tuiControlValue<keyof typeof ScOpfList>(this.form.controls.opf).pipe(\n tap((opf) => {\n Object.keys({ ...this.entrepreneurGroup.controls, ...this.legalGroup.controls, ...this.nonResidentLegalGroup.controls }).forEach((key) => {\n (this.form as FormGroup).removeControl<typeof key>(key);\n });\n\n const addControls = (formGroup: FormGroup) => {\n Object.keys({ ...formGroup.controls }).forEach((key) => {\n (this.form as FormGroup).addControl<typeof key>(key, formGroup.get(key));\n });\n };\n\n if (ScOpfList[opf] > ScOpfList.individual) {\n addControls(this.entrepreneurGroup);\n this.entrepreneurGroup.controls.inn.setValidators([Validators.required, Validators.minLength(12)]);\n this.entrepreneurGroup.controls.okpo.setValidators([Validators.required, Validators.minLength(10)]);\n }\n\n if (ScOpfList[opf] > ScOpfList.entrepreneur) {\n addControls(this.legalGroup);\n this.entrepreneurGroup.controls.inn.setValidators([Validators.required, Validators.minLength(10)]);\n this.entrepreneurGroup.controls.okpo.setValidators([Validators.required, Validators.minLength(8)]);\n }\n\n if (ScOpfList[opf] > ScOpfList.legal) {\n addControls(this.nonResidentLegalGroup);\n }\n })\n );\n\n /**\n * Маска поля ввода ИНН.\n */\n public readonly innMask = (opf: keyof typeof ScOpfList) => (ScOpfList[opf] > ScOpfList.entrepreneur ? scLegalInnMask : scEntrepreneurInnMask);\n\n /**\n * Маска поля ввода ОКПО.\n */\n public readonly okpoMask = (opf: keyof typeof ScOpfList) => (ScOpfList[opf] > ScOpfList.entrepreneur ? scLegalOkpoMask : scEntrepreneurOkpoMask);\n\n /**\n * Маска поля ввода КПП.\n */\n public readonly kppMask = scKppMask;\n\n /**\n * Перечисление организационно-правовых форм.\n */\n public readonly opfListEnum: typeof ScOpfList = ScOpfList;\n\n /**\n * Родительская `FormGroup`.\n */\n public get parentForm(): FormGroup<any> | undefined {\n return this.formGroupDirective?.form;\n }\n\n /**\n * Инициализирует экземпляр класса {@link ScNewContragentFormComponent}.\n *\n * @param referencesService Сервис справочников.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n */\n public constructor(\n private readonly referencesService: ScReferencesService,\n private readonly locationsService: ScLocationsService,\n @SkipSelf()\n @Inject(FormGroupDirective)\n private readonly formGroupDirective: FormGroupDirective | null\n ) {\n this.referencesService.directions$\n .pipe(\n untilDestroyed(this),\n filter(tuiIsPresent),\n filter((directions) => !!directions.length)\n )\n .subscribe((directions) => this.form.patchValue({ salesDirectionId: directions[0].id }));\n }\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.parentForm?.setControl('contragent', this.form);\n }\n\n /** @inheritDoc */\n public ngOnDestroy(): void {\n this.parentForm?.removeControl('contragent');\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n */\n public getDirectionById$(directionId: number): Observable<ScISalesDirection | undefined> {\n return this.referencesService.getDirectionById$(directionId);\n }\n\n /**\n * Возвращает {@link Observable} список организационно-правовых форм..\n */\n public getOpf$(): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList>[]> {\n return this.referencesService.opf$;\n }\n\n /**\n * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.\n *\n * @param slug Символьное обозначение (slug).\n */\n public getOpfBySlug$(slug: keyof typeof ScOpfList): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList> | undefined> {\n return this.referencesService.getOpfBySlug$(slug);\n }\n\n /**\n * Возвращает {@link Observable} списка стран\n */\n public getCountries$(): Observable<ScICountry[]> {\n return this.locationsService.getCountries$();\n }\n\n /**\n * Возвращает {@link Observable} страны по идентификатору.\n *\n * @param countryId — Идентификатор страны.\n */\n public getCountriesById$(countryId: number): Observable<ScICountry | undefined> {\n return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));\n }\n}\n","<div [formGroup]=\"form\" *ngIf=\"selectOpf$ | async as selectOpf\" class=\"flex flex-col gap-3 pb-1\">\n <p class=\"font-bold text-lg\">Общая информация контрагента</p>\n <label tuiLabel=\"Тип контрагента (организационно-правовая форма)\">\n <tui-select formControlName=\"opf\" [valueContent]=\"opfContent\">\n Тип контрагента (организационно-правовая форма)\n <tui-data-list *tuiDataList>\n <button *ngFor=\"let item of getOpf$() | async; let index = index\" tuiOption [value]=\"item.slug\">\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template #opfContent let-data>\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error formControlName=\"opf\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label [tuiLabel]=\"opfListEnum[selectOpf] > opfListEnum.individual ? 'Название организации' : 'Ф.И.О.'\">\n <tui-input formControlName=\"name\">\n <ng-template #fio>\n Ф.И.О.\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.fio\"></sc-suggestion-field>\n </ng-template>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.individual; else fio\">\n Название организации\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.individual\">\n <label tuiLabel=\"ИНН организации или ИП\">\n <tui-input formControlName=\"inn\">\n ИНН организации или ИП\n <input tuiTextfield [maskito]=\"innMask(selectOpf)\" autocomplete=\"inn\" />\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"inn\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Код ОКПО\">\n <tui-input formControlName=\"okpo\">\n Код ОКПО\n <input tuiTextfield [maskito]=\"okpoMask(selectOpf)\" autocomplete=\"okpo\" />\n </tui-input>\n <tui-error formControlName=\"okpo\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Ф.И.О. руководителя\">\n <tui-input formControlName=\"directorName\">\n Ф.И.О. руководителя\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.fio\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"directorName\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Должность руководителя\">\n <tui-input formControlName=\"directorPosition\"> Должность руководителя </tui-input>\n <tui-error formControlName=\"directorPosition\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Основания полномочий руководителя\">\n <tui-input formControlName=\"directorActsOn\"> Основания полномочий руководителя </tui-input>\n <tui-error formControlName=\"directorActsOn\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Юридический адрес\">\n <tui-input formControlName=\"legalAddress\">\n Юридический адрес\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.address\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"legalAddress\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Почтовый адрес\">\n <tui-input formControlName=\"postalAddress\">\n Почтовый адрес\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.address\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"postalAddress\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Фактический адрес\">\n <tui-input formControlName=\"actualAddress\">\n Фактический адрес\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.address\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"actualAddress\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.entrepreneur\">\n <label tuiLabel=\"КПП организации\">\n <tui-input formControlName=\"kpp\">\n КПП организации\n <input tuiTextfield [maskito]=\"kppMask\" autocomplete=\"kpp\" />\n </tui-input>\n <tui-error formControlName=\"kpp\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </ng-container>\n <ng-container *ngIf=\"opfListEnum[selectOpf] > opfListEnum.legal\">\n <label tuiLabel=\" Страна регистрации юридического лица\">\n <tui-select formControlName=\"registrationCountryId\" [valueContent]=\"CountryContent\">\n Страна регистрации юридического лица\n <tui-data-list *tuiDataList>\n <button *ngFor=\"let item of getCountries$() | async; let index = index\" tuiOption [value]=\"item.id\">\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template #CountryContent let-data>\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error formControlName=\"registrationCountryId\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Регистрационный номер юридического лица\">\n <tui-input formControlName=\"registrationNumber\"> Регистрационный номер юридического лица </tui-input>\n <tui-error formControlName=\"registrationNumber\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Налоговый номер юридического лица\">\n <tui-input formControlName=\"taxNumber\"> Налоговый номер юридического лица </tui-input>\n <tui-error formControlName=\"taxNumber\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </ng-container>\n </ng-container>\n</div>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, ChangeDetectionStrategy, Optional, Inject } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { UntilDestroy } from '@ngneat/until-destroy';\nimport {\n ScOpfList,\n ScReferencesService,\n ScContragentService,\n ScConvertersService,\n ScLocationsService,\n ScContragentOnDataCreate,\n ScISalesDirection,\n ScIReferencesTypes,\n ScICurrency,\n ScICountry,\n ScIBankAccount,\n ScContragent\n} from '@snabcentr/client-core';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { Observable, map, Subject, catchError, filter, of, share, startWith, switchMap, tap } from 'rxjs';\nimport { ApiErrorResponse } from '../../auth';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\n\n/**\n * Компотен добавления контрагента.\n */\n@Component({\n selector: 'sc-add-contragent-dialog',\n templateUrl: './sc-add-contragent-dialog.component.html',\n styleUrls: ['./sc-add-contragent-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScAddContragentDialogComponent {\n /**\n * Перечисление организационно-правовых форм.\n */\n public readonly opfListEnum: typeof ScOpfList = ScOpfList;\n\n /**\n * Расположение баннера.\n */\n public stepIndex = 0;\n\n /**\n * Родительская `FormGroup`.\n */\n public form = new FormGroup({\n contragent: new FormGroup<any>({})\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса добавления контрагента.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value.contragent as ScContragentOnDataCreate),\n filter((value): value is ScContragentOnDataCreate => this.form.valid),\n switchMap((value) => {\n return this.contragentService.createContragent$(this.convertersService.removeNullRecursive(value)).pipe(\n tap((contragent) => this.context?.completeWith(contragent)),\n catchError((error: HttpErrorResponse) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.controls.contragent.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Текущий выбранный ОПФ.\n */\n public get selectOpf(): ScOpfList {\n return this.opfListEnum[this.form.controls.contragent.controls['opf'].value as keyof typeof ScOpfList];\n }\n\n /**\n * Список групп полей банковских реквизитов.\n */\n public get bankAccounts(): FormArray<ReturnType<ScAddContragentDialogComponent['createBankAccountGroup']>> {\n return this.form.controls.contragent.get('bankAccounts') as FormArray<ReturnType<ScAddContragentDialogComponent['createBankAccountGroup']>>;\n }\n\n /**\n * Список групп полей контактных лиц.\n */\n public get contacts(): FormArray<ReturnType<ScAddContragentDialogComponent['createContactGroup']>> {\n return this.form.controls.contragent.get('contacts') as FormArray<ReturnType<ScAddContragentDialogComponent['createContactGroup']>>;\n }\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContragentDialogComponent}.\n *\n * @param referencesService Сервис справочников.\n * @param contragentService Сервис работы с контрагентами.\n * @param convertersService Сервис конвертации данных.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly referencesService: ScReferencesService,\n private readonly contragentService: ScContragentService,\n private readonly convertersService: ScConvertersService,\n private readonly locationsService: ScLocationsService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n private readonly context: TuiDialogContext<ScContragent, void>\n ) {}\n\n /**\n * Выполняет навигацию по форме создания контрагента.\n *\n * @param delta Значение, на которое необходимо выполнить навигацию.\n */\n public navigate(delta: number): void {\n this.stepIndex = (this.stepIndex + delta) % 3;\n }\n\n /**\n * Проверяет, может ли пользователь перейти к следующему шагу создания контрагента.\n *\n * @returns Выводит значение `boolean` на основании {@link stepIndex}.\n */\n public canNextStep(): boolean {\n switch (this.stepIndex) {\n case 0:\n for (const key in this.form.controls.contragent.controls) {\n if (Object.prototype.hasOwnProperty.call(this.form.controls.contragent.controls, key) && !Array.isArray(this.form.controls.contragent.controls[key].value)) {\n if (this.form.controls.contragent.controls[key].invalid) {\n return false;\n }\n }\n }\n\n return true;\n case 1:\n return this.form.controls.contragent.controls['contacts'].valid;\n case 2:\n return this.form.controls.contragent.controls['bankAccounts'].valid;\n default:\n return true;\n }\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n */\n public getSalesDirections$(): Observable<ScISalesDirection[]> {\n return this.referencesService.directions$;\n }\n\n /**\n * Возвращает {@link Observable} списка направлений продаж.\n */\n public getDirectionById$(directionId: number): Observable<ScISalesDirection | undefined> {\n return this.referencesService.getDirectionById$(directionId);\n }\n\n /**\n * Возвращает {@link Observable} список организационно-правовых форм.\n */\n public getOpf$(): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList>[]> {\n return this.referencesService.opf$;\n }\n\n /**\n * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.\n *\n * @param slug Символьное обозначение (slug).\n */\n public getOpfBySlug$(slug: keyof typeof ScOpfList): Observable<ScIReferencesTypes<ScOpfList, typeof ScOpfList> | undefined> {\n return this.referencesService.getOpfBySlug$(slug);\n }\n\n /**\n * Возвращает {@link Observable} списка валют.\n */\n public getCurrencies$(): Observable<ScICurrency[]> {\n return this.referencesService.currencies$;\n }\n\n /**\n * Возвращает {@link Observable} валюты, соответствующий идентификатору на входе.\n *\n * @param currencyId — Идентификатор валюты.\n */\n public getCurrencyById$(currencyId: number): Observable<ScICurrency | undefined> {\n return this.referencesService.getCurrencyById$(currencyId);\n }\n\n /**\n * Возвращает {@link Observable} списка стран.\n */\n public getCountries$(): Observable<ScICountry[]> {\n return this.locationsService.getCountries$();\n }\n\n /**\n * Возвращает {@link Observable} страны, соответствующий идентификатору на входе.\n *\n * @param countryId — Идентификатор страны.\n */\n public getCountriesById$(countryId: number): Observable<ScICountry | undefined> {\n return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));\n }\n\n /**\n * Создаёт группу полей банковских реквизитов.\n */\n private createBankAccountGroup(): FormGroup<{\n bankName: FormControl<string | null>;\n bic: FormControl<string | null>;\n accountNumber: FormControl<string | null>;\n correspondentAccount: FormControl<string | null>;\n currencyId: FormControl<number | null>;\n }> {\n return new FormGroup({\n bankName: new FormControl<string | null>(null, Validators.required),\n bic: new FormControl<string | null>(null, [Validators.required, Validators.minLength(9), scBicValidator]),\n accountNumber: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20)]),\n correspondentAccount: new FormControl<string | null>(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),\n currencyId: new FormControl<number | null>(null, Validators.required)\n });\n }\n\n /**\n * Добавляет Банковские реквизиты.\n */\n public addBankAccountGroup(): void {\n this.bankAccounts.push(this.createBankAccountGroup());\n }\n\n /**\n * Удаляет банковские реквизиты.\n *\n * @param index Индекс банковских реквизитов.\n */\n public removeBankAccountGroup(index: number): void {\n this.bankAccounts.removeAt(index);\n }\n\n /**\n * Создаёт группу полей контактного лица.\n */\n public createContactGroup(): FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }> {\n return new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null)\n });\n }\n\n /**\n * Добавляет контактное лицо контрагента.\n */\n public addContactGroup(): void {\n this.contacts.push(this.createContactGroup());\n }\n\n /**\n * Удаляет контактное лицо контрагента.\n *\n * @param index Индекс контактного лица.\n */\n public removeContactGroup(index: number): void {\n this.contacts.removeAt(index);\n }\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <tui-elastic-container>\n <tui-carousel [(index)]=\"stepIndex\" [draggable]=\"false\">\n <sc-new-contragent-form *tuiItem scCarouselItemHidden [index]=\"0\"></sc-new-contragent-form>\n\n <div *tuiItem scCarouselItemHidden [index]=\"1\">\n <div *ngIf=\"contacts\" class=\"flex flex-col gap-5 pb-1\">\n <p class=\"font-bold text-lg\">Контакты</p>\n <div *ngFor=\"let contact of contacts.controls; let index = index, let count = count, let last = last\" class=\"flex flex-col gap-3\">\n <div class=\"flex justify-between items-center h-10\">\n <p class=\"font-bold\">Контакт №{{ index + 1 }}:</p>\n <button *ngIf=\"count - 1\" tuiIconButton appearance=\"secondary\" (click)=\"removeContactGroup(index)\" icon=\"tuiIconTrash2Large\"></button>\n </div>\n <sc-new-contact-form [form]=\"contact\"></sc-new-contact-form>\n <hr *ngIf=\"!last\" class=\"w-full h-px bg-tui-base-04\" />\n </div>\n <button tuiButton icon=\"tuiIconPlusLarge\" [appearance]=\"'secondary'\" (click)=\"addContactGroup()\" type=\"button\">Добавить контакт</button>\n </div>\n </div>\n\n <div *tuiItem scCarouselItemHidden [index]=\"2\">\n <div *ngIf=\"bankAccounts\" class=\"flex flex-col gap-5 pb-1\">\n <p class=\"font-bold text-lg\">Банковские реквизиты</p>\n <div *ngFor=\"let bankAccount of bankAccounts.controls; let index = index, let count = count, let last = last\" class=\"flex flex-col gap-3\">\n <div class=\"flex justify-between items-center h-12\">\n <p class=\"font-bold\">Банковские реквизиты №{{ index + 1 }}:</p>\n <button *ngIf=\"count - 1\" tuiIconButton appearance=\"secondary\" (click)=\"removeBankAccountGroup(index)\" icon=\"tuiIconTrash2Large\"></button>\n </div>\n <sc-new-contragent-bank-account-form [form]=\"bankAccount\"></sc-new-contragent-bank-account-form>\n <hr *ngIf=\"!last\" class=\"w-full h-px bg-tui-base-04\" />\n </div>\n <button tuiButton icon=\"tuiIconPlusLarge\" [appearance]=\"'secondary'\" (click)=\"addBankAccountGroup()\" type=\"button\">Добавить банковские реквизиты</button>\n </div>\n </div>\n </tui-carousel>\n </tui-elastic-container>\n <div class=\"flex gap-2 justify-center\">\n <button *ngIf=\"stepIndex > 0\" tuiButton appearance=\"secondary\" type=\"button\" (click)=\"stepIndex = (stepIndex - 1) % 3;\">Назад</button>\n <button\n *ngIf=\"stepIndex === 2 || stepIndex === 1 && !form.controls.contragent.controls['bankAccounts']; else nextIndexBtn\"\n tuiButton\n [disabled]=\"form.invalid\"\n [showLoader]=\"!!(loading$ | async)\"\n type=\"submit\"\n class=\"self-center\"\n >\n Создать\n </button>\n <ng-template #nextIndexBtn>\n <button tuiButton [disabled]=\"!canNextStep()\" type=\"button\" (click)=\"stepIndex = (stepIndex + 1) % 3;\">Далее</button>\n </ng-template>\n </div>\n</form>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input } from '@angular/core';\nimport { ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контактного лица в списке.\n */\n@Component({\n selector: 'sc-contacts-accordion',\n templateUrl: './sc-contacts-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContactsAccordionComponent {\n /**\n * Контактные лица.\n */\n @Input()\n public contacts$: Observable<ScIContact[] | null>;\n\n /**\n * Событие нажатия на кнопку добавления контактного лица.\n */\n @Output()\n public addContactClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица.\n */\n @Output()\n public deleteButtonClick: EventEmitter<ScIContact> = new EventEmitter<ScIContact>();\n}\n","<sc-accordion (addButtonClick)=\"addContactClick.emit()\">\n Контакты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contacts$ | async as contacts\" [overlay]=\"true\" [showLoader]=\"contacts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contacts || contacts.length; else contactsNotExist\">\n <div *ngFor=\"let contact of contacts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\n {{ contact.name }}\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhoneLarge\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ contact.phone }}\"\n >{{ contact.phone | tuiFormatPhone }}</a\n >\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMailLarge\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ contact.email }}\"> {{ contact.email }} </a>\n </div>\n <!-- Функционал удаления временно не доступен пользователю. -->\n <!-- <div class=\"flex flex-col md:flex-row gap-1\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteButtonClick.emit(contact)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #contactsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">Контакты не указаны.</div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, OnInit } from '@angular/core';\nimport { ScContragent, ScContragentService, ScIBankAccount, ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контрагента пользователя.\n */\n@Component({\n selector: 'sc-contragents-accordion-item',\n templateUrl: './sc-contragents-accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContragentsAccordionItemComponent implements OnInit {\n /**\n * Контрагент пользователя.\n */\n @Input()\n public contragent: ScContragent;\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Список банковских счетов контрагента.\n */\n public bankAccounts$?: Observable<ScIBankAccount[] | null>;\n\n /**\n * Список банковских счетов контрагента.\n */\n public contacts$?: Observable<ScIContact[] | null>;\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentsAccordionItemComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n */\n public constructor(private readonly contragentService: ScContragentService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.bankAccounts$ = this.contragentService.getContragentBankAccounts$(this.contragent.id);\n this.contacts$ = this.contragentService.getContragentContacts$(this.contragent.id);\n }\n\n /**\n * Обработчик нажатия на кнопку удаления контактного лица у контрагента.\n *\n * @param contact Контактное лицо.\n * @param contragent Контрагент.\n */\n public onDeleteContragentContactClick(contact: ScIContact, contragent: ScContragent): void {\n this.deleteContragentContactClick.emit({ contact: contact, contragent: contragent });\n }\n}\n","<sc-accordion [showAddButton]=\"false\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">ИНН: {{ inn }}</span>\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">ИНН: {{ inn }}</span>\n <span *ngIf=\"$any(contragent).kpp as kpp\">КПП: {{ kpp }}</span>\n </div>\n <!-- Функционал удаления и редактирования временно не доступен пользователю. -->\n <!-- <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit(contragent.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentClick.emit(contragent)\"\n ></button> -->\n </div>\n\n <sc-accordion (addButtonClick)=\"addContragentBankAccountClick.emit(contragent)\">\n Банковские реквизиты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"bankAccounts$ | async as bankAccounts\" [overlay]=\"true\" [showLoader]=\"bankAccounts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div *ngFor=\"let bankAccount of bankAccounts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\n <span>Банк: {{ bankAccount.bankName }}</span>\n <span>БИК: {{ bankAccount.bic }}</span>\n <span>Р/счёт: {{ bankAccount.accountNumber }}</span>\n <span>Кор/счёт: {{ bankAccount.correspondentAccount }}</span>\n <span>Валюта: {{ bankAccount.currency.name }}</span>\n </div>\n <!-- <div class=\"flex flex-col md:flex-row gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editBankAccountsContragentClick.emit(bankAccount.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentBankAccountClick.emit(bankAccount)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n У контрагента <span class=\"font-bold\">{{ contragent.name }}</span> не указаны банковские реквизиты.\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion\n *ngIf=\"contacts$\"\n [contacts$]=\"contacts$\"\n (addContactClick)=\"addContragentContactClick.emit(contragent)\"\n (deleteButtonClick)=\"onDeleteContragentContactClick($event, contragent)\"\n ></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScContragent, ScContragentService, ScIBankAccount, ScIContact } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент контрагента пользователя.\n */\n@Component({\n selector: 'sc-contragents-accordion',\n templateUrl: './sc-contragents-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScContragentsAccordionComponent {\n /**\n * {@link Observable} данных о контрагентах пользователя.\n */\n public contragents$: Observable<ScContragent[] | null> = this.contragentService.contragents$;\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public addContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScContragentsAccordionComponent}.\n *\n * @param contragentService Сервис работы с контрагентами.\n */\n public constructor(private readonly contragentService: ScContragentService) {}\n}\n","<sc-accordion (addButtonClick)=\"addContragentClick.emit()\">\n Контрагенты\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contragents$ | async as contragents\" [overlay]=\"true\" [showLoader]=\"contragents === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contragents || contragents.length; else contragentsNotExist\">\n <sc-contragents-accordion-item\n *ngFor=\"let contragent of contragents\"\n [contragent]=\"contragent\"\n (deleteContragentClick)=\"deleteContragentClick.emit($event)\"\n (addContragentBankAccountClick)=\"addContragentBankAccountClick.emit($event)\"\n (deleteContragentBankAccountClick)=\"deleteContragentBankAccountClick.emit($event)\"\n (addContragentContactClick)=\"addContragentContactClick.emit($event)\"\n (deleteContragentContactClick)=\"deleteContragentContactClick.emit($event)\"\n ></sc-contragents-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">Контрагенты не указаны.</div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { ChangeDetectionStrategy, Component, Inject, OnInit, SkipSelf } from '@angular/core';\nimport { FormControl, FormGroupDirective, Validators } from '@angular/forms';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ScICity, ScICountry, ScIRegion, ScLocationsService } from '@snabcentr/client-core';\nimport { tuiControlValue, tuiIsPresent, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { Observable, combineLatest, debounceTime, filter, of, share, startWith, switchMap } from 'rxjs';\n\n/**\n * Компонент поля ввода страны/региона/города.\n */\n@Component({\n selector: 'sc-addresses-selection-field',\n templateUrl: './sc-addresses-selection-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScAddressesSelectionFieldComponent implements OnInit {\n /**\n * FormControl для поля страны.\n */\n public countryControl: FormControl<ScICountry | null> = new FormControl<ScICountry | null>(\n {\n id: 3159,\n name: 'Россия'\n },\n Validators.required\n );\n\n /**\n * FormControl для поля региона.\n */\n public regionControl: FormControl<ScIRegion | null> = new FormControl<ScIRegion | null>(null, Validators.required);\n\n /**\n * FormControl для поля города.\n */\n public cityControl: FormControl<ScICity | null> = new FormControl<ScICountry | null>(null, Validators.required);\n\n /**\n * {@link Observable} изменения списка стран.\n */\n public countries$: Observable<ScICountry[] | null> = this.locationsService.getCountries$().pipe(share(), startWith(null));\n\n /**\n * {@link Observable} изменения списка регионов.\n */\n public regions$: Observable<ScIRegion[] | null> = tuiControlValue<ScIRegion | null>(this.countryControl).pipe(\n filter(tuiIsPresent),\n switchMap((country: ScICountry) => this.locationsService.getRegions$(country.id).pipe(startWith(null))),\n share()\n );\n\n /**\n * {@link Observable} изменения списка городов.\n */\n public cities$: Observable<ScICity[] | null> = combineLatest({\n country: tuiControlValue<ScIRegion | null>(this.countryControl),\n region: tuiControlValue<ScICity | null>(this.regionControl)\n }).pipe(\n debounceTime(0),\n switchMap(({ country, region }: { country: ScIRegion | null; region: ScICity | null }) =>\n country && region ? this.locationsService.getCities$(country.id, region.id).pipe(startWith(null)) : of([])\n ),\n share()\n );\n\n /**\n * `FormControl` поля идентификатора города.\n */\n public get cityIdControl(): FormControl<string | null> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.formGroupDirective.form.get('cityId')! as FormControl<string | null>;\n }\n\n /**\n * Инициализирует экземпляр класса {@link ScAddressesSelectionFieldComponent}.\n *\n * @param formGroupDirective Директива c `FormGroup` из DOM.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n */\n public constructor(\n @SkipSelf() @Inject(FormGroupDirective) private readonly formGroupDirective: FormGroupDirective,\n private readonly locationsService: ScLocationsService\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n if (this.cityIdControl.valid) {\n this.locationsService\n .getUserCity$(Number(this.cityIdControl?.value))\n .pipe(untilDestroyed(this))\n .subscribe((city: ScICity) => {\n this.countryControl.patchValue(city?.region?.country ?? null);\n this.regionControl.patchValue(city?.region ?? null);\n this.cityControl.patchValue(city);\n });\n }\n\n this.countryControl.valueChanges.pipe(untilDestroyed(this)).subscribe((country) => {\n this.regionControl.reset(null);\n this.cityControl.reset(null);\n country ? this.regionControl.enable() : this.regionControl.disable();\n this.cityControl.disable();\n });\n\n this.regionControl.valueChanges.pipe(untilDestroyed(this)).subscribe((region) => {\n this.cityControl.reset(null);\n this.cityIdControl.reset(null);\n region ? this.cityControl.enable() : this.cityControl.disable();\n });\n }\n\n /**\n * Заполнение полей банковских реквизитов на основе выбранной подсказки.\n *\n * @param suggestion Объект подсказки по банку.\n */\n public onSelectedCity(city: ScICity | null): void {\n if (this.cityIdControl) {\n this.cityIdControl.setValue(city?.id.toString() ?? null);\n tuiMarkControlAsTouchedAndValidate(this.cityIdControl);\n }\n }\n\n /**\n * Функция преобразования объекта сортировки в значение, отображаемое в поле ввода.\n *\n * @param item Выбранный объект выпадающего списка.\n */\n public readonly stringify = (item: { name: string }): string => `${item.name}`;\n}\n","<div class=\"flex flex-col sm:flex-row gap-4 items-start\">\n <!-- TODO: Открыть поле выбора страны при добавлении возможности выбора страны для клиента. -->\n <!-- <label tuiLabel=\"Страна\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"countries$ | async as countries\" [formControl]=\"countryControl\" [stringify]=\"stringify\">\n Страна\n <input tuiTextfield autocomplete=\"new-password\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"countries | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"countryControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label> -->\n <!-- TODO: [TASK:9383]: Доработать компонент выбора города, как на портале -->\n <label tuiLabel=\"Регион\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"regions$ | async as regions\" [formControl]=\"regionControl\" [stringify]=\"stringify\">\n Регион\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"regions | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"regionControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Город\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"cities$ | async as cities\" [formControl]=\"cityControl\" [stringify]=\"stringify\" (ngModelChange)=\"onSelectedCity($event)\">\n Город\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"cities | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"cityIdControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n <tui-error *ngIf=\"cityIdControl.untouched\" [formControl]=\"cityControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { TuiTextfieldControllerModule, TuiLabelModule, TuiErrorModule, TuiDataListModule, TuiLoaderModule, TuiButtonModule } from '@taiga-ui/core';\nimport {\n TuiInputModule,\n TuiFieldErrorPipeModule,\n TuiComboBoxModule,\n TuiDataListWrapperModule,\n TuiFilterByInputPipeModule,\n TuiStringifyContentPipeModule,\n TuiInputPhoneModule\n} from '@taiga-ui/kit';\nimport { MaskitoModule } from '@maskito/angular';\nimport { ScAddressesSelectionFieldComponent } from './addresses-selection-field/sc-addresses-selection-field.component';\nimport { ScSuggestionFieldComponent } from './suggestion-field/sc-suggestion-field.component';\n\n/**\n * Модуль полей ввода.\n */\n@NgModule({\n declarations: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiLabelModule,\n TuiLetModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiDataListModule,\n TuiLoaderModule,\n TuiComboBoxModule,\n TuiDataListWrapperModule,\n TuiFilterByInputPipeModule,\n TuiStringifyContentPipeModule,\n TuiInputPhoneModule,\n TuiButtonModule,\n MaskitoModule\n ],\n exports: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent]\n})\nexport class ScFormFieldsModule {}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport {\n ScContragentService,\n ScIBankAccountOnDataCreate,\n ScIBankAccount,\n ScIContactOnDataCreate,\n ScContactsService,\n ScIContactWithRelations,\n ScConvertersService,\n ScIContactBase\n} from '@snabcentr/client-core';\nimport { Observable, Subject, catchError, filter, map, of, share, startWith, switchMap, tap } from 'rxjs';\nimport { scBicValidator, scCorrespondentAccountValidator } from '../../validators';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\n\n/**\n * Компонент формы создания нового контактного лица.\n */\n@Component({\n selector: 'sc-add-contact-dialog',\n templateUrl: './sc-add-contact-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScAddContactDialogComponent {\n /**\n * Группа с полями контактного лица.\n */\n public form: FormGroup<{\n name: FormControl<string | null>;\n phone: FormControl<string | null>;\n email: FormControl<string | null>;\n position: FormControl<string | null>;\n }> = new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null, Validators.required)\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса добавления контактного лица.\n */\n private readonly request$ = this.onSubmit.pipe(\n map(() => this.form.value),\n filter((value): value is ScIContactOnDataCreate => this.form.valid),\n map((value) => this.convertersService.removeNull<ScIContactOnDataCreate>({ ...value, ...this.context.data })),\n switchMap((data) => {\n return this.contactsService.createContact$(data).pipe(\n tap((contact) => this.context?.completeWith(contact)),\n catchError((error: HttpErrorResponse) => {\n tuiMarkControlAsTouchedAndValidate(this.form);\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({} as ScIBankAccount);\n }),\n startWith(null)\n );\n }),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScAddContactDialogComponent}.\n *\n * @param contactsService Сервис для работы с контактными лицами.\n * @param convertersService Сервис конвертации данных.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly contactsService: ScContactsService,\n public readonly convertersService: ScConvertersService,\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context: TuiDialogContext<ScIContactWithRelations, Omit<ScIContactOnDataCreate, keyof ScIContactBase>>\n ) {}\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\n <sc-new-contact-form [form]=\"form\"></sc-new-contact-form>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">Отмена</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">Сохранить</button>\n </div>\n</form>\n","import { NgModule } from '@angular/core';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport {\n TuiButtonModule,\n TuiDataListModule,\n TuiErrorModule,\n TuiFormatPhonePipeModule,\n TuiLabelModule,\n TuiLinkModule,\n TuiLoaderModule,\n TuiModeModule,\n TuiNotificationModule\n} from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScContactsAccordionComponent } from './contacts-accordion/sc-contacts-accordion.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { MaskitoModule } from '@maskito/angular';\nimport { TuiDataListWrapperModule, TuiFieldErrorPipeModule, TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/kit';\nimport { ScNewContactFormComponent } from './new-contact-form/sc-new-contact-form.component';\nimport { ScAddContactDialogComponent } from './add-contact-dialog/sc-add-contact-dialog.component';\n\n/**\n * Модуль контактных лиц.\n */\n@NgModule({\n declarations: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ScAccordionModule,\n TuiButtonModule,\n TuiModeModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiNotificationModule,\n TuiLinkModule,\n TuiFormatPhonePipeModule,\n ScFormFieldsModule,\n MaskitoModule,\n TuiFieldErrorPipeModule,\n TuiSelectModule,\n TuiDataListModule,\n TuiDataListWrapperModule,\n TuiLabelModule,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiErrorModule\n ],\n exports: [ScContactsAccordionComponent, ScNewContactFormComponent, ScAddContactDialogComponent]\n})\nexport class ScContactsModule {}\n","import { NgModule } from '@angular/core';\nimport { TuiCarouselModule } from '@taiga-ui/kit';\nimport { ScCarouselItemHiddenDirective } from './sc-carousel-item-hidden.directive';\n\n/**\n * Модуль директивы для скрытия элементов карусели тайги.\n */\n@NgModule({\n imports: [TuiCarouselModule],\n declarations: [ScCarouselItemHiddenDirective],\n exports: [ScCarouselItemHiddenDirective]\n})\nexport class ScCarouselItemHiddenModule {}\n","import { NgModule } from '@angular/core';\nimport { ScContragentsAccordionComponent } from './contragents-accordion/sc-contragents-accordion.component';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport { TuiButtonModule, TuiDataListModule, TuiErrorModule, TuiLabelModule, TuiLoaderModule, TuiModeModule, TuiNotificationModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScContragentsAccordionItemComponent } from './contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScNewContragentBankAccountsFormComponent } from './new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component';\nimport { ScAddContragentBankAccountsDialogComponent } from './add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScAddContragentDialogComponent } from './add-contragent-dialog/sc-add-contragent-dialog.component';\nimport { ScNewContragentFormComponent } from './new-contragent-form/sc-new-contragent-form.component';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { TuiCarouselModule, TuiDataListWrapperModule, TuiElasticContainerModule, TuiFieldErrorPipeModule, TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/kit';\nimport { MaskitoModule } from '@maskito/angular';\nimport { ScCarouselItemHiddenModule } from '../directives';\n\n/**\n * Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScContragentsAccordionComponent, ScContragentsAccordionItemComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent, ScAddContragentDialogComponent, ScNewContragentFormComponent],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n ScAccordionModule,\n TuiButtonModule,\n TuiModeModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiNotificationModule,\n ScContactsModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiSelectModule,\n TuiDataListModule,\n TuiDataListWrapperModule,\n TuiLabelModule,\n TuiInputModule,\n TuiInputPhoneModule,\n MaskitoModule,\n ScFormFieldsModule,\n TuiElasticContainerModule,\n TuiCarouselModule,\n ScCarouselItemHiddenModule\n ],\n exports: [ScContragentsAccordionComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent, ScAddContragentDialogComponent, ScNewContragentFormComponent]\n})\nexport class ScContragentsModule {}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ScConvertersService, ScDeliveryAddressService, ScIDeliveryAddressOnDataCreate, ScISuggestionType, ScIDeliveryAddress } from '@snabcentr/client-core';\nimport { tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { ApiErrorResponse } from 'projects/client-ui/auth';\nimport { Observable, Subject, catchError, filter, map, of, share, startWith, switchMap, tap } from 'rxjs';\n\n/**\n * Компонент добавления адреса доставки.\n *\n * TODO: TASK[8813] Добавить карту, и поведение выбора адреса доставки через карту. При этом вынести форму в отдельный компонент AddDeliveryAddressForm или submit логику в директиву.\n */\n@Component({\n selector: 'sc-add-delivery-address-dialog',\n templateUrl: './sc-add-delivery-address-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScAddDeliveryAddressDialogComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit$: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных добавления адрес доставки.\n */\n private readonly request$: Observable<ScIDeliveryAddress | null | undefined> = this.onSubmit$.pipe(\n tap(() => tuiMarkControlAsTouchedAndValidate(this.form)),\n filter(() => this.form.valid),\n map(() => this.form.value as ScIDeliveryAddressOnDataCreate),\n switchMap((value) =>\n this.deliveryAddressService.createDeliveryAddress$(this.convertersService.removeNullRecursive<ScIDeliveryAddressOnDataCreate>(value)).pipe(\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of(undefined);\n }),\n tap(() => this.context.completeWith()),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map((data) => data === null));\n\n /**\n * Форма для создания адреса доставки.\n */\n public readonly form = new FormGroup({\n address: new FormControl<string | null>(null, Validators.required),\n contact: new FormGroup({\n name: new FormControl<string | null>(null, Validators.required),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n email: new FormControl<string | null>(null, Validators.email),\n position: new FormControl<string | null>(null)\n })\n });\n\n /**\n * Инициализирует экземпляр класса {@link ScAddDeliveryAddressDialogComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n * @param convertersService Сервис конвертации данных.\n */\n public constructor(\n private readonly deliveryAddressService: ScDeliveryAddressService,\n @Inject(POLYMORPHEUS_CONTEXT) private readonly context: TuiDialogContext<void, void>,\n private readonly convertersService: ScConvertersService\n ) {}\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit$.next()\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"Адрес доставки\">\n <tui-input formControlName=\"address\">\n Адрес доставки\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.address\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"address\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <div formGroupName=\"contact\" class=\"flex flex-col gap-2 grow\">\n <p class=\"font-bold w-full\">Контактное лицо:</p>\n <label tuiLabel=\"Ф.И.О.\">\n <tui-input formControlName=\"name\">\n Ф.И.О.\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.fio\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Телефон\">\n <tui-input-phone formControlName=\"phone\"> Телефон </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Адрес электронной почты\">\n <tui-input formControlName=\"email\">\n <input tuiTextfield type=\"email\" />\n Адрес электронной почты\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Должность\">\n <tui-input formControlName=\"position\"> Должность </tui-input>\n <tui-error formControlName=\"position\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </div>\n <button tuiButton matRipple [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" class=\"self-center\">Добавить</button>\n</form>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, OnInit } from '@angular/core';\nimport { ScDeliveryAddressService, ScIContact, ScIDeliveryAddress } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент адреса доставки.\n */\n@Component({\n selector: 'sc-delivery-address-accordion-item',\n templateUrl: './sc-delivery-address-accordion-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScDeliveryAddressAccordionItemComponent implements OnInit {\n /**\n * Адрес доставки.\n */\n @Input()\n public deliveryAddress: ScIDeliveryAddress;\n\n /**\n * Список банковских счетов контрагента.\n */\n public contacts$?: Observable<ScIContact[] | null>;\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица адресу доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScDeliveryAddressAccordionItemComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n */\n public constructor(private readonly deliveryAddressService: ScDeliveryAddressService) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.contacts$ = this.deliveryAddressService.getDeliveryAddressContacts$(this.deliveryAddress.id);\n }\n\n /**\n * Обработчик нажатия на кнопку удаления контактного лица у адреса доставки.\n *\n * @param contact Контактное лицо.\n * @param address Адрес доставки клиента.\n */\n public onDeleteContragentContactClick(contact: ScIContact, address: ScIDeliveryAddress): void {\n this.deleteDeliveryAddressContactClick.emit({ contact: contact, address: address });\n }\n}\n","<sc-accordion [showAddButton]=\"false\">\n {{ deliveryAddress.address }}\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n <span> Адрес: {{ deliveryAddress.address }} </span>\n <span *ngIf=\"deliveryAddress.comment\"> Комментарий: {{ deliveryAddress.comment }} </span>\n </div>\n <!-- Функционал удаления временно не доступен пользователю. -->\n <!-- <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteDeliveryAddressClick.emit(deliveryAddress)\"\n ></button> -->\n </div>\n\n <sc-contacts-accordion\n *ngIf=\"contacts$\"\n [contacts$]=\"contacts$\"\n (addContactClick)=\"addDeliveryAddressContactClick.next(deliveryAddress)\"\n (deleteButtonClick)=\"onDeleteContragentContactClick($event, deliveryAddress)\"\n ></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { ScDeliveryAddressService, ScIContact, ScIDeliveryAddress } from '@snabcentr/client-core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент адресов доставки.\n */\n@Component({\n selector: 'sc-delivery-address-accordion',\n templateUrl: './sc-delivery-address-accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScDeliveryAddressAccordionComponent {\n /**\n * {@link Observable} данных адресов доставки.\n */\n public deliveryAddress$: Observable<ScIDeliveryAddress[] | null> = this.deliveryAddressService.deliveryAddresses$;\n\n /**\n * Событие нажатия на кнопку добавления адреса доставки клиента.\n */\n @Output()\n public addDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки клиента.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица для адреса доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }>();\n\n /**\n * Инициализирует экземпляр класса {@link ScDeliveryAddressAccordionComponent}.\n *\n * @param deliveryAddressService Сервис работы с адресами доставки.\n */\n public constructor(private readonly deliveryAddressService: ScDeliveryAddressService) {}\n}\n","<sc-accordion (addButtonClick)=\"addDeliveryAddressClick.emit()\">\n Адреса доставки\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"deliveryAddress$ | async as deliveryAddress\" [overlay]=\"true\" [showLoader]=\"deliveryAddress === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!deliveryAddress || deliveryAddress.length; else contragentsNotExist\">\n <sc-delivery-address-accordion-item\n *ngFor=\"let address of deliveryAddress\"\n [deliveryAddress]=\"address\"\n (deleteDeliveryAddressClick)=\"deleteDeliveryAddressClick.emit($event)\"\n (addDeliveryAddressContactClick)=\"addDeliveryAddressContactClick.emit($event)\"\n (deleteDeliveryAddressContactClick)=\"deleteDeliveryAddressContactClick.emit($event)\"\n ></sc-delivery-address-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">Адреса доставки не указаны.</div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n","import { NgModule } from '@angular/core';\nimport { ScAccordionModule } from '../accordion';\nimport { CommonModule } from '@angular/common';\nimport { TuiButtonModule, TuiErrorModule, TuiLabelModule, TuiLoaderModule, TuiModeModule, TuiNotificationModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScDeliveryAddressAccordionItemComponent } from './delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component';\nimport { ScContactsModule } from '../contacts/sc-contacts.module';\nimport { ScDeliveryAddressAccordionComponent } from './delivery-address-accordion/sc-delivery-address-accordion.component';\nimport { ScAddDeliveryAddressDialogComponent } from './add-delivery-address-dialog/sc-add-delivery-address-dialog.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiFieldErrorPipeModule, TuiInputModule, TuiInputPhoneModule } from '@taiga-ui/kit';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\n\n/**\n * Модуль для отображение адресов доставки разделами, с возможностью скрывать и отображать содержимое.\n */\n@NgModule({\n declarations: [ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScAddDeliveryAddressDialogComponent],\n imports: [\n CommonModule,\n ScAccordionModule,\n TuiButtonModule,\n TuiModeModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiNotificationModule,\n ScContactsModule,\n FormsModule,\n ReactiveFormsModule,\n TuiLabelModule,\n TuiFieldErrorPipeModule,\n TuiErrorModule,\n TuiInputModule,\n TuiInputPhoneModule,\n ScFormFieldsModule\n ],\n exports: [ScDeliveryAddressAccordionComponent, ScAddDeliveryAddressDialogComponent]\n})\nexport class ScDeliveryAddressModule {}\n","import { Injectable } from '@angular/core';\nimport { ScDocumentInfo, ScIconTypesEnum } from '@snabcentr/client-core';\n\n/**\n * Сервис работающий с значками элементов дерева.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class TreeIconService {\n /**\n * Назначает значок элементу дерева в зависимости от типа файла.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает название значка в виде строки.\n */\n public getIconName(info: ScDocumentInfo): string {\n switch (info.icon) {\n case ScIconTypesEnum.iconImage:\n return 'tuiIconImageLarge';\n case ScIconTypesEnum.iconPdfFile:\n return 'scIconPdfFile';\n case ScIconTypesEnum.iconWordFile:\n return 'scIconWordFile';\n case ScIconTypesEnum.iconExcelFile:\n return 'scIconExcelFile';\n case ScIconTypesEnum.iconFolder:\n return 'scIconFolder';\n default:\n return 'scIconFile';\n }\n }\n\n /**\n * Проверяет на признак наличия дочерних элементов.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает true при наличии дочерних элементов и false при их отсутствии.\n */\n public hasChildren(info: ScDocumentInfo): boolean {\n return info.type === 'dir';\n }\n}\n","import { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { Injectable } from '@angular/core';\nimport { TuiTreeLoader } from '@taiga-ui/kit';\nimport { Observable, map } from 'rxjs';\nimport { TreeIconService } from './tree-icon.service';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Сервис для асинхронного раскрытия вложенности.\n */\n@Injectable()\nexport class TreeLoaderService implements TuiTreeLoader<TreeNode> {\n /**\n * Инициализирует экземпляр класса {@link TreeLoaderService}\n *\n * @param filesService Сервис для получения файлов директории.\n * @param iconService Сервис для определения и назначения значка элементу дерева.\n */\n public constructor(private readonly filesService: ScFilesService, private readonly iconService: TreeIconService) {}\n\n /**\n * Загружает дочерние элементы дерева.\n *\n * @param item Элемент дерева.\n * @returns Массив дочерних элементов.\n */\n public loadChildren(item: TreeNode): Observable<TreeNode[]> {\n return item.id ? this.initData(item.id) : this.initData(undefined);\n }\n\n /**\n * Проверяет указанный элемент дерева на наличие дочерних элементов и возвращает массив дочерних элементов, если они есть, либо пустой массив.\n *\n * @param node Элемент дерева.\n * @returns Возвращает массив типа TreeNode[].\n */\n public hasChildren(node: TreeNode): boolean {\n return node.hasChildren && !!node.id;\n }\n\n /**\n * Загружает и заполняет массив дочерних элементов.\n *\n * @param id Идентификатор директории, чьи дочернии элементы загружаются.\n * @returns Возвращает массив дочерних элементов.\n */\n private initData(id: number | undefined): Observable<TreeNode[]> {\n return this.filesService.getFiles(id).pipe(\n map((data: ScDocumentInfo[]) =>\n data.map((item) => ({\n text: item.name,\n icon: this.iconService.getIconName(item),\n hasChildren: this.iconService.hasChildren(item),\n createdAt: item.createdAt,\n id: item.id,\n link: item.link\n }))\n )\n );\n }\n}\n","import { Directive } from '@angular/core';\nimport { TuiHandler } from '@taiga-ui/cdk';\nimport { TuiTreeService } from '@taiga-ui/kit';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Директива отвечающая за обработку действий над элементами дерева.\n */\n@Directive({\n selector: '[scTree]',\n exportAs: 'scTree',\n providers: [TuiTreeService]\n})\nexport class TreeDirective {\n /**\n * Карта данных дерева.\n */\n public map = new Map<TreeNode, boolean>();\n\n /**\n * Инициализирует экземпляр класса {@link TreeDirective}.\n *\n * @param service Сервис для работы с деревом.\n */\n public constructor(public readonly service: TuiTreeService<TreeNode>) {}\n\n /**\n * Проверяет указанный элемент дерева на наличие дочерних элементов и возвращает массив дочерних элементов, если они есть, либо пустой массив.\n *\n * @param node Элемент дерева.\n * @returns Возвращает массив типа TreeNode[].\n */\n public childrenHandler: TuiHandler<TreeNode, readonly TreeNode[]> = (node) => (node.hasChildren ? this.service.getChildren(node) : []);\n\n /**\n * Обрабатывает нажатие на указанный элемент дерева.\n *\n * @param node Элемент дерева.\n */\n public onToggled(node: TreeNode): void {\n this.service.loadChildren(node);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { TuiTreeItemContentComponent } from '@taiga-ui/kit';\n\n/**\n * Компонент для удаления стандартного значка элемента дерева.\n */\n@Component({\n selector: 'sc-file-tree-item',\n templateUrl: './file-tree-item.component.html',\n styleUrls: ['./file-tree-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(click)': 'onClick()'\n }\n})\nexport class FileTreeItemComponent extends TuiTreeItemContentComponent {}\n","<ng-container [ngTemplateOutlet]=\"context.template\"></ng-container>\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { Directive, Input, forwardRef } from '@angular/core';\nimport { TUI_TREE_CONTENT, TUI_TREE_START } from '@taiga-ui/kit';\nimport { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus';\nimport { FileTreeItemComponent } from '../file-tree-item/file-tree-item.component';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Директива отвечающая за корневые элементы дерева.\n */\n@Directive({\n selector: '[scTopNodeText]',\n providers: [\n {\n provide: TUI_TREE_START,\n useExisting: forwardRef(() => TreeTopDirective)\n },\n {\n provide: TUI_TREE_CONTENT,\n useValue: new PolymorpheusComponent(FileTreeItemComponent)\n }\n ]\n})\nexport class TreeTopDirective implements TreeNode {\n /**\n * Отображаемое имя корневого элемента дерева.\n */\n @Input('scTopNodeText')\n public text = '';\n\n /**\n * Значок корневого элемента дерева.\n */\n @Input('scTopNodeIcon')\n public icon: string;\n\n /**\n * Ссылка корневого элемента дерева.\n */\n @Input('scTopNodeLink')\n public link?: string;\n\n /**\n * Признак наличия дочерних элементов.\n */\n @Input('scTopNodeChilds')\n public hasChildren: boolean;\n\n /**\n * Идентификатор корневого элемента дерева.\n */\n @Input('scTopNodeParent')\n public id?: number;\n\n /**\n * Дата создания корневого элемента дерева.\n */\n @Input('scTopNodeDate')\n public createdAt?: string;\n}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { TUI_TREE_LOADER, TUI_TREE_LOADING } from '@taiga-ui/kit';\nimport { map, Observable } from 'rxjs';\n\nimport { TreeNode } from '../interfaces/tree-node';\nimport { TreeIconService } from '../services/tree-icon.service';\nimport { TreeLoaderService } from '../services/tree-loader.service';\n\n/**\n * Компонент файлов и документов.\n */\n@Component({\n selector: 'sc-files-and-documents',\n templateUrl: './files-and-documents.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_TREE_LOADER,\n useClass: TreeLoaderService,\n },\n ],\n})\nexport class FilesAndDocumentsComponent {\n /**\n * Данные визуализации и их начальное получение.\n */\n public data$: Observable<TreeNode[]> = this.filesService.getFiles().pipe(\n map((data: ScDocumentInfo[]) =>\n data.map((item) => ({\n text: item.name,\n icon: this.iconService.getIconName(item),\n hasChildren: this.iconService.hasChildren(item),\n createdAt: item.createdAt,\n id: item.id,\n link: item.link,\n }))\n )\n );\n\n /**\n * Инициализирует экземпляр класса {@link FilesAndDocumentsComponent}.\n *\n * @param loading Объект отвечающий за значок загрузки, в момент раскрытия элемента дерева.\n * @param iconService Сервис для определения и назначения значка элементу дерева.\n * @param filesService Сервис для загрузки файлов.\n */\n public constructor(\n @Inject(TUI_TREE_LOADING) public readonly loading: unknown,\n public readonly iconService: TreeIconService,\n private readonly filesService: ScFilesService\n ) {}\n}\n","<ng-container *ngIf=\"data$ | async as data; else skeleton\">\n <tui-tree\n *ngFor=\"let node of data\"\n #tree=\"scTree\"\n scTree\n [scTopNodeText]=\"node.text\"\n [scTopNodeIcon]=\"node.icon\"\n [scTopNodeLink]=\"node.link\"\n [scTopNodeChilds]=\"node.hasChildren\"\n [scTopNodeParent]=\"node.id\"\n [scTopNodeDate]=\"node.createdAt\"\n [childrenHandler]=\"tree.childrenHandler\"\n [content]=\"content\"\n [map]=\"tree.map\"\n [tuiTreeController]=\"false\"\n [value]=\"tree.service.data$ | async\"\n (toggled)=\"tree.onToggled($event)\"\n class=\"overflow-hidden\"\n ></tui-tree>\n</ng-container>\n\n<ng-template\n #content\n let-item\n>\n <tui-loader\n *ngIf=\"item === loading; else text\"\n class=\"my-4 w-8\"\n ></tui-loader>\n <ng-template #text>\n <tui-svg\n [src]=\"item.icon\"\n class=\"tui-space_right-2\"\n ></tui-svg>\n <a\n tuiLink\n [pseudo]=\"true\"\n *ngIf=\"item.link\"\n href=\"{{ item.link }}\"\n class=\"grow\"\n >{{ item.text }}</a\n >\n <p\n *ngIf=\"!item.link\"\n class=\"grow\"\n >\n {{ item.text }}\n </p>\n <p>{{ item.createdAt }}</p>\n </ng-template>\n</ng-template>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col gap-2\">\n <div\n *ngFor=\"let _ of [].constructor(7)\"\n class=\"flex items-center gap-2\"\n >\n <div class=\"tui-skeleton size-6\"></div>\n <div class=\"tui-skeleton h-4 w-40\"></div>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TuiLinkModule, TuiLoaderModule, TuiSvgModule } from '@taiga-ui/core';\nimport { TuiTreeModule } from '@taiga-ui/kit';\n\nimport { TreeTopDirective } from './directives';\nimport { TreeDirective } from './directives/tree.directive';\nimport { FileTreeItemComponent } from './file-tree-item/file-tree-item.component';\nimport { FilesAndDocumentsComponent } from './files-and-documents/files-and-documents.component';\n\n/**\n * Модуль файлов и документов.\n */\n@NgModule({\n imports: [CommonModule, TuiTreeModule, TuiSvgModule, TuiLoaderModule, TuiLinkModule],\n declarations: [FilesAndDocumentsComponent, TreeDirective, TreeTopDirective, FileTreeItemComponent],\n exports: [FilesAndDocumentsComponent],\n})\nexport class FilesAndDocumentsModule {}\n","/**\n * Список иконок.\n */\nexport const scClientUiIconsName = [\n 'scIconWordFile',\n 'scIconWindowsill',\n 'scIconWarning',\n 'scIconSandwichPanels',\n 'scIconWallet',\n 'scIconViewTree',\n 'scIconViewInline',\n 'scIconTop',\n 'scIconTemplates',\n 'scIconTasks',\n 'scIconSuitcase',\n 'scIconStar',\n 'scIconSocialWhatsapp',\n 'scIconSocialVk',\n 'scIconSocialViber',\n 'scIconSocialTelegram',\n 'scIconSocialQR',\n 'scIconSocialInstagram',\n 'scIconSocialFacebook',\n 'scIconSocialEmail',\n 'scIconSocialCopy',\n 'scIconSmile',\n 'scIconSiding',\n 'scIconShare',\n 'scIconSend',\n 'scIconSearch',\n 'scIconSave',\n 'scIconSandwich',\n 'scIconRocket',\n 'scIconRequisites',\n 'scIconRepeat',\n 'scIconReclamation',\n 'scIconQRCodeScan',\n 'scIconPromoMaterials',\n 'scIconProfile',\n 'scIconPrice',\n 'scIconPlasticProfile',\n 'scIconPercentage',\n 'scIconPdfFile',\n 'scIconPalette',\n 'scIconOffer',\n 'scIconNews',\n 'scIconMosquitoNet',\n 'scIconMoney',\n 'scIconMail',\n 'scIconLogIn',\n 'scIconLockOpen',\n 'scIconLock',\n 'scIconList',\n 'scIconHome',\n 'scIconHistory',\n 'scIconHeartFill',\n 'scIconHeart',\n 'scIconGraph',\n 'scIconFolderOpen',\n 'scIconFolder',\n 'scIconFoam',\n 'scIconFoamBalloon',\n 'scIconFilter',\n 'scIconFile',\n 'scIconFavoriteFill',\n 'scIconFavorite',\n 'scIconFastener',\n 'scIconExcelFile',\n 'scIconError',\n 'scIconEdit',\n 'scIconDeleteProfile',\n 'scIconContacts',\n 'scIconConfigurator',\n 'scIconClock',\n 'scIconClients',\n 'scIconCatalogBack',\n 'scIconCart',\n 'scIconCanopy',\n 'scIconCalendar',\n 'scIconBook',\n 'scIconBell',\n 'scIconBag',\n 'scIconAttention',\n 'scIconArrowReturn',\n 'scIconArrowLargeStart',\n 'scIconArrowLargeEnd',\n 'scIconArrowForward',\n 'scIconApplication',\n 'scIconAddProfile'\n];\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\n\n/**\n * Компонент кнопки \"Поделиться\".\n */\n@Component({\n selector: 'sc-share-button',\n templateUrl: './sc-share-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScShareButtonComponent {\n /**\n * Формат внешнего вида кнопки.\n */\n @Input()\n public appearance: 'primary' | 'secondary' | 'outline' | 'flat' = 'secondary';\n\n /**\n * Размер кнопки.\n */\n @Input()\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие клика по кнопке \"Поделиться\".\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n}\n","<button tuiIconButton icon=\"scIconShare\" [appearance]=\"appearance\" [size]=\"size\" (click)=\"$event.stopPropagation(); clickShareEvent.emit()\"></button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\nimport { ScNewsTile } from '@snabcentr/client-core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\n\n/**\n * Компонент карточки новости.\n */\n@Component({\n selector: 'sc-news-card',\n templateUrl: './sc-news-card.component.html',\n styleUrls: ['./sc-news-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardComponent {\n /**\n * Информация о новости.\n */\n @Input()\n public news: ScNewsTile;\n\n /**\n * Событие клика по карточке новости.\n */\n @Output()\n public clickCardEvent: EventEmitter<ScNewsTile> = new EventEmitter<ScNewsTile>();\n\n /**\n * Событие клика по кнопке \"Поделиться\" карточки новости.\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n @HostBinding('class.is_mobile')\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n}\n","<div\n (click)=\"clickCardEvent.emit(news)\"\n class=\"relative flex h-full cursor-pointer flex-col gap-2 overflow-hidden rounded-xl bg-white px-2 pb-4 pt-2 shadow-sc-2\"\n>\n <div\n [style.background-image]=\"'url(' + news.image + ')'\"\n class=\"w-full grow rounded-xl bg-tui-base-02 bg-cover bg-center bg-no-repeat\"\n ></div>\n <div class=\"flex w-full flex-col justify-between gap-2 overflow-hidden bg-white align-baseline\">\n <div class=\"flex items-center justify-between\">\n <p class=\"text-sm font-medium text-tui-text-02\">{{ news.createdAt }}</p>\n <sc-share-button\n (clickShareEvent)=\"clickShareEvent.emit()\"\n appearance=\"flat\"\n ></sc-share-button>\n </div>\n <div class=\"line-clamp-3 font-extrabold\">{{ news.subject }}</div>\n </div>\n</div>\n\n<!-- <div\n[style.background-image]=\"'url(' + news.image + ')'\"\nclass=\"h-50 w-full bg-tui-base-02 bg-cover bg-center bg-no-repeat\"\n></div> -->\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { TUI_IS_MOBILE } from '@taiga-ui/cdk';\n\n/**\n * Компонент скелетона карточки новости.\n */\n@Component({\n selector: 'sc-news-card-skeleton',\n templateUrl: './sc-news-card-skeleton.component.html',\n styleUrls: ['./sc-news-card-skeleton.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardSkeletonComponent {\n /**\n * Признак, что необходимо отобразить скелетон изображения новости.\n */\n @Input() public hasImg: boolean = true;\n\n /**\n * Признак того, что этот компонент отображается на мобильном устройстве.\n */\n @HostBinding('class.is_mobile')\n public readonly isMobile: boolean = inject(TUI_IS_MOBILE);\n}\n","<div class=\"relative flex h-full cursor-pointer flex-col gap-2 overflow-hidden rounded-xl bg-white px-2 pb-4 pt-2 shadow-sc-2\">\n <div\n *ngIf=\"hasImg; else textBlock\"\n class=\"w-full grow rounded-xl bg-tui-base-02\"\n ></div>\n <ng-template #textBlock>\n <div class=\"py-4.5 flex w-full flex-col gap-2 px-6\">\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-3/4 rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-3/4 rounded bg-tui-base-02\"></div>\n <div class=\"h-3 w-full rounded bg-tui-base-02\"></div>\n </div>\n </ng-template>\n\n <div class=\"w-3/4\">\n <ng-container *ngTemplateOutlet=\"textBlock\"></ng-container>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScShareButtonComponent } from './sc-share-button.component';\nimport { TuiButtonModule } from '@taiga-ui/core';\n\n/**\n * Модуль работы кнопки \"Поделиться\".\n */\n@NgModule({\n declarations: [ScShareButtonComponent],\n imports: [CommonModule, TuiButtonModule],\n exports: [ScShareButtonComponent]\n})\nexport class ScShareButtonModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { ScShareButtonModule } from '../share-button';\nimport { ScNewsCardComponent } from './news-card/sc-news-card.component';\nimport { ScNewsCardSkeletonComponent } from './news-card-skeleton/sc-news-card-skeleton.component';\n\n/**\n * Модуль работы с новостями.\n */\n@NgModule({\n declarations: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n imports: [CommonModule, RouterModule, ScShareButtonModule],\n exports: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n})\nexport class ScNewsModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct } from '@snabcentr/client-core';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки элемента заказа.\n */\n@Component({\n selector: 'sc-order-item-mobile',\n templateUrl: './order-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScOrderItemMobileComponent {\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * Элемент заказа.\n */\n @Input()\n public orderItem?: ScCartItem;\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на дополнительные действия.\n */\n @Output()\n public clickActionsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Продукт элемента заказа.\n */\n public get product(): ScProduct | undefined {\n return this.orderItem?.product;\n }\n\n /**\n * Инициирует экземпляр класса {@link ScOrderItemMobileComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef || '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImage(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<div class=\"relative p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"orderItem && product; else skeleton\">\n <button\n tuiIconButton\n (click)=\"clickActionsEvent.emit()\"\n size=\"m\"\n icon=\"scIconVerticalThreeDots\"\n appearance=\"float\"\n tuiMode=\"onLight\"\n class=\"!hidden !absolute right-0 top-0\"\n ></button>\n <div class=\"flex gap-2 grow\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 grow\">\n <div class=\"basis-min-content flex flex-col grow\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs flex flex-col gap-y-0.5\">\n <div class=\"flex flex-wrap gap-y-0.5\">\n <p class=\"w-40\">Артикул: {{ product.code }}</p>\n <p class=\"w-40\" *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n </div>\n <a tuiLink *ngIf=\"orderItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n </div>\n </div>\n <div class=\"flex flex-wrap content-center\">\n <div class=\"flex flex-col w-40 gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\" [fromMain]=\"false\"></sc-price-warehouse-stock>\n </div>\n\n <div class=\"w-40 text-xs text-tui-text-02\">\n <ng-container *ngIf=\"orderItem.height; else length\">\n <p>Высота: {{ orderItem.height }} м.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"orderItem.length\">Длина: {{ orderItem.length }} м.</p>\n </ng-template>\n <p *ngIf=\"orderItem.width\">Ширина: {{ orderItem.width }} м.</p>\n <p class=\"text-tui-base-09 text-sm\">\n Сумма: <span class=\"font-bold whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Компонент статуса оплаты заказа.\n */\n@Component({\n selector: 'sc-payment-status',\n templateUrl: './sc-payment-status.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScPaymentStatusComponent {\n /**\n * Признак того, успешна ли прошла оплата, или нет.\n */\n @Input()\n public status: 'success' | 'error' | null;\n\n /**\n * Номер оплаченного заказа.\n */\n @Input()\n public orderId: string | null;\n\n /**\n * Событие нажатия на кнопку \"Вернуться к списку заказов\".\n */\n @Output()\n public backToOrdersClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"На главную\".\n */\n @Output()\n public backToOrderClick: EventEmitter<void> = new EventEmitter<void>();\n}\n","<ng-container *ngIf=\"status && orderId; else failed\">\n <ng-container [ngSwitch]=\"status\">\n <tui-block-status *ngSwitchCase=\"'success'\">\n <tui-svg src=\"tuiIconCheckCircleLarge\" tuiSlot=\"top\" class=\"scale-[3] !h-20 !text-green-500\"></tui-svg>\n <h4>Спасибо!</h4>\n <br />\n <div class=\"font-bold\">Ваш заказ успешно оплачен. Мы свяжемся с вами в ближайшее время.</div>\n <br />\n <div class=\"font-bold\">\n Номер вашего заказа: <a tuiLink [pseudo]=\"true\" (click)=\"backToOrderClick.emit()\">{{orderId}}</a>\n </div>\n\n <button tuiButton (click)=\"backToOrdersClick.emit()\">Вернуться к заказам</button>\n </tui-block-status>\n <tui-block-status *ngSwitchCase=\"'error'\">\n <tui-svg src=\"tuiIconXCircleLarge\" class=\"scale-[3] !h-20 !text-red-500\" tuiSlot=\"top\"></tui-svg>\n <h4>Оплата не прошла!</h4>\n <br />\n <div class=\"font-bold\">При обработке платежа произошла ошибка.</div>\n <button tuiButton tuiItem (click)=\"backToOrderClick.emit()\">Вернуться к заказу</button>\n </tui-block-status>\n </ng-container>\n</ng-container>\n\n<ng-template #failed>\n <tui-block-status>\n <tui-svg src=\"tuiIconInfoLarge\" class=\"scale-[3] !h-20 !text-yellow-500\" tuiSlot=\"top\"></tui-svg>\n <h4>Что-то пошло не так!</h4>\n <button tuiButton tuiItem (click)=\"backToOrdersClick.emit()\">Вернуться к заказам</button>\n </tui-block-status>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { ScOrderItemMobileComponent } from './order-item-mobile/order-item-mobile.component';\nimport { CommonModule } from '@angular/common';\nimport { TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\nimport { ScPaymentStatusComponent } from './sc-payment-status/sc-payment-status.component';\nimport { TuiBlockStatusModule } from '@taiga-ui/layout';\n\n/**\n * Модуль заказов.\n */\n@NgModule({\n declarations: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n exports: [ScOrderItemMobileComponent, ScPaymentStatusComponent],\n imports: [CommonModule, TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule, TuiBlockStatusModule, ScCatalogModule]\n})\nexport class ScOrderModule {}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { ScUser, ScUserService } from '@snabcentr/client-core';\nimport { TuiDestroyService } from '@taiga-ui/cdk';\nimport { Observable, takeUntil } from 'rxjs';\n\n/**\n * Токен потока данных о текущем пользователе.\n */\nexport const SC_USER_INFO = new InjectionToken<Observable<ScUser | undefined>>('A stream with current user information');\n\n/**\n * Фабрика создания потока данных о текущем пользователе.\n *\n * @param userService Сервис информации о пользователе.\n * @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.\n */\nexport function scUserFactory(userService: ScUserService, destroy$: Observable<void>): Observable<ScUser | undefined> {\n //TODO: TASK[#7615] Отслеживать выполнение запроса изменения информации о пользователе после доработки snabcentr-core-lib.\n return userService.getUserChange$().pipe(takeUntil(destroy$));\n}\n\n/**\n * Провайдер потока данных о текущем пользователе.\n */\nexport const SC_USER_PROVIDERS: Provider[] = [\n TuiDestroyService,\n {\n provide: SC_USER_INFO,\n deps: [ScUserService, TuiDestroyService],\n useFactory: scUserFactory\n }\n];\n","import { ChangeDetectionStrategy, Component, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ScIChangePassword, ScUserService } from '@snabcentr/client-core';\nimport { ALWAYS_TRUE_HANDLER, tuiIsFalsy, tuiIsPresent } from '@taiga-ui/cdk';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share, tap } from 'rxjs';\nimport { ApiErrorResponse } from '../../auth';\nimport { scPasswordConfirmMatchingValidator } from '../../validators';\n\n/**\n * Компонент смены пароля пользователя.\n */\n@Component({\n selector: 'sc-reset-user-password',\n templateUrl: './sc-reset-user-password.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScResetUserPasswordComponent {\n /**\n * Форма для изменения пароля пользователя.\n */\n public form = new FormGroup(\n {\n currentPassword: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n password: new FormControl(null, [Validators.required, Validators.minLength(8)]),\n passwordConfirm: new FormControl(null, [Validators.required, Validators.minLength(8)])\n },\n { validators: scPasswordConfirmMatchingValidator('password', 'passwordConfirm') }\n );\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIChangePassword),\n switchMap((value) =>\n this.userService.updateUserInfo$(value).pipe(\n map(() => ({ success: true })),\n tap(() => this.form.reset()),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n\n return of({ success: false });\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Сигнал события события смены пароля.\n */\n @Output()\n public readonly successResetPassword = this.request$.pipe(\n filter(tuiIsPresent),\n filter(({ success }) => success)\n );\n\n /**\n * Инициализирует экземпляр класса {@link ScResetUserPasswordComponent}.\n *\n * @param userService Сервис информации о пользователе.\n */\n public constructor(private readonly userService: ScUserService) {}\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col lg:flex-row gap-4 p-1\">\n <div class=\"grid gap-2 lg:grid-cols-3 lg:grid-rows-1 lg:gap-4 lg:flex-grow items-start\">\n <label tuiLabel=\"Старый пароль\">\n <tui-input-password formControlName=\"currentPassword\">\n Старый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"currentPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Придумайте новый пароль\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"password\">\n Придумайте новый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"password\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"Повторите новый пароль\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"passwordConfirm\">\n Повторите новый пароль\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"passwordConfirm\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error *ngIf=\"form.invalid\" class=\"lg:!hidden\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"flex flex-col lg:h-11 lg:mt-5 justify-center\">\n <button *tuiLet=\"!!(loading$ | async) as loading\" tuiButton [showLoader]=\"loading\" type=\"submit\" [disabled]=\"form.invalid || loading\" icon=\"scIconSave\" class=\"font-medium\">\n Сохранить\n </button>\n </div>\n</form>\n<tui-error class=\"!hidden lg:!block\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Optional, Output } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ScIPhoneOnDataApprove, ScISuggestionType, ScIUserOnDataUpdate, ScUser, ScUserService } from '@snabcentr/client-core';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers';\nimport { Observable, Subject, catchError, filter, map, of, skip, startWith, switchMap, tap } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { ApiErrorResponse } from '../../auth';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Диалоговое окно изменения данных пользователя.\n */\n@Component({\n selector: 'sc-update-user-info-dialog',\n templateUrl: './sc-update-user-info-dialog.component.html',\n providers: [SC_USER_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScUpdateUserInfoDialogComponent {\n /**\n * Перечисление типов подсказок.\n */\n public readonly suggestionType: typeof ScISuggestionType = ScISuggestionType;\n\n /**\n * Группа полей ввода формы общих данных пользователя для их редактирования.\n */\n public readonly form = new FormGroup({\n name: new FormControl<string | null>(null, [Validators.required, Validators.minLength(3)]),\n email: new FormControl<string | null>(null, [Validators.required, Validators.email]),\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)]),\n cityId: new FormControl<number | null>(null, Validators.required),\n getNews: new FormControl<boolean>(false)\n });\n\n /**\n * Сигнал нажатия на кнопку \"Отмена\".\n */\n @Output()\n public readonly cancelButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Сигнал события успешного обновления данных пользователя.\n */\n @Output()\n public readonly successUpdateDate: Observable<ScUser> = this.user$.pipe(skip(1));\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса обновления данных пользователя.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIUserOnDataUpdate | ScIPhoneOnDataApprove),\n switchMap((value) =>\n this.userService.updateUserInfo$(value).pipe(\n switchMap(() => this.userService.updateUserChange$()),\n tap((user) => this.context?.completeWith(user)),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n return of({} as ScUser);\n }),\n startWith(null)\n )\n )\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных аутентификации по email.\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScUpdateUserInfoDialogComponent}.\n *\n * @param user$ Поток информации о текущем пользователе.\n * @param userService Сервис информации о пользователе.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly userService: ScUserService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context?: TuiDialogContext<ScUser, ScUpdateUserInfoDialogComponent>\n ) {\n this.user$.subscribe((user) =>\n this.form.patchValue(\n {\n name: user.name,\n email: user.contacts.email.value,\n phone: user.contacts.phone.value,\n cityId: user.city,\n getNews: user.getNews\n },\n { emitEvent: false }\n )\n );\n }\n}\n","<form [formGroup]=\"form\" *ngIf=\"user$ | async as user\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <label [tuiLabel]=\"user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.'\">\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? 'Название организации или ИП' : 'Ф.И.О.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-verification-phone-check-form\n *tuiLet=\"user.contacts.phone.value === form.value.phone as phoneIsChange\"\n [showCodeFields]=\"!phoneIsChange\"\n [shouldBeBusy]=\"phoneIsChange\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label tuiLabel=\"Адрес электронной почты\" class=\"w-full\">\n <tui-input formControlName=\"email\">\n Адрес электронной почты\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-addresses-selection-field></sc-addresses-selection-field>\n <tui-checkbox-labeled formControlName=\"getNews\" class=\"w-full\"> Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте. </tui-checkbox-labeled>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">Отмена</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">Сохранить</button>\n </div>\n</form>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { ApiErrorResponse } from '../../auth/interfaces/ApiErrorResponse';\nimport { Subject, Observable, filter, map, switchMap, catchError, of, startWith, share, tap } from 'rxjs';\nimport { ScApprovedData, ScIPhoneOnDataApprove, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { tuiIsFalsy } from '@taiga-ui/cdk';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';\nimport { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers/scUserProviders';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\n\n/**\n * Диалоговое окно подтверждения номера телефона.\n */\n@Component({\n selector: 'sc-user-phone-approve-dialog',\n templateUrl: './sc-user-phone-approve-dialog.component.html',\n providers: [SC_USER_PROVIDERS],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScUserPhoneApproveDialogComponent {\n /**\n * Наличие кода подтверждения у пользователя.\n */\n public haveCode: boolean = false;\n\n /**\n * Группа полей ввода для подтверждения номера телефона.\n */\n public readonly form = new FormGroup({\n phone: new FormControl<string | null>(null, [Validators.required, Validators.minLength(12)]),\n verificationCode: new FormControl<string | null>(null, [Validators.required, Validators.minLength(6)])\n });\n\n /**\n * {@link Subject} события отправки формы.\n */\n public readonly onSubmit: Subject<void> = new Subject<void>();\n\n /**\n * {@link Observable} запроса подтверждения номера телефона.\n */\n private readonly request$ = this.onSubmit.pipe(\n filter(() => this.form.valid),\n map(() => this.form.value as ScIPhoneOnDataApprove),\n switchMap((value) =>\n this.verificationService.approvePhone(value).pipe(\n switchMap(() => this.userService.updateUserChange$()),\n tap((user) => this.context?.completeWith(user.contacts.phone)),\n catchError((error: HttpErrorResponse) => {\n const errorResponse = error.error as ApiErrorResponse;\n\n for (const key in errorResponse.errors) {\n this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });\n }\n\n if (!errorResponse.errors && errorResponse.message) {\n this.form.setErrors({ serverResponse: [errorResponse.message] });\n }\n return of({} as ScUser);\n }),\n startWith(null)\n )\n ),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния запроса подтверждения номера телефона..\n */\n public readonly loading$: Observable<boolean> = this.request$.pipe(map(tuiIsFalsy));\n\n /**\n * Инициализирует экземпляр класса {@link ScUserPhoneApproveDialogComponent}.\n *\n * @param verificationService Сервис верификации.\n * @param user$ Поток информации о текущем пользователе.\n * @param userService Сервис информации о пользователе.\n * @param context Контекст диалогового окна, в котором открыт компонент.\n */\n public constructor(\n private readonly verificationService: ScVerificationService,\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly userService: ScUserService,\n @Optional()\n @Inject(POLYMORPHEUS_CONTEXT)\n public readonly context?: TuiDialogContext<ScApprovedData, ScUserPhoneApproveDialogComponent>\n ) {\n this.user$.pipe(untilDestroyed(this)).subscribe((user) => {\n this.form.patchValue({\n phone: user.contacts.phone.value\n });\n });\n }\n}\n","<ng-container *ngIf=\"user$ | async as user\">\n <form [formGroup]=\"form\" *tuiLet=\"!!(loading$ | async) as loadingApproveCode\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\n <sc-verification-phone-check-form\n [(haveCode)]=\"haveCode\"\n [shouldBeConfirmed]=\"false\"\n [showCodeFields]=\"!user.contacts.phone.isApproved\"\n [readOnly]=\"true\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <div *ngIf=\"user.contacts.phone.isApproved || haveCode\" class=\"flex gap-4 justify-center\">\n <button *ngIf=\"user.contacts.phone.isApproved && context\" tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" appearance=\"secondary\">Закрыть</button>\n <button *ngIf=\"haveCode\" tuiButton type=\"submit\" [showLoader]=\"loadingApproveCode\" [disabled]=\"form.invalid || loadingApproveCode\" icon=\"scIconLogIn\">\n Подтвердить\n </button>\n </div>\n </form>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiCheckboxLabeledModule, TuiCheckboxModule, TuiFieldErrorPipeModule, TuiInputModule, TuiInputPasswordModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/kit';\nimport { TuiButtonModule, TuiDataListModule, TuiErrorModule, TuiLabelModule, TuiLoaderModule, TuiModeModule, TuiTextfieldControllerModule } from '@taiga-ui/core';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScResetUserPasswordComponent } from './reset-user-password/sc-reset-user-password.component';\nimport { ScUpdateUserInfoDialogComponent } from './update-user-info-dialog/sc-update-user-info-dialog.component';\nimport { ScVerificationModule } from '../verification';\nimport { ScFormFieldsModule } from '../form-fields/form-fields.module';\nimport { ScUserPhoneApproveDialogComponent } from './user-phone-approve-dialog/sc-user-phone-approve-dialog.component';\n\n/**\n * Модуль компонентов пользователя.\n */\n@NgModule({\n declarations: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TuiFieldErrorPipeModule,\n TuiInputPasswordModule,\n TuiButtonModule,\n TuiErrorModule,\n TuiLabelModule,\n TuiTextfieldControllerModule,\n TuiLetModule,\n ScVerificationModule,\n ScFormFieldsModule,\n TuiLoaderModule,\n TuiInputModule,\n TuiInputPhoneModule,\n TuiCheckboxModule,\n TuiCheckboxLabeledModule,\n TuiDataListModule,\n TuiSelectModule,\n TuiModeModule\n ],\n exports: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent]\n})\nexport class ScUserModule {}\n","import { Component, ChangeDetectionStrategy, Inject, Output, EventEmitter } from '@angular/core';\nimport { ScContragent, ScIBankAccount, ScICity, ScIContact, ScIDeliveryAddress, ScLocationsService, ScUser, ScUserService, ScVerificationService } from '@snabcentr/client-core';\nimport { Observable, Subject, filter, map, share, skip, startWith, switchMap, tap } from 'rxjs';\nimport { SC_USER_PROVIDERS, SC_USER_INFO } from '../../providers';\nimport { FormControl } from '@angular/forms';\nimport { ALWAYS_TRUE_HANDLER, tuiIsFalsy, tuiIsPresent, tuiPure } from '@taiga-ui/cdk';\nimport { tuiFadeIn } from '@taiga-ui/core';\n\n/**\n * Компонент контента профиля пользователя в виде раскрывающихся смысловых блоков.\n */\n@Component({\n selector: 'sc-profile-accordions-content',\n templateUrl: './sc-profile-accordions-content.component.html',\n providers: [SC_USER_PROVIDERS],\n animations: [tuiFadeIn],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScProfileAccordionsContentComponent {\n /**\n * {@link FormControl} переключателя 'Я хочу получать рассылку'.\n */\n public getNewsControl: FormControl<boolean> = new FormControl<boolean>(false, { nonNullable: true });\n\n /**\n * {@link Observable} запроса изменения признака пользователя 'Я хочу получать рассылку'.\n */\n private readonly getNewsRequest$ = this.getNewsControl.valueChanges.pipe(\n skip(1),\n switchMap((value) =>\n this.userService.updateUserInfo$({ getNews: value }).pipe(\n switchMap(() =>\n this.userService.updateUserChange$().pipe(\n tap((user) => this.getNewsControl.patchValue(user.getNews, { emitEvent: false })),\n startWith(null)\n )\n ),\n startWith(null)\n )\n ),\n\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных изменения признака пользователя 'Я хочу получать рассылку'.\n */\n public readonly getNewsLoading$: Observable<boolean> = this.getNewsRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * {@link Subject} события отправки сообщения для подтверждения адреса электронной почты.\n */\n public readonly onSendApproveEmail: Subject<string> = new Subject<string>();\n\n /**\n * {@link Observable} запроса данных аутентификации.\n */\n private readonly sendApproveEmailRequest$: Observable<boolean | null> = this.onSendApproveEmail.pipe(\n switchMap((value) => this.verificationService.sendEmailApproveCode(value).pipe(map(ALWAYS_TRUE_HANDLER), startWith(null))),\n startWith(false),\n share()\n );\n\n /**\n * {@link Observable} изменения состояния загрузки данных отправки сообщения для подтверждения адреса электронной почты.\n */\n public readonly approveEmailLoading$: Observable<boolean> = this.sendApproveEmailRequest$.pipe(map(tuiIsFalsy));\n\n /**\n * {@link Observable} изменения состояния признака, отправлено ли сообщение для подтверждения адреса электронной почты.\n */\n public readonly isSendApproveEmail$: Observable<boolean> = this.sendApproveEmailRequest$.pipe(filter(tuiIsPresent));\n\n /**\n * {@link Observable} изменения списка контактных лиц пользователя.\n */\n public readonly userContacts$ = this.userService.getUserContacts$();\n\n /**\n * Событие нажатия на кнопку редактирование профиля пользователя.\n */\n @Output()\n public editProfileClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку подтверждения телефона.\n */\n @Output()\n public approvePhoneClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку добавления контрагента.\n */\n @Output()\n public addContragentClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления контрагента.\n */\n @Output()\n public deleteContragentClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку добавления банковского счёта контрагенту.\n */\n @Output()\n public addContragentBankAccountClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления банковского счёта контрагента.\n */\n @Output()\n public deleteContragentBankAccountClick: EventEmitter<ScIBankAccount> = new EventEmitter<ScIBankAccount>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица контрагенту.\n */\n @Output()\n public addContragentContactClick: EventEmitter<ScContragent> = new EventEmitter<ScContragent>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у контрагента.\n */\n @Output()\n public deleteContragentContactClick: EventEmitter<{ contact: ScIContact; contragent: ScContragent }> = new EventEmitter<{ contact: ScIContact; contragent: ScContragent }>();\n\n /**\n * Событие нажатия на кнопку добавления адреса доставки клиента.\n */\n @Output()\n public addDeliveryAddressClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку удаления адреса доставки у клиента.\n */\n @Output()\n public deleteDeliveryAddressClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица для адреса доставки.\n */\n @Output()\n public addDeliveryAddressContactClick: EventEmitter<ScIDeliveryAddress> = new EventEmitter<ScIDeliveryAddress>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у адреса доставки.\n */\n @Output()\n public deleteDeliveryAddressContactClick: EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }> = new EventEmitter<{ contact: ScIContact; address: ScIDeliveryAddress }>();\n\n /**\n * Событие нажатия на кнопку добавления контактного лица клиенту.\n */\n @Output()\n public addUserContactClick: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на кнопку удаления контактного лица у клиента.\n */\n @Output()\n public deleteUserContactClick: EventEmitter<ScIContact> = new EventEmitter<ScIContact>();\n\n /**\n * Инициализирует экземпляр класса {@link ScProfileComponent}.\n *\n * @param user$ Поток информации о текущем пользователе.\n * @param locationsService Сервис для получения списков стран, регионов, городов.\n * @param userService Сервис информации о пользователе.\n * @param verificationService Сервис верификации.\n */\n public constructor(\n @Inject(SC_USER_INFO) public readonly user$: Observable<ScUser>,\n private readonly locationsService: ScLocationsService,\n private readonly userService: ScUserService,\n private readonly verificationService: ScVerificationService\n ) {}\n\n /**\n * Создает запрос получения информации о городе текущего пользователя по идентификатору города.\n *\n * @param cityId Идентификатор записи города.\n */\n @tuiPure // TODO: TASK[#7615] Удалить поле рефакторинга сервиса работы с пользователем.\n public getUserCity$(cityId: number): Observable<ScICity> {\n return this.locationsService.getUserCity$(cityId);\n }\n}\n","<div *tuiLet=\"user$ | async as user\" class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n Общие данные\n <ng-template scAccordionContent>\n <tui-loader [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n <span class=\"font-medium\">{{ user.name }}</span>\n <div *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\" class=\"flex items-center gap-1\">\n <tui-svg src=\"tuiIconMapPin\"></tui-svg>\n <div class=\"flex flex-wrap\">\n <span>г. {{ city.name }}, </span>\n <span *ngIf=\"city.region\">{{ city.region.name }}</span>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhone\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value}}\"\n >{{ user.contacts.phone.value | tuiFormatPhone }}</a\n >\n <span *ngIf=\"!user.contacts.phone.isApproved\" class=\"text-tui-text-03\">\n (Телефон не подтвержден. <button tuiLink [pseudo]=\"true\" (click)=\"approvePhoneClick.emit()\">Подтвердить</button>)\n </span>\n </div>\n <div *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\" class=\"flex flex-wrap gap-x-2\">\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMail\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ user.contacts.email.value }}\">\n {{ user.contacts.email.value }}\n </a>\n <span *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\" class=\"text-tui-text-03 inline-flex flex-wrap gap-1\">\n E-mail не подтвержден.\n <tui-loader [showLoader]=\"!!(approveEmailLoading$ | async)\" [overlay]=\"true\">\n <button tuiLink [pseudo]=\"true\" (click)=\"onSendApproveEmail.next(user.contacts.email.value)\">Подтвердить</button>\n </tui-loader>\n </span>\n <span *ngIf=\"isSendApproveEmail\" class=\"text-tui-success-fill\" @tuiFadeIn>\n Письмо для подтверждения успешно отправлено. Перейдите по ссылке в письме и обновите эту страницу.\n </span>\n </div>\n <tui-loader [showLoader]=\"!!(getNewsLoading$ | async)\" [overlay]=\"true\">\n <tui-checkbox-labeled size=\"m\" class=\"w-full\" [formControl]=\"getNewsControl\" [ngModel]=\"user.getNews\">\n Я хочу получать рассылку Снабцентр о скидках и новостях по электронной почте.\n </tui-checkbox-labeled>\n </tui-loader>\n </div>\n\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"editProfileClick.emit()\"></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion\n (addContragentClick)=\"addContragentClick.emit()\"\n (deleteContragentClick)=\"deleteContragentClick.emit($event)\"\n (addContragentBankAccountClick)=\"addContragentBankAccountClick.emit($event)\"\n (deleteContragentBankAccountClick)=\"deleteContragentBankAccountClick.emit($event)\"\n (addContragentContactClick)=\"addContragentContactClick.emit($event)\"\n (deleteContragentContactClick)=\"deleteContragentContactClick.emit($event)\"\n ></sc-contragents-accordion>\n <sc-delivery-address-accordion\n (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"\n (deleteDeliveryAddressClick)=\"deleteDeliveryAddressClick.emit($event)\"\n (addDeliveryAddressContactClick)=\"addDeliveryAddressContactClick.emit($event)\"\n (deleteDeliveryAddressContactClick)=\"deleteDeliveryAddressContactClick.emit($event)\"\n ></sc-delivery-address-accordion>\n <sc-contacts-accordion *ngIf=\"user\" [contacts$]=\"userContacts$\" (addContactClick)=\"addUserContactClick.emit(user.id)\" (deleteButtonClick)=\"deleteUserContactClick.emit($event)\"></sc-contacts-accordion>\n <sc-accordion #passwordAccordion [showArrow]=\"false\" [showAddButton]=\"false\">\n Изменить пароль\n <ng-template scAccordionContent>\n <sc-reset-user-password (successResetPassword)=\"passwordAccordion.close()\"></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TuiButtonModule, TuiFormatPhonePipeModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { CommonModule } from '@angular/common';\nimport { TuiLetModule } from '@taiga-ui/cdk';\nimport { ScProfileAccordionsContentComponent } from './sc-profile-accordions-content/sc-profile-accordions-content.component';\nimport { ScAccordionModule } from '../accordion';\nimport { ScContragentsModule } from '../contragents';\nimport { ScDeliveryAddressModule } from '../delivery-address';\nimport { ScUserModule } from '../user';\nimport { TuiCheckboxLabeledModule } from '@taiga-ui/kit';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScContactsModule } from '../contacts';\n\n/**\n * Модуль профиля пользователя.\n */\n@NgModule({\n declarations: [ScProfileAccordionsContentComponent],\n imports: [\n CommonModule,\n ScUserModule,\n ScAccordionModule,\n ScContragentsModule,\n ScDeliveryAddressModule,\n TuiLoaderModule,\n TuiLetModule,\n TuiLinkModule,\n TuiModeModule,\n TuiFormatPhonePipeModule,\n TuiCheckboxLabeledModule,\n TuiSvgModule,\n FormsModule,\n ReactiveFormsModule,\n TuiLoaderModule,\n TuiButtonModule,\n ScContactsModule\n ],\n exports: [ScProfileAccordionsContentComponent]\n})\nexport class ScProfileModule {}\n","/*\n * Public API Surface of ui\n */\n\nexport * from './auth';\nexport * from './accordion';\nexport * from './banner';\nexport * from './cart';\nexport * from './catalog';\nexport * from './contragents';\nexport * from './contacts';\nexport * from './delivery-address';\nexport * from './directives';\nexport * from './files';\nexport * from './form-fields';\nexport * from './icons';\nexport * from './loader';\nexport * from './news';\nexport * from './order';\nexport * from './providers';\nexport * from './share-button';\nexport * from './user';\nexport * from './validators';\nexport * from './verification';\nexport * from './profile';\nexport * from './tokens';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5","i7","i6.ScVerificationPhoneCheckFormComponent","i2","i3","i4.ScSignInFormByPhoneComponent","i5.ScSignInFormByEmailComponent","i1","i4","i2.ScPxConverter","i1.UnitsHelper","i4.ScInputQuantityComponent","i5.ScPriceWarehouseStockComponent","i6","i8","i3.ScFavoriteBtnComponent","i7.ScFavoriteBtnComponent","i8.ScInputQuantityComponent","i9.ScPriceWarehouseStockComponent","ScFavoriteButtonComponent","i7.ScSuggestionFieldComponent","i4.ScNewContragentBankAccountsFormComponent","i2.ScSuggestionFieldComponent","i5.ScNewContactFormComponent","i8.ScCarouselItemHiddenDirective","i9.ScNewContragentBankAccountsFormComponent","i10.ScNewContragentFormComponent","i2.ScAccordionComponent","i3.ScAccordionContentDirective","i3.ScAccordionComponent","i4.ScAccordionContentDirective","i7.ScContactsAccordionComponent","i7.ScContragentsAccordionItemComponent","i4.ScNewContactFormComponent","i5.ScSuggestionFieldComponent","i5.ScContactsAccordionComponent","i7.ScDeliveryAddressAccordionItemComponent","i2.TreeIconService","i1.TreeIconService","i6.TreeDirective","i7.TreeTopDirective","i1.ScShareButtonComponent","i4.ScPriceWarehouseStockComponent","i7.ScAddressesSelectionFieldComponent","i8.ScSuggestionFieldComponent","i9","i3.ScResetUserPasswordComponent","i4.ScAccordionComponent","i5.ScAccordionContentDirective","i6.ScContragentsAccordionComponent","i7.ScDeliveryAddressAccordionComponent","i10","i11","i12.ScContactsAccordionComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG;IACS,WAUX;AAVD,CAAA,UAAY,UAAU,EAAA;AAClB;;AAEG;AACH,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;AAEpB;;AAEG;AACH,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;AACxB,CAAC,EAVW,UAAU,KAAV,UAAU,GAUrB,EAAA,CAAA,CAAA;;ACXD;;AAEG;AACI,MAAM,mBAAmB,GAAG;AAC/B,IAAA,IAAI,EAAE,YAAY;CACH;;ACLnB;;AAEG;AACI,MAAM,SAAS,GAAG;AACrB,IAAA,IAAI,EAAE,WAAW;CACF;;ACLnB;;AAEG;AACI,MAAM,sBAAsB,GAAG;AAClC,IAAA,IAAI,EAAE,YAAY;CACH;;ACLnB;;AAEG;AACI,MAAM,qBAAqB,GAAG;AACjC,IAAA,IAAI,EAAE,YAAY;CACH,CAAC;AAEpB;;AAEG;AACI,MAAM,cAAc,GAAG;AAC1B,IAAA,IAAI,EAAE,YAAY;CACH;;ACZnB;;AAEG;AACI,MAAM,SAAS,GAAG;AACrB,IAAA,IAAI,EAAE,WAAW;CACF;;ACLnB;;AAEG;AACI,MAAM,sBAAsB,GAAG;AAClC,IAAA,IAAI,EAAE,YAAY;CACH,CAAC;AAEpB;;AAEG;AACI,MAAM,eAAe,GAAG;AAC3B,IAAA,IAAI,EAAE,WAAW;CACF;;ACZnB;;AAEG;AACI,MAAM,2BAA2B,GAAmB;AACvD,IAAA,IAAI,EAAE,WAAW;CACF;;ACGnB;;AAEG;MAMU,qCAAqC,CAAA;AAsJ9C;;;;;AAKG;IACH,WACqB,CAAA,mBAA0C,EAE1C,kBAAuC,EAAA;QAFvC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAuB;QAE1C,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAqB;AA9J5D;;AAEG;QACK,IAAe,CAAA,eAAA,GAAY,IAAI,CAAC;AAkBxC;;AAEG;QAEI,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAEjC;;AAEG;QAEI,IAAY,CAAA,YAAA,GAAY,IAAI,CAAC;AAEpC;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAa,SAAS,CAAC;AAE/C;;AAEG;QAEI,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAEjC;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;AA2BpD;;AAEG;AACa,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAEhE;;AAEG;AACa,QAAA,IAAA,CAAA,mBAAmB,GAAwB,IAAI,CAAC,UAAU,CAAC,IAAI,CAC3E,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EACrC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAe,CAAC,EAC5C,SAAS,CAAC,CAAC,KAAK,KACZ,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CACrD,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EACrC,GAAG,CAAC,MAAM,KAAK,CAAC,EAChB,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;YAEtD,MAAM,KAAK,GAAG,eAAe,CAAC;YAC9B,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAEjD,YAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAE3C,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAChH,aAAA;AAED,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACrB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EACtC,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,EACD,SAAS,CAAC,KAAK,CAAC,EAChB,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;QACa,IAAoB,CAAA,oBAAA,GAAmB,2BAA2B,CAAC;AAEnF;;AAEG;AACa,QAAA,IAAA,CAAA,YAAY,GAAoB,IAAI,OAAO,EAAU,CAAC;AAEtE;;;;AAIG;QACa,IAAM,CAAA,MAAA,GAA8B,IAAI,CAAC,YAAY,CAAC,IAAI,CACtE,SAAS,CAAC,CAAC,GAAG,KACV,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CACf,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAC7B,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,EAChC,GAAG,CAAC,CAAC,KAAK,KAAI;YACV,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AACvC,YAAA,MAAM,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;AAE3B,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACnH,SAAC,CAAC,EACF,OAAO,CAAC,IAAI,CAAC,EACb,SAAS,CAAC,IAAI,CAAC,EACf,oBAAoB,EAAE,CACzB,CACJ,CACJ,CAAC;KAYE;AA1JJ;;AAEG;IACH,IACW,cAAc,CAAC,cAAuB,EAAA;AAC7C,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;KAChF;AAED;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAgCD;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;AAIX,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAG9B,CAAC;KACN;AAED;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;KACpC;;IA6FM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,eAAe,CAAgB,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACrE,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACpC,SAAS,CAAC,CAAC,KAAK,KAAI;YAChB,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE;AACpC,gBAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,MAAM,KAAI;AACX,oBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,MAAM,EAAE;AACrC,wBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACxB,4BAAA,cAAc,EAAE;gCACZ,MAAM,CAAC,MAAM,GAAG,sDAAsD,GAAG,qDAAqD;AACjI,6BAAA;AACJ,yBAAA,CAAC,CAAC;AACH,wBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;AAElC,wBAAA,OAAO,KAAK,CAAC;AAChB,qBAAA;AAED,oBAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM,CAAC,WAAW,EAAE;AACvF,wBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACxB,4BAAA,cAAc,EAAE;AACZ,gCAAA,MAAM,CAAC,WAAW;AACd,sCAAE,yBAAyB;AAC3B,sCAAE,sJAAsJ;AAC/J,6BAAA;AACJ,yBAAA,CAAC,CAAC;AACH,wBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;AAElC,wBAAA,OAAO,KAAK,CAAC;AAChB,qBAAA;AAED,oBAAA,OAAO,IAAI,CAAC;AAChB,iBAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,oBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;oBACtD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7G,oBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACrB,iBAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,CAClB,CAAC;AACL,aAAA;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAExB,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACrB,SAAC,CAAC,EACF,KAAK,EAAE,CACV,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAC3B;AAED;;;;AAIG;AACI,IAAA,WAAW,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtC;;AA/NQ,qCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qCAAqC,uDA8JlC,kBAAkB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA9JrB,qCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,uRClBlD,w4FA+CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kCAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD7Ba,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBALjD,SAAS;+BACI,kCAAkC,EAAA,eAAA,EAE3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,w4FAAA,EAAA,CAAA;;0BAgK1C,MAAM;2BAAC,kBAAkB,CAAA;4CApJnB,cAAc,EAAA,CAAA;sBADxB,KAAK;gBAiBC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAOC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAOC,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAOC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAOC,cAAc,EAAA,CAAA;sBADpB,MAAM;;;AExDX;;AAEG;MAMU,4BAA4B,CAAA;AAmDrC;;;;AAIG;AACH,IAAA,WAAA,CAAoC,WAA0B,EAAA;QAA1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;AAvD9D;;AAEG;QACI,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAEjC;;AAEG;QACa,IAAI,CAAA,IAAA,GAAG,IAAI,SAAS,CAAC;AACjC,YAAA,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,YAAA,gBAAgB,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzG,SAAA,CAAC,CAAC;AAEH;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAE9D;;AAEG;QACc,IAAQ,CAAA,QAAA,GAAkC,IAAI,CAAC,QAAQ,CAAC,IAAI,CACzE,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAC1B,MAAM,CAAC,CAAC,KAAK,KAA2B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EACxD,SAAS,CAAC,CAAC,KAAK,KACZ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CACnC,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;AAEtD,YAAA,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;gBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChF,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AAChD,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpE,aAAA;AAED,YAAA,OAAO,EAAE,CAAC,EAAgB,CAAC,CAAC;AAChC,SAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,EACD,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;KAOlB;;yHAxDzD,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,gECnBzC,qgBAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,qCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDea,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACI,0BAA0B,EAAA,eAAA,EAEnB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qgBAAA,EAAA,CAAA;;;AENnD;;AAEG;MAMU,4BAA4B,CAAA;AAmDrC;;;;AAIG;AACH,IAAA,WAAA,CAAoC,WAA0B,EAAA;QAA1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;AAvD9D;;AAEG;QACa,IAAW,CAAA,WAAA,GAAc,IAAI,SAAS,CAAC;AACnD,YAAA,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;YACpF,QAAQ,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtE,SAAA,CAAC,CAAC;AAEH;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAE9D;;AAEG;QACc,IAAa,CAAA,aAAA,GAAkC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC9E,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EACpC,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAe,CAAC,EAC3C,SAAS,CAAC,CAAC,KAAK,KACZ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CACnC,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;AAEtD,YAAA,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;gBACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvF,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AAChD,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC3E,aAAA;AAED,YAAA,OAAO,EAAE,CAAC,EAAgB,CAAC,CAAC;AAChC,SAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,EACD,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,iBAAiB,GAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAElG;;AAEG;AACuB,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAOtB;;yHAxDzD,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,+GCnBzC,0oDAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDNa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACI,0BAA0B,EAAA,eAAA,EAEnB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0oDAAA,EAAA,CAAA;oGAmDrB,cAAc,EAAA,CAAA;sBAAvC,MAAM;;;AE9DX;;AAEG;MAMU,qBAAqB,CAAA;AA0B9B;;;;;AAKG;IACH,WACqB,CAAA,WAA0B,EAC1B,kBAAwC,EAAA;QADxC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QAC1B,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAsB;AAjC7D;;AAEG;AACa,QAAA,IAAA,CAAA,UAAU,GAAe,UAAU,CAAC,OAAO,CAAC;AAE5D;;AAEG;QACI,IAAM,CAAA,MAAA,GAAsB,UAAU,CAAC;AAE9C;;AAEG;AACuB,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAExF;;AAEG;AACuB,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEhF;;AAEG;QACuB,IAAW,CAAA,WAAA,GAAwB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;KAWzH;;IAGG,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;YACzC,MAAM,EAAE,sBAAsB,CAAC,UAAU;AACzC,YAAA,MAAM,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,UAAU;AACxB,aAAA;AACJ,SAAA,CAAC,CAAC;KACN;AAED;;;;AAIG;AACI,IAAA,UAAU,CAAC,UAAsB,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAE7B,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;YACzC,MAAM,EAAE,sBAAsB,CAAC,UAAU;AACzC,YAAA,MAAM,EAAE;AACJ,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA;AACJ,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;IACI,gBAAgB,GAAA;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC9B;;kHApEQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0LCdlC,ukDA0CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD5Ba,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACI,iBAAiB,EAAA,eAAA,EAEV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ukDAAA,EAAA,CAAA;uIAM/B,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBAUoB,cAAc,EAAA,CAAA;sBAAvC,MAAM;gBAKmB,MAAM,EAAA,CAAA;sBAA/B,MAAM;gBAKmB,WAAW,EAAA,CAAA;sBAApC,MAAM;;;AE7BX;;AAEG;MAuBU,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,YAAA,EAAA,CAFd,qCAAqC,CAAA,EAAA,OAAA,EAAA,CAlBhD,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,sBAAsB;QACtB,cAAc;QACd,4BAA4B;QAC5B,aAAa;QACb,eAAe;QACf,cAAc;QACd,aAAa;QACb,uBAAuB;QACvB,cAAc;QACd,YAAY;QACZ,eAAe;QACf,mBAAmB;AACnB,QAAA,aAAa,aAEP,qCAAqC,CAAA,EAAA,CAAA,CAAA;AAGtC,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YApBzB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,sBAAsB;QACtB,cAAc;QACd,4BAA4B;QAC5B,aAAa;QACb,eAAe;QACf,cAAc;QACd,aAAa;QACb,uBAAuB;QACvB,cAAc;QACd,YAAY;QACZ,eAAe;QACf,mBAAmB;QACnB,aAAa,CAAA,EAAA,CAAA,CAAA;2FAKR,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,sBAAsB;wBACtB,cAAc;wBACd,4BAA4B;wBAC5B,aAAa;wBACb,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,uBAAuB;wBACvB,cAAc;wBACd,YAAY;wBACZ,eAAe;wBACf,mBAAmB;wBACnB,aAAa;AAChB,qBAAA;oBACD,OAAO,EAAE,CAAC,qCAAqC,CAAC;oBAChD,YAAY,EAAE,CAAC,qCAAqC,CAAC;AACxD,iBAAA,CAAA;;;ACrBD;;AAEG;MAwBU,YAAY,CAAA;;yGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAtBN,qBAAqB,EAAE,4BAA4B,EAAE,4BAA4B,aAE5F,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,sBAAsB;QACtB,cAAc;QACd,4BAA4B;QAC5B,aAAa;QACb,eAAe;QACf,cAAc;QACd,aAAa;QACb,uBAAuB;QACvB,cAAc;QACd,YAAY;QACZ,eAAe;QACf,mBAAmB;QACnB,aAAa;AACb,QAAA,oBAAoB,CAEd,EAAA,OAAA,EAAA,CAAA,qBAAqB,EAAE,4BAA4B,EAAE,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAElF,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YApBjB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,sBAAsB;QACtB,cAAc;QACd,4BAA4B;QAC5B,aAAa;QACb,eAAe;QACf,cAAc;QACd,aAAa;QACb,uBAAuB;QACvB,cAAc;QACd,YAAY;QACZ,eAAe;QACf,mBAAmB;QACnB,aAAa;QACb,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAIf,YAAY,EAAA,UAAA,EAAA,CAAA;kBAvBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,4BAA4B,CAAC;AACjG,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,sBAAsB;wBACtB,cAAc;wBACd,4BAA4B;wBAC5B,aAAa;wBACb,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,uBAAuB;wBACvB,cAAc;wBACd,YAAY;wBACZ,eAAe;wBACf,mBAAmB;wBACnB,aAAa;wBACb,oBAAoB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,4BAA4B,CAAC;AAC/F,iBAAA,CAAA;;;AClCD;;AAEG;AAIG,MAAO,2BAA4B,SAAQ,oBAA6C,CAAA;;wHAAjF,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,QAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iCAAiC;AAC9C,iBAAA,CAAA;;;ACHD;;AAEG;MAOU,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;AAOI;;AAEG;QAGI,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAE5B;;AAEG;QAGI,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAEzC;;AAEG;QAGI,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAEjC;;AAEG;QAEI,IAAI,CAAA,IAAA,GAAY,KAAK,CAAC;AAE7B;;AAEG;QAGI,IAAI,CAAA,IAAA,GAAa,GAAG,CAAC;AAc5B;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAErE;;AAEG;AAEI,QAAA,IAAA,CAAA,iBAAiB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAQ3E,KAAA;AANG;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;KAC3B;;iHAhEQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAsCf,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,2BAA2B,EAM9B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,yBAAyB,gDC1DxC,ihDAgCA,EAAA,MAAA,EAAA,CAAA,m2CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDlBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACI,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ihDAAA,EAAA,MAAA,EAAA,CAAA,m2CAAA,CAAA,EAAA,CAAA;8BAQxC,aAAa,EAAA,CAAA;sBAFnB,KAAK;;sBACL,WAAW;uBAAC,uBAAuB,CAAA;gBAQ7B,gBAAgB,EAAA,CAAA;sBAFtB,KAAK;;sBACL,WAAW;uBAAC,0BAA0B,CAAA;gBAQhC,SAAS,EAAA,CAAA;sBAFf,KAAK;;sBACL,WAAW;uBAAC,kBAAkB,CAAA;gBAOxB,IAAI,EAAA,CAAA;sBADV,KAAK;gBAQC,IAAI,EAAA,CAAA;sBAFV,KAAK;;sBACL,WAAW;uBAAC,gBAAgB,CAAA;gBAOV,OAAO,EAAA,CAAA;sBADzB,YAAY;uBAAC,2BAA2B,CAAA;gBAOzB,SAAS,EAAA,CAAA;sBADxB,SAAS;uBAAC,yBAAyB,CAAA;gBAO7B,cAAc,EAAA,CAAA;sBADpB,MAAM;gBAOA,iBAAiB,EAAA,CAAA;sBADvB,MAAM;;;AE9DX;;AAEG;MAMU,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAJX,oBAAoB,EAAE,2BAA2B,CACtD,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,yBAAyB,CAC/G,EAAA,OAAA,EAAA,CAAA,oBAAoB,EAAE,2BAA2B,CAAA,EAAA,CAAA,CAAA;+GAElD,iBAAiB,EAAA,OAAA,EAAA,CAHhB,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,yBAAyB,CAAA,EAAA,CAAA,CAAA;2FAGhH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;AACjE,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,yBAAyB,CAAC;AAC1H,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;AAC/D,iBAAA,CAAA;;;ACbD;;AAEG;MAIU,aAAa,CAAA;AAH1B,IAAA,WAAA,GAAA;QAIY,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;AAU7B,KAAA;AARG;;;;AAIG;AACI,IAAA,OAAO,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;KACjC;;0GAVQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFV,MAAM,EAAA,CAAA,CAAA;2FAET,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACkBD;;AAEG;AAUU,IAAA,iBAAiB,GAAvB,MAAM,iBAAiB,CAAA;AA6I1B;;;;;;;;;AASG;IACH,WACqB,CAAA,GAAsB,EACtB,aAA8B,EACO,QAAqC,EACtD,OAA4B,EACzD,WAA0B,EACjB,kBAAwC,EAAA;QALxC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAiB;QACO,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA6B;QACtD,IAAO,CAAA,OAAA,GAAP,OAAO,CAAqB;QACzD,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QACjB,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAsB;AA5J7D;;AAEG;QAEI,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;AAEtC;;AAEG;QAEI,IAAc,CAAA,cAAA,GAAW,IAAI,CAAC;AAErC;;AAEG;QAEI,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAQjC;;AAEG;QAEI,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAEjC;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAyB,IAAI,YAAY,EAAU,CAAC;AAE3E;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAA2B,IAAI,YAAY,EAAY,CAAC;AAc/E;;AAEG;QACI,IAAe,CAAA,eAAA,GAAW,CAAC,CAAC;AAEnC;;AAEG;AACa,QAAA,IAAA,CAAA,YAAY,GAAqB,IAAI,OAAO,EAAW,CAAC;AAExE;;AAEG;QACI,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAEpC;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAA2B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAC/E,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,EAC/F,GAAG,CAAC,CAAC,OAAO,KAAI;AACZ,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,oBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClE,oBAAA,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACnE,iBAAA;AAED,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA,GAAA,EAAM,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAChE,gBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,aAAA;YAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/C,SAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACjB,CAAC;AAEF;;AAEG;QACI,IAAO,CAAA,OAAA,GAAgB,EAAE,CAAC;AAUjC;;AAEG;QAEI,IAAM,CAAA,MAAA,GAAW,MAAM,CAAC;AAE/B;;AAEG;QAEI,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAE1B;;AAEG;QAEI,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAEhC;;AAEG;QAEK,IAAiB,CAAA,iBAAA,GAAe,MAAK;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,SAAC,CAAC;AAEF;;AAEG;QAEK,IAAiB,CAAA,iBAAA,GAAe,MAAK;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,SAAC,CAAC;KAmBE;AA3DJ;;AAEG;AACH,IAAA,IACY,QAAQ,GAAA;AAChB,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;KAClF;;IAwDM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,YAAY;AACZ,aAAA,IAAI,CACD,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAC1B,SAAS,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EACjF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,EACjH,cAAc,CAAC,IAAI,CAAC,CACvB;aACA,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;;;AAIP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACzH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACpD,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACI,gBAAgB,GAAA;AACnB,QAAA,MAAM,QAAQ,GAAW,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;AAE9G,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;AAED;;AAEG;IACI,YAAY,GAAA;AACf,QAAA,MAAM,IAAI,GAAW,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAEpG,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;AAED;;AAEG;IACI,YAAY,GAAA;QACf,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;AAED;;;;AAIG;AACI,IAAA,OAAO,CAAC,MAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;YACzC,MAAM,EAAE,sBAAsB,CAAC,WAAW;AAC1C,YAAA,MAAM,EAAE;gBACJ,SAAS,EAAE,MAAM,CAAC,EAAE;AACvB,aAAA;AACJ,SAAA,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,SAAA;KACJ;;8GAjOQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EA0Jd,2BAA2B,EAAA,EAAA,EAAA,KAAA,EAC3B,UAAU,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGA3Jb,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAJf,CAAC,2BAA2B,CAAC,yMCjC5C,o/FAuDA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EDrBgB,CAAC,SAAS,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;AAGd,iBAAiB,GAAA,UAAA,CAAA;AAD7B,IAAA,YAAY,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAA,EAAA,iBAAiB,CAkO7B,CAAA;2FAlOY,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;+BACI,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,2BAA2B,CAAC,EAAA,UAAA,EAC5B,CAAC,SAAS,CAAC,EAAA,QAAA,EAAA,o/FAAA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA,CAAA;;0BA6JlB,MAAM;2BAAC,2BAA2B,CAAA;;0BAClC,MAAM;2BAAC,UAAU,CAAA;wGAtJf,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAOC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAOC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAOC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAOC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAOC,gBAAgB,EAAA,CAAA;sBADtB,MAAM;gBAOA,gBAAgB,EAAA,CAAA;sBADtB,MAAM;gBAOA,cAAc,EAAA,CAAA;sBADpB,eAAe;uBAAC,QAAQ,CAAA;gBAOjB,QAAQ,EAAA,CAAA;sBADf,SAAS;uBAAC,aAAa,CAAA;gBAmDZ,QAAQ,EAAA,CAAA;sBADnB,WAAW;uBAAC,eAAe,CAAA;gBASrB,MAAM,EAAA,CAAA;sBADZ,WAAW;uBAAC,cAAc,CAAA;gBAOpB,KAAK,EAAA,CAAA;sBADX,WAAW;uBAAC,aAAa,CAAA;gBAOnB,WAAW,EAAA,CAAA;sBADjB,WAAW;uBAAC,oBAAoB,CAAA;gBAOzB,iBAAiB,EAAA,CAAA;sBADxB,YAAY;uBAAC,YAAY,CAAA;gBASlB,iBAAiB,EAAA,CAAA;sBADxB,YAAY;uBAAC,YAAY,CAAA;;;AEnK9B;;AAEG;MAMU,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAJR,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACtB,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,0BAA0B,EAAE,YAAY,aACxI,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAElB,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAHb,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,0BAA0B,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;2FAGzI,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,0BAA0B,EAAE,YAAY,CAAC;oBACnJ,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC/B,iBAAA,CAAA;;;ACfD;;AAEG;AACU,MAAA,gBAAgB,GAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;AAEjE;;AAEG;MACU,sBAAsB,GAAG,cAAc,CAAC,gBAAgB;;ACNrE;;AAEG;MAIU,WAAW,CAAA;AACpB;;;;AAIG;AACH,IAAA,WAAA,CAAmE,YAAsB,EAAA;QAAtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAU;KAAI;AAE7F;;;;AAIG;AACI,IAAA,mBAAmB,CAAC,OAAkB,EAAA;QACzC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACnD;AAED;;;;AAIG;AACI,IAAA,mBAAmB,CAAC,OAAkB,EAAA;QACzC,OAAO,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;KAC1G;;AAxBQ,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBAMO,sBAAsB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AANxC,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFR,MAAM,EAAA,CAAA,CAAA;2FAET,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAOuB,MAAM;2BAAC,sBAAsB,CAAA;;;ACdrD;;AAEG;MACU,cAAc,GAAgB,CAAC,EAAE,KAAK,EAAkC,KAA6B;IAC9G,OAAO,CAAC,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACxE;;ACLA;;AAEG;MACU,+BAA+B,GAAgB,CAAC,EAAE,KAAK,EAAkC,KAA6B;IAC/H,OAAO,CAAC,KAAK,IAAI,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;AACtG;;ACLA;;;;;AAKG;AACa,SAAA,kCAAkC,CAAC,WAAmB,EAAE,kBAA0B,EAAA;IAC9F,OAAO,CAAC,OAAwB,KAA6B;QACzD,MAAM,aAAa,GAA0C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtF,MAAM,oBAAoB,GAA0C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEpG,IAAI,CAAC,aAAa,IAAI,CAAC,oBAAoB,IAAI,aAAa,CAAC,OAAO,IAAI,oBAAoB,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACzJ,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,aAAa,EAAE,KAAK,KAAK,oBAAoB,EAAE,KAAK,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AACzG,KAAC,CAAC;AACN;;ACjBA;;;;;AAKG;SACa,aAAa,CAAC,IAAY,EAAE,YAAoB,CAAC,EAAA;AAC7D,IAAA,OAAO,CAAC,EAAE,KAAK,EAAkC,KAA6B;QAC1E,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,OAAO,MAAM,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA,gBAAA,EAAmB,IAAI,CAAA,CAAE,EAAE,GAAG,IAAI,CAAC;AAC5G,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;AAChB,KAAC,CAAC;AACN;;ACEA;;AAEG;AAOG,MAAO,wBAAyB,SAAQ,0BAAkC,CAAA;AA2D5E;;;;;;AAMG;AACH,IAAA,WAAA,CAIQ,SAA2B,EAE3B,GAAsB,EAGtB,WAAuD,EAAA;AAE3D,QAAA,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AAtEvC;;AAEG;QAEI,IAAI,CAAA,IAAA,GAAW,CAAC,CAAC;AAExB;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAEnC;;AAEG;QAEI,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAEjC;;AAEG;QAGI,IAAU,CAAA,UAAA,GAA4B,SAAS,CAAC;AAEvD;;AAEG;QAGI,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAEnC;;AAEG;QAGI,IAAI,CAAA,IAAA,GAAmC,GAAG,CAAC;AAElD;;AAEG;AAEI,QAAA,IAAA,CAAA,eAAe,GAAuB,IAAI,YAAY,EAAQ,CAAC;KA4BrE;AA1BD;;AAEG;AACH,IAAA,IAAW,sBAAsB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;KAClD;AAuBD,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;KACtC;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,OAAkC,CAAC;KAClD;;IAGe,QAAQ,GAAA;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,SAAA;KACJ;AAED;;;;AAIG;AAGI,IAAA,OAAO,CAAC,IAAmB,EAAA;QAC9B,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;AACV,SAAA;QAED,IAAI,IAAI,GAAG,CAAC,EAAE;YACV,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnB,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,SAAA;KACJ;AAED;;AAEG;IACI,QAAQ,GAAA;QACX,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;KACnD;AAED;;AAEG;IACI,SAAS,GAAA;QACZ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;KACnD;AAED;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;KAC/B;;AAxIQ,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAqErB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,SAAS,EAET,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,iBAAiB,aAGjB,4BAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGA1E/B,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAItB,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCtC,k1EA0DA,EAAA,MAAA,EAAA,CAAA,k4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD3Ba,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACI,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,k1EAAA,EAAA,MAAA,EAAA,CAAA,k4BAAA,CAAA,EAAA,CAAA;;0BAqE1C,QAAQ;;0BACR,IAAI;;0BACJ,MAAM;2BAAC,SAAS,CAAA;;0BAEhB,MAAM;2BAAC,iBAAiB,CAAA;;0BAExB,QAAQ;;0BACR,MAAM;2BAAC,4BAA4B,CAAA;4CArEvB,WAAW,EAAA,CAAA;sBAD3B,SAAS;uBAAC,uBAAuB,CAAA;gBAO3B,IAAI,EAAA,CAAA;sBADV,KAAK;gBAOC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAOC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAQC,UAAU,EAAA,CAAA;sBAFhB,KAAK;;sBACL,WAAW;uBAAC,sBAAsB,CAAA;gBAQ5B,UAAU,EAAA,CAAA;sBAFhB,KAAK;;sBACL,WAAW;uBAAC,oBAAoB,CAAA;gBAQ1B,IAAI,EAAA,CAAA;sBAFV,KAAK;;sBACL,WAAW;uBAAC,gBAAgB,CAAA;gBAOtB,eAAe,EAAA,CAAA;sBADrB,MAAM;gBAqDA,OAAO,EAAA,CAAA;sBAFb,YAAY;uBAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAA;;sBAC3C,YAAY;uBAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAA;;;AEhI7C;;AAEG;MAOU,8BAA8B,CAAA;AA+BvC;;;;AAIG;AACH,IAAA,WAAA,CAAoC,gBAAoC,EAAA;QAApC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAoB;AAzBxE;;AAEG;QACa,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;AAE9C;;AAEG;QACa,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;KAiBmC;;IAGrE,QAAQ,GAAA;QACX,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,CAAC;QAEjJ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAC/C,SAAS,CAAC,CAAC,SAAS,KAChB,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,IAAI,CACvC,GAAG,CAAC,CAAC,UAA0B,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAC3I,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACjF,CACJ,CACJ,CAAC;KACL;;2HAlDQ,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,8KCb3C,28DAoCA,EAAA,MAAA,EAAA,CAAA,oEAAA,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,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDvBa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;+BACI,0BAA0B,EAAA,eAAA,EAEnB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,28DAAA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,CAAA;yGAO/B,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBAKU,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBAKU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBAKU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;;;AExBV;;AAEG;MAMU,yBAAyB,CAAA;AAmElC;;;;;;;AAOG;AACH,IAAA,WAAA,CACoB,WAAwB,EAEvB,oBAA6C,EAC5B,IAAa,EACG,iBAAyB,EAAA;QAJ3D,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAEvB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAyB;QAC5B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAS;QACG,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;AApE/E;;AAEG;AACI,QAAA,IAAA,CAAA,eAAe,GAA+B,IAAI,WAAW,CAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAqB7G;;AAEG;AAEI,QAAA,IAAA,CAAA,oBAAoB,GAA8B,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzG;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEvE;;AAEG;AAEI,QAAA,IAAA,CAAA,kBAAkB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEzE;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAuBjE;AAhEJ;;AAEG;IACH,IACW,QAAQ,CAAC,IAA4B,EAAA;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAEtB,QAAA,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AA0BD;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjC;;IAmBM,QAAQ,GAAA;QACX,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;KACjE;AAED;;AAEG;IACI,iBAAiB,GAAA;AACpB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;KAClF;AAED;;AAEG;IACI,YAAY,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;KACnH;;AApGQ,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EA6EtB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,uBAAuB,EAEvB,EAAA,EAAA,KAAA,EAAA,OAAO,aACP,uBAAuB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAhF1B,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,2YChBtC,yqMA8FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD9Ea,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAEd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yqMAAA,EAAA,CAAA;;0BA+E1C,MAAM;2BAAC,uBAAuB,CAAA;;0BAE9B,MAAM;2BAAC,OAAO,CAAA;;0BACd,MAAM;2BAAC,uBAAuB,CAAA;4CAtElB,uBAAuB,EAAA,CAAA;sBADvC,SAAS;uBAAC,sBAAsB,CAAA;gBAYtB,QAAQ,EAAA,CAAA;sBADlB,KAAK;gBAoBC,oBAAoB,EAAA,CAAA;sBAD1B,MAAM;gBAOA,gBAAgB,EAAA,CAAA;sBADtB,MAAM;gBAOA,kBAAkB,EAAA,CAAA;sBADxB,MAAM;gBAOA,cAAc,EAAA,CAAA;sBADpB,MAAM;;;AEnEX;;AAEG;AAOU,IAAA,yBAAyB,GAA/B,MAAM,yBAAyB,CAAA;AAkBlC;;;;;;AAMG;AACH,IAAA,WAAA,CACsC,IAAa,EAC9B,eAAkC,EAClC,GAAsB,EAAA;QAFL,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAS;QAC9B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAmB;QAClC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AArB3C;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAY,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1D;;AAEG;AAEI,QAAA,IAAA,CAAA,kBAAkB,GAAoB,IAAI,YAAY,EAAK,CAAC;KAa/D;;IAGG,QAAQ,GAAA;QACX,IAAI,CAAC,eAAe,CAAC,WAAW;AAC3B,aAAA,IAAI,CACD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAChG,GAAG,CAAC,CAAC,UAAU,KAAI;AACd,YAAA,IAAI,CAAC,UAA2B,EAAE,OAAO,CAAC,QAAQ,IAAG;gBAClD,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACvF,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,EACF,cAAc,CAAC,IAAI,CAAC,CACvB;aACA,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;KACjD;AAED;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,OAAe,EAAA;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,OAAO,CAAC;KACjD;AAED;;;;AAIG;AAEI,IAAA,iBAAiB,CAAC,UAAiB,EAAA;;AAEtC,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KAC5D;;AAhEQ,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBA0BtB,OAAO,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA1BV,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,uJCftC,66DA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;ADgDI,UAAA,CAAA;IADC,OAAO;AAIP,CAAA,EAAA,yBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAhEQ,yBAAyB,GAAA,UAAA,CAAA;AADrC,IAAA,YAAY,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAA,EAAA,yBAAyB,CAiErC,CAAA;2FAjEY,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACI,oBAAoB,EAAA,eAAA,EAEb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,66DAAA,EAAA,CAAA;;0BA6B1C,MAAM;2BAAC,OAAO,CAAA;4GArBZ,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAYC,kBAAkB,EAAA,CAAA;sBADxB,MAAM;gBA8CA,iBAAiB,EAAA,EAAA,EAAA,EAAA,CAAA;;AE1E5B;;AAEG;MAMU,sBAAsB,CAAA;AALnC,IAAA,WAAA,GAAA;AAMI;;AAEG;AAEI,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEjE;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAEnC;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAEnC;;AAEG;QAEI,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AACpC,KAAA;;mHAxBY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,oLCVnC,yQAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDOa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,eAAA,EAEV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yQAAA,EAAA,CAAA;8BAOxC,UAAU,EAAA,CAAA;sBADhB,MAAM;gBAOA,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAOC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAOC,QAAQ,EAAA,CAAA;sBADd,KAAK;;;AEdV;;AAEG;MAOU,uBAAuB,CAAA;AAsDhC;;;;;;AAMG;IACH,WACsC,CAAA,IAAa,EACvC,QAAmB,EACuB,iBAAyB,EAC1D,WAA0B,EAC1B,GAAsB,EAAA;QAJL,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAS;QACvC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACuB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;QAC1D,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QAC1B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AArD3C;;AAEG;QAGI,IAAI,CAAA,IAAA,GAAa,GAAG,CAAC;AAE5B;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAEnC;;AAEG;QACI,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;AAE3C;;AAEG;AACa,QAAA,IAAA,CAAA,WAAW,GAAwB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AAEpF;;AAEG;QAEI,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAElC;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAA6B,IAAI,YAAY,EAAc,CAAC;AAEnF;;AAEG;AAEI,QAAA,IAAA,CAAA,oBAAoB,GAA6B,IAAI,YAAY,EAAc,CAAC;KAenF;AAEJ;;;;AAIG;AACI,IAAA,iBAAiB,CAAC,QAAoB,EAAA;QACzC,OAAO,QAAQ,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;KAC1H;AAED;;AAEG;IAEK,gBAAgB,GAAA;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,EAAE,KAAK,CAAC;AAC/F,SAAA;KACJ;AAED;;AAEG;IAEK,iBAAiB,GAAA;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACtE,SAAA;KACJ;AAED;;AAEG;IACI,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;;oHAvGQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA8DpB,OAAO,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAEP,uBAAuB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAhE1B,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,yeC3BpC,0vCAwBA,EAAA,MAAA,EAAA,CAAA,+1BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDGa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACI,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0vCAAA,EAAA,MAAA,EAAA,CAAA,+1BAAA,CAAA,EAAA,CAAA;;0BAgE1C,MAAM;2BAAC,OAAO,CAAA;;0BAEd,MAAM;2BAAC,uBAAuB,CAAA;wGA3D5B,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAOE,IAAI,EAAA,CAAA;sBADX,SAAS;uBAAC,MAAM,CAAA;gBAQV,IAAI,EAAA,CAAA;sBAFV,KAAK;;sBACL,WAAW;uBAAC,gBAAgB,CAAA;gBAOtB,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAiBC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAOC,gBAAgB,EAAA,CAAA;sBADtB,MAAM;gBAOA,oBAAoB,EAAA,CAAA;sBAD1B,MAAM;gBA+BC,gBAAgB,EAAA,CAAA;sBADvB,YAAY;uBAAC,WAAW,CAAA;gBAWjB,iBAAiB,EAAA,CAAA;sBADxB,YAAY;uBAAC,YAAY,CAAA;;;AEtH9B;AAsBA;;AAEG;MAQU,oBAAoB,CAAA;AA+G7B;;;;;;;;;;;AAWG;AACH,IAAA,WAAA,CACoB,WAAwB,EACvB,WAA0B,EAC1B,gBAAoC,EACnB,IAAa,EACG,iBAAyB,EACtC,OAA2B,EAC/C,GAAsB,EACtB,WAA0B,EAAA;QAP3B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACvB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QAC1B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAoB;QACnB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAS;QACG,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;QACtC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;QAC/C,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;AA5G/C;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAY,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1D;;AAEG;QACI,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;AAE3C;;AAEG;QACI,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;AAE3C;;AAEG;QAEI,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;AAU5C;;AAEG;AAEI,QAAA,IAAA,CAAA,kBAAkB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEzE;;AAEG;AAEI,QAAA,IAAA,CAAA,mBAAmB,GAA4B,IAAI,YAAY,EAAa,CAAC;AAEpF;;AAEG;AAEI,QAAA,IAAA,CAAA,eAAe,GAA6B,IAAI,YAAY,EAAc,CAAC;AAElF;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAErE;;AAEG;AACI,QAAA,IAAA,CAAA,gBAAgB,GAAoC,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,CAAC;AAE7G;;AAEG;AACI,QAAA,IAAA,CAAA,eAAe,GAA+B,IAAI,WAAW,CAAgB,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAEhH;;AAEG;AAEI,QAAA,IAAA,CAAA,oBAAoB,GAA8B,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AAE3F;;AAEG;AACa,QAAA,IAAA,CAAA,WAAW,GAAwB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AAEpF;;AAEG;QAGI,IAAI,CAAA,IAAA,GAAyB,GAAG,CAAC;KA8BpC;AAnIJ;;;;AAIG;AACH,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED;;;;AAIG;IACH,IACW,QAAQ,CAAC,KAA6B,EAAA;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAEvB,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACnC;AAiHD;;;AAGG;AACH,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;KAC/C;AAED;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;KACxB;AAED;;AAEG;IACI,mBAAmB,GAAA;QACtB,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;KACjG;AAED;;AAEG;IACI,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;;AAjKQ,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EA+HjB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,OAAO,EACP,EAAA,EAAA,KAAA,EAAA,uBAAuB,aACvB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjId,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAFlB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,qBAAqB,CAAC,0BC9BtC,2tMAmJA,EAAA,MAAA,EAAA,CAAA,8jCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDnHa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,mBAGR,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,2tMAAA,EAAA,MAAA,EAAA,CAAA,8jCAAA,CAAA,EAAA,CAAA;;0BAiI7B,MAAM;2BAAC,OAAO,CAAA;;0BACd,MAAM;2BAAC,uBAAuB,CAAA;;0BAC9B,MAAM;2BAAC,WAAW,CAAA;wGAjHZ,QAAQ,EAAA,CAAA;sBADlB,KAAK;gBA2BC,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBASC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAOC,kBAAkB,EAAA,CAAA;sBADxB,MAAM;gBAOA,mBAAmB,EAAA,CAAA;sBADzB,MAAM;gBAOA,eAAe,EAAA,CAAA;sBADrB,MAAM;gBAOA,cAAc,EAAA,CAAA;sBADpB,MAAM;gBAiBA,oBAAoB,EAAA,CAAA;sBAD1B,MAAM;gBAaA,IAAI,EAAA,CAAA;sBAFV,KAAK;;sBACL,WAAW;uBAAC,gBAAgB,CAAA;;;AE7HjC;;AAEG;MAMU,uBAAuB,CAAA;AA2ChC;;;;;;AAMG;AACH,IAAA,WAAA,CACqB,cAAgC,EACZ,OAAsC,EAG1D,OAAwD,EAAA;QAJxD,IAAc,CAAA,cAAA,GAAd,cAAc,CAAkB;QACZ,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;QAG1D,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiD;AA/B7E;;AAEG;QACa,IAAW,CAAA,WAAA,GAAyC,IAAI,CAAC,OAAO,CAAC,IAAI,CACjF,GAAG,CACC,CAAC,MAAM,KACH,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;;QAEX,CAAG,EAAA,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,CAAE,CACrC,CACJ,CAAC;AAEF;;;;AAIG;AACa,QAAA,IAAA,CAAA,UAAU,GAA6B,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;AAgBnG,QAAA,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,SAAA;KACJ;;IAGM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACnE,GAAG,CAAC,CAAC,OAAO,KACR,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,IAAI,KAAuB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACjG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9C,EACD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAC9C,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAC1C,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAChD,GAAG,CAAC,CAAC,MAAM,MAAM;AACb,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AACxB,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;SAC3B,CAAC,CAAC,CACN,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC5B,GAAG,CAAC,CAAC,KAAsC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACpG,MAAM,CAAC,CAAC,KAAK,KAA4C,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EACpF,GAAG,CAAC,CAAC,KAAK,KAAI;YACV,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;SAChD,CAAC,CACL,CAAC;KACL;AAED;;;;;;AAMG;AAEI,IAAA,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE,EAAe,EAAA;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACtK;AAED;;;;;;;AAOG;AAEI,IAAA,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,EAAe,EAAE,OAAwC,EAAA;AACnF,QAAA,QACI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;aACrD,IAAI,CAAC,CAAC,CAAC;;aAEP,MAAM,CAAkC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,KAAI;AACzD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YACzC,OAAO;AACH,gBAAA,GAAG,KAAK;AACR,gBAAA;oBACI,IAAI;AACJ,oBAAA,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3I,wBAAA,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrB,iBAAA;aACJ,CAAC;AACN,SAAC,EAAE,EAAE,CAAC,EACZ;KACL;;oHAjIQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAoDpB,UAAU,EAAA,EAAA,EAAA,KAAA,EAEV,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtDvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,wFChBpC,k2DAyCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,GAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;AD0EI,UAAA,CAAA;IADC,OAAO;AAGP,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAWD,UAAA,CAAA;IADC,OAAO;AAkBP,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;2FAjIQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,kBAAkB,EAAA,eAAA,EAEX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,k2DAAA,EAAA,CAAA;;0BAsD1C,MAAM;2BAAC,UAAU,CAAA;;0BACjB,QAAQ;;0BACR,MAAM;2BAAC,oBAAoB,CAAA;4CA7ChB,OAAO,EAAA,CAAA;sBAAtB,KAAK;AA0FC,aAAA,CAAA,EAAA,cAAc,MAad,YAAY,EAAA,EAAA,EAAA,EAAA,CAAA;;AE1HvB;;AAEG;AACU,MAAA,qCAAqC,GAAuC;AACrF,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,IAAI,EAAE,CAAC;EACT;AAEF;;AAEG;MACU,6BAA6B,GAAuD,cAAc,CAAC,qCAAqC,EAAE;AAEvJ;;AAEG;AACU,MAAA,iBAAiB,GAAgD,IAAI,OAAO,GAAuC;AAEhI;;AAEG;MACU,4BAA4B,GAAgE,cAAc,CAAC,iBAAiB,EAAE;AAE3I;;;;;;;;AAQG;AACH,SAAS,+BAA+B,CACpC,EAAE,QAAQ,EAAkB,EAC5B,cAAgC,EAChC,WAA0B,EAC1B,WAA0B,EAC1B,QAA0B,EAAA;AAE1B,IAAA,OAAO,QAAQ,CAAC,IAAI,CAChB,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EACzC,MAAM,CAAC,YAAY,CAAC,EACpB,SAAS,CAAC,CAAC,UAAU,KACjB,iBAAiB,CAAC,IAAI,CAClB,YAAY,CAAC,EAAE,CAAC,EAChB,SAAS,CAAC,CAAC,gBAAgB,KAAK,WAAW,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,cAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAC7J,MAAM,CAAC,YAAY,CAAC,EACpB,IAAI,CAAC,CAAC,GAAkC,EAAE,KAAoC,KAAI;QAC9E,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAEhF,QAAA,OAAO,KAAK,CAAC;KAChB,EAAE,IAAI,CAAC,EACR,SAAS,CAAC,CAAC,gBAAgB,KACvB,WAAW,CAAC,cAAc,EAAE,CAAC,IAAI,CAC7B,GAAG,CAAC,CAAC,IAAI,KAAI;AACT,QAAA,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,MAAM,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEpI,QAAA,OAAO,gBAAgB,CAAC;AAC5B,KAAC,CAAC,CACL,CACJ,EACD,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,EACD,KAAK,EAAE,EACP,SAAS,CAAC,QAAQ,CAAC,CACtB,CAAC;AACN,CAAC;AAED;;AAEG;MACU,iCAAiC,GAAG,IAAI,cAAc,CAA4C,mCAAmC,EAAE;AAEpJ;;AAEG;AACU,MAAA,kBAAkB,GAAuB,IAAI,YAAY,GAAS;AAE/E;;AAEG;MACU,6BAA6B,GAAuC,cAAc,CAAC,kBAAkB,EAAE;AAEpH;;AAEG;AACH,SAAS,wBAAwB,CAAC,aAAwD,EAAE,QAA0B,EAAA;AAClH,IAAA,OAAO,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/I,CAAC;AAED;;AAEG;MACU,iCAAiC,GAAwC,IAAI,cAAc,CAAqB,mCAAmC,EAAE;AAElK;;AAEG;AACH,SAAS,+BAA+B,CACpC,EAAE,MAAM,EAAU,EAClB,uBAA2C,EAC3C,aAAwD,EACxD,QAA0B,EAAA;AAE1B,IAAA,OAAO,uBAAuB;AACzB,SAAA,IAAI,CACD,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EACvB,SAAS,CAAC,CAAC,CAAC,CACf;SACA,IAAI,CACD,SAAS,CACL,KAAK,CACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,aAAa,CAAC,CAAC,EACtD,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAClH,QAAQ,CACX,CACJ,CACJ,CAAC;AACV,CAAC;AAED;;AAEG;MACU,mCAAmC,GAAuC,IAAI,cAAc,CAAqB,qCAAqC,EAAE;AAErK;;AAEG;AACU,MAAA,sCAAsC,GAAe;IAC9D,iBAAiB;AACjB,IAAA;AACI,QAAA,OAAO,EAAE,iCAAiC;QAC1C,IAAI,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,CAAC;AACzF,QAAA,UAAU,EAAE,+BAA+B;AAC9C,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,mCAAmC;QAC5C,IAAI,EAAE,CAAC,MAAM,EAAE,6BAA6B,EAAE,iCAAiC,EAAE,iBAAiB,CAAC;AACnG,QAAA,UAAU,EAAE,+BAA+B;AAC9C,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,iCAAiC;AAC1C,QAAA,IAAI,EAAE,CAAC,iCAAiC,EAAE,iBAAiB,CAAC;AAC5D,QAAA,UAAU,EAAE,wBAAwB;AACvC,KAAA;;;ACnJL;;AAEG;MAOU,8BAA8B,CAAA;AAavC;;;;;AAKG;IACH,WAC2D,CAAA,kBAAsC,EACtC,OAA2C,EAAA;QAD3C,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QACtC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoC;KAClG;;2HAtBK,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAoB3B,6BAA6B,EAAA,EAAA,EAAA,KAAA,EAC7B,6BAA6B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArBhC,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAF5B,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,sCAAsC,CAAC,0BCXvD,moBAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDSa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,mBAEnB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,sCAAsC,CAAC,EAAA,QAAA,EAAA,moBAAA,EAAA,CAAA;;0BAsB9C,MAAM;2BAAC,6BAA6B,CAAA;;0BACpC,MAAM;2BAAC,6BAA6B,CAAA;4CAhBlC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAOC,iBAAiB,EAAA,CAAA;sBADvB,KAAK;;;AELV;;AAEG;MA8CU,eAAe,CAAA;;4GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBA3CpB,8BAA8B;QAC9B,uBAAuB;QACvBgB,sBAAyB;QACzB,wBAAwB;QACxB,oBAAoB;QACpB,8BAA8B;QAC9B,uBAAuB;AACvB,QAAA,yBAAyB,aAazB,YAAY;QACZ,YAAY;QACZ,eAAe;QACf,YAAY;QACZ,eAAe;QACf,oBAAoB;QACpB,cAAc;QACd,4BAA4B;QAC5B,WAAW;QACX,mBAAmB;QACnB,aAAa;QACb,aAAa;QACb,uBAAuB;QACvB,eAAe;QACf,aAAa;QACb,yBAAyB;QACzB,YAAY;QACZ,oBAAoB;QACpB,kBAAkB;QAClB,sBAAsB;AACtB,QAAA,aAAa,aA9Bb,8BAA8B;QAC9B,uBAAuB;QACvBA,sBAAyB;QACzB,wBAAwB;QACxB,oBAAoB;QACpB,8BAA8B;QAC9B,uBAAuB;QACvB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AA0BpB,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAvBpB,YAAY;QACZ,YAAY;QACZ,eAAe;QACf,YAAY;QACZ,eAAe;QACf,oBAAoB;QACpB,cAAc;QACd,4BAA4B;QAC5B,WAAW;QACX,mBAAmB;QACnB,aAAa;QACb,aAAa;QACb,uBAAuB;QACvB,eAAe;QACf,aAAa;QACb,yBAAyB;QACzB,YAAY;QACZ,oBAAoB;QACpB,kBAAkB;QAClB,sBAAsB;QACtB,aAAa,CAAA,EAAA,CAAA,CAAA;2FAGR,eAAe,EAAA,UAAA,EAAA,CAAA;kBA7C3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,8BAA8B;wBAC9B,uBAAuB;wBACvBA,sBAAyB;wBACzB,wBAAwB;wBACxB,oBAAoB;wBACpB,8BAA8B;wBAC9B,uBAAuB;wBACvB,yBAAyB;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,8BAA8B;wBAC9B,uBAAuB;wBACvBA,sBAAyB;wBACzB,wBAAwB;wBACxB,oBAAoB;wBACpB,8BAA8B;wBAC9B,uBAAuB;wBACvB,yBAAyB;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,YAAY;wBACZ,eAAe;wBACf,YAAY;wBACZ,eAAe;wBACf,oBAAoB;wBACpB,cAAc;wBACd,4BAA4B;wBAC5B,WAAW;wBACX,mBAAmB;wBACnB,aAAa;wBACb,aAAa;wBACb,uBAAuB;wBACvB,eAAe;wBACf,aAAa;wBACb,yBAAyB;wBACzB,YAAY;wBACZ,oBAAoB;wBACpB,kBAAkB;wBAClB,sBAAsB;wBACtB,aAAa;AAChB,qBAAA;AACJ,iBAAA,CAAA;;;ACvDD;;AAEG;MAoBU,YAAY,CAAA;;yGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;0GAAZ,YAAY,EAAA,YAAA,EAAA,CAlBN,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAGpC,YAAY;QACZ,aAAa;QACb,eAAe;QACf,eAAe;QACf,qBAAqB;QACrB,yBAAyB;QACzB,aAAa;QACb,YAAY;QACZ,aAAa;QACb,WAAW;QACX,mBAAmB;QACnB,gBAAgB;AAChB,QAAA,kBAAkB,aAdZ,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAiB1B,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAfjB,YAAY;QACZ,aAAa;QACb,eAAe;QACf,eAAe;QACf,qBAAqB;QACrB,yBAAyB;QACzB,aAAa;QACb,YAAY;QACZ,aAAa;QACb,WAAW;QACX,mBAAmB;QACnB,gBAAgB;QAChB,kBAAkB,CAAA,EAAA,CAAA,CAAA;2FAGb,YAAY,EAAA,UAAA,EAAA,CAAA;kBAnBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,yBAAyB,CAAC;oBACzC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,aAAa;wBACb,eAAe;wBACf,eAAe;wBACf,qBAAqB;wBACrB,yBAAyB;wBACzB,aAAa;wBACb,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,kBAAkB;AACrB,qBAAA;AACJ,iBAAA,CAAA;;;ACtBD;;AAEG;MAMU,0BAA0B,CAAA;AAsBnC;;;;;AAKG;IACH,WAGoB,CAAA,OAAkB,EACjB,iBAAsC,EAAA;QADvC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAW;QACjB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;AA/B3D;;AAEG;AAEI,QAAA,IAAA,CAAA,IAAI,GAAsB,iBAAiB,CAAC,GAAG,CAAC;AAYvD;;AAEG;QACa,IAAc,CAAA,cAAA,GAA6B,iBAAiB,CAAC;KAazE;;IAGG,QAAQ,GAAA;AACX,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAgB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9D,YAAY,CAAC,GAAG,CAAC,EACjB,MAAM,CAAC,YAAY,CAAC,EACpB,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,EAC1B,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAClC,SAAS,CAAC,CAAC,IAAY,KAAK,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAe,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAChH,UAAU,CAAC,CAAC,KAAc,KAAI;YAC1B,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACpC,gBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;AAEtD,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACtB,oBAAA,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEzD,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3B,wBAAA,cAAc,EAAE,CAAC,aAAa,CAAC,OAAO,IAAI,kFAAkF,CAAC;AAChI,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;YAED,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,SAAC,CAAC,EACF,KAAK,EAAE,CACV,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;KAClD;AAED;;;;AAIG;AACI,IAAA,UAAU,CAAC,UAAwB,EAAA;QACtC,QAAQ,IAAI,CAAC,IAAI;YACb,KAAK,iBAAiB,CAAC,GAAG;gBACtB,IAAI,KAAK,IAAI,UAAU,EAAE;oBACrB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACpD,iBAAA;gBACD,MAAM;YACV,KAAK,iBAAiB,CAAC,OAAO;gBAC1B,IAAI,eAAe,IAAI,UAAU,EAAE;oBAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC9D,iBAAA;gBACD,MAAM;YACV,KAAK,iBAAiB,CAAC,IAAI;AACvB,gBAAA,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,IAAI,UAAU,EAAE;oBAC5C,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAoB,EAAC,UAAU,CAAC;wBACnD,QAAQ,EAAE,UAAU,CAAC,IAAI;wBACzB,GAAG,EAAE,UAAU,CAAC,GAAG;wBACnB,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;AACxD,qBAAA,CAAC,CAAC;AACN,iBAAA;gBACD,MAAM;YACV,KAAK,iBAAiB,CAAC,YAAY;gBAC/B,IAAI,KAAK,IAAI,UAAU,IAAI,EAAE,KAAK,IAAI,UAAU,CAAC,EAAE;oBAC/C,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAoB,EAAC,UAAU,CAAC;wBACnD,IAAI,EAAE,UAAU,CAAC,IAAI;wBACrB,GAAG,EAAE,UAAU,CAAC,GAAG;wBACnB,GAAG,EAAE,UAAU,CAAC,GAAG;wBACnB,IAAI,EAAE,UAAU,CAAC,IAAI;wBACrB,YAAY,EAAE,UAAU,CAAC,YAAY;wBACrC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;wBAC7C,YAAY,EAAE,UAAU,CAAC,YAAY;wBACrC,aAAa,EAAE,UAAU,CAAC,aAAa;wBACvC,aAAa,EAAE,UAAU,CAAC,aAAa;AAC1C,qBAAA,CAAC,CAAC;AACN,iBAAA;gBACD,MAAM;YACV,KAAK,iBAAiB,CAAC,KAAK;gBACxB,IAAI,OAAO,IAAI,UAAU,EAAE;oBACvB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACtD,iBAAA;gBACD,MAAM;AACV,YAAA;gBACI,MAAM;AACb,SAAA;KACJ;;AAlHQ,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBA8BvB,SAAS,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA9BZ,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,qFCjBvC,62DAuCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDtBa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAEd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,62DAAA,EAAA,CAAA;;0BA+B1C,QAAQ;;0BACR,MAAM;2BAAC,SAAS,CAAA;8EAzBd,IAAI,EAAA,CAAA;sBADV,KAAK;;;AEdV;;AAEG;MAMU,wCAAwC,CAAA;AAsCjD;;;;AAIG;AACH,IAAA,WAAA,CAAoC,iBAAsC,EAAA;QAAtC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;AA1C1E;;AAEG;QACa,IAAc,CAAA,cAAA,GAA6B,iBAAiB,CAAC;AAE7E;;AAEG;QACa,IAAO,CAAA,OAAA,GAAmB,SAAS,CAAC;AAEpD;;AAEG;QACa,IAAiB,CAAA,iBAAA,GAAmB,mBAAmB,CAAC;AAExE;;AAEG;QACa,IAAoB,CAAA,oBAAA,GAAmB,sBAAsB,CAAC;AAE9E;;AAEG;AACa,QAAA,IAAA,CAAA,WAAW,GAA8B,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;KAmBd;AAE9E;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,UAAkB,EAAA;QACtC,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;KAC9D;;qIApDQ,wCAAwC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxC,wCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wCAAwC,qGCfrD,82FA2CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD5Ba,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBALpD,SAAS;+BACI,qCAAqC,EAAA,eAAA,EAE9B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,82FAAA,EAAA,CAAA;0GAgCxC,IAAI,EAAA,CAAA;sBADV,KAAK;;;AEjCV;;AAEG;MAMU,0CAA0C,CAAA;AAyDnD;;;;;AAKG;IACH,WACqB,CAAA,iBAAsC,EAEvC,OAAmE,EAAA;QAFlE,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;QAEvC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA4D;AAjEvF;;AAEG;QACI,IAAI,CAAA,IAAA,GAMN,IAAI,SAAS,CAAC;YACX,QAAQ,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YACnE,GAAG,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AACzG,YAAA,aAAa,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YACpG,oBAAoB,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC;YAC5I,UAAU,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxE,SAAA,CAAC,CAAC;AAEP;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAE9D;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC1C,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAC1B,MAAM,CAAC,CAAC,KAAK,KAA0C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EACvE,SAAS,CAAC,CAAC,KAAK,KAAI;AAChB,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,IAAI,CAClG,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,EAC7D,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,gBAAA,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,gBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;AAEtD,gBAAA,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;oBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAE,CAAA,CAAC,EAAE,CAAC,CAAC;AACrF,iBAAA;gBAED,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AAChD,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpE,iBAAA;AAED,gBAAA,OAAO,EAAE,CAAC,EAAoB,CAAC,CAAC;AACpC,aAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,CAClB,CAAC;AACN,SAAC,CAAC,EACF,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;KAYhF;;AAnEK,0CAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0CAA0C,qDAiEvC,oBAAoB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjEvB,0CAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0CAA0C,6ECnBvD,soBAMO,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,wCAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDaM,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBALtD,SAAS;+BACI,uCAAuC,EAAA,eAAA,EAEhC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,soBAAA,EAAA,CAAA;;0BAmE1C,MAAM;2BAAC,oBAAoB,CAAA;;;AEhFpC;;AAEG;MAMU,yBAAyB,CAAA;AALtC,IAAA,WAAA,GAAA;AAMI;;AAEG;QACa,IAAc,CAAA,cAAA,GAA6B,iBAAiB,CAAC;AAYhF,KAAA;;sHAhBY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,qFCZtC,8wDAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDba,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAEd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8wDAAA,EAAA,CAAA;8BAYxC,IAAI,EAAA,CAAA;sBADV,KAAK;;;AElBV;;AAEG;MAIU,6BAA6B,CAAA;AAetC;;;;AAIG;AACH,IAAA,WAAA,CAEqB,iBAAuC,EAAA;QAAvC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAsB;KACxD;AAhBJ;;AAEG;AACH,IAAA,IACY,QAAQ,GAAA;QAChB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;KACtD;;AAbQ,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,kBAqB1B,oBAAoB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8GArBvB,6BAA6B,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mCAAmC;AAChD,iBAAA,CAAA;;0BAsBQ,MAAM;2BAAC,oBAAoB,CAAA;4CAhBzB,KAAK,EAAA,CAAA;sBADX,KAAK;gBAOM,QAAQ,EAAA,CAAA;sBADnB,WAAW;uBAAC,eAAe,CAAA;;;ACXhC;;AAEG;AAQU,IAAA,4BAA4B,GAAlC,MAAM,4BAA4B,CAAA;AA2GrC;;;;;;AAMG;AACH,IAAA,WAAA,CACqB,iBAAsC,EACtC,gBAAoC,EAGpC,kBAA6C,EAAA;QAJ7C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;QACtC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAoB;QAGpC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAA2B;AAtHlE;;AAEG;QACc,IAAiB,CAAA,iBAAA,GAAG,IAAI,SAAS,CAAC;YAC/C,GAAG,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC9D,IAAI,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC/D,YAAY,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YACvE,gBAAgB,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC3E,cAAc,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YACzE,YAAY,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YACvE,aAAa,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YACxE,aAAa,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxE,YAAA,YAAY,EAAE,IAAI,SAAS,CAAM,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvF,SAAA,CAAC,CAAC;AAEH;;AAEG;QACc,IAAU,CAAA,UAAA,GAAG,IAAI,SAAS,CAAC;AACxC,YAAA,GAAG,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,SAAA,CAAC,CAAC;AAEH;;AAEG;QACc,IAAqB,CAAA,qBAAA,GAAG,IAAI,SAAS,CAAC;YACnD,qBAAqB,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAChF,kBAAkB,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC7E,SAAS,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvE,SAAA,CAAC,CAAC;AAEH;;AAEG;QACa,IAAI,CAAA,IAAA,GAAG,IAAI,SAAS,CAAC;YACjC,IAAI,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC/D,GAAG,EAAE,IAAI,WAAW,CAAyB,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC/E,gBAAgB,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC3E,YAAA,QAAQ,EAAE,IAAI,SAAS,CAAM,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnF,SAAA,CAAC,CAAC;AAEH;;AAEG;QACa,IAAc,CAAA,cAAA,GAA6B,iBAAiB,CAAC;AAE7E;;AAEG;AACa,QAAA,IAAA,CAAA,UAAU,GAAuC,eAAe,CAAyB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CACjI,GAAG,CAAC,CAAC,GAAG,KAAI;AACR,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACpI,gBAAA,IAAI,CAAC,IAAkB,CAAC,aAAa,CAAa,GAAG,CAAC,CAAC;AAC5D,aAAC,CAAC,CAAC;AAEH,YAAA,MAAM,WAAW,GAAG,CAAC,SAAoB,KAAI;AACzC,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAClD,oBAAA,IAAI,CAAC,IAAkB,CAAC,UAAU,CAAa,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC;YAEF,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE;AACvC,gBAAA,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACpC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvG,aAAA;YAED,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,YAAY,EAAE;AACzC,gBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,aAAA;YAED,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE;AAClC,gBAAA,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC3C,aAAA;SACJ,CAAC,CACL,CAAC;AAEF;;AAEG;QACa,IAAO,CAAA,OAAA,GAAG,CAAC,GAA2B,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,YAAY,GAAG,cAAc,GAAG,qBAAqB,CAAC,CAAC;AAE9I;;AAEG;QACa,IAAQ,CAAA,QAAA,GAAG,CAAC,GAA2B,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,YAAY,GAAG,eAAe,GAAG,sBAAsB,CAAC,CAAC;AAEjJ;;AAEG;QACa,IAAO,CAAA,OAAA,GAAG,SAAS,CAAC;AAEpC;;AAEG;QACa,IAAW,CAAA,WAAA,GAAqB,SAAS,CAAC;QAuBtD,IAAI,CAAC,iBAAiB,CAAC,WAAW;aAC7B,IAAI,CACD,cAAc,CAAC,IAAI,CAAC,EACpB,MAAM,CAAC,YAAY,CAAC,EACpB,MAAM,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAC9C;aACA,SAAS,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KAChG;AA5BD;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC;KACxC;;IA0BM,QAAQ,GAAA;QACX,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACxD;;IAGM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;KAChD;AAED;;AAEG;AACI,IAAA,iBAAiB,CAAC,WAAmB,EAAA;QACxC,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;KAChE;AAED;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;KACtC;AAED;;;;AAIG;AACI,IAAA,aAAa,CAAC,IAA4B,EAAA;QAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KACrD;AAED;;AAEG;IACI,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;KAChD;AAED;;;;AAIG;AACI,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;KAChI;;AAjLQ,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,uFAsHzB,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtHrB,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,8DClBzC,4sUAuHA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;ADrGa,4BAA4B,GAAA,UAAA,CAAA;AADxC,IAAA,YAAY,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAA,EAAA,4BAA4B,CAkLxC,CAAA;2FAlLY,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;+BACI,wBAAwB,EAAA,eAAA,EAGjB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4sUAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA,CAAA;;0BAwH1C,QAAQ;;0BACR,MAAM;2BAAC,kBAAkB,CAAA;;;AE/GlC;;AAEG;AAQU,IAAA,8BAA8B,GAApC,MAAM,8BAA8B,CAAA;AA8EvC;;;;;;;AAOG;IACH,WACqB,CAAA,iBAAsC,EACtC,iBAAsC,EACtC,iBAAsC,EACtC,gBAAoC,EAGpC,OAA6C,EAAA;QAN7C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;QACtC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;QACtC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;QACtC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAoB;QAGpC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsC;AA5FlE;;AAEG;QACa,IAAW,CAAA,WAAA,GAAqB,SAAS,CAAC;AAE1D;;AAEG;QACI,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;AAErB;;AAEG;QACI,IAAI,CAAA,IAAA,GAAG,IAAI,SAAS,CAAC;AACxB,YAAA,UAAU,EAAE,IAAI,SAAS,CAAM,EAAE,CAAC;AACrC,SAAA,CAAC,CAAC;AAEH;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAE9D;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC1C,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAsC,CAAC,EACjE,MAAM,CAAC,CAAC,KAAK,KAAwC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EACrE,SAAS,CAAC,CAAC,KAAK,KAAI;AAChB,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CACnG,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAC3D,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,gBAAA,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,gBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;AAEtD,gBAAA,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;oBACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAG,EAAA,GAAG,CAAE,CAAA,CAAC,EAAE,CAAC,CAAC;AACzG,iBAAA;gBAED,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AAChD,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpE,iBAAA;AAED,gBAAA,OAAO,EAAE,CAAC,EAAoB,CAAC,CAAC;AACpC,aAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,CAClB,CAAC;AACN,SAAC,CAAC,EACF,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;KAuChF;AArCJ;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAA+B,CAAC,CAAC;KAC1G;AAED;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAoF,CAAC;KAC/I;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAgF,CAAC;KACvI;AAoBD;;;;AAIG;AACI,IAAA,QAAQ,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,CAAC,CAAC;KACjD;AAED;;;;AAIG;IACI,WAAW,GAAA;QACd,QAAQ,IAAI,CAAC,SAAS;AAClB,YAAA,KAAK,CAAC;AACF,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE;AACtD,oBAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACxJ,wBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;AACrD,4BAAA,OAAO,KAAK,CAAC;AAChB,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAED,gBAAA,OAAO,IAAI,CAAC;AAChB,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AACpE,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;AACxE,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;AAED;;AAEG;IACI,mBAAmB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;KAC7C;AAED;;AAEG;AACI,IAAA,iBAAiB,CAAC,WAAmB,EAAA;QACxC,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;KAChE;AAED;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;KACtC;AAED;;;;AAIG;AACI,IAAA,aAAa,CAAC,IAA4B,EAAA;QAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KACrD;AAED;;AAEG;IACI,cAAc,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;KAC7C;AAED;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,UAAkB,EAAA;QACtC,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;KAC9D;AAED;;AAEG;IACI,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;KAChD;AAED;;;;AAIG;AACI,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;KAChI;AAED;;AAEG;IACK,sBAAsB,GAAA;QAO1B,OAAO,IAAI,SAAS,CAAC;YACjB,QAAQ,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YACnE,GAAG,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AACzG,YAAA,aAAa,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YACpG,oBAAoB,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC;YAC5I,UAAU,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxE,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;IACI,mBAAmB,GAAA;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;KACzD;AAED;;;;AAIG;AACI,IAAA,sBAAsB,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACrC;AAED;;AAEG;IACI,kBAAkB,GAAA;QAMrB,OAAO,IAAI,SAAS,CAAC;YACjB,IAAI,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC/D,YAAA,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5F,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;AAC7D,YAAA,QAAQ,EAAE,IAAI,WAAW,CAAgB,IAAI,CAAC;AACjD,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;KACjD;AAED;;;;AAIG;AACI,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACjC;;AAnQQ,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,6JA4F3B,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5FvB,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,gECnC3C,6/HAqDA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuB,6BAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wCAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAtB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;ADlBa,8BAA8B,GAAA,UAAA,CAAA;AAD1C,IAAA,YAAY,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAA,EAAA,8BAA8B,CAoQ1C,CAAA;2FApQY,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;+BACI,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6/HAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA,CAAA;;0BA8F1C,QAAQ;;0BACR,MAAM;2BAAC,oBAAoB,CAAA;;;AE3HpC;;AAEG;MAMU,4BAA4B,CAAA;AALzC,IAAA,WAAA,GAAA;AAYI;;AAEG;AAEI,QAAA,IAAA,CAAA,eAAe,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEtE;;AAEG;AAEI,QAAA,IAAA,CAAA,iBAAiB,GAA6B,IAAI,YAAY,EAAc,CAAC;AACvF,KAAA;;yHAlBY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,0LCZzC,4rFA4CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoB,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5B,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6DAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDhCa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACI,uBAAuB,EAAA,eAAA,EAEhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4rFAAA,EAAA,CAAA;8BAOxC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAOC,eAAe,EAAA,CAAA;sBADrB,MAAM;gBAOA,iBAAiB,EAAA,CAAA;sBADvB,MAAM;;;AExBX;;AAEG;MAMU,mCAAmC,CAAA;AA+C5C;;;;AAIG;AACH,IAAA,WAAA,CAAoC,iBAAsC,EAAA;QAAtC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;AA7C1E;;AAEG;AAEI,QAAA,IAAA,CAAA,qBAAqB,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAE5F;;AAEG;AAEI,QAAA,IAAA,CAAA,6BAA6B,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAEpG;;AAEG;AAEI,QAAA,IAAA,CAAA,gCAAgC,GAAiC,IAAI,YAAY,EAAkB,CAAC;AAE3G;;AAEG;AAEI,QAAA,IAAA,CAAA,yBAAyB,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAEhG;;AAEG;AAEI,QAAA,IAAA,CAAA,4BAA4B,GAAoE,IAAI,YAAY,EAAqD,CAAC;KAiB/F;;IAGvE,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC3F,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;KACtF;AAED;;;;;AAKG;IACI,8BAA8B,CAAC,OAAmB,EAAE,UAAwB,EAAA;AAC/E,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;KACxF;;gIApEQ,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,mCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,oaCZhD,syLA0FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA9B,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6DAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+B,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD9Ea,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;+BACI,+BAA+B,EAAA,eAAA,EAExB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,syLAAA,EAAA,CAAA;0GAOxC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAOC,qBAAqB,EAAA,CAAA;sBAD3B,MAAM;gBAOA,6BAA6B,EAAA,CAAA;sBADnC,MAAM;gBAOA,gCAAgC,EAAA,CAAA;sBADtC,MAAM;gBAOA,yBAAyB,EAAA,CAAA;sBAD/B,MAAM;gBAOA,4BAA4B,EAAA,CAAA;sBADlC,MAAM;;;AE1CX;;AAEG;MAMU,+BAA+B,CAAA;AA0CxC;;;;AAIG;AACH,IAAA,WAAA,CAAoC,iBAAsC,EAAA;QAAtC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;AA9C1E;;AAEG;AACI,QAAA,IAAA,CAAA,YAAY,GAAsC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;AAE7F;;AAEG;AAEI,QAAA,IAAA,CAAA,kBAAkB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEzE;;AAEG;AAEI,QAAA,IAAA,CAAA,qBAAqB,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAE5F;;AAEG;AAEI,QAAA,IAAA,CAAA,6BAA6B,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAEpG;;AAEG;AAEI,QAAA,IAAA,CAAA,gCAAgC,GAAiC,IAAI,YAAY,EAAkB,CAAC;AAE3G;;AAEG;AAEI,QAAA,IAAA,CAAA,yBAAyB,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAEhG;;AAEG;AAEI,QAAA,IAAA,CAAA,4BAA4B,GAAoE,IAAI,YAAY,EAAqD,CAAC;KAO/F;;4HA/CrE,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,maCZ5C,0oDA0BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA9B,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6DAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgC,mCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,+BAAA,EAAA,kCAAA,EAAA,2BAAA,EAAA,8BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDda,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;+BACI,0BAA0B,EAAA,eAAA,EAEnB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0oDAAA,EAAA,CAAA;0GAYxC,kBAAkB,EAAA,CAAA;sBADxB,MAAM;gBAOA,qBAAqB,EAAA,CAAA;sBAD3B,MAAM;gBAOA,6BAA6B,EAAA,CAAA;sBADnC,MAAM;gBAOA,gCAAgC,EAAA,CAAA;sBADtC,MAAM;gBAOA,yBAAyB,EAAA,CAAA;sBAD/B,MAAM;gBAOA,4BAA4B,EAAA,CAAA;sBADlC,MAAM;;;AE5CX;;AAEG;AAOU,IAAA,kCAAkC,GAAxC,MAAM,kCAAkC,CAAA;AA0D3C;;;;;AAKG;IACH,WAC6D,CAAA,kBAAsC,EAC9E,gBAAoC,EAAA;QADI,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QAC9E,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAoB;AAjEzD;;AAEG;QACI,IAAc,CAAA,cAAA,GAAmC,IAAI,WAAW,CACnE;AACI,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,IAAI,EAAE,QAAQ;AACjB,SAAA,EACD,UAAU,CAAC,QAAQ,CACtB,CAAC;AAEF;;AAEG;QACI,IAAa,CAAA,aAAA,GAAkC,IAAI,WAAW,CAAmB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEnH;;AAEG;QACI,IAAW,CAAA,WAAA,GAAgC,IAAI,WAAW,CAAoB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEhH;;AAEG;AACI,QAAA,IAAA,CAAA,UAAU,GAAoC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1H;;AAEG;QACI,IAAQ,CAAA,QAAA,GAAmC,eAAe,CAAmB,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CACzG,MAAM,CAAC,YAAY,CAAC,EACpB,SAAS,CAAC,CAAC,OAAmB,KAAK,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EACvG,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;QACI,IAAO,CAAA,OAAA,GAAiC,aAAa,CAAC;AACzD,YAAA,OAAO,EAAE,eAAe,CAAmB,IAAI,CAAC,cAAc,CAAC;AAC/D,YAAA,MAAM,EAAE,eAAe,CAAiB,IAAI,CAAC,aAAa,CAAC;SAC9D,CAAC,CAAC,IAAI,CACH,YAAY,CAAC,CAAC,CAAC,EACf,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAyD,KACjF,OAAO,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAC7G,EACD,KAAK,EAAE,CACV,CAAC;AA4DF;;;;AAIG;QACa,IAAS,CAAA,SAAA,GAAG,CAAC,IAAsB,KAAa,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;KA9C3E;AAjBJ;;AAEG;AACH,IAAA,IAAW,aAAa,GAAA;;QAEpB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAgC,CAAC;KACpF;;IAcM,QAAQ,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB;iBAChB,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC/C,iBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1B,iBAAA,SAAS,CAAC,CAAC,IAAa,KAAI;AACzB,gBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;gBAC9D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtC,aAAC,CAAC,CAAC;AACV,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAC9E,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,YAAA,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AACrE,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC/B,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC5E,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/B,YAAA,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACpE,SAAC,CAAC,CAAC;KACN;AAED;;;;AAIG;AACI,IAAA,cAAc,CAAC,IAAoB,EAAA;QACtC,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;AACzD,YAAA,kCAAkC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1D,SAAA;KACJ;;AA1GQ,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,kBAiEnB,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjEjC,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,oEChB/C,26FA6BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;ADba,kCAAkC,GAAA,UAAA,CAAA;AAD9C,IAAA,YAAY,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAA,EAAA,kCAAkC,CAkH9C,CAAA;2FAlHY,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;+BACI,8BAA8B,EAAA,eAAA,EAEvB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,26FAAA,EAAA,CAAA;;0BAoE1C,QAAQ;;0BAAI,MAAM;2BAAC,kBAAkB,CAAA;;;AE/D9C;;AAEG;MAyBU,kBAAkB,CAAA;;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAvBZ,YAAA,EAAA,CAAA,kCAAkC,EAAE,0BAA0B,aAEzE,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,cAAc;QACd,4BAA4B;QAC5B,cAAc;QACd,YAAY;QACZ,uBAAuB;QACvB,cAAc;QACd,iBAAiB;QACjB,eAAe;QACf,iBAAiB;QACjB,wBAAwB;QACxB,0BAA0B;QAC1B,6BAA6B;QAC7B,mBAAmB;QACnB,eAAe;QACf,aAAa,CAAA,EAAA,OAAA,EAAA,CAEP,kCAAkC,EAAE,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAE/D,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YArBvB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,cAAc;QACd,4BAA4B;QAC5B,cAAc;QACd,YAAY;QACZ,uBAAuB;QACvB,cAAc;QACd,iBAAiB;QACjB,eAAe;QACf,iBAAiB;QACjB,wBAAwB;QACxB,0BAA0B;QAC1B,6BAA6B;QAC7B,mBAAmB;QACnB,eAAe;QACf,aAAa,CAAA,EAAA,CAAA,CAAA;2FAIR,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,kCAAkC,EAAE,0BAA0B,CAAC;AAC9E,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,4BAA4B;wBAC5B,cAAc;wBACd,YAAY;wBACZ,uBAAuB;wBACvB,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf,iBAAiB;wBACjB,wBAAwB;wBACxB,0BAA0B;wBAC1B,6BAA6B;wBAC7B,mBAAmB;wBACnB,eAAe;wBACf,aAAa;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,kCAAkC,EAAE,0BAA0B,CAAC;AAC5E,iBAAA,CAAA;;;ACxBD;;AAEG;MAMU,2BAA2B,CAAA;AAwDpC;;;;;;AAMG;AACH,IAAA,WAAA,CACqB,eAAkC,EACnC,iBAAsC,EAEtC,OAAsG,EAAA;QAHrG,IAAe,CAAA,eAAA,GAAf,eAAe,CAAmB;QACnC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;QAEtC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+F;AAlE1H;;AAEG;QACI,IAAI,CAAA,IAAA,GAKN,IAAI,SAAS,CAAC;YACX,IAAI,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC/D,YAAA,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5F,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;YAC7D,QAAQ,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtE,SAAA,CAAC,CAAC;AAEP;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAE9D;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC1C,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAC1B,MAAM,CAAC,CAAC,KAAK,KAAsC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EACnE,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAyB,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAC7G,SAAS,CAAC,CAAC,IAAI,KAAI;AACf,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CACjD,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,EACrD,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,gBAAA,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,gBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;AAEtD,gBAAA,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;oBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAE,CAAA,CAAC,EAAE,CAAC,CAAC;AACrF,iBAAA;gBAED,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AAChD,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpE,iBAAA;AAED,gBAAA,OAAO,EAAE,CAAC,EAAoB,CAAC,CAAC;AACpC,aAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,CAClB,CAAC;AACN,SAAC,CAAC,EACF,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;KAchF;;AApEK,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,sFAkExB,oBAAoB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAlEvB,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,6DC5BxC,wmBAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6B,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDqBa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACI,uBAAuB,EAAA,eAAA,EAEhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wmBAAA,EAAA,CAAA;;0BAoE1C,MAAM;2BAAC,oBAAoB,CAAA;;;AEvEpC;;AAEG;MA4BU,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBA1BV,4BAA4B,EAAE,yBAAyB,EAAE,2BAA2B,aAE/F,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,iBAAiB;QACjB,eAAe;QACf,aAAa;QACb,eAAe;QACf,YAAY;QACZ,qBAAqB;QACrB,aAAa;QACb,wBAAwB;QACxB,kBAAkB;QAClB,aAAa;QACb,uBAAuB;QACvB,eAAe;QACf,iBAAiB;QACjB,wBAAwB;QACxB,cAAc;QACd,cAAc;QACd,mBAAmB;AACnB,QAAA,cAAc,CAER,EAAA,OAAA,EAAA,CAAA,4BAA4B,EAAE,yBAAyB,EAAE,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAErF,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAxBrB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,iBAAiB;QACjB,eAAe;QACf,aAAa;QACb,eAAe;QACf,YAAY;QACZ,qBAAqB;QACrB,aAAa;QACb,wBAAwB;QACxB,kBAAkB;QAClB,aAAa;QACb,uBAAuB;QACvB,eAAe;QACf,iBAAiB;QACjB,wBAAwB;QACxB,cAAc;QACd,cAAc;QACd,mBAAmB;QACnB,cAAc,CAAA,EAAA,CAAA,CAAA;2FAIT,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA3B5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,4BAA4B,EAAE,yBAAyB,EAAE,2BAA2B,CAAC;AACpG,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,iBAAiB;wBACjB,eAAe;wBACf,aAAa;wBACb,eAAe;wBACf,YAAY;wBACZ,qBAAqB;wBACrB,aAAa;wBACb,wBAAwB;wBACxB,kBAAkB;wBAClB,aAAa;wBACb,uBAAuB;wBACvB,eAAe;wBACf,iBAAiB;wBACjB,wBAAwB;wBACxB,cAAc;wBACd,cAAc;wBACd,mBAAmB;wBACnB,cAAc;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,4BAA4B,EAAE,yBAAyB,EAAE,2BAA2B,CAAC;AAClG,iBAAA,CAAA;;;AChDD;;AAEG;MAMU,0BAA0B,CAAA;;uHAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAHpB,YAAA,EAAA,CAAA,6BAA6B,CADlC,EAAA,OAAA,EAAA,CAAA,iBAAiB,aAEjB,6BAA6B,CAAA,EAAA,CAAA,CAAA;AAE9B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAJzB,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FAIlB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,iBAAiB,CAAC;oBAC5B,YAAY,EAAE,CAAC,6BAA6B,CAAC;oBAC7C,OAAO,EAAE,CAAC,6BAA6B,CAAC;AAC3C,iBAAA,CAAA;;;ACOD;;AAEG;MA8BU,mBAAmB,CAAA;;gHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EA5Bb,YAAA,EAAA,CAAA,+BAA+B,EAAE,mCAAmC,EAAE,wCAAwC,EAAE,0CAA0C,EAAE,8BAA8B,EAAE,4BAA4B,aAEnO,WAAW;QACX,mBAAmB;QACnB,YAAY;QACZ,iBAAiB;QACjB,eAAe;QACf,aAAa;QACb,eAAe;QACf,YAAY;QACZ,qBAAqB;QACrB,gBAAgB;QAChB,uBAAuB;QACvB,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,wBAAwB;QACxB,cAAc;QACd,cAAc;QACd,mBAAmB;QACnB,aAAa;QACb,kBAAkB;QAClB,yBAAyB;QACzB,iBAAiB;QACjB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAEpB,+BAA+B,EAAE,wCAAwC,EAAE,0CAA0C,EAAE,8BAA8B,EAAE,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAEpL,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YA1BxB,WAAW;QACX,mBAAmB;QACnB,YAAY;QACZ,iBAAiB;QACjB,eAAe;QACf,aAAa;QACb,eAAe;QACf,YAAY;QACZ,qBAAqB;QACrB,gBAAgB;QAChB,uBAAuB;QACvB,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,wBAAwB;QACxB,cAAc;QACd,cAAc;QACd,mBAAmB;QACnB,aAAa;QACb,kBAAkB;QAClB,yBAAyB;QACzB,iBAAiB;QACjB,0BAA0B,CAAA,EAAA,CAAA,CAAA;2FAIrB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA7B/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,+BAA+B,EAAE,mCAAmC,EAAE,wCAAwC,EAAE,0CAA0C,EAAE,8BAA8B,EAAE,4BAA4B,CAAC;AACxO,oBAAA,OAAO,EAAE;wBACL,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,iBAAiB;wBACjB,eAAe;wBACf,aAAa;wBACb,eAAe;wBACf,YAAY;wBACZ,qBAAqB;wBACrB,gBAAgB;wBAChB,uBAAuB;wBACvB,cAAc;wBACd,eAAe;wBACf,iBAAiB;wBACjB,wBAAwB;wBACxB,cAAc;wBACd,cAAc;wBACd,mBAAmB;wBACnB,aAAa;wBACb,kBAAkB;wBAClB,yBAAyB;wBACzB,iBAAiB;wBACjB,0BAA0B;AAC7B,qBAAA;oBACD,OAAO,EAAE,CAAC,+BAA+B,EAAE,wCAAwC,EAAE,0CAA0C,EAAE,8BAA8B,EAAE,4BAA4B,CAAC;AACjM,iBAAA,CAAA;;;ACvCD;;;;AAIG;MAMU,mCAAmC,CAAA;AA0D5C;;;;;;AAMG;AACH,IAAA,WAAA,CACqB,sBAAgD,EAClB,OAAqC,EACnE,iBAAsC,EAAA;QAFtC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAA0B;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;QACnE,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;AAnE3D;;AAEG;QACa,IAAc,CAAA,cAAA,GAA6B,iBAAiB,CAAC;AAE7E;;AAEG;AACa,QAAA,IAAA,CAAA,SAAS,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAE/D;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAsD,IAAI,CAAC,SAAS,CAAC,IAAI,CAC9F,GAAG,CAAC,MAAM,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACxD,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAC7B,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAuC,CAAC,EAC5D,SAAS,CAAC,CAAC,KAAK,KACZ,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAiC,KAAK,CAAC,CAAC,CAAC,IAAI,CACtI,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;AAEtD,YAAA,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;gBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAE,CAAA,CAAC,EAAE,CAAC,CAAC;AACrF,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AAChD,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpE,aAAA;AAED,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;SACxB,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EACtC,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,EACD,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AAEjG;;AAEG;QACa,IAAI,CAAA,IAAA,GAAG,IAAI,SAAS,CAAC;YACjC,OAAO,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAClE,OAAO,EAAE,IAAI,SAAS,CAAC;gBACnB,IAAI,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC/D,gBAAA,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5F,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;AAC7D,gBAAA,QAAQ,EAAE,IAAI,WAAW,CAAgB,IAAI,CAAC;aACjD,CAAC;AACL,SAAA,CAAC,CAAC;KAaC;;AArEK,mCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,0DAmEhC,oBAAoB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnEvB,mCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,sECpBhD,soFAoCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0B,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDhBa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;+BACI,gCAAgC,EAAA,eAAA,EAEzB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,soFAAA,EAAA,CAAA;;0BAqE1C,MAAM;2BAAC,oBAAoB,CAAA;;;AEnFpC;;AAEG;MAMU,uCAAuC,CAAA;AA8BhD;;;;AAIG;AACH,IAAA,WAAA,CAAoC,sBAAgD,EAAA;QAAhD,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAA0B;AAvBpF;;AAEG;AAEI,QAAA,IAAA,CAAA,0BAA0B,GAAqC,IAAI,YAAY,EAAsB,CAAC;AAE7G;;AAEG;AAEI,QAAA,IAAA,CAAA,8BAA8B,GAAqC,IAAI,YAAY,EAAsB,CAAC;AAEjH;;AAEG;AAEI,QAAA,IAAA,CAAA,iCAAiC,GAAuE,IAAI,YAAY,EAAwD,CAAC;KAOhG;;IAGjF,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;KACrG;AAED;;;;;AAKG;IACI,8BAA8B,CAAC,OAAmB,EAAE,OAA2B,EAAA;AAClF,QAAA,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;KACvF;;oIAlDQ,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvC,uCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uCAAuC,2UCZpD,iqDA+BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDnBa,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBALnD,SAAS;+BACI,oCAAoC,EAAA,eAAA,EAE7B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iqDAAA,EAAA,CAAA;+GAOxC,eAAe,EAAA,CAAA;sBADrB,KAAK;gBAYC,0BAA0B,EAAA,CAAA;sBADhC,MAAM;gBAOA,8BAA8B,EAAA,CAAA;sBADpC,MAAM;gBAOA,iCAAiC,EAAA,CAAA;sBADvC,MAAM;;;AEnCX;;AAEG;MAMU,mCAAmC,CAAA;AA8B5C;;;;AAIG;AACH,IAAA,WAAA,CAAoC,sBAAgD,EAAA;QAAhD,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAA0B;AAlCpF;;AAEG;AACI,QAAA,IAAA,CAAA,gBAAgB,GAA4C,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC;AAElH;;AAEG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE9E;;AAEG;AAEI,QAAA,IAAA,CAAA,0BAA0B,GAAqC,IAAI,YAAY,EAAsB,CAAC;AAE7G;;AAEG;AAEI,QAAA,IAAA,CAAA,8BAA8B,GAAqC,IAAI,YAAY,EAAsB,CAAC;AAEjH;;AAEG;AAEI,QAAA,IAAA,CAAA,iCAAiC,GAAuE,IAAI,YAAY,EAAwD,CAAC;KAOhG;;gIAnC/E,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,mCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,0UCZhD,kiDAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA9B,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6DAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,uCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,gCAAA,EAAA,mCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDZa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;+BACI,+BAA+B,EAAA,eAAA,EAExB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kiDAAA,EAAA,CAAA;+GAYxC,uBAAuB,EAAA,CAAA;sBAD7B,MAAM;gBAOA,0BAA0B,EAAA,CAAA;sBADhC,MAAM;gBAOA,8BAA8B,EAAA,CAAA;sBADpC,MAAM;gBAOA,iCAAiC,EAAA,CAAA;sBADvC,MAAM;;;AE1BX;;AAEG;MAuBU,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,iBArBjB,mCAAmC,EAAE,uCAAuC,EAAE,mCAAmC,aAE5H,YAAY;QACZ,iBAAiB;QACjB,eAAe;QACf,aAAa;QACb,eAAe;QACf,YAAY;QACZ,qBAAqB;QACrB,gBAAgB;QAChB,WAAW;QACX,mBAAmB;QACnB,cAAc;QACd,uBAAuB;QACvB,cAAc;QACd,cAAc;QACd,mBAAmB;QACnB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAEZ,mCAAmC,EAAE,mCAAmC,CAAA,EAAA,CAAA,CAAA;AAEzE,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAnB5B,YAAY;QACZ,iBAAiB;QACjB,eAAe;QACf,aAAa;QACb,eAAe;QACf,YAAY;QACZ,qBAAqB;QACrB,gBAAgB;QAChB,WAAW;QACX,mBAAmB;QACnB,cAAc;QACd,uBAAuB;QACvB,cAAc;QACd,cAAc;QACd,mBAAmB;QACnB,kBAAkB,CAAA,EAAA,CAAA,CAAA;2FAIb,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAtBnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,mCAAmC,EAAE,uCAAuC,EAAE,mCAAmC,CAAC;AACjI,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,iBAAiB;wBACjB,eAAe;wBACf,aAAa;wBACb,eAAe;wBACf,YAAY;wBACZ,qBAAqB;wBACrB,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,uBAAuB;wBACvB,cAAc;wBACd,cAAc;wBACd,mBAAmB;wBACnB,kBAAkB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,mCAAmC,EAAE,mCAAmC,CAAC;AACtF,iBAAA,CAAA;;;AClCD;;AAEG;MAIU,eAAe,CAAA;AACxB;;;;;AAKG;AACI,IAAA,WAAW,CAAC,IAAoB,EAAA;QACnC,QAAQ,IAAI,CAAC,IAAI;YACb,KAAK,eAAe,CAAC,SAAS;AAC1B,gBAAA,OAAO,mBAAmB,CAAC;YAC/B,KAAK,eAAe,CAAC,WAAW;AAC5B,gBAAA,OAAO,eAAe,CAAC;YAC3B,KAAK,eAAe,CAAC,YAAY;AAC7B,gBAAA,OAAO,gBAAgB,CAAC;YAC5B,KAAK,eAAe,CAAC,aAAa;AAC9B,gBAAA,OAAO,iBAAiB,CAAC;YAC7B,KAAK,eAAe,CAAC,UAAU;AAC3B,gBAAA,OAAO,cAAc,CAAC;AAC1B,YAAA;AACI,gBAAA,OAAO,YAAY,CAAC;AAC3B,SAAA;KACJ;AAED;;;;;AAKG;AACI,IAAA,WAAW,CAAC,IAAoB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;KAC9B;;4GAhCQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAET,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACDD;;AAEG;MAEU,iBAAiB,CAAA;AAC1B;;;;;AAKG;IACH,WAAoC,CAAA,YAA4B,EAAmB,WAA4B,EAAA;QAA3E,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAgB;QAAmB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiB;KAAI;AAEnH;;;;;AAKG;AACI,IAAA,YAAY,CAAC,IAAc,EAAA;QAC9B,OAAO,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KACtE;AAED;;;;;AAKG;AACI,IAAA,WAAW,CAAC,IAAc,EAAA;QAC7B,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;KACxC;AAED;;;;;AAKG;AACK,IAAA,QAAQ,CAAC,EAAsB,EAAA;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CACtC,GAAG,CAAC,CAAC,IAAsB,KACvB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC,CAAC,CACN,CACJ,CAAC;KACL;;8GAhDQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;ACLX;;AAEG;MAMU,aAAa,CAAA;AAMtB;;;;AAIG;AACH,IAAA,WAAA,CAAmC,OAAiC,EAAA;QAAjC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA0B;AAVpE;;AAEG;AACI,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;AAS1C;;;;;AAKG;QACI,IAAe,CAAA,eAAA,GAA8C,CAAC,IAAI,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;KAR/D;AAUxE;;;;AAIG;AACI,IAAA,SAAS,CAAC,IAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KACnC;;0GA5BQ,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA9B,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8FAAb,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAFX,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAElB,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,QAAQ;oBAClB,SAAS,EAAE,CAAC,cAAc,CAAC;AAC9B,iBAAA,CAAA;;;ACTD;;AAEG;AAWG,MAAO,qBAAsB,SAAQ,2BAA2B,CAAA;;kHAAzD,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,+HChBlC,yEACA,EAAA,MAAA,EAAA,CAAA,qSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDea,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGZ,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAEzC,IAAA,EAAA;AACF,wBAAA,SAAS,EAAE,WAAW;AACzB,qBAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,qSAAA,CAAA,EAAA,CAAA;;;AEdL;AAOA;;AAEG;MAcU,gBAAgB,CAAA;AAb7B,IAAA,WAAA,GAAA;AAcI;;AAEG;QAEI,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AA+BpB,KAAA;;6GApCY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAXd,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,IAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,IAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,WAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,IAAA,CAAA,EAAA,SAAA,EAAA,CAAA,eAAA,EAAA,WAAA,CAAA,EAAA,EAAA,SAAA,EAAA;AACP,QAAA;AACI,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAClD,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,QAAQ,EAAE,IAAI,qBAAqB,CAAC,qBAAqB,CAAC;AAC7D,SAAA;AACJ,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,cAAc;AACvB,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAClD,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,QAAQ,EAAE,IAAI,qBAAqB,CAAC,qBAAqB,CAAC;AAC7D,yBAAA;AACJ,qBAAA;AACJ,iBAAA,CAAA;8BAMU,IAAI,EAAA,CAAA;sBADV,KAAK;uBAAC,eAAe,CAAA;gBAOf,IAAI,EAAA,CAAA;sBADV,KAAK;uBAAC,eAAe,CAAA;gBAOf,IAAI,EAAA,CAAA;sBADV,KAAK;uBAAC,eAAe,CAAA;gBAOf,WAAW,EAAA,CAAA;sBADjB,KAAK;uBAAC,iBAAiB,CAAA;gBAOjB,EAAE,EAAA,CAAA;sBADR,KAAK;uBAAC,iBAAiB,CAAA;gBAOjB,SAAS,EAAA,CAAA;sBADf,KAAK;uBAAC,eAAe,CAAA;;;AChD1B;;AAEG;MAYU,0BAA0B,CAAA;AAiBnC;;;;;;AAMG;AACH,IAAA,WAAA,CAC8C,OAAgB,EAC1C,WAA4B,EAC3B,YAA4B,EAAA;QAFH,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAC1C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiB;QAC3B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAgB;AA1BjD;;AAEG;QACI,IAAK,CAAA,KAAA,GAA2B,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,CACpE,GAAG,CAAC,CAAC,IAAsB,KACvB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC,CAAC,CACN,CACJ,CAAC;KAaE;;AA5BK,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAyBvB,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAA+B,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAnC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAzBnB,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAPxB,QAAA,EAAA,wBAAA,EAAA,SAAA,EAAA;AACP,QAAA;AACI,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,QAAQ,EAAE,iBAAiB;AAC9B,SAAA;AACJ,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBL,6uDA+DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDxCa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAXtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAEjB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,QAAQ,EAAE,iBAAiB;AAC9B,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,6uDAAA,EAAA,CAAA;;0BA2BI,MAAM;2BAAC,gBAAgB,CAAA;;;AEtChC;;AAEG;MAMU,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,iBAHjB,0BAA0B,EAAE,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CADvF,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,aAEzE,0BAA0B,CAAA,EAAA,CAAA,CAAA;qHAE3B,uBAAuB,EAAA,OAAA,EAAA,CAJtB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;2FAI1E,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,CAAC;oBACpF,YAAY,EAAE,CAAC,0BAA0B,EAAE,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,CAAC;oBAClG,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACxC,iBAAA,CAAA;;;ACjBD;;AAEG;AACU,MAAA,mBAAmB,GAAG;IAC/B,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,sBAAsB;IACtB,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,WAAW;IACX,iBAAiB;IACjB,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,sBAAsB;IACtB,gBAAgB;IAChB,mBAAmB;IACnB,sBAAsB;IACtB,gBAAgB;IAChB,uBAAuB;IACvB,sBAAsB;IACtB,mBAAmB;IACnB,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,aAAa;IACb,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,cAAc;IACd,mBAAmB;IACnB,kBAAkB;IAClB,sBAAsB;IACtB,eAAe;IACf,aAAa;IACb,sBAAsB;IACtB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,aAAa;IACb,YAAY;IACZ,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,iBAAiB;IACjB,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,cAAc;IACd,YAAY;IACZ,mBAAmB;IACnB,cAAc;IACd,YAAY;IACZ,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;IACb,YAAY;IACZ,qBAAqB;IACrB,gBAAgB;IAChB,oBAAoB;IACpB,aAAa;IACb,eAAe;IACf,mBAAmB;IACnB,YAAY;IACZ,cAAc;IACd,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,iBAAiB;IACjB,mBAAmB;IACnB,uBAAuB;IACvB,qBAAqB;IACrB,oBAAoB;IACpB,mBAAmB;IACnB,kBAAkB;;;ACrFtB;;AAEG;MAMU,sBAAsB,CAAA;AALnC,IAAA,WAAA,GAAA;AAMI;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAiD,WAAW,CAAC;AAE9E;;AAEG;QAEI,IAAI,CAAA,IAAA,GAAmC,GAAG,CAAC;AAElD;;AAEG;AAEI,QAAA,IAAA,CAAA,eAAe,GAAuB,IAAI,YAAY,EAAQ,CAAC;AACzE,KAAA;;mHAlBY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,4JCXnC,iKACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDUa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,iBAAiB,EAAA,eAAA,EAEV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iKAAA,EAAA,CAAA;8BAOxC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAOC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAOC,eAAe,EAAA,CAAA;sBADrB,MAAM;;;AEvBX;;AAEG;MAOU,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAaI;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAA6B,IAAI,YAAY,EAAc,CAAC;AAEjF;;AAEG;AAEI,QAAA,IAAA,CAAA,eAAe,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEtE;;AAEG;AAEa,QAAA,IAAA,CAAA,QAAQ,GAAY,MAAM,CAAC,aAAa,CAAC,CAAC;AAC7D,KAAA;;gHAxBY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,+NCbhC,6gCAwBA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDXa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACI,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6gCAAA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,CAAA;8BAOxC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAOC,cAAc,EAAA,CAAA;sBADpB,MAAM;gBAOA,eAAe,EAAA,CAAA;sBADrB,MAAM;gBAOS,QAAQ,EAAA,CAAA;sBADvB,WAAW;uBAAC,iBAAiB,CAAA;;;AEhClC;;AAEG;MAOU,2BAA2B,CAAA;AANxC,IAAA,WAAA,GAAA;AAOI;;AAEG;QACa,IAAM,CAAA,MAAA,GAAY,IAAI,CAAC;AAEvC;;AAEG;AAEa,QAAA,IAAA,CAAA,QAAQ,GAAY,MAAM,CAAC,aAAa,CAAC,CAAC;AAC7D,KAAA;;wHAXY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,yJCZxC,g1BAmBA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDPa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACI,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,g1BAAA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,CAAA;8BAM/B,MAAM,EAAA,CAAA;sBAArB,KAAK;gBAMU,QAAQ,EAAA,CAAA;sBADvB,WAAW;uBAAC,iBAAiB,CAAA;;;AEhBlC;;AAEG;MAMU,mBAAmB,CAAA;;gHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAJb,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,EAAE,eAAe,aAC7B,sBAAsB,CAAA,EAAA,CAAA,CAAA;iHAEvB,mBAAmB,EAAA,OAAA,EAAA,CAHlB,YAAY,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;2FAG9B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;oBACxC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;;;ACJD;;AAEG;MAMU,YAAY,CAAA;;yGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAJN,YAAA,EAAA,CAAA,mBAAmB,EAAE,2BAA2B,CACrD,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,mBAAmB,CAC/C,EAAA,OAAA,EAAA,CAAA,mBAAmB,EAAE,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAEjD,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAHX,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;2FAGhD,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;AAChE,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,mBAAmB,CAAC;AAC1D,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;AAC9D,iBAAA,CAAA;;;ACTD;;AAEG;MAMU,0BAA0B,CAAA;AAgCnC;;;;;;;AAOG;AACH,IAAA,WAAA,CACoB,WAAwB,EAEvB,oBAA6C,EAC5B,IAAa,EACG,iBAAyB,EAAA;QAJ3D,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAEvB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAyB;QAC5B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAS;QACG,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;AAhC/E;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAErE;;AAEG;AAEI,QAAA,IAAA,CAAA,iBAAiB,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAuBpE;AArBJ;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;KAClC;AAkBD;;AAEG;IACI,iBAAiB,GAAA;AACpB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;KAClF;AAED;;AAEG;IACI,YAAY,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;KAC5G;;AA5DQ,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EA0CvB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,uBAAuB,EAEvB,EAAA,EAAA,KAAA,EAAA,OAAO,aACP,uBAAuB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA7C1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,wTCdvC,6kJA0EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsC,8BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD5Da,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACI,sBAAsB,EAAA,eAAA,EAEf,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6kJAAA,EAAA,CAAA;;0BA4C1C,MAAM;2BAAC,uBAAuB,CAAA;;0BAE9B,MAAM;2BAAC,OAAO,CAAA;;0BACd,MAAM;2BAAC,uBAAuB,CAAA;4CAxClB,uBAAuB,EAAA,CAAA;sBADvC,SAAS;uBAAC,sBAAsB,CAAA;gBAO1B,SAAS,EAAA,CAAA;sBADf,KAAK;gBAOC,cAAc,EAAA,CAAA;sBADpB,MAAM;gBAOA,iBAAiB,EAAA,CAAA;sBADvB,MAAM;;;AElCX;;AAEG;MAMU,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;AAkBI;;AAEG;AAEI,QAAA,IAAA,CAAA,iBAAiB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAExE;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAC1E,KAAA;;qHAxBY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,sMCVrC,2+EA+BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDrBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACI,mBAAmB,EAAA,eAAA,EAEZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2+EAAA,EAAA,CAAA;8BAOxC,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAOC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAOC,iBAAiB,EAAA,CAAA;sBADvB,MAAM;gBAOA,gBAAgB,EAAA,CAAA;sBADtB,MAAM;;;AExBX;;AAEG;MAMU,aAAa,CAAA;;0GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;2GAAb,aAAa,EAAA,YAAA,EAAA,CAJP,0BAA0B,EAAE,wBAAwB,aAEzD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CADhH,0BAA0B,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAGrD,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAFZ,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;2FAEjH,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,0BAA0B,EAAE,wBAAwB,CAAC;AACpE,oBAAA,OAAO,EAAE,CAAC,0BAA0B,EAAE,wBAAwB,CAAC;AAC/D,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,CAAC;AAC9H,iBAAA,CAAA;;;ACVD;;AAEG;MACU,YAAY,GAAG,IAAI,cAAc,CAAiC,wCAAwC,EAAE;AAEzH;;;;;AAKG;AACa,SAAA,aAAa,CAAC,WAA0B,EAAE,QAA0B,EAAA;;AAEhF,IAAA,OAAO,WAAW,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;AAEG;AACU,MAAA,iBAAiB,GAAe;IACzC,iBAAiB;AACjB,IAAA;AACI,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,IAAI,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;AACxC,QAAA,UAAU,EAAE,aAAa;AAC5B,KAAA;;;ACrBL;;AAEG;MAMU,4BAA4B,CAAA;AA6DrC;;;;AAIG;AACH,IAAA,WAAA,CAAoC,WAA0B,EAAA;QAA1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;AAjE9D;;AAEG;QACI,IAAI,CAAA,IAAA,GAAG,IAAI,SAAS,CACvB;AACI,YAAA,eAAe,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,YAAA,QAAQ,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,YAAA,eAAe,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SACzF,EACD,EAAE,UAAU,EAAE,kCAAkC,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,CACpF,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAE9D;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC1C,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAC7B,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAA0B,CAAC,EAC/C,SAAS,CAAC,CAAC,KAAK,KACZ,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CACxC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAC9B,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAC5B,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;AAEtD,YAAA,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;gBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAE,CAAA,CAAC,EAAE,CAAC,CAAC;AACrF,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AAChD,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpE,aAAA;YAED,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAClC,SAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,EACD,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAEpF;;AAEG;QAEa,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACjD,MAAM,CAAC,YAAY,CAAC,EACpB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CACnC,CAAC;KAO4D;;yHAlEzD,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,yHCjBzC,slFAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDfa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACI,wBAAwB,EAAA,eAAA,EAEjB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,slFAAA,EAAA,CAAA;oGA0D/B,oBAAoB,EAAA,CAAA;sBADnC,MAAM;;;AE7DX;;AAEG;MAOU,+BAA+B,CAAA;AAmExC;;;;;;AAMG;AACH,IAAA,WAAA,CAC0C,KAAyB,EAC9C,WAA0B,EAG3B,OAAmE,EAAA;QAJ7C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAoB;QAC9C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QAG3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAA4D;AA9EvF;;AAEG;QACa,IAAc,CAAA,cAAA,GAA6B,iBAAiB,CAAC;AAE7E;;AAEG;QACa,IAAI,CAAA,IAAA,GAAG,IAAI,SAAS,CAAC;AACjC,YAAA,IAAI,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,YAAA,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACpF,YAAA,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,YAAA,gBAAgB,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACjE,YAAA,OAAO,EAAE,IAAI,WAAW,CAAU,KAAK,CAAC;AAC3C,SAAA,CAAC,CAAC;AAEH;;AAEG;AAEa,QAAA,IAAA,CAAA,iBAAiB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEjF;;AAEG;AAEa,QAAA,IAAA,CAAA,iBAAiB,GAAuB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjF;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAE9D;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC1C,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAC7B,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAoD,CAAC,EACzE,SAAS,CAAC,CAAC,KAAK,KACZ,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CACxC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,EACrD,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAC/C,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;AAEtD,YAAA,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;gBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAE,CAAA,CAAC,EAAE,CAAC,CAAC;AACrF,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AAChD,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpE,aAAA;AACD,YAAA,OAAO,EAAE,CAAC,EAAY,CAAC,CAAC;SAC3B,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,CACJ,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAgBhF,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAChB;YACI,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK;YAChC,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,SAAA,EACD,EAAE,SAAS,EAAE,KAAK,EAAE,CACvB,CACJ,CAAC;KACL;;4HA7FQ,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA2E5B,YAAY,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAGZ,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA9EvB,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAH7B,QAAA,EAAA,4BAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,iBAAiB,CAAC,0BCjBlC,0yFA8BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,qCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyC,kCAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDVa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,aAE3B,CAAC,iBAAiB,CAAC,EACb,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0yFAAA,EAAA,CAAA;;0BA6E1C,MAAM;2BAAC,YAAY,CAAA;;0BAEnB,QAAQ;;0BACR,MAAM;2BAAC,oBAAoB,CAAA;4CAxDhB,iBAAiB,EAAA,CAAA;sBADhC,MAAM;gBAOS,iBAAiB,EAAA,CAAA;sBADhC,MAAM;;;AEnCX;;AAEG;AAQU,IAAA,iCAAiC,GAAvC,MAAM,iCAAiC,CAAA;AAoD1C;;;;;;;AAOG;AACH,IAAA,WAAA,CACqB,mBAA0C,EACrB,KAAyB,EAC9C,WAA0B,EAG3B,OAA6E,EAAA;QAL5E,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAuB;QACrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAoB;QAC9C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QAG3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsE;AAjEjG;;AAEG;QACI,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAEjC;;AAEG;QACa,IAAI,CAAA,IAAA,GAAG,IAAI,SAAS,CAAC;AACjC,YAAA,KAAK,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,YAAA,gBAAgB,EAAE,IAAI,WAAW,CAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzG,SAAA,CAAC,CAAC;AAEH;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAE9D;;AAEG;AACc,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC1C,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAC7B,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAA8B,CAAC,EACnD,SAAS,CAAC,CAAC,KAAK,KACZ,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAC7C,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,EACrD,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAC9D,UAAU,CAAC,CAAC,KAAwB,KAAI;AACpC,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAyB,CAAC;AAEtD,YAAA,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;gBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAE,CAAA,CAAC,EAAE,CAAC,CAAC;AACrF,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AAChD,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpE,aAAA;AACD,YAAA,OAAO,EAAE,CAAC,EAAY,CAAC,CAAC;AAC5B,SAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,EACD,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAkBhF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACrD,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACjB,gBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK;AACnC,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;;8HAzEQ,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EA8D9B,YAAY,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAGZ,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjEvB,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EAJ/B,QAAA,EAAA,8BAAA,EAAA,SAAA,EAAA,CAAC,iBAAiB,CAAC,0BClBlC,2nCAiBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7C,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,qCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;ADKa,iCAAiC,GAAA,UAAA,CAAA;AAD7C,IAAA,YAAY,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAA,EAAA,iCAAiC,CA0E7C,CAAA;2FA1EY,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAP7C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,aAE7B,CAAC,iBAAiB,CAAC,EACb,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2nCAAA,EAAA,CAAA;;0BAiE1C,MAAM;2BAAC,YAAY,CAAA;;0BAEnB,QAAQ;;0BACR,MAAM;2BAAC,oBAAoB,CAAA;;;AE3EpC;;AAEG;MA2BU,YAAY,CAAA;;yGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAzBN,4BAA4B,EAAE,+BAA+B,EAAE,iCAAiC,aAE3G,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,uBAAuB;QACvB,sBAAsB;QACtB,eAAe;QACf,cAAc;QACd,cAAc;QACd,4BAA4B;QAC5B,YAAY;QACZ,oBAAoB;QACpB,kBAAkB;QAClB,eAAe;QACf,cAAc;QACd,mBAAmB;QACnB,iBAAiB;QACjB,wBAAwB;QACxB,iBAAiB;QACjB,eAAe;AACf,QAAA,aAAa,CAEP,EAAA,OAAA,EAAA,CAAA,4BAA4B,EAAE,+BAA+B,EAAE,iCAAiC,CAAA,EAAA,CAAA,CAAA;AAEjG,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAvBjB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,uBAAuB;QACvB,sBAAsB;QACtB,eAAe;QACf,cAAc;QACd,cAAc;QACd,4BAA4B;QAC5B,YAAY;QACZ,oBAAoB;QACpB,kBAAkB;QAClB,eAAe;QACf,cAAc;QACd,mBAAmB;QACnB,iBAAiB;QACjB,wBAAwB;QACxB,iBAAiB;QACjB,eAAe;QACf,aAAa,CAAA,EAAA,CAAA,CAAA;2FAIR,YAAY,EAAA,UAAA,EAAA,CAAA;kBA1BxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,4BAA4B,EAAE,+BAA+B,EAAE,iCAAiC,CAAC;AAChH,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,uBAAuB;wBACvB,sBAAsB;wBACtB,eAAe;wBACf,cAAc;wBACd,cAAc;wBACd,4BAA4B;wBAC5B,YAAY;wBACZ,oBAAoB;wBACpB,kBAAkB;wBAClB,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,iBAAiB;wBACjB,wBAAwB;wBACxB,iBAAiB;wBACjB,eAAe;wBACf,aAAa;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,4BAA4B,EAAE,+BAA+B,EAAE,iCAAiC,CAAC;AAC9G,iBAAA,CAAA;;;AChCD;;AAEG;MAQU,mCAAmC,CAAA;AAgJ5C;;;;;;;AAOG;AACH,IAAA,WAAA,CAC0C,KAAyB,EAC9C,gBAAoC,EACpC,WAA0B,EAC1B,mBAA0C,EAAA;QAHrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAoB;QAC9C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAoB;QACpC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QAC1B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAuB;AA3J/D;;AAEG;AACI,QAAA,IAAA,CAAA,cAAc,GAAyB,IAAI,WAAW,CAAU,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAErG;;AAEG;QACc,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CACpE,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,KAAK,KACZ,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CACrD,SAAS,CAAC,MACN,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,IAAI,CACrC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,EACjF,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,EACD,SAAS,CAAC,IAAI,CAAC,CAClB,CACJ,EAED,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,eAAe,GAAwB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAElG;;AAEG;AACa,QAAA,IAAA,CAAA,kBAAkB,GAAoB,IAAI,OAAO,EAAU,CAAC;AAE5E;;AAEG;QACc,IAAwB,CAAA,wBAAA,GAA+B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAChG,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAC1H,SAAS,CAAC,KAAK,CAAC,EAChB,KAAK,EAAE,CACV,CAAC;AAEF;;AAEG;AACa,QAAA,IAAA,CAAA,oBAAoB,GAAwB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAEhH;;AAEG;AACa,QAAA,IAAA,CAAA,mBAAmB,GAAwB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAEpH;;AAEG;AACa,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;AAEpE;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEvE;;AAEG;AAEI,QAAA,IAAA,CAAA,iBAAiB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAExE;;AAEG;AAEI,QAAA,IAAA,CAAA,kBAAkB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEzE;;AAEG;AAEI,QAAA,IAAA,CAAA,qBAAqB,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAE5F;;AAEG;AAEI,QAAA,IAAA,CAAA,6BAA6B,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAEpG;;AAEG;AAEI,QAAA,IAAA,CAAA,gCAAgC,GAAiC,IAAI,YAAY,EAAkB,CAAC;AAE3G;;AAEG;AAEI,QAAA,IAAA,CAAA,yBAAyB,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAEhG;;AAEG;AAEI,QAAA,IAAA,CAAA,4BAA4B,GAAoE,IAAI,YAAY,EAAqD,CAAC;AAE7K;;AAEG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE9E;;AAEG;AAEI,QAAA,IAAA,CAAA,0BAA0B,GAAqC,IAAI,YAAY,EAAsB,CAAC;AAE7G;;AAEG;AAEI,QAAA,IAAA,CAAA,8BAA8B,GAAqC,IAAI,YAAY,EAAsB,CAAC;AAEjH;;AAEG;AAEI,QAAA,IAAA,CAAA,iCAAiC,GAAuE,IAAI,YAAY,EAAwD,CAAC;AAExL;;AAEG;AAEI,QAAA,IAAA,CAAA,mBAAmB,GAAyB,IAAI,YAAY,EAAU,CAAC;AAE9E;;AAEG;AAEI,QAAA,IAAA,CAAA,sBAAsB,GAA6B,IAAI,YAAY,EAAc,CAAC;KAerF;AAEJ;;;;AAIG;AAEI,IAAA,YAAY,CAAC,MAAc,EAAA;QAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACrD;;AAvKQ,mCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,kBAyJhC,YAAY,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oHAzJf,mCAAmC,EAAA,QAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,mCAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,SAAA,EAJjC,CAAC,iBAAiB,CAAC,0BCdlC,y3MA6EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4C,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,uBAAA,EAAA,+BAAA,EAAA,kCAAA,EAAA,2BAAA,EAAA,8BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,mCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+B,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/B,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAvC,EAAA,CAAA,kBAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,UAAA,ED9DgB,CAAC,SAAS,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;AAwKvB,UAAA,CAAA;AADC,IAAA,OAAO;AAGP,CAAA,EAAA,mCAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;2FAvKQ,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAP/C,SAAS;+BACI,+BAA+B,EAAA,SAAA,EAE9B,CAAC,iBAAiB,CAAC,EAAA,UAAA,EAClB,CAAC,SAAS,CAAC,EAAA,eAAA,EACN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,y3MAAA,EAAA,CAAA;;0BA2J1C,MAAM;2BAAC,YAAY,CAAA;6IAzFjB,gBAAgB,EAAA,CAAA;sBADtB,MAAM;gBAOA,iBAAiB,EAAA,CAAA;sBADvB,MAAM;gBAOA,kBAAkB,EAAA,CAAA;sBADxB,MAAM;gBAOA,qBAAqB,EAAA,CAAA;sBAD3B,MAAM;gBAOA,6BAA6B,EAAA,CAAA;sBADnC,MAAM;gBAOA,gCAAgC,EAAA,CAAA;sBADtC,MAAM;gBAOA,yBAAyB,EAAA,CAAA;sBAD/B,MAAM;gBAOA,4BAA4B,EAAA,CAAA;sBADlC,MAAM;gBAOA,uBAAuB,EAAA,CAAA;sBAD7B,MAAM;gBAOA,0BAA0B,EAAA,CAAA;sBADhC,MAAM;gBAOA,8BAA8B,EAAA,CAAA;sBADpC,MAAM;gBAOA,iCAAiC,EAAA,CAAA;sBADvC,MAAM;gBAOA,mBAAmB,EAAA,CAAA;sBADzB,MAAM;gBAOA,sBAAsB,EAAA,CAAA;sBAD5B,MAAM;gBAwBA,YAAY,EAAA,EAAA,EAAA,EAAA,CAAA;;AE1KvB;;AAEG;MAwBU,eAAe,CAAA;;4GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,YAAA,EAAA,CAtBT,mCAAmC,CAAA,EAAA,OAAA,EAAA,CAE9C,YAAY;QACZ,YAAY;QACZ,iBAAiB;QACjB,mBAAmB;QACnB,uBAAuB;QACvB,eAAe;QACf,YAAY;QACZ,aAAa;QACb,aAAa;QACb,wBAAwB;QACxB,wBAAwB;QACxB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,eAAe;QACf,eAAe;AACf,QAAA,gBAAgB,aAEV,mCAAmC,CAAA,EAAA,CAAA,CAAA;AAEpC,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YApBpB,YAAY;QACZ,YAAY;QACZ,iBAAiB;QACjB,mBAAmB;QACnB,uBAAuB;QACvB,eAAe;QACf,YAAY;QACZ,aAAa;QACb,aAAa;QACb,wBAAwB;QACxB,wBAAwB;QACxB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,eAAe;QACf,eAAe;QACf,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAIX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAvB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,mCAAmC,CAAC;AACnD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,YAAY;wBACZ,iBAAiB;wBACjB,mBAAmB;wBACnB,uBAAuB;wBACvB,eAAe;wBACf,YAAY;wBACZ,aAAa;wBACb,aAAa;wBACb,wBAAwB;wBACxB,wBAAwB;wBACxB,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,eAAe;wBACf,eAAe;wBACf,gBAAgB;AACnB,qBAAA;oBACD,OAAO,EAAE,CAAC,mCAAmC,CAAC;AACjD,iBAAA,CAAA;;;ACtCD;;AAEG;;ACFH;;AAEG;;;;"}